@esri/solutions-components 0.7.38 → 0.7.40

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. package/dist/cjs/calcite-alert_4.cjs.entry.js +1 -1
  2. package/dist/cjs/calcite-combobox_5.cjs.entry.js +1 -1
  3. package/dist/cjs/calcite-flow_5.cjs.entry.js +1 -1
  4. package/dist/cjs/calcite-input-date-picker_3.cjs.entry.js +70 -31
  5. package/dist/cjs/card-manager_3.cjs.entry.js +30 -13
  6. package/dist/cjs/crowdsource-manager.cjs.entry.js +1 -1
  7. package/dist/cjs/crowdsource-reporter.cjs.entry.js +3 -1
  8. package/dist/cjs/{downloadUtils-c22a71da.js → downloadUtils-b10e3b8c.js} +2 -2
  9. package/dist/cjs/{index.es-8d317f5e.js → index.es-b9d6eff6.js} +2 -2
  10. package/dist/cjs/instant-apps-ckeditor-wrapper_3.cjs.entry.js +5 -4
  11. package/dist/cjs/instant-apps-export.cjs.entry.js +20 -21
  12. package/dist/cjs/instant-apps-header.cjs.entry.js +1 -1
  13. package/dist/cjs/instant-apps-language-switcher.cjs.entry.js +3 -3
  14. package/dist/cjs/instant-apps-language-translator.cjs.entry.js +1 -1
  15. package/dist/cjs/instant-apps-splash.cjs.entry.js +2 -6
  16. package/dist/cjs/loader.cjs.js +1 -1
  17. package/dist/cjs/map-select-tools_3.cjs.entry.js +2 -2
  18. package/dist/cjs/{mapViewUtils-cd29b129.js → mapViewUtils-290dbc9e.js} +4 -0
  19. package/dist/cjs/public-notification.cjs.entry.js +2 -2
  20. package/dist/cjs/solutions-components.cjs.js +1 -1
  21. package/dist/collection/components/basemap-gallery/basemap-gallery.css +19 -19
  22. package/dist/collection/components/crowdsource-reporter/crowdsource-reporter.js +36 -0
  23. package/dist/collection/components/layer-table/layer-table.js +29 -11
  24. package/dist/collection/components/map-fullscreen/map-fullscreen.css +19 -19
  25. package/dist/collection/components/map-legend/map-legend.css +3 -3
  26. package/dist/collection/utils/interfaces.ts +1 -0
  27. package/dist/collection/utils/queryUtils.js +4 -0
  28. package/dist/collection/utils/queryUtils.ts +5 -0
  29. package/dist/components/crowdsource-reporter.js +4 -0
  30. package/dist/components/instant-apps-export.js +20 -21
  31. package/dist/components/instant-apps-filter-list2.js +70 -31
  32. package/dist/components/instant-apps-header2.js +1 -1
  33. package/dist/components/instant-apps-language-switcher.js +3 -3
  34. package/dist/components/instant-apps-language-translator-item2.js +5 -4
  35. package/dist/components/instant-apps-language-translator2.js +1 -1
  36. package/dist/components/instant-apps-splash.js +3 -7
  37. package/dist/components/layer-table2.js +29 -11
  38. package/dist/components/queryUtils.js +4 -0
  39. package/dist/esm/calcite-alert_4.entry.js +1 -1
  40. package/dist/esm/calcite-combobox_5.entry.js +1 -1
  41. package/dist/esm/calcite-flow_5.entry.js +1 -1
  42. package/dist/esm/calcite-input-date-picker_3.entry.js +70 -31
  43. package/dist/esm/card-manager_3.entry.js +30 -13
  44. package/dist/esm/crowdsource-manager.entry.js +1 -1
  45. package/dist/esm/crowdsource-reporter.entry.js +3 -1
  46. package/dist/esm/{downloadUtils-985dcd1c.js → downloadUtils-20d22198.js} +2 -2
  47. package/dist/esm/{index.es-03d8386e.js → index.es-8b85f68d.js} +2 -2
  48. package/dist/esm/instant-apps-ckeditor-wrapper_3.entry.js +5 -4
  49. package/dist/esm/instant-apps-export.entry.js +20 -21
  50. package/dist/esm/instant-apps-header.entry.js +1 -1
  51. package/dist/esm/instant-apps-language-switcher.entry.js +3 -3
  52. package/dist/esm/instant-apps-language-translator.entry.js +1 -1
  53. package/dist/esm/instant-apps-splash.entry.js +3 -7
  54. package/dist/esm/loader.js +1 -1
  55. package/dist/esm/map-select-tools_3.entry.js +2 -2
  56. package/dist/esm/{mapViewUtils-257bc9b3.js → mapViewUtils-a177d4f9.js} +4 -0
  57. package/dist/esm/public-notification.entry.js +2 -2
  58. package/dist/esm/solutions-components.js +1 -1
  59. package/dist/node_modules/@esri/instant-apps-components/dist/collection/components/instant-apps-filter-list/instant-apps-filter-list.css +8 -1
  60. package/dist/node_modules/@esri/instant-apps-components/dist/collection/components/instant-apps-header/instant-apps-header.css +3 -0
  61. package/dist/node_modules/@esri/instant-apps-components/dist/collection/components/instant-apps-splash/instant-apps-splash.css +3 -0
  62. package/dist/solutions-components/{p-8571c89f.entry.js → p-044cd52c.entry.js} +1 -1
  63. package/dist/solutions-components/{p-df048b47.js → p-17e328bb.js} +1 -1
  64. package/dist/solutions-components/p-207fd378.entry.js +6 -0
  65. package/dist/solutions-components/{p-12492469.entry.js → p-2283ae14.entry.js} +1 -1
  66. package/dist/solutions-components/p-2f017ad2.entry.js +6 -0
  67. package/dist/solutions-components/{p-20b206f3.entry.js → p-32adb2cc.entry.js} +1 -1
  68. package/dist/solutions-components/p-3eedaead.js +36 -0
  69. package/dist/solutions-components/{p-2f840f08.entry.js → p-42233edc.entry.js} +1 -1
  70. package/dist/solutions-components/p-4742efa8.entry.js +6 -0
  71. package/dist/solutions-components/p-57087d57.entry.js +17 -0
  72. package/dist/solutions-components/{p-23e58d7c.entry.js → p-59c6f63f.entry.js} +1 -1
  73. package/dist/solutions-components/{p-34eaca46.entry.js → p-69a1df0f.entry.js} +1 -1
  74. package/dist/solutions-components/{p-6419f8d7.entry.js → p-6fe5e1d5.entry.js} +1 -1
  75. package/dist/solutions-components/p-7480ac64.entry.js +6 -0
  76. package/dist/solutions-components/p-aecf92f4.entry.js +6 -0
  77. package/dist/solutions-components/p-cacd0307.entry.js +6 -0
  78. package/dist/solutions-components/p-e2b0b3fa.entry.js +6 -0
  79. package/dist/solutions-components/{p-00ba5a2a.js → p-f6536eae.js} +2 -2
  80. package/dist/solutions-components/solutions-components.esm.js +1 -1
  81. package/dist/solutions-components/utils/interfaces.ts +1 -0
  82. package/dist/solutions-components/utils/queryUtils.ts +5 -0
  83. package/dist/types/components/crowdsource-reporter/crowdsource-reporter.d.ts +8 -0
  84. package/dist/types/components/layer-table/layer-table.d.ts +9 -1
  85. package/dist/types/components.d.ts +16 -0
  86. package/dist/types/utils/interfaces.d.ts +1 -0
  87. package/dist/types/utils/queryUtils.d.ts +1 -0
  88. package/package.json +2 -2
  89. package/dist/solutions-components/p-32fed23c.entry.js +0 -17
  90. package/dist/solutions-components/p-6a61c742.entry.js +0 -6
  91. package/dist/solutions-components/p-820e3d28.entry.js +0 -6
  92. package/dist/solutions-components/p-9161dca9.entry.js +0 -6
  93. package/dist/solutions-components/p-93369c9f.entry.js +0 -6
  94. package/dist/solutions-components/p-96f5be25.js +0 -36
  95. package/dist/solutions-components/p-97425481.entry.js +0 -6
  96. package/dist/solutions-components/p-ae4c8b8c.entry.js +0 -6
  97. package/dist/solutions-components/p-eb0f4ede.entry.js +0 -6
