@esri/solutions-components 0.8.7 → 0.8.9

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 (121) hide show
  1. package/dist/assets/t9n/crowdsource-reporter/resources.json +3 -1
  2. package/dist/assets/t9n/crowdsource-reporter/resources_en.json +3 -1
  3. package/dist/cjs/{calcite-action-menu_2.cjs.entry.js → calcite-action-menu_3.cjs.entry.js} +114 -7
  4. package/dist/cjs/calcite-alert_4.cjs.entry.js +46 -5
  5. package/dist/cjs/{calcite-input-date-picker_3.cjs.entry.js → calcite-block_5.cjs.entry.js} +691 -13
  6. package/dist/cjs/{calcite-combobox_5.cjs.entry.js → calcite-combobox_3.cjs.entry.js} +876 -844
  7. package/dist/cjs/calcite-dropdown_4.cjs.entry.js +1023 -0
  8. package/dist/cjs/{calcite-flow_5.cjs.entry.js → calcite-flow_6.cjs.entry.js} +327 -2
  9. package/dist/cjs/card-manager_3.cjs.entry.js +5 -5
  10. package/dist/cjs/crowdsource-manager.cjs.entry.js +5 -1
  11. package/dist/cjs/crowdsource-reporter.cjs.entry.js +122 -23
  12. package/dist/cjs/{downloadUtils-8b05d7cc.js → downloadUtils-dc349b1a.js} +2 -2
  13. package/dist/cjs/{index.es-e7587227.js → index.es-1830a1e6.js} +2 -2
  14. package/dist/cjs/loader.cjs.js +1 -1
  15. package/dist/cjs/map-select-tools_3.cjs.entry.js +8 -8
  16. package/dist/cjs/{mapViewUtils-3e0fa457.js → mapViewUtils-9dc05308.js} +11 -5
  17. package/dist/cjs/public-notification.cjs.entry.js +2 -2
  18. package/dist/cjs/solutions-components.cjs.js +1 -1
  19. package/dist/collection/collection-manifest.json +1 -0
  20. package/dist/collection/components/create-feature/create-feature.js +18 -0
  21. package/dist/collection/components/crowdsource-manager/crowdsource-manager.js +72 -0
  22. package/dist/collection/components/crowdsource-reporter/crowdsource-reporter.css +16 -0
  23. package/dist/collection/components/crowdsource-reporter/crowdsource-reporter.js +155 -71
  24. package/dist/collection/components/feature-details/feature-details.css +18 -0
  25. package/dist/collection/components/feature-details/feature-details.js +500 -0
  26. package/dist/collection/components/feature-details/test/feature-details.e2e.js +14 -0
  27. package/dist/collection/components/feature-details/test/feature-details.spec.js +22 -0
  28. package/dist/collection/components/feature-list/feature-list.js +14 -1
  29. package/dist/collection/components/info-card/info-card.css +15 -5
  30. package/dist/collection/components/info-card/info-card.js +178 -5
  31. package/dist/collection/components/layer-table/layer-table.js +2 -2
  32. package/dist/collection/components/map-card/map-card.js +1 -1
  33. package/dist/collection/components/map-select-tools/map-select-tools.js +5 -5
  34. package/dist/collection/components/refine-selection/refine-selection.js +1 -1
  35. package/dist/collection/demos/crowdsource-reporter.html +115 -1
  36. package/dist/collection/utils/interfaces.ts +4 -4
  37. package/dist/collection/utils/mapViewUtils.js +11 -5
  38. package/dist/collection/utils/mapViewUtils.ts +13 -5
  39. package/dist/components/create-feature2.js +4 -0
  40. package/dist/components/crowdsource-manager.js +8 -0
  41. package/dist/components/crowdsource-reporter.js +270 -85
  42. package/dist/components/feature-details.d.ts +11 -0
  43. package/dist/components/feature-details.js +11 -0
  44. package/dist/components/feature-details2.js +449 -0
  45. package/dist/components/feature-list2.js +14 -1
  46. package/dist/components/info-card2.js +53 -5
  47. package/dist/components/layer-table2.js +2 -2
  48. package/dist/components/map-card2.js +1 -1
  49. package/dist/components/map-select-tools2.js +5 -5
  50. package/dist/components/mapViewUtils.js +11 -5
  51. package/dist/components/refine-selection2.js +1 -1
  52. package/dist/esm/{calcite-action-menu_2.entry.js → calcite-action-menu_3.entry.js} +118 -12
  53. package/dist/esm/calcite-alert_4.entry.js +46 -5
  54. package/dist/esm/{calcite-input-date-picker_3.entry.js → calcite-block_5.entry.js} +688 -12
  55. package/dist/esm/{calcite-combobox_5.entry.js → calcite-combobox_3.entry.js} +878 -844
  56. package/dist/esm/calcite-date-picker-day_3.entry.js +1 -1
  57. package/dist/esm/calcite-dropdown_4.entry.js +1016 -0
  58. package/dist/esm/{calcite-flow_5.entry.js → calcite-flow_6.entry.js} +327 -3
  59. package/dist/esm/card-manager_3.entry.js +5 -5
  60. package/dist/esm/crowdsource-manager.entry.js +5 -1
  61. package/dist/esm/crowdsource-reporter.entry.js +122 -23
  62. package/dist/esm/{date-5630530d.js → date-0c026a8b.js} +1 -1
  63. package/dist/esm/{downloadUtils-0c1e4d7b.js → downloadUtils-df4f21f6.js} +2 -2
  64. package/dist/esm/{index.es-286e3cfa.js → index.es-904fb846.js} +2 -2
  65. package/dist/esm/loader.js +1 -1
  66. package/dist/esm/map-select-tools_3.entry.js +8 -8
  67. package/dist/esm/{mapViewUtils-253178f1.js → mapViewUtils-2ec19fb0.js} +11 -5
  68. package/dist/esm/public-notification.entry.js +2 -2
  69. package/dist/esm/solutions-components.js +1 -1
  70. package/dist/solutions-components/demos/crowdsource-reporter.html +115 -1
  71. package/dist/solutions-components/{p-813fd8a4.entry.js → p-29f518fd.entry.js} +2 -2
  72. package/dist/solutions-components/p-452fd697.entry.js +6 -0
  73. package/dist/solutions-components/p-511b1c91.entry.js +23 -0
  74. package/dist/solutions-components/p-577efb16.js +36 -0
  75. package/dist/solutions-components/{p-94de9279.js → p-5817d78c.js} +1 -1
  76. package/dist/solutions-components/p-602cd811.entry.js +17 -0
  77. package/dist/solutions-components/{p-15f9624a.entry.js → p-6557b703.entry.js} +1 -1
  78. package/dist/solutions-components/p-7269c49b.entry.js +6 -0
  79. package/dist/solutions-components/p-760bd17e.entry.js +6 -0
  80. package/dist/solutions-components/p-95fea07a.entry.js +17 -0
  81. package/dist/solutions-components/{p-212b02e7.js → p-ae4d86e8.js} +1 -1
  82. package/dist/solutions-components/{p-038fcd93.entry.js → p-c273ab7a.entry.js} +1 -1
  83. package/dist/solutions-components/p-d742b915.entry.js +29 -0
  84. package/dist/solutions-components/p-dfad61a8.entry.js +24 -0
  85. package/dist/solutions-components/{p-331b5d1e.js → p-fca434c8.js} +2 -2
  86. package/dist/solutions-components/p-fd82a00f.entry.js +6 -0
  87. package/dist/solutions-components/solutions-components.esm.js +1 -1
  88. package/dist/solutions-components/utils/interfaces.ts +4 -4
  89. package/dist/solutions-components/utils/mapViewUtils.ts +13 -5
  90. package/dist/types/components/create-feature/create-feature.d.ts +4 -4
  91. package/dist/types/components/crowdsource-manager/crowdsource-manager.d.ts +16 -0
  92. package/dist/types/components/crowdsource-reporter/crowdsource-reporter.d.ts +91 -18
  93. package/dist/types/components/feature-details/feature-details.d.ts +151 -0
  94. package/dist/types/components/feature-list/feature-list.d.ts +6 -0
  95. package/dist/types/components/info-card/info-card.d.ts +33 -1
  96. package/dist/types/components.d.ts +161 -28
  97. package/dist/types/preact.d.ts +6 -1
  98. package/dist/types/utils/interfaces.d.ts +4 -4
  99. package/dist/types/utils/mapViewUtils.d.ts +5 -3
  100. package/package.json +1 -1
  101. package/dist/cjs/calcite-block_2.cjs.entry.js +0 -652
  102. package/dist/cjs/calcite-graph_2.cjs.entry.js +0 -1055
  103. package/dist/cjs/calcite-scrim.cjs.entry.js +0 -125
  104. package/dist/cjs/utils-7bc7f595.js +0 -64
  105. package/dist/esm/calcite-block_2.entry.js +0 -647
  106. package/dist/esm/calcite-graph_2.entry.js +0 -1050
  107. package/dist/esm/calcite-scrim.entry.js +0 -121
  108. package/dist/esm/utils-9fb4104a.js +0 -61
  109. package/dist/solutions-components/p-04c37d69.entry.js +0 -17
  110. package/dist/solutions-components/p-0b92e4b1.entry.js +0 -11
  111. package/dist/solutions-components/p-238d3b5f.entry.js +0 -6
  112. package/dist/solutions-components/p-3af79063.js +0 -36
  113. package/dist/solutions-components/p-6db185bf.entry.js +0 -6
  114. package/dist/solutions-components/p-80b11ec1.entry.js +0 -17
  115. package/dist/solutions-components/p-aec06ce4.entry.js +0 -18
  116. package/dist/solutions-components/p-bfdf89c2.js +0 -11
  117. package/dist/solutions-components/p-c4ff3b52.entry.js +0 -17
  118. package/dist/solutions-components/p-ced067bd.entry.js +0 -17
  119. package/dist/solutions-components/p-d136eab0.entry.js +0 -23
  120. package/dist/solutions-components/p-e0446d5b.entry.js +0 -6
  121. package/dist/solutions-components/p-e8f13354.entry.js +0 -6
