@esri/solutions-components 0.7.39 → 0.7.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +29 -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 +28 -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 +28 -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 +29 -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-09b48b1b.entry.js +0 -6
  90. package/dist/solutions-components/p-32fed23c.entry.js +0 -17
  91. package/dist/solutions-components/p-6a61c742.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
@@ -1211,13 +1213,9 @@ const LayerTable = /*@__PURE__*/ proxyCustomElement(class LayerTable extends HTM
1211
1213
  const hitTestResult = await this.mapView.hitTest(evt.screenPoint, opts);
1212
1214
  if (hitTestResult.results.length > 0) {
1213
1215
  hitTestResult.results.forEach((result) => {
1214
- this._clearSelection();
1215
1216
  const id = result.graphic.getObjectId();
1216
1217
  const index = this._table.highlightIds.indexOf(id);
1217
- if (index > -1) {
1218
- this._table.highlightIds.removeAt(index);
1219
- }
1220
- else {
1218
+ if (index < 0) {
1221
1219
  this._table.highlightIds.add(id);
1222
1220
  }
1223
1221
  });
@@ -1225,6 +1223,9 @@ const LayerTable = /*@__PURE__*/ proxyCustomElement(class LayerTable extends HTM
1225
1223
  this._table.filterBySelection();
1226
1224
  }
1227
1225
  }
1226
+ else {
1227
+ this._clearSelection();
1228
+ }
1228
1229
  }
1229
1230
  /**
1230
1231
  * Select or deselect all rows
@@ -1313,11 +1314,26 @@ const LayerTable = /*@__PURE__*/ proxyCustomElement(class LayerTable extends HTM
1313
1314
  }
1314
1315
  return prev;
1315
1316
  }, []);
1316
- void downloadCSV(null, //???
1317
+ this._updateToolInfoLoading("export", true);
1318
+ this._csvExporting = true;
1319
+ await downloadCSV(null, //???
1317
1320
  exportInfos, false, // formatUsingLayerPopup
1318
1321
  false, // removeDuplicates
1319
1322
  true, // addColumnTitle
1320
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
+ });
1321
1337
  }
1322
1338
  /**
1323
1339
  * Refreshes the table and maintains the curent scroll position
@@ -1475,6 +1491,7 @@ const LayerTable = /*@__PURE__*/ proxyCustomElement(class LayerTable extends HTM
1475
1491
  "showNewestFirst": [4, "show-newest-first"],
1476
1492
  "zoomAndScrollToSelected": [4, "zoom-and-scroll-to-selected"],
1477
1493
  "_controlsThatFit": [32],
1494
+ "_csvExporting": [32],
1478
1495
  "_fetchingData": [32],
1479
1496
  "_filterActive": [32],
1480
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
@@ -1263,13 +1265,9 @@ const LayerTable = class {
1263
1265
  const hitTestResult = await this.mapView.hitTest(evt.screenPoint, opts);
1264
1266
  if (hitTestResult.results.length > 0) {
1265
1267
  hitTestResult.results.forEach((result) => {
1266
- this._clearSelection();
1267
1268
  const id = result.graphic.getObjectId();
1268
1269
  const index = this._table.highlightIds.indexOf(id);
1269
- if (index > -1) {
1270
- this._table.highlightIds.removeAt(index);
1271
- }
1272
- else {
1270
+ if (index < 0) {
1273
1271
  this._table.highlightIds.add(id);
1274
1272
  }
1275
1273
  });
@@ -1277,6 +1275,9 @@ const LayerTable = class {
1277
1275
  this._table.filterBySelection();
1278
1276
  }
1279
1277
  }
1278
+ else {
1279
+ this._clearSelection();
1280
+ }
1280
1281
  }
1281
1282
  /**
1282
1283
  * Select or deselect all rows
@@ -1365,11 +1366,26 @@ const LayerTable = class {
1365
1366
  }
1366
1367
  return prev;
1367
1368
  }, []);
1368
- void downloadCSV(null, //???
1369
+ this._updateToolInfoLoading("export", true);
1370
+ this._csvExporting = true;
1371
+ await downloadCSV(null, //???
1369
1372
  exportInfos, false, // formatUsingLayerPopup
1370
1373
  false, // removeDuplicates
1371
1374
  true, // addColumnTitle
1372
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
+ });
1373
1389
  }
1374
1390
  /**
1375
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;