@@ -45,7 +45,7 @@ const InstantAppsLanguageSwitcher$1 = /*@__PURE__*/ proxyCustomElement(class Ins
45
45
  this.t9nData = null;
46
46
  }
47
47
  async componentWillLoad() {
48
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
48
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
49
49
  const [intl, WebMap, request] = await loadModules(['esri/intl', 'esri/WebMap', 'esri/request']);
50
50
  this.intl = intl;
51
51
  this.request = request;
@@ -77,8 +77,8 @@ const InstantAppsLanguageSwitcher$1 = /*@__PURE__*/ proxyCustomElement(class Ins
77
77
  }
78
78
  if (this.view) {
79
79
  const webmap = this.view.map;
80
- this.defaultWebMapId = webmap.portalItem.id;
81
- const translatedWebmap = (_l = (_k = (_j = this.locales) === null || _j === void 0 ? void 0 : _j.filter(localeItem => (localeItem === null || localeItem === void 0 ? void 0 : localeItem.webmap) && (localeItem === null || localeItem === void 0 ? void 0 : localeItem.webmap) !== this.defaultWebMapId && (localeItem === null || localeItem === void 0 ? void 0 : localeItem.locale) === this.selectedLanguage)) === null || _k === void 0 ? void 0 : _k[0]) === null || _l === void 0 ? void 0 : _l.webmap;
80
+ this.defaultWebMapId = (_j = webmap === null || webmap === void 0 ? void 0 : webmap.portalItem) === null || _j === void 0 ? void 0 : _j.id;
81
+ const translatedWebmap = (_m = (_l = (_k = this.locales) === null || _k === void 0 ? void 0 : _k.filter(localeItem => (localeItem === null || localeItem === void 0 ? void 0 : localeItem.webmap) && (localeItem === null || localeItem === void 0 ? void 0 : localeItem.webmap) !== this.defaultWebMapId && (localeItem === null || localeItem === void 0 ? void 0 : localeItem.locale) === this.selectedLanguage)) === null || _l === void 0 ? void 0 : _l[0]) === null || _m === void 0 ? void 0 : _m.webmap;
82
82
  if (translatedWebmap) {
83
83
  this.view.map = new WebMap({
84
84
  portalItem: {
@@ -89,13 +89,13 @@ const InstantAppsLanguageTranslatorItem = /*@__PURE__*/ proxyCustomElement(class
89
89
  return (h("div", { class: `${CSS.section}${selected}` }, this.renderItemHeader(EInputType.User, label, uid), this.handleInputRender(EInputType.User, value, uid)));
90
90
  }
91
91
  renderTranslatedLanguageSection() {
92
- var _a;
92
+ var _a, _b;
93
93
  const uiDataItem = this.getUIDataItem();
94
94
  const uid = this.setting.id;
95
95
  const locale = store.get('currentLanguage');
96
96
  const data = store.get('portalItemResourceT9n');
97
- const label = this.translatedLanguageLabels[this.fieldName];
98
- const value = (_a = data === null || data === void 0 ? void 0 : data[locale]) === null || _a === void 0 ? void 0 : _a[uid];
97
+ const label = (_a = this.translatedLanguageLabels) === null || _a === void 0 ? void 0 : _a[this.fieldName];
98
+ const value = (_b = data === null || data === void 0 ? void 0 : data[locale]) === null || _b === void 0 ? void 0 : _b[uid];
99
99
  const selected = (uiDataItem === null || uiDataItem === void 0 ? void 0 : uiDataItem.selected) ? ` ${CSS.selected}` : '';
100
100
  return (h("div", { class: `${CSS.section}${selected}` }, this.renderItemHeader(EInputType.Translation, label, uid), this.handleInputRender(EInputType.Translation, value, uid)));
101
101
  }
@@ -110,13 +110,14 @@ const InstantAppsLanguageTranslatorItem = /*@__PURE__*/ proxyCustomElement(class
110
110
  return content === null || content === void 0 ? void 0 : content.map(contentItem => (contentItem.hasOwnProperty('content') ? this.renderNestedInputs(inputType, contentItem) : this.renderNestedInput(inputType, contentItem)));
111
111
  }
112
112
  renderNestedInput(inputType, contentItem) {
113
+ var _a;
113
114
  const locale = store.get('currentLanguage');
114
115
  const data = store.get('portalItemResourceT9n');
115
116
  const uid = contentItem === null || contentItem === void 0 ? void 0 : contentItem.id;
116
117
  const localeData = data === null || data === void 0 ? void 0 : data[locale];
117
118
  const translatedValue = localeData === null || localeData === void 0 ? void 0 : localeData[uid];
118
119
  const { label, value, id } = contentItem;
119
- const inputLabel = inputType === EInputType.Translation ? this.translatedLanguageLabels[id] : label;
120
+ const inputLabel = inputType === EInputType.Translation ? (_a = this.translatedLanguageLabels) === null || _a === void 0 ? void 0 : _a[id] : label;
120
121
  const isUser = inputType === EInputType.User;
121
122
  const inputValue = isUser ? value : translatedValue;
122
123
  return (h("div", { class: CSS.nestedInput }, this.renderItemHeader(inputType, inputLabel, uid, contentItem), this.renderInput(inputType, inputValue, uid, contentItem)));
@@ -221,7 +221,7 @@ const InstantAppsLanguageTranslator = /*@__PURE__*/ proxyCustomElement(class Ins
221
221
  return (h("instant-apps-language-translator-search", { onSuggestionSelected: this.onSuggestionSelect.bind(this), t9nPlaceholder: (_a = this.messages) === null || _a === void 0 ? void 0 : _a.searchPlaceholder }));
222
222
  }
223
223
  renderTrailingTopBarSection() {
224
- return h("div", { class: CSS.topBarSection }, this.renderLanguageSelection());
224
+ return (h("div", { class: CSS.topBarSection }, this.renderLanguageSelection(), h("slot", { name: "translation-custom-action" })));
225
225
  }
226
226
  renderLanguageSelection() {
227
227
  var _a;
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
7
7
  import { S as Sanitizer } from './index3.js';
8
- import { b as getLocaleComponentStrings } from './locale3.js';
8
+ import { g as getMessages } from './locale3.js';
9
9
  import { d as defineCustomElement$8 } from './button.js';
10
10
  import { d as defineCustomElement$7 } from './checkbox.js';
11
11
  import { d as defineCustomElement$6 } from './icon.js';
@@ -53,7 +53,7 @@ function removeItemFromLocalStorage(key) {
53
53
  (_a = window === null || window === void 0 ? void 0 : window.localStorage) === null || _a === void 0 ? void 0 : _a.removeItem(key);
54
54
  }
55
55
 
56
- const instantAppsSplashCss = ":host{display:block}:host .instant-apps-splash__back-content{display:flex;align-items:center}:host .instant-apps-splash__back-content calcite-label{--calcite-label-margin-bottom:0}";
56
+ const instantAppsSplashCss = ":host{display:block}:host .image.image_resized img{width:100%}:host .instant-apps-splash__back-content{display:flex;align-items:center}:host .instant-apps-splash__back-content calcite-label{--calcite-label-margin-bottom:0}";
57
57
 
58
58
  const CSS = {
59
59
  back: 'instant-apps-splash__back-content',
@@ -90,7 +90,7 @@ const InstantAppsSplash$1 = /*@__PURE__*/ proxyCustomElement(class InstantAppsSp
90
90
  this.sanitizeContent();
91
91
  }
92
92
  componentDidLoad() {
93
- this.setMessages();
93
+ getMessages(this);
94
94
  }
95
95
  render() {
96
96
  return (h("calcite-modal", { onCalciteModalClose: this.close.bind(this), open: this.open, closeButtonDisabled: this.closeButtonDisabled }, this.renderHeader(), this.renderContent(), this.localStorageKey ? this.renderDontShowThisAgainCheckbox() : null, this.renderPrimaryButton()));
@@ -117,10 +117,6 @@ const InstantAppsSplash$1 = /*@__PURE__*/ proxyCustomElement(class InstantAppsSp
117
117
  this.open = false;
118
118
  this.splashClose.emit();
119
119
  }
120
- async setMessages() {
121
- const messages = await getLocaleComponentStrings(this.el);
122
- this.messages = messages[0];
123
- }
124
120
  handleDontShowThisAgain(event) {
125
121
  const { localStorageKey } = this;
126
122
  if (!localStorageKey)
@@ -120,6 +120,7 @@ const LayerTable = /*@__PURE__*/ proxyCustomElement(class LayerTable extends HTM
120
120
  this.showNewestFirst = undefined;
121
121
  this.zoomAndScrollToSelected = undefined;
122
122
  this._controlsThatFit = undefined;
123
+ this._csvExporting = false;
123
124
  this._fetchingData = false;
124
125
  this._filterActive = false;
125
126
  this._filterOpen = false;
@@ -396,8 +397,8 @@ const LayerTable = /*@__PURE__*/ proxyCustomElement(class LayerTable extends HTM
396
397
  if (cur && !cur.isOverflow) {
397
398
  prev.push(cur.isDanger ?
398
399
  this._getDangerAction(cur.icon, cur.label, cur.func, cur.disabled) :
399
- cur.isSublist ? (h("calcite-dropdown", { closeOnSelectDisabled: true, id: this._getId(cur.icon), onCalciteDropdownBeforeClose: () => this._forceShowHide(), ref: (el) => this._showHideDropdown = el }, this._getAction(cur.active, this._showHideOpen ? "chevron-down" : cur.icon, cur.indicator, cur.label, cur.func, cur.disabled, "trigger"), this._showHideOpen ? this._getFieldlist() : undefined)) :
400
- this._getAction(cur.active, cur.icon, cur.indicator, cur.label, cur.func, cur.disabled));
400
+ cur.isSublist ? (h("calcite-dropdown", { closeOnSelectDisabled: true, id: this._getId(cur.icon), onCalciteDropdownBeforeClose: () => this._forceShowHide(), ref: (el) => this._showHideDropdown = el }, this._getAction(cur.active, this._showHideOpen ? "chevron-down" : cur.icon, cur.indicator, cur.label, cur.func, cur.disabled, cur.loading, "trigger"), this._showHideOpen ? this._getFieldlist() : undefined)) :
401
+ this._getAction(cur.active, cur.icon, cur.indicator, cur.label, cur.func, cur.disabled, cur.loading));
401
402
  }
402
403
  return prev;
403
404
  }, []);
@@ -549,6 +550,7 @@ const LayerTable = /*@__PURE__*/ proxyCustomElement(class LayerTable extends HTM
549
550
  indicator: false,
550
551
  func: () => void this._exportToCSV(),
551
552
  label: this._translations.exportCSV,
553
+ loading: this._csvExporting,
552
554
  disabled: featuresEmpty,
553
555
  isOverflow: false
554
556
  } : undefined, {
@@ -733,7 +735,7 @@ const LayerTable = /*@__PURE__*/ proxyCustomElement(class LayerTable extends HTM
733
735
  _getDropdown(id) {
734
736
  const dropdownItems = this._getDropdownItems();
735
737
  return dropdownItems.length > 0 ? (h("calcite-dropdown", { closeOnSelectDisabled: true, disabled: this._layer === undefined, id: "solutions-more", onCalciteDropdownBeforeClose: () => this._forceShowHide(), ref: (el) => this._moreDropdown = el }, h("calcite-action", { appearance: "solid", id: id, label: "", onClick: () => this._closeShowHide(), slot: "trigger", text: "" }, h("calcite-button", { appearance: "transparent", iconEnd: "chevron-down", kind: "neutral" }, this._translations.more)), h("calcite-dropdown-group", { "selection-mode": "none" }, dropdownItems.map(item => {
736
- return (h("calcite-dropdown-group", { class: item.disabled ? "disabled" : "", selectionMode: item.disabled ? "none" : "single" }, h("calcite-dropdown-item", { iconStart: item.isSublist && this._showHideOpen ? "chevron-down" : item.icon, id: "solutions-subset-list", onClick: item.func }, item.label)));
738
+ return (h("calcite-dropdown-group", { class: item.disabled ? "disabled" : "", selectionMode: item.disabled ? "none" : "single" }, h("calcite-dropdown-item", { disabled: item.loading, iconStart: item.isSublist && this._showHideOpen ? "chevron-down" : item.loading ? "" : item.icon, id: "solutions-subset-list", onClick: item.func }, item.loading ? (h("div", { class: "display-flex" }, h("calcite-loader", { inline: true, label: item.label, scale: "m" }), item.label)) : item.label)));
737
739
  })), this._showHideOpen ? this._getFieldlist() : undefined)) : undefined;
738
740
  }
739
741
  /**
@@ -755,9 +757,9 @@ const LayerTable = /*@__PURE__*/ proxyCustomElement(class LayerTable extends HTM
755
757
  *
756
758
  * @returns VNode The node representing the DOM element that will contain the action
757
759
  */
758
- _getAction(active, icon, indicator, label, func, disabled, slot) {
760
+ _getAction(active, icon, indicator, label, func, disabled, loading, slot) {
759
761
  const _disabled = this._layer === undefined ? true : disabled;
760
- return (h("div", { class: "display-flex", id: this._getId(icon), slot: slot }, h("calcite-action", { active: active, appearance: "solid", disabled: _disabled, icon: icon, id: icon, indicator: indicator, label: label, onClick: func, text: label, textEnabled: true }), this._getToolTip("bottom", icon, label)));
762
+ return (h("div", { class: "display-flex", id: this._getId(icon), slot: slot }, h("calcite-action", { active: active, appearance: "solid", disabled: _disabled, icon: icon, id: icon, indicator: indicator, label: label, loading: loading, onClick: func, text: label, textEnabled: true }), this._getToolTip("bottom", icon, label)));
761
763
  }
762
764
  /**
763
765
  * Get an action and tooltip for share
@@ -886,6 +888,7 @@ const LayerTable = /*@__PURE__*/ proxyCustomElement(class LayerTable extends HTM
886
888
  },
887
889
  container: node
888
890
  });
891
+ this._table.columnPerformanceModeEnabled = false;
889
892
  });
890
893
  this._initColumnsInfo();
891
894
  this._checkEditEnabled();
@@ -1210,13 +1213,9 @@ const LayerTable = /*@__PURE__*/ proxyCustomElement(class LayerTable extends HTM
1210
1213
  const hitTestResult = await this.mapView.hitTest(evt.screenPoint, opts);
1211
1214
  if (hitTestResult.results.length > 0) {
1212
1215
  hitTestResult.results.forEach((result) => {
1213
- this._clearSelection();
1214
1216
  const id = result.graphic.getObjectId();
1215
1217
  const index = this._table.highlightIds.indexOf(id);
1216
- if (index > -1) {
1217
- this._table.highlightIds.removeAt(index);
1218
- }
1219
- else {
1218
+ if (index < 0) {
1220
1219
  this._table.highlightIds.add(id);
1221
1220
  }
1222
1221
  });
@@ -1224,6 +1223,9 @@ const LayerTable = /*@__PURE__*/ proxyCustomElement(class LayerTable extends HTM
1224
1223
  this._table.filterBySelection();
1225
1224
  }
1226
1225
  }
1226
+ else {
1227
+ this._clearSelection();
1228
+ }
1227
1229
  }
1228
1230
  /**
1229
1231
  * Select or deselect all rows
@@ -1312,11 +1314,26 @@ const LayerTable = /*@__PURE__*/ proxyCustomElement(class LayerTable extends HTM
1312
1314
  }
1313
1315
  return prev;
1314
1316
  }, []);
1315
- void downloadCSV(null, //???
1317
+ this._updateToolInfoLoading("export", true);
1318
+ this._csvExporting = true;
1319
+ await downloadCSV(null, //???
1316
1320
  exportInfos, false, // formatUsingLayerPopup
1317
1321
  false, // removeDuplicates
1318
1322
  true, // addColumnTitle
1319
1323
  fields, true);
1324
+ this._updateToolInfoLoading("export", false);
1325
+ this._csvExporting = false;
1326
+ }
1327
+ /**
1328
+ * Set the loading prop in the stored toolInfos
1329
+ */
1330
+ _updateToolInfoLoading(name, isLoading) {
1331
+ this._toolInfos.some(tool => {
1332
+ if ((tool === null || tool === void 0 ? void 0 : tool.icon) === name) {
1333
+ tool.loading = isLoading;
1334
+ return true;
1335
+ }
1336
+ });
1320
1337
  }
1321
1338
  /**
1322
1339
  * Refreshes the table and maintains the curent scroll position
@@ -1474,6 +1491,7 @@ const LayerTable = /*@__PURE__*/ proxyCustomElement(class LayerTable extends HTM
1474
1491
  "showNewestFirst": [4, "show-newest-first"],
1475
1492
  "zoomAndScrollToSelected": [4, "zoom-and-scroll-to-selected"],
1476
1493
  "_controlsThatFit": [32],
1494
+ "_csvExporting": [32],
1477
1495
  "_fetchingData": [32],
1478
1496
  "_filterActive": [32],
1479
1497
  "_filterOpen": [32],
@@ -52,6 +52,7 @@ async function queryObjectIds(geometries, layer) {
52
52
  }
53
53
  /**
54
54
  * Query the layer for features that have the provided OIDs
55
+ * If no ids are provided all features will be returned
55
56
  *
56
57
  * @param ids array of ObjectIDs to be used to query for features in a layer
57
58
  * @param layer the layer to retrieve features from
@@ -76,6 +77,9 @@ async function queryFeaturesByID(ids, layer, graphics, returnGeometry, outSpatia
76
77
  if (fields) {
77
78
  q.outFields = fields;
78
79
  }
80
+ if (ids.length === 0) {
81
+ ids = await layer.queryObjectIds();
82
+ }
79
83
  const result = await layer.queryFeatures(q);
80
84
  graphics = graphics.concat(result.features);
81
85
  const remainingIds = ids.slice(num, ids.length);
@@ -12,7 +12,7 @@ import { o as onToggleOpenCloseComponent } from './openCloseComponent-9f90f493.j
12
12
  import { c as connectMessages, s as setUpMessages, d as disconnectMessages, u as updateMessages } from './t9n-436fb2b1.js';
13
13
  import { K as KindIcons } from './resources-88a48c5c.js';
14
14
  import { g as getLocaleComponentStrings, l as loadModules } from './locale-25a5ae3e.js';
15
- import { a as getAllLayers } from './mapViewUtils-257bc9b3.js';
15
+ import { a as getAllLayers } from './mapViewUtils-a177d4f9.js';
16
16
  import { P as PopupUtils } from './popupUtils-23fe3c9f.js';
17
17
  import './guid-b75a5f7b.js';
18
18
  import './resources-8834f920.js';
@@ -22,7 +22,7 @@ import { V as Validation } from './Validation-ea480265.js';
22
22
  import { d as debounce } from './debounce-229b1a22.js';
23
23
  import { i as isActivationKey } from './key-c83d835f.js';
24
24
  import { g as getLocaleComponentStrings } from './locale-25a5ae3e.js';
25
- import { d as getMapLayerHash, o as getMapTableHash } from './mapViewUtils-257bc9b3.js';
25
+ import { d as getMapLayerHash, o as getMapTableHash } from './mapViewUtils-a177d4f9.js';
26
26
  import { s as state } from './publicNotificationStore-3bf4de75.js';
27
27
  import './resources-8834f920.js';
28
28
  import './browser-d60104bd.js';
@@ -12,7 +12,7 @@ import { c as connectLocalized, d as disconnectLocalized } from './locale-904407
12
12
  import { c as connectMessages, s as setUpMessages, d as disconnectMessages, u as updateMessages } from './t9n-436fb2b1.js';
13
13
  import { S as SLOTS$1 } from './resources-00983bd3.js';
14
14
  import { l as loadModules, g as getLocaleComponentStrings, f as formatNumber } from './locale-25a5ae3e.js';
15
- import { a as getAllLayers, g as getLayerOrTable, b as getFeatureLayerView, h as highlightFeatures, d as getMapLayerHash } from './mapViewUtils-257bc9b3.js';
15
+ import { a as getAllLayers, g as getLayerOrTable, b as getFeatureLayerView, h as highlightFeatures, d as getMapLayerHash } from './mapViewUtils-a177d4f9.js';
16
16
  import { P as PopupUtils } from './popupUtils-23fe3c9f.js';
17
17
  import './guid-b75a5f7b.js';
18
18
  import './resources-8834f920.js';
@@ -774,7 +774,7 @@ function resetDatePicker(datePicker) {
774
774
  }
775
775
  }
776
776
 
777
- const instantAppsFilterListCss = ":host{display:block}.instant-apps-filter-list *{box-sizing:border-box}.instant-apps-filter-list__container{height:100%}.instant-apps-filter-list__container calcite-block:last-of-type{margin-bottom:0}.instant-apps-filter-list__footer{padding:12px;display:flex}.instant-apps-filter-list__footer calcite-button:nth-child(2){margin-left:6px}.instant-apps-filter-list__item-container,.instant-apps-filter-list__item-container--user-input{display:flex;justify-content:space-between;align-items:center}.instant-apps-filter-list__item-container:not(:last-child),.instant-apps-filter-list__item-container--user-input:not(:last-child){padding-bottom:20px}.instant-apps-filter-list__item-container--user-input{margin:0;display:flex;flex-direction:column;align-items:flex-start}.instant-apps-filter-list__item-container--user-input>span{margin:0 0 6px;font-size:14px;font-weight:normal}.instant-apps-filter-list__item-container--user-input calcite-combobox{width:100%}.instant-apps-filter-list__number-input-container{width:100%;display:flex;justify-content:center}.instant-apps-filter-list__number-input-container calcite-slider{width:90%}.instant-apps-filter-list__date-picker-input-container{display:flex;align-items:center;justify-content:unset;width:100%}.instant-apps-filter-list__date-picker-input-container calcite-action{height:48px;border-top:1px solid var(--calcite-color-border-input);border-right:1px solid var(--calcite-color-border-input);border-bottom:1px solid var(--calcite-color-border-input)}.instant-apps-filter-list__title{margin-right:20px}.instant-apps-filter-list__title>p{font-size:14px;font-weight:normal;margin:0}.instant-apps-filter-list__checkbox-container{display:flex}.instant-apps-filter-list__checkbox-container calcite-checkbox{height:18px}.instant-apps-filter-list__operator-description{margin:0;--calcite-font-size--1:12px}.instant-apps-filter-list__zoom-to{display:flex;justify-content:flex-end;margin:8px 0 20px}.instant-apps-filter-list__zoom-to calcite-action{width:-moz-min-content;width:min-content}@media (prefers-reduced-motion){.instant-apps-filter-list calcite-loader{--calcite-internal-duration-factor:2;--calcite-internal-animation-timing-slow:calc(300ms * 2)}}.instant-apps-filter-list.calcite-mode-dark .instant-apps-filter-list__header-container{background:#2b2b2b;color:#fff}.instant-apps-filter-list.calcite-mode-dark .instant-apps-filter-list__operator-description{background:#353535}";
777
+ const instantAppsFilterListCss = ":host{display:block}.instant-apps-filter-list *{box-sizing:border-box}.instant-apps-filter-list__container{height:100%}.instant-apps-filter-list__container calcite-block:last-of-type{margin-bottom:0}.instant-apps-filter-list__footer{padding:12px;display:flex}.instant-apps-filter-list__footer calcite-button:nth-child(2){margin-left:6px}.instant-apps-filter-list__item-container,.instant-apps-filter-list__item-container--user-input{display:flex;justify-content:space-between;align-items:center}.instant-apps-filter-list__item-container:not(:last-child),.instant-apps-filter-list__item-container--user-input:not(:last-child){padding-bottom:20px}.instant-apps-filter-list__item-container--user-input{margin:0;display:flex;flex-direction:column;align-items:flex-start}.instant-apps-filter-list__item-container--user-input>span{margin:0 0 6px;font-size:14px;font-weight:normal}.instant-apps-filter-list__item-container--user-input calcite-combobox{width:100%;--calcite-font-size--1:16px}.instant-apps-filter-list__item-container--user-input calcite-combobox-item{--calcite-font-size--1:12px}.instant-apps-filter-list__number-input-container{width:100%;display:flex;justify-content:center}.instant-apps-filter-list__number-input-container calcite-slider{width:90%}.instant-apps-filter-list__date-picker-input-container{display:flex;align-items:center;justify-content:unset;width:100%}.instant-apps-filter-list__date-picker-input-container calcite-action{height:64px;border-top:1px solid var(--calcite-color-border-input);border-right:1px solid var(--calcite-color-border-input);border-bottom:1px solid var(--calcite-color-border-input)}.instant-apps-filter-list__title{margin-right:20px}.instant-apps-filter-list__title>p{font-size:14px;font-weight:normal;margin:0}.instant-apps-filter-list__checkbox-container{display:flex}.instant-apps-filter-list__checkbox-container calcite-checkbox{height:18px}.instant-apps-filter-list__operator-description{margin:0;--calcite-font-size--1:12px}.instant-apps-filter-list__zoom-to{display:flex;justify-content:flex-end;margin:8px 0 20px}.instant-apps-filter-list__zoom-to calcite-action{width:-moz-min-content;width:min-content}.instant-apps-filter-list calcite-input-date-picker{--calcite-font-size--1:16px}@media (prefers-reduced-motion){.instant-apps-filter-list calcite-loader{--calcite-internal-duration-factor:2;--calcite-internal-animation-timing-slow:calc(300ms * 2)}}.instant-apps-filter-list.calcite-mode-dark .instant-apps-filter-list__header-container{background:#2b2b2b;color:#fff}.instant-apps-filter-list.calcite-mode-dark .instant-apps-filter-list__operator-description{background:#353535}";
778
778
 
779
779
  const CSS$1 = {
780
780
  base: 'instant-apps-filter-list',
@@ -861,6 +861,7 @@ const InstantAppsFilterList = class {
861
861
  this.geometryJsonUtils = geometryJsonUtils;
862
862
  this.reactiveUtils = reactiveUtils;
863
863
  this.locale = intl.getLocale();
864
+ this.intl = intl;
864
865
  return Promise.resolve();
865
866
  }
866
867
  render() {
@@ -892,24 +893,13 @@ const InstantAppsFilterList = class {
892
893
  }
893
894
  renderCombobox(layerExpression, expression) {
894
895
  var _a;
895
- return (h("label", { key: "combo-select", class: CSS$1.filterUIItemContainer }, h("span", null, expression.name), h("calcite-combobox", { id: expression.id.toString(), onCalciteComboboxChange: this.handleComboSelect.bind(this, expression, layerExpression), label: expression.name, placeholder: expression.placeholder, overlayPositioning: "fixed", selectionMode: "multiple", scale: "s", "max-items": "6" }, (_a = expression.fields) === null || _a === void 0 ? void 0 : _a.map((value, index) => this.renderComboboxItem(expression, value, index)))));
896
+ return (h("label", { key: "combo-select", class: CSS$1.filterUIItemContainer }, h("span", null, expression.name), h("calcite-combobox", { id: expression.id.toString(), onCalciteComboboxChange: this.handleComboSelect.bind(this, expression, layerExpression), label: expression.name, placeholder: expression.placeholder, selectionMode: "multiple", "max-items": "6" }, (_a = expression.fields) === null || _a === void 0 ? void 0 : _a.map((value, index) => this.renderComboboxItem(expression, value, index)))));
896
897
  }
897
898
  renderComboboxItem(expression, value, index) {
898
- var _a, _b;
899
- let label = value;
900
- if (expression.type === 'coded-value') {
901
- label = (_a = expression.codedValues) === null || _a === void 0 ? void 0 : _a[value];
902
- }
903
- else if (expression.type === 'number' && typeof value === 'number' && expression.format != null) {
904
- if (expression.format.places != null) {
905
- label = this.roundNumber(value, expression.format.places);
906
- }
907
- if (expression.format.digitSeparator) {
908
- label = this.numberWithCommas(label);
909
- }
910
- }
899
+ var _a;
900
+ const label = this.createLabel(expression, value);
911
901
  const selectedFields = expression === null || expression === void 0 ? void 0 : expression.selectedFields;
912
- const selected = (_b = selectedFields === null || selectedFields === void 0 ? void 0 : selectedFields.includes(value)) !== null && _b !== void 0 ? _b : false;
902
+ const selected = (_a = selectedFields === null || selectedFields === void 0 ? void 0 : selectedFields.includes(value)) !== null && _a !== void 0 ? _a : false;
913
903
  return h("calcite-combobox-item", { key: `${label}-${index}`, value: value, textLabel: `${label}`, selected: selected });
914
904
  }
915
905
  initFilterConfig() {
@@ -941,11 +931,10 @@ const InstantAppsFilterList = class {
941
931
  }
942
932
  renderDatePicker(layerExpression, expression) {
943
933
  var _a, _b, _c, _d;
944
- const min = convertToDate(expression.min);
945
- const max = convertToDate(expression.max);
934
+ const { min, max } = expression;
946
935
  const value = [(_a = expression === null || expression === void 0 ? void 0 : expression.range) === null || _a === void 0 ? void 0 : _a.min, (_b = expression === null || expression === void 0 ? void 0 : expression.range) === null || _b === void 0 ? void 0 : _b.max];
947
936
  const check = min != null && max != null;
948
- return check ? (h("label", { class: CSS$1.filterUIItemContainer }, h("span", null, expression === null || expression === void 0 ? void 0 : expression.name), h("div", { class: CSS$1.dateInputContainer }, h("calcite-input-date-picker", { id: expression === null || expression === void 0 ? void 0 : expression.id.toString(), onCalciteInputDatePickerChange: this.handleDatePickerRangeChange.bind(this, expression, layerExpression), min: min, max: max, scale: "s", lang: (_c = this.locale) !== null && _c !== void 0 ? _c : 'en', "overlay-positioning": "fixed", layout: "vertical", value: value, range: true }), h("calcite-action", { onClick: this.handleResetDatePicker.bind(this, expression, layerExpression), icon: "reset", text: (_d = this.messages) === null || _d === void 0 ? void 0 : _d.resetDatePicker, scale: "s" })))) : null;
937
+ return check ? (h("label", { class: CSS$1.filterUIItemContainer }, h("span", null, expression === null || expression === void 0 ? void 0 : expression.name), h("div", { class: CSS$1.dateInputContainer }, h("calcite-input-date-picker", { id: expression === null || expression === void 0 ? void 0 : expression.id.toString(), onCalciteInputDatePickerChange: this.handleDatePickerRangeChange.bind(this, expression, layerExpression), min: min, max: max, "overlay-positioning": "fixed", lang: (_c = this.locale) !== null && _c !== void 0 ? _c : 'en', layout: "vertical", value: value, range: true }), h("calcite-action", { onClick: this.handleResetDatePicker.bind(this, expression, layerExpression), icon: "reset", text: (_d = this.messages) === null || _d === void 0 ? void 0 : _d.resetDatePicker, scale: "s" })))) : null;
949
938
  }
950
939
  renderFooter() {
951
940
  var _a;
@@ -1015,7 +1004,12 @@ const InstantAppsFilterList = class {
1015
1004
  this.resetCombobox(expression);
1016
1005
  }
1017
1006
  else if (type === 'date') {
1018
- this.resetDatePicker(expression);
1007
+ if ((expression === null || expression === void 0 ? void 0 : expression.numDisplayOption) === 'drop-down' || (expression === null || expression === void 0 ? void 0 : expression.displayOption) === 'drop-down') {
1008
+ this.resetCombobox(expression);
1009
+ }
1010
+ else {
1011
+ this.resetDatePicker(expression);
1012
+ }
1019
1013
  }
1020
1014
  else if (type === 'number' || type === 'range') {
1021
1015
  if ((expression === null || expression === void 0 ? void 0 : expression.numDisplayOption) === 'drop-down' || (expression === null || expression === void 0 ? void 0 : expression.displayOption) === 'drop-down') {
@@ -1091,9 +1085,15 @@ const InstantAppsFilterList = class {
1091
1085
  });
1092
1086
  }
1093
1087
  async updateStringExpression(layerExpression, expression) {
1094
- const { field } = expression;
1088
+ const { field, type } = expression;
1095
1089
  const layer = this.findFilterLayer(layerExpression);
1096
1090
  expression.fields = await this.getFeatureAttributes(layer, field);
1091
+ if (type === 'date') {
1092
+ const layerField = layer.fields.find(({ name }) => name === field);
1093
+ if ((layerField === null || layerField === void 0 ? void 0 : layerField.type) === 'date-only') {
1094
+ expression.dateOnly = true;
1095
+ }
1096
+ }
1097
1097
  if (expression === null || expression === void 0 ? void 0 : expression.selectedFields) {
1098
1098
  const selectedFields = expression.selectedFields.map((field) => (typeof field === 'number' ? field : `'${handleSingleQuote(field)}'`));
1099
1099
  expression.definitionExpression = `${field} IN (${selectedFields.join(',')})`;
@@ -1354,12 +1354,18 @@ const InstantAppsFilterList = class {
1354
1354
  handleComboSelect(expression, layerExpression, event) {
1355
1355
  const combobox = event.target;
1356
1356
  const items = combobox.selectedItems;
1357
- const { field } = expression;
1357
+ const { field, type } = expression;
1358
1358
  if (items && items.length) {
1359
1359
  const values = items.map(({ value }) => (typeof value === 'number' ? value : `'${handleSingleQuote(value)}'`));
1360
- expression.selectedFields = items.map(({ value }) => value);
1361
- const definitionExpression = `${field} IN (${values.join(',')})`;
1362
- expression.definitionExpression = definitionExpression;
1360
+ if (type === 'date') {
1361
+ expression.selectedFields = items.map(({ value }) => value);
1362
+ expression.definitionExpression = values.map(value => this.buildDateExpression(value, field)).join(' OR ');
1363
+ }
1364
+ else {
1365
+ expression.selectedFields = items.map(({ value }) => value);
1366
+ const definitionExpression = `${field} IN (${values.join(',')})`;
1367
+ expression.definitionExpression = definitionExpression;
1368
+ }
1363
1369
  expression.active = true;
1364
1370
  }
1365
1371
  else {
@@ -1416,20 +1422,20 @@ const InstantAppsFilterList = class {
1416
1422
  }
1417
1423
  createURLParamExpression(layerExpression, expression) {
1418
1424
  const { id, range, selectedFields, type } = expression;
1419
- if (type === 'number' || type === 'range' || type === 'date') {
1425
+ if (type === 'string' || type === 'coded-value' || (expression === null || expression === void 0 ? void 0 : expression.numDisplayOption) === 'drop-down' || (expression === null || expression === void 0 ? void 0 : expression.displayOption) === 'drop-down') {
1420
1426
  return {
1421
- type: 'range',
1427
+ type: 'select',
1422
1428
  layerId: layerExpression.id,
1423
1429
  expressionId: id.toString(),
1424
- range,
1430
+ selectedFields,
1425
1431
  };
1426
1432
  }
1427
- else if (type === 'string' || type === 'coded-value') {
1433
+ else if (type === 'number' || type === 'range' || type === 'date') {
1428
1434
  return {
1429
- type: 'select',
1435
+ type: 'range',
1430
1436
  layerId: layerExpression.id,
1431
1437
  expressionId: id.toString(),
1432
- selectedFields,
1438
+ range,
1433
1439
  };
1434
1440
  }
1435
1441
  else {
@@ -1725,6 +1731,39 @@ const InstantAppsFilterList = class {
1725
1731
  return layer;
1726
1732
  }
1727
1733
  }
1734
+ createLabel(expression, value) {
1735
+ var _a;
1736
+ let label = value;
1737
+ if (expression.type === 'coded-value') {
1738
+ label = (_a = expression.codedValues) === null || _a === void 0 ? void 0 : _a[value];
1739
+ }
1740
+ else if (expression.type === 'number' && typeof value === 'number' && expression.format != null) {
1741
+ if (expression.format.places != null) {
1742
+ label = this.roundNumber(value, expression.format.places);
1743
+ }
1744
+ if (expression.format.digitSeparator) {
1745
+ label = this.numberWithCommas(label);
1746
+ }
1747
+ }
1748
+ else if (expression.type === 'date' && !expression.dateOnly) {
1749
+ const format = expression.dateOnly ? this.intl.convertDateFormatToIntlOptions('short-date-long-time') : undefined;
1750
+ label = this.intl.formatDate(value, format);
1751
+ }
1752
+ return label;
1753
+ }
1754
+ buildDateExpression(date, field) {
1755
+ if (date) {
1756
+ const tmpDate = new Date(date);
1757
+ const tmpCompareDate = new Date(date);
1758
+ const tmpCompareDate1 = new Date(tmpCompareDate.setDate(tmpDate.getDate() + 1));
1759
+ const formattedDate = `${tmpDate.getFullYear()}-${tmpDate.getMonth() + 1}-${tmpDate.getDate()}`;
1760
+ const time = `${tmpDate.getHours()}:${tmpDate.getMinutes()}:${tmpDate.getSeconds()}`;
1761
+ const compareTime = `${tmpCompareDate1.getHours()}:${tmpCompareDate1.getMinutes()}:${tmpCompareDate1.getSeconds()}`;
1762
+ const compareFormattedDate = `${tmpCompareDate1.getFullYear()}-${tmpCompareDate1.getMonth() + 1}-${tmpCompareDate1.getDate()}`;
1763
+ return `${field} BETWEEN '${formattedDate} ${time}' AND '${compareFormattedDate} ${compareTime}'`;
1764
+ }
1765
+ return;
1766
+ }
1728
1767
  get el() { return getElement(this); }
1729
1768
  static get watchers() { return {
1730
1769
  "view": ["watchViewHandler"],
@@ -5,8 +5,8 @@
5
5
  */
6
6
  import { r as registerInstance, h, H as Host, g as getElement, c as createEvent } from './index-164d485a.js';
7
7
  import { g as getLocaleComponentStrings, l as loadModules } from './locale-25a5ae3e.js';
8
- import { q as queryFeaturesByID, g as getLayerOrTable, c as goToSelection, e as queryAllIds, f as queryFeatureIds, i as queryFeaturesByGlobalID } from './mapViewUtils-257bc9b3.js';
9
- import { d as downloadCSV } from './downloadUtils-985dcd1c.js';
8
+ import { q as queryFeaturesByID, g as getLayerOrTable, c as goToSelection, e as queryAllIds, f as queryFeatureIds, i as queryFeaturesByGlobalID } from './mapViewUtils-a177d4f9.js';
9
+ import { d as downloadCSV } from './downloadUtils-20d22198.js';
10
10
  import './esri-loader-eda07632.js';
11
11
  import './_commonjsHelpers-d5f9d613.js';
12
12
  import './interfaces-586e863c.js';
@@ -172,6 +172,7 @@ const LayerTable = class {
172
172
  this.showNewestFirst = undefined;
173
173
  this.zoomAndScrollToSelected = undefined;
174
174
  this._controlsThatFit = undefined;
175
+ this._csvExporting = false;
175
176
  this._fetchingData = false;
176
177
  this._filterActive = false;
177
178
  this._filterOpen = false;
@@ -448,8 +449,8 @@ const LayerTable = class {
448
449
  if (cur && !cur.isOverflow) {
449
450
  prev.push(cur.isDanger ?
450
451
  this._getDangerAction(cur.icon, cur.label, cur.func, cur.disabled) :
451
- cur.isSublist ? (h("calcite-dropdown", { closeOnSelectDisabled: true, id: this._getId(cur.icon), onCalciteDropdownBeforeClose: () => this._forceShowHide(), ref: (el) => this._showHideDropdown = el }, this._getAction(cur.active, this._showHideOpen ? "chevron-down" : cur.icon, cur.indicator, cur.label, cur.func, cur.disabled, "trigger"), this._showHideOpen ? this._getFieldlist() : undefined)) :
452
- this._getAction(cur.active, cur.icon, cur.indicator, cur.label, cur.func, cur.disabled));
452
+ cur.isSublist ? (h("calcite-dropdown", { closeOnSelectDisabled: true, id: this._getId(cur.icon), onCalciteDropdownBeforeClose: () => this._forceShowHide(), ref: (el) => this._showHideDropdown = el }, this._getAction(cur.active, this._showHideOpen ? "chevron-down" : cur.icon, cur.indicator, cur.label, cur.func, cur.disabled, cur.loading, "trigger"), this._showHideOpen ? this._getFieldlist() : undefined)) :
453
+ this._getAction(cur.active, cur.icon, cur.indicator, cur.label, cur.func, cur.disabled, cur.loading));
453
454
  }
454
455
  return prev;
455
456
  }, []);
@@ -601,6 +602,7 @@ const LayerTable = class {
601
602
  indicator: false,
602
603
  func: () => void this._exportToCSV(),
603
604
  label: this._translations.exportCSV,
605
+ loading: this._csvExporting,
604
606
  disabled: featuresEmpty,
605
607
  isOverflow: false
606
608
  } : undefined, {
@@ -785,7 +787,7 @@ const LayerTable = class {
785
787
  _getDropdown(id) {
786
788
  const dropdownItems = this._getDropdownItems();
787
789
  return dropdownItems.length > 0 ? (h("calcite-dropdown", { closeOnSelectDisabled: true, disabled: this._layer === undefined, id: "solutions-more", onCalciteDropdownBeforeClose: () => this._forceShowHide(), ref: (el) => this._moreDropdown = el }, h("calcite-action", { appearance: "solid", id: id, label: "", onClick: () => this._closeShowHide(), slot: "trigger", text: "" }, h("calcite-button", { appearance: "transparent", iconEnd: "chevron-down", kind: "neutral" }, this._translations.more)), h("calcite-dropdown-group", { "selection-mode": "none" }, dropdownItems.map(item => {
788
- return (h("calcite-dropdown-group", { class: item.disabled ? "disabled" : "", selectionMode: item.disabled ? "none" : "single" }, h("calcite-dropdown-item", { iconStart: item.isSublist && this._showHideOpen ? "chevron-down" : item.icon, id: "solutions-subset-list", onClick: item.func }, item.label)));
790
+ return (h("calcite-dropdown-group", { class: item.disabled ? "disabled" : "", selectionMode: item.disabled ? "none" : "single" }, h("calcite-dropdown-item", { disabled: item.loading, iconStart: item.isSublist && this._showHideOpen ? "chevron-down" : item.loading ? "" : item.icon, id: "solutions-subset-list", onClick: item.func }, item.loading ? (h("div", { class: "display-flex" }, h("calcite-loader", { inline: true, label: item.label, scale: "m" }), item.label)) : item.label)));
789
791
  })), this._showHideOpen ? this._getFieldlist() : undefined)) : undefined;
790
792
  }
791
793
  /**
@@ -807,9 +809,9 @@ const LayerTable = class {
807
809
  *
808
810
  * @returns VNode The node representing the DOM element that will contain the action
809
811
  */
810
- _getAction(active, icon, indicator, label, func, disabled, slot) {
812
+ _getAction(active, icon, indicator, label, func, disabled, loading, slot) {
811
813
  const _disabled = this._layer === undefined ? true : disabled;
812
- return (h("div", { class: "display-flex", id: this._getId(icon), slot: slot }, h("calcite-action", { active: active, appearance: "solid", disabled: _disabled, icon: icon, id: icon, indicator: indicator, label: label, onClick: func, text: label, textEnabled: true }), this._getToolTip("bottom", icon, label)));
814
+ return (h("div", { class: "display-flex", id: this._getId(icon), slot: slot }, h("calcite-action", { active: active, appearance: "solid", disabled: _disabled, icon: icon, id: icon, indicator: indicator, label: label, loading: loading, onClick: func, text: label, textEnabled: true }), this._getToolTip("bottom", icon, label)));
813
815
  }
814
816
  /**
815
817
  * Get an action and tooltip for share
@@ -938,6 +940,7 @@ const LayerTable = class {
938
940
  },
939
941
  container: node
940
942
  });
943
+ this._table.columnPerformanceModeEnabled = false;
941
944
  });
942
945
  this._initColumnsInfo();
943
946
  this._checkEditEnabled();
@@ -1262,13 +1265,9 @@ const LayerTable = class {
1262
1265
  const hitTestResult = await this.mapView.hitTest(evt.screenPoint, opts);
1263
1266
  if (hitTestResult.results.length > 0) {
1264
1267
  hitTestResult.results.forEach((result) => {
1265
- this._clearSelection();
1266
1268
  const id = result.graphic.getObjectId();
1267
1269
  const index = this._table.highlightIds.indexOf(id);
1268
- if (index > -1) {
1269
- this._table.highlightIds.removeAt(index);
1270
- }
1271
- else {
1270
+ if (index < 0) {
1272
1271
  this._table.highlightIds.add(id);
1273
1272
  }
1274
1273
  });
@@ -1276,6 +1275,9 @@ const LayerTable = class {
1276
1275
  this._table.filterBySelection();
1277
1276
  }
1278
1277
  }
1278
+ else {
1279
+ this._clearSelection();
1280
+ }
1279
1281
  }
1280
1282
  /**
1281
1283
  * Select or deselect all rows
@@ -1364,11 +1366,26 @@ const LayerTable = class {
1364
1366
  }
1365
1367
  return prev;
1366
1368
  }, []);
1367
- void downloadCSV(null, //???
1369
+ this._updateToolInfoLoading("export", true);
1370
+ this._csvExporting = true;
1371
+ await downloadCSV(null, //???
1368
1372
  exportInfos, false, // formatUsingLayerPopup
1369
1373
  false, // removeDuplicates
1370
1374
  true, // addColumnTitle
1371
1375
  fields, true);
1376
+ this._updateToolInfoLoading("export", false);
1377
+ this._csvExporting = false;
1378
+ }
1379
+ /**
1380
+ * Set the loading prop in the stored toolInfos
1381
+ */
1382
+ _updateToolInfoLoading(name, isLoading) {
1383
+ this._toolInfos.some(tool => {
1384
+ if ((tool === null || tool === void 0 ? void 0 : tool.icon) === name) {
1385
+ tool.loading = isLoading;
1386
+ return true;
1387
+ }
1388
+ });
1372
1389
  }
1373
1390
  /**
1374
1391
  * Refreshes the table and maintains the curent scroll position
@@ -6,7 +6,7 @@
6
6
  import { r as registerInstance, h, H as Host, g as getElement } from './index-164d485a.js';
7
7
  import { g as getLocaleComponentStrings } from './locale-25a5ae3e.js';
8
8
  import { E as ELayoutMode } from './interfaces-586e863c.js';
9
- import { g as getLayerOrTable } from './mapViewUtils-257bc9b3.js';
9
+ import { g as getLayerOrTable } from './mapViewUtils-a177d4f9.js';
10
10
  import './esri-loader-eda07632.js';
11
11
  import './_commonjsHelpers-d5f9d613.js';
12
12
 
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-164d485a.js';
7
7
  import { l as loadModules, g as getLocaleComponentStrings } from './locale-25a5ae3e.js';
8
- import { a as getAllLayers, b as getFeatureLayerView, h as highlightFeatures, g as getLayerOrTable, q as queryFeaturesByID } from './mapViewUtils-257bc9b3.js';
8
+ import { a as getAllLayers, b as getFeatureLayerView, h as highlightFeatures, g as getLayerOrTable, q as queryFeaturesByID } from './mapViewUtils-a177d4f9.js';
9
9
  import './esri-loader-eda07632.js';
10
10
  import './_commonjsHelpers-d5f9d613.js';
11
11
  import './interfaces-586e863c.js';
@@ -28,6 +28,8 @@ const CrowdsourceReporter = class {
28
28
  this.mapView = undefined;
29
29
  this.layerId = undefined;
30
30
  this.objectId = undefined;
31
+ this.center = undefined;
32
+ this.level = undefined;
31
33
  this.reportButtonText = undefined;
32
34
  this.reportsHeader = undefined;
33
35
  this.reportSubmittedMessage = undefined;