@@ -207,7 +207,7 @@ const MapSelectTools = /*@__PURE__*/ proxyCustomElement(class MapSelectTools ext
207
207
  * Renders the component.
208
208
  */
209
209
  render() {
210
- return (h(Host, null, this._getMapLayerPicker(), h("div", { class: "border-bottom" }), h("div", { class: "padding-top-sides-1" }, h("div", { class: "search-widget", ref: (el) => { this._searchElement = el; } }), h("div", { class: "padding-top-1" }, h("map-draw-tools", { active: true, editGraphicsEnabled: !this._useLayerFeaturesEnabled, graphics: this._graphics, mapView: this.mapView, onSketchGraphicsChange: (evt) => this._sketchGraphicsChanged(evt), pointSymbol: this.sketchPointSymbol, polygonSymbol: this.sketchPolygonSymbol, polylineSymbol: this.sketchLineSymbol, ref: (el) => { this._drawTools = el; } })), this._getBufferOptions(), this._getUseLayerFeaturesOptions(), this._getNumSelected()), h("div", { class: "border-bottom" }), this._getNameInput()));
210
+ return (h(Host, null, this._getMapLayerPicker(), h("div", { class: "border-bottom" }), h("div", { class: "padding-top-sides-1" }, h("div", { class: "search-widget", ref: (el) => { this._searchElement = el; } }), h("div", { class: "padding-top-1" }, h("map-draw-tools", { active: true, editGraphicsEnabled: !this._useLayerFeaturesEnabled, graphics: this._graphics, mapView: this.mapView, onSketchGraphicsChange: (evt) => void this._sketchGraphicsChanged(evt), pointSymbol: this.sketchPointSymbol, polygonSymbol: this.sketchPolygonSymbol, polylineSymbol: this.sketchLineSymbol, ref: (el) => { this._drawTools = el; } })), this._getBufferOptions(), this._getUseLayerFeaturesOptions(), this._getNumSelected()), h("div", { class: "border-bottom" }), this._getNameInput()));
211
211
  }
212
212
  /**
213
213
  * Renders the buffer tools component.
@@ -216,7 +216,7 @@ const MapSelectTools = /*@__PURE__*/ proxyCustomElement(class MapSelectTools ext
216
216
  var _a, _b;
217
217
  const showBufferToolsClass = this._searchDistanceEnabled ? "search-distance" : "div-not-visible";
218
218
  const bufferDistance = typeof ((_a = this.selectionSet) === null || _a === void 0 ? void 0 : _a.distance) === "number" ? this.selectionSet.distance : this.defaultBufferDistance;
219
- return (h("div", null, h("div", { class: "padding-top-1 display-flex" }, h("calcite-label", { class: "label-margin-0 w-100", layout: "inline-space-between" }, h("div", { class: "tooltip-container" }, this._translations.searchDistance, h("calcite-icon", { class: "padding-start-1-2 icon", icon: "question", id: "search-distance-icon", scale: "s" }))), h("calcite-popover", { closable: true, label: "", referenceElement: "search-distance-icon" }, h("span", { class: "tooltip-message" }, this._translations.useSearchDistanceTootip)), h("calcite-switch", { checked: this._searchDistanceEnabled, onCalciteSwitchChange: () => this._searchDistanceEnabled = !this._searchDistanceEnabled })), h("div", { class: showBufferToolsClass }, h("buffer-tools", { disabled: !this._searchDistanceEnabled, distance: bufferDistance, geometries: this.geometries, onBufferComplete: (evt) => this._bufferComplete(evt), ref: (el) => this._bufferTools = el, unit: ((_b = this.selectionSet) === null || _b === void 0 ? void 0 : _b.unit) || this.defaultBufferUnit }))));
219
+ return (h("div", null, h("div", { class: "padding-top-1 display-flex" }, h("calcite-label", { class: "label-margin-0 w-100", layout: "inline-space-between" }, h("div", { class: "tooltip-container" }, this._translations.searchDistance, h("calcite-icon", { class: "padding-start-1-2 icon", icon: "question", id: "search-distance-icon", scale: "s" }))), h("calcite-popover", { closable: true, label: "", referenceElement: "search-distance-icon" }, h("span", { class: "tooltip-message" }, this._translations.useSearchDistanceTootip)), h("calcite-switch", { checked: this._searchDistanceEnabled, onCalciteSwitchChange: () => this._searchDistanceEnabled = !this._searchDistanceEnabled })), h("div", { class: showBufferToolsClass }, h("buffer-tools", { disabled: !this._searchDistanceEnabled, distance: bufferDistance, geometries: this.geometries, onBufferComplete: (evt) => void this._bufferComplete(evt), ref: (el) => this._bufferTools = el, unit: ((_b = this.selectionSet) === null || _b === void 0 ? void 0 : _b.unit) || this.defaultBufferUnit }))));
220
220
  }
221
221
  /**
222
222
  * Renders the map layer picker component.
@@ -252,7 +252,7 @@ const MapSelectTools = /*@__PURE__*/ proxyCustomElement(class MapSelectTools ext
252
252
  * @protected
253
253
  */
254
254
  _getMapLayerPicker() {
255
- return (h("div", { class: "display-flex padding-sides-1 padding-bottom-1" }, h("calcite-label", { class: "font-bold width-full label-margin-0" }, this._translations.inputLayer, h("map-layer-picker", { enabledLayerIds: this.enabledLayerIds, mapView: this.mapView, onLayerSelectionChange: (evt) => this._inputLayerSelectionChange(evt), selectedIds: this.selectLayerView ? [this.selectLayerView.layer.id] : this.selectionSet ? [this.selectionSet.layerView.layer.id] : [], showTables: false }))));
255
+ return (h("div", { class: "display-flex padding-sides-1 padding-bottom-1" }, h("calcite-label", { class: "font-bold width-full label-margin-0" }, this._translations.inputLayer, h("map-layer-picker", { enabledLayerIds: this.enabledLayerIds, mapView: this.mapView, onLayerSelectionChange: (evt) => void this._inputLayerSelectionChange(evt), selectedIds: this.selectLayerView ? [this.selectLayerView.layer.id] : this.selectionSet ? [this.selectionSet.layerView.layer.id] : [], showTables: false }))));
256
256
  }
257
257
  //--------------------------------------------------------------------------
258
258
  //
@@ -324,7 +324,7 @@ const MapSelectTools = /*@__PURE__*/ proxyCustomElement(class MapSelectTools ext
324
324
  });
325
325
  this._selectionLabel = (_c = this.selectionSet) === null || _c === void 0 ? void 0 : _c.label;
326
326
  if (!this._useLayerFeaturesEnabled) {
327
- (_d = this._drawTools) === null || _d === void 0 ? void 0 : _d.updateGraphics();
327
+ await ((_d = this._drawTools) === null || _d === void 0 ? void 0 : _d.updateGraphics());
328
328
  }
329
329
  await goToSelection(this.selectionSet.selectedIds, this.selectionSet.layerView, this.mapView, false);
330
330
  }
@@ -470,7 +470,7 @@ const MapSelectTools = /*@__PURE__*/ proxyCustomElement(class MapSelectTools ext
470
470
  }
471
471
  this._workflowType = this._useLayerFeaturesEnabled ? EWorkflowType.SELECT : EWorkflowType.SKETCH;
472
472
  if (this._workflowType === EWorkflowType.SKETCH) {
473
- this._drawTools.updateGraphics();
473
+ await this._drawTools.updateGraphics();
474
474
  }
475
475
  await this._updateLabel();
476
476
  this._clearSearchWidget();
@@ -155,12 +155,13 @@ async function getAllLayers(mapView) {
155
155
  * @param layerView the layer view to highlight
156
156
  * @param mapView the map view used if updateExtent is true
157
157
  * @param updateExtent optional (default false) boolean to indicate if we should zoom to the extent
158
+ * @param zoomToScale optional (default 0) zoomScale that individual points will use when zoomed to
158
159
  *
159
160
  * @returns Promise resolving with the highlight handle
160
161
  */
161
- async function highlightFeatures(ids, layerView, mapView, updateExtent = false) {
162
+ async function highlightFeatures(ids, layerView, mapView, updateExtent = false, zoomToScale = 0) {
162
163
  if (updateExtent) {
163
- await goToSelection(ids, layerView, mapView, false);
164
+ await goToSelection(ids, layerView, mapView, false, undefined, zoomToScale);
164
165
  //wait for sometime to load the feature in layerView then only the highlight will work
165
166
  await new Promise(resolve => setTimeout(resolve, 1000));
166
167
  }
@@ -246,13 +247,18 @@ async function flashSelection(ids, layerView, featureEffect) {
246
247
  * @param layerView the layer view that contains the OIDs
247
248
  * @param mapView the map view to show the extent change
248
249
  * @param flashFeatures optional (default true) boolean to indicate if we should flash the features
249
- *
250
+ * @param featureEffect optional (default undefined) feature effect when flashing the features
251
+ * @param zoomToScale optional (default to 0) zoomScale that individual points will use when zoomed to
250
252
  * @returns Promise resolving when the operation is complete
251
253
  *
252
254
  */
253
- async function goToSelection(ids, layerView, mapView, flashFeatures = true, featureEffect = undefined) {
255
+ async function goToSelection(ids, layerView, mapView, flashFeatures = true, featureEffect = undefined, zoomToScale = 0) {
254
256
  const result = await queryExtent(ids, layerView.layer);
255
- await mapView.goTo(result.extent);
257
+ const goToParams = { target: result.extent };
258
+ if (result.count === 1 && layerView.layer.geometryType === 'point' && zoomToScale) {
259
+ goToParams.scale = zoomToScale;
260
+ }
261
+ await mapView.goTo(goToParams);
256
262
  if (flashFeatures) {
257
263
  await flashSelection(ids, layerView, featureEffect);
258
264
  }
@@ -313,7 +313,7 @@ const RefineSelection = /*@__PURE__*/ proxyCustomElement(class RefineSelection e
313
313
  });
314
314
  const oids = Array.isArray(graphics) ? graphics.map(g => { var _a; return g.attributes[(_a = g === null || g === void 0 ? void 0 : g.layer) === null || _a === void 0 ? void 0 : _a.objectIdField]; }) : [];
315
315
  await this._updateIds(oids, this._selectionMode, this._refineSelectionSet.undoStack, this._refineLayer);
316
- this._drawTools.clear();
316
+ void this._drawTools.clear();
317
317
  }
318
318
  /**
319
319
  * Highlight any selected features in the map
@@ -5,11 +5,11 @@
5
5
  */
6
6
  import { r as registerInstance, c as createEvent, h, F as Fragment, g as getElement, f as forceUpdate, H as Host } from './index-164d485a.js';
7
7
  import { g as getRoundRobinIndex } from './array-396bdf3c.js';
8
- import { t as toAriaBoolean, i as isPrimaryPointerButton, e as focusElement, f as focusFirstTabbable, q as queryElementRoots } from './dom-38c6f027.js';
8
+ import { t as toAriaBoolean, i as isPrimaryPointerButton, e as focusElement, f as focusFirstTabbable, q as queryElementRoots, D as slotChangeHasContent } from './dom-38c6f027.js';
9
9
  import { g as guid } from './guid-b75a5f7b.js';
10
10
  import { i as isActivationKey } from './key-c83d835f.js';
11
11
  import { s as setUpLoadableComponent, a as setComponentLoaded, c as componentFocusable } from './loadable-37e7fbd6.js';
12
- import { a as activeAttr, C as CSS$1, I as ICONS, S as SLOTS } from './resources-20074cb1.js';
12
+ import { a as activeAttr, C as CSS$2, I as ICONS, S as SLOTS } from './resources-20074cb1.js';
13
13
  import { f as filterComputedPlacements, c as connectFloatingUI, b as defaultOffsetDistance, a as disconnectFloatingUI, r as reposition, F as FloatingCSS } from './floating-ui-41dfe3f1.js';
14
14
  import { d as deactivateFocusTrap, a as activateFocusTrap, c as connectFocusTrap, u as updateFocusTrapElements } from './focusTrapComponent-47ddce58.js';
15
15
  import { o as onToggleOpenCloseComponent } from './openCloseComponent-9f90f493.js';
@@ -272,7 +272,7 @@ const ActionMenu = class {
272
272
  }
273
273
  renderMenuButton() {
274
274
  const { appearance, label, scale, expanded } = this;
275
- const menuButtonSlot = (h("slot", { name: SLOTS.trigger, onSlotchange: this.setMenuButtonEl }, h("calcite-action", { appearance: appearance, class: CSS$1.defaultTrigger, icon: ICONS.menu, scale: scale, text: label, textEnabled: expanded,
275
+ const menuButtonSlot = (h("slot", { name: SLOTS.trigger, onSlotchange: this.setMenuButtonEl }, h("calcite-action", { appearance: appearance, class: CSS$2.defaultTrigger, icon: ICONS.menu, scale: scale, text: label, textEnabled: expanded,
276
276
  // eslint-disable-next-line react/jsx-sort-props -- ref should be last so node attrs/props are in sync (see https://github.com/Esri/calcite-design-system/pull/6530)
277
277
  ref: this.setDefaultMenuButtonEl })));
278
278
  return menuButtonSlot;
@@ -281,7 +281,7 @@ const ActionMenu = class {
281
281
  const { actionElements, activeMenuItemIndex, open, menuId, menuButtonEl, label, placement, overlayPositioning, flipPlacements, } = this;
282
282
  const activeAction = actionElements[activeMenuItemIndex];
283
283
  const activeDescendantId = (activeAction === null || activeAction === void 0 ? void 0 : activeAction.id) || null;
284
- return (h("calcite-popover", { autoClose: true, flipPlacements: flipPlacements, focusTrapDisabled: true, label: label, offsetDistance: 0, onCalcitePopoverClose: this.handlePopoverClose, onCalcitePopoverOpen: this.handlePopoverOpen, open: open, overlayPositioning: overlayPositioning, placement: placement, pointerDisabled: true, referenceElement: menuButtonEl }, h("div", { "aria-activedescendant": activeDescendantId, "aria-labelledby": menuButtonEl === null || menuButtonEl === void 0 ? void 0 : menuButtonEl.id, class: CSS$1.menu, id: menuId, onClick: this.handleCalciteActionClick, role: "menu", tabIndex: -1 }, h("slot", { onSlotchange: this.handleDefaultSlotChange }))));
284
+ return (h("calcite-popover", { autoClose: true, flipPlacements: flipPlacements, focusTrapDisabled: true, label: label, offsetDistance: 0, onCalcitePopoverClose: this.handlePopoverClose, onCalcitePopoverOpen: this.handlePopoverOpen, open: open, overlayPositioning: overlayPositioning, placement: placement, pointerDisabled: true, referenceElement: menuButtonEl }, h("div", { "aria-activedescendant": activeDescendantId, "aria-labelledby": menuButtonEl === null || menuButtonEl === void 0 ? void 0 : menuButtonEl.id, class: CSS$2.menu, id: menuId, onClick: this.handleCalciteActionClick, role: "menu", tabIndex: -1 }, h("slot", { onSlotchange: this.handleDefaultSlotChange }))));
285
285
  }
286
286
  render() {
287
287
  return (h(Fragment, null, this.renderMenuButton(), this.renderMenuItems(), h("slot", { name: SLOTS.tooltip, onSlotchange: this.updateTooltip })));
@@ -303,7 +303,7 @@ ActionMenu.style = actionMenuCss;
303
303
  * See https://github.com/Esri/calcite-design-system/blob/main/LICENSE.md for details.
304
304
  * v2.4.0
305
305
  */
306
- const CSS = {
306
+ const CSS$1 = {
307
307
  container: "container",
308
308
  imageContainer: "image-container",
309
309
  closeButtonContainer: "close-button-container",
@@ -646,14 +646,14 @@ const Popover = class {
646
646
  // --------------------------------------------------------------------------
647
647
  renderCloseButton() {
648
648
  const { messages, closable } = this;
649
- return closable ? (h("div", { class: CSS.closeButtonContainer, key: CSS.closeButtonContainer }, h("calcite-action", { appearance: "transparent", class: CSS.closeButton, onClick: this.hide, scale: this.scale, text: messages.close,
649
+ return closable ? (h("div", { class: CSS$1.closeButtonContainer, key: CSS$1.closeButtonContainer }, h("calcite-action", { appearance: "transparent", class: CSS$1.closeButton, onClick: this.hide, scale: this.scale, text: messages.close,
650
650
  // eslint-disable-next-line react/jsx-sort-props -- ref should be last so node attrs/props are in sync (see https://github.com/Esri/calcite-design-system/pull/6530)
651
651
  ref: (closeButtonEl) => (this.closeButtonEl = closeButtonEl) }, h("calcite-icon", { icon: "x", scale: getIconScale(this.scale) })))) : null;
652
652
  }
653
653
  renderHeader() {
654
654
  const { heading, headingLevel } = this;
655
- const headingNode = heading ? (h(Heading, { class: CSS.heading, level: headingLevel }, heading)) : null;
656
- return headingNode ? (h("div", { class: CSS.header, key: CSS.header }, headingNode, this.renderCloseButton())) : null;
655
+ const headingNode = heading ? (h(Heading, { class: CSS$1.heading, level: headingLevel }, heading)) : null;
656
+ return headingNode ? (h("div", { class: CSS$1.header, key: CSS$1.header }, headingNode, this.renderCloseButton())) : null;
657
657
  }
658
658
  render() {
659
659
  const { effectiveReferenceElement, heading, label, open, pointerDisabled, floatingLayout } = this;
@@ -668,9 +668,9 @@ const Popover = class {
668
668
  },
669
669
  // eslint-disable-next-line react/jsx-sort-props -- ref should be last so node attrs/props are in sync (see https://github.com/Esri/calcite-design-system/pull/6530)
670
670
  ref: this.setTransitionEl }, arrowNode, h("div", { class: {
671
- [CSS.hasHeader]: !!heading,
672
- [CSS.container]: true,
673
- } }, this.renderHeader(), h("div", { class: CSS.content }, h("slot", null)), !heading ? this.renderCloseButton() : null))));
671
+ [CSS$1.hasHeader]: !!heading,
672
+ [CSS$1.container]: true,
673
+ } }, this.renderHeader(), h("div", { class: CSS$1.content }, h("slot", null)), !heading ? this.renderCloseButton() : null))));
674
674
  }
675
675
  static get assetsDirs() { return ["assets"]; }
676
676
  get el() { return getElement(this); }
@@ -689,4 +689,110 @@ const Popover = class {
689
689
  };
690
690
  Popover.style = popoverCss;
691
691
 
692
- export { ActionMenu as calcite_action_menu, Popover as calcite_popover };
692
+ /*!
693
+ * All material copyright ESRI, All Rights Reserved, unless otherwise specified.
694
+ * See https://github.com/Esri/calcite-design-system/blob/main/LICENSE.md for details.
695
+ * v2.4.0
696
+ */
697
+ const CSS = {
698
+ scrim: "scrim",
699
+ content: "content",
700
+ };
701
+ const BREAKPOINTS = {
702
+ s: 72,
703
+ // medium is assumed default.
704
+ l: 480, // Greater than or equal to 480px.
705
+ };
706
+
707
+ const scrimCss = ":host{--calcite-scrim-background:var(--calcite-color-transparent-scrim);position:absolute;inset:0px;z-index:var(--calcite-z-index-overlay);display:flex;block-size:100%;inline-size:100%;flex-direction:column;align-items:stretch}@keyframes calcite-scrim-fade-in{0%{--tw-bg-opacity:0}100%{--tw-text-opacity:1}}.scrim{position:absolute;inset:0px;display:flex;flex-direction:column;align-content:center;align-items:center;justify-content:center;overflow:hidden;animation:calcite-scrim-fade-in var(--calcite-internal-animation-timing-medium) ease-in-out;background-color:var(--calcite-scrim-background, var(--calcite-color-transparent-scrim))}.content{padding:1rem}:host([hidden]){display:none}[hidden]{display:none}";
708
+
709
+ const Scrim = class {
710
+ constructor(hostRef) {
711
+ registerInstance(this, hostRef);
712
+ this.resizeObserver = createObserver("resize", () => this.handleResize());
713
+ // --------------------------------------------------------------------------
714
+ //
715
+ // Private Methods
716
+ //
717
+ // --------------------------------------------------------------------------
718
+ this.handleDefaultSlotChange = (event) => {
719
+ this.hasContent = slotChangeHasContent(event);
720
+ };
721
+ this.storeLoaderEl = (el) => {
722
+ this.loaderEl = el;
723
+ this.handleResize();
724
+ };
725
+ this.loading = false;
726
+ this.messages = undefined;
727
+ this.messageOverrides = undefined;
728
+ this.loaderScale = undefined;
729
+ this.defaultMessages = undefined;
730
+ this.effectiveLocale = "";
731
+ this.hasContent = false;
732
+ }
733
+ onMessagesChange() {
734
+ /* wired up by t9n util */
735
+ }
736
+ effectiveLocaleChange() {
737
+ updateMessages(this, this.effectiveLocale);
738
+ }
739
+ //--------------------------------------------------------------------------
740
+ //
741
+ // Lifecycle
742
+ //
743
+ //--------------------------------------------------------------------------
744
+ connectedCallback() {
745
+ var _a;
746
+ connectLocalized(this);
747
+ connectMessages(this);
748
+ (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.observe(this.el);
749
+ }
750
+ async componentWillLoad() {
751
+ await setUpMessages(this);
752
+ }
753
+ disconnectedCallback() {
754
+ var _a;
755
+ disconnectLocalized(this);
756
+ disconnectMessages(this);
757
+ (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
758
+ }
759
+ // --------------------------------------------------------------------------
760
+ //
761
+ // Render Method
762
+ //
763
+ // --------------------------------------------------------------------------
764
+ render() {
765
+ const { hasContent, loading, messages } = this;
766
+ return (h("div", { class: CSS.scrim }, loading ? (h("calcite-loader", { label: messages.loading, scale: this.loaderScale,
767
+ // eslint-disable-next-line react/jsx-sort-props -- ref should be last so node attrs/props are in sync (see https://github.com/Esri/calcite-design-system/pull/6530)
768
+ ref: this.storeLoaderEl })) : null, h("div", { class: CSS.content, hidden: !hasContent }, h("slot", { onSlotchange: this.handleDefaultSlotChange }))));
769
+ }
770
+ getScale(size) {
771
+ if (size < BREAKPOINTS.s) {
772
+ return "s";
773
+ }
774
+ else if (size >= BREAKPOINTS.l) {
775
+ return "l";
776
+ }
777
+ else {
778
+ return "m";
779
+ }
780
+ }
781
+ handleResize() {
782
+ var _a;
783
+ const { loaderEl, el } = this;
784
+ if (!loaderEl) {
785
+ return;
786
+ }
787
+ this.loaderScale = this.getScale((_a = Math.min(el.clientHeight, el.clientWidth)) !== null && _a !== void 0 ? _a : 0);
788
+ }
789
+ static get assetsDirs() { return ["assets"]; }
790
+ get el() { return getElement(this); }
791
+ static get watchers() { return {
792
+ "messageOverrides": ["onMessagesChange"],
793
+ "effectiveLocale": ["effectiveLocaleChange"]
794
+ }; }
795
+ };
796
+ Scrim.style = scrimCss;
797
+
798
+ export { ActionMenu as calcite_action_menu, Popover as calcite_popover, Scrim as calcite_scrim };
@@ -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-bcbea4ef.js';
15
- import { a as getAllLayers } from './mapViewUtils-253178f1.js';
15
+ import { a as getAllLayers } from './mapViewUtils-2ec19fb0.js';
16
16
  import { P as PopupUtils } from './popupUtils-af124b47.js';
17
17
  import './guid-b75a5f7b.js';
18
18
  import './resources-8834f920.js';
@@ -664,7 +664,7 @@ const EditCard = class {
664
664
  };
665
665
  EditCard.style = editCardCss;
666
666
 
667
- const infoCardCss = ":host{display:block;--calcite-label-margin-bottom:0}.padding-1-2{padding:0.5rem}.display-none{display:none !important}.display-flex{display:flex}.position-absolute{position:absolute;top:0;right:0;bottom:0;left:0;overflow:auto}.feature-node .esri-features__footer{display:none !important}.button-container{justify-content:space-between;align-items:center}.top-border{border-top:1px solid var(--calcite-color-border-1)}.min-width-100{min-width:100px}.width-100{width:100%}.esri-features__container{padding:0.5rem !important;background-color:var(--calcite-color-foreground-1) !important;height:100% !important}.overflow-hidden{overflow:hidden}.height-40{height:40px}.end-border{border-inline-end:1px solid var(--calcite-color-border-1)}.font-bold{font-weight:bold}.visibility-hidden{visibility:hidden;height:0px}.padding-inline-start-1{padding-inline-start:1rem}.border-width-0{border-width:0px}";
667
+ const infoCardCss = ":host{display:block;--calcite-label-margin-bottom:0}.padding-1-2{padding:0.5rem}.display-none{display:none !important}.display-flex{display:flex}.position-absolute{position:absolute;top:0;right:0;bottom:0;left:0;overflow:auto}.feature-node{position:relative !important}.feature-node .esri-features__footer{display:none !important}.button-container{justify-content:center;align-items:center}.top-border{border-top:1px solid var(--calcite-color-border-1)}.width-100{width:100%}.esri-features__container{padding:0.5rem !important;background-color:var(--calcite-color-foreground-1) !important;height:100% !important}.overflow-hidden{overflow:hidden}.height-40{height:40px}.end-border{border-inline-end:1px solid var(--calcite-color-border-1)}.font-bold{font-weight:bold}.visibility-hidden{visibility:hidden;height:0px}.padding-inline-start-1{padding-inline-start:1rem}.border-width-0{border-width:0px}.pagination-action{position:relative;left:3px}.pagination-count{color:var(--calcite-color-brand);border-bottom:1px solid var(--calcite-color-brand)}";
668
668
 
669
669
  const InfoCard = class {
670
670
  constructor(hostRef) {
@@ -678,6 +678,8 @@ const InfoCard = class {
678
678
  this.zoomAndScrollToSelected = undefined;
679
679
  this.allowEditing = true;
680
680
  this.highlightEnabled = true;
681
+ this.paginationEnabled = true;
682
+ this.position = 'absolute';
681
683
  this._alertOpen = false;
682
684
  this._count = "";
683
685
  this._editRecordOpen = false;
@@ -723,6 +725,45 @@ const InfoCard = class {
723
725
  async getSelectedFeature() {
724
726
  return this._features.selectedFeature;
725
727
  }
728
+ /**
729
+ * Get the current selected feature from the Features widget
730
+ * @returns Promise resolving with the current feature
731
+ */
732
+ async refresh() {
733
+ await this.setGraphics();
734
+ }
735
+ /**
736
+ * Go to the previous feature in the features widget
737
+ */
738
+ async back() {
739
+ this._features.previous();
740
+ this._count = this._getCount();
741
+ }
742
+ /**
743
+ * Go to the next feature in the features widget
744
+ */
745
+ async next() {
746
+ this._features.next();
747
+ this._count = this._getCount();
748
+ }
749
+ /**
750
+ * Toggle the visibility of the features list view
751
+ */
752
+ async toggleListView() {
753
+ this._showListView = !this._showListView;
754
+ const i = this._features.selectedFeatureIndex;
755
+ this._features.open({
756
+ features: this.graphics,
757
+ featureMenuOpen: this._showListView
758
+ });
759
+ this._features.selectedFeatureIndex = i;
760
+ }
761
+ /**
762
+ * update the current graphics to the features widget
763
+ */
764
+ async updateCurrentGraphic(selectedGraphic) {
765
+ this._features.selectedFeatureWidget.graphic = selectedGraphic;
766
+ }
726
767
  /**
727
768
  * Respond to and close the edit record display
728
769
  *
@@ -787,8 +828,8 @@ const InfoCard = class {
787
828
  const id = (_d = (_c = this._features) === null || _c === void 0 ? void 0 : _c.selectedFeature) === null || _d === void 0 ? void 0 : _d.getObjectId();
788
829
  const ids = parseInt(id === null || id === void 0 ? void 0 : id.toString(), 10) > -1 ? [id] : [];
789
830
  const deleteEnabled = ((_e = this._layer) === null || _e === void 0 ? void 0 : _e.editingEnabled) && ((_h = (_g = (_f = this._layer) === null || _f === void 0 ? void 0 : _f.capabilities) === null || _g === void 0 ? void 0 : _g.operations) === null || _h === void 0 ? void 0 : _h.supportsDelete);
790
- return (h(Host, null, h("calcite-shell", null, this._getHeader(), h("calcite-loader", { class: loadingClass, label: this._translations.fetchingData }), h("div", { class: "esri-widget feature-node " + featureNodeClass, id: "features-node" }), h("div", { class: `${editButtonClass} width-100`, slot: "footer" }, this.allowEditing &&
791
- h("div", { class: "display-flex top-border padding-1-2" }, h("calcite-button", { appearance: "solid", id: "solutions-edit", onClick: () => this._openEditRecord(), width: "full" }, this._translations.edit), this.isMobile && deleteEnabled ? (h("delete-button", { class: "padding-inline-start-1 width-100", id: "solutions-delete", ids: ids, layer: this._layer, onEditsComplete: () => this._closePopup() })) : undefined, h("calcite-tooltip", { label: "", placement: "bottom", "reference-element": "solutions-edit" }, h("span", null, this._translations.edit)), this.isMobile ? (h("calcite-tooltip", { label: "", placement: "bottom", "reference-element": "solutions-delete" }, h("span", null, this._translations.delete))) : undefined), !nextBackDisabled && h("div", { class: `display-flex padding-1-2 button-container top-border ${nextBackClass}` }, h("div", { class: "min-width-100" }, h("calcite-button", { appearance: "outline", disabled: nextBackDisabled, id: "solutions-back", onClick: () => this._back(), width: "full" }, this._translations.back), h("calcite-tooltip", { label: "", placement: "top", "reference-element": "solutions-back" }, h("span", null, this._translations.back))), h("div", null, h("calcite-action", { icon: "list", onClick: () => this._toggleListView(), scale: "s", text: this._count, textEnabled: true })), h("div", { class: "min-width-100" }, h("calcite-button", { appearance: "outline", disabled: nextBackDisabled, id: "solutions-next", onClick: () => this._next(), width: "full" }, this._translations.next), h("calcite-tooltip", { label: "", placement: "top", "reference-element": "solutions-next" }, h("span", null, this._translations.next))))), h("edit-card", { class: editClass, graphicIndex: (_j = this._features) === null || _j === void 0 ? void 0 : _j.selectedFeatureIndex, graphics: this.graphics, mapView: this.mapView, open: this._editRecordOpen }), h("calcite-alert", { icon: "layer-broken", kind: "warning", label: "", onCalciteAlertClose: () => this._alertClosed(), open: this._alertOpen, placement: "top" }, h("div", { slot: "title" }, this._translations.editDisabled), h("div", { slot: "message" }, this._translations.enableEditing)))));
831
+ return (h(Host, null, h("calcite-shell", { style: { position: this.position } }, this._getHeader(), h("calcite-loader", { class: loadingClass, label: this._translations.fetchingData }), h("div", { class: "esri-widget feature-node " + featureNodeClass, id: "features-node" }), h("div", { class: `${editButtonClass} width-100`, slot: "footer" }, this.allowEditing &&
832
+ h("div", { class: "display-flex top-border padding-1-2" }, h("calcite-button", { appearance: "solid", id: "solutions-edit", onClick: () => this._openEditRecord(), width: "full" }, this._translations.edit), this.isMobile && deleteEnabled ? (h("delete-button", { class: "padding-inline-start-1 width-100", id: "solutions-delete", ids: ids, layer: this._layer, onEditsComplete: () => this._closePopup() })) : undefined, h("calcite-tooltip", { placement: "bottom", "reference-element": "solutions-edit" }, h("span", null, this._translations.edit)), this.isMobile ? (h("calcite-tooltip", { placement: "bottom", "reference-element": "solutions-delete" }, h("span", null, this._translations.delete))) : undefined), this.paginationEnabled && !nextBackDisabled && h("div", { class: `display-flex padding-1-2 button-container top-border ${nextBackClass}` }, h("div", null, h("calcite-button", { appearance: 'transparent', disabled: nextBackDisabled, iconStart: "chevron-left", id: "solutions-back", onClick: () => this._back(), width: "full" }), h("calcite-tooltip", { placement: "top", "reference-element": "solutions-back" }, h("span", null, this._translations.back))), h("calcite-action", { class: 'pagination-action', onClick: () => this._toggleListView(), scale: "s", text: "", textEnabled: true }, h("span", { class: "pagination-count" }, this._count)), h("div", null, h("calcite-button", { appearance: "transparent", disabled: nextBackDisabled, iconStart: "chevron-right", id: "solutions-next", onClick: () => this._next(), width: "full" }), h("calcite-tooltip", { placement: "top", "reference-element": "solutions-next" }, h("span", null, this._translations.next))))), h("edit-card", { class: editClass, graphicIndex: (_j = this._features) === null || _j === void 0 ? void 0 : _j.selectedFeatureIndex, graphics: this.graphics, mapView: this.mapView, open: this._editRecordOpen }), h("calcite-alert", { icon: "layer-broken", kind: "warning", label: "", onCalciteAlertClose: () => this._alertClosed(), open: this._alertOpen, placement: "top" }, h("div", { slot: "title" }, this._translations.editDisabled), h("div", { slot: "message" }, this._translations.enableEditing)))));
792
833
  }
793
834
  //--------------------------------------------------------------------------
794
835
  //
@@ -863,7 +904,7 @@ const InfoCard = class {
863
904
  if (this.zoomAndScrollToSelected) {
864
905
  this.reactiveUtils.watch(() => this._features.selectedFeatureIndex, (i) => {
865
906
  if (i > -1) {
866
- this.selectionChanged.emit([this._features.selectedFeature]);
907
+ this.selectionChanged.emit({ selectedFeature: [this._features.selectedFeature], selectedFeatureIndex: this._features.selectedFeatureIndex });
867
908
  }
868
909
  });
869
910
  }