@esri/solutions-components 0.8.8 → 0.8.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (114) 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 +1 -1
  11. package/dist/cjs/crowdsource-reporter.cjs.entry.js +122 -21
  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-reporter/crowdsource-reporter.css +16 -0
  22. package/dist/collection/components/crowdsource-reporter/crowdsource-reporter.js +155 -35
  23. package/dist/collection/components/feature-details/feature-details.css +18 -0
  24. package/dist/collection/components/feature-details/feature-details.js +500 -0
  25. package/dist/collection/components/feature-details/test/feature-details.e2e.js +14 -0
  26. package/dist/collection/components/feature-details/test/feature-details.spec.js +22 -0
  27. package/dist/collection/components/feature-list/feature-list.js +14 -1
  28. package/dist/collection/components/info-card/info-card.css +15 -5
  29. package/dist/collection/components/info-card/info-card.js +178 -5
  30. package/dist/collection/components/layer-table/layer-table.js +2 -2
  31. package/dist/collection/components/map-card/map-card.js +1 -1
  32. package/dist/collection/components/map-select-tools/map-select-tools.js +5 -5
  33. package/dist/collection/components/refine-selection/refine-selection.js +1 -1
  34. package/dist/collection/demos/crowdsource-reporter.html +115 -1
  35. package/dist/collection/utils/mapViewUtils.js +11 -5
  36. package/dist/collection/utils/mapViewUtils.ts +13 -5
  37. package/dist/components/create-feature2.js +4 -0
  38. package/dist/components/crowdsource-reporter.js +270 -81
  39. package/dist/components/feature-details.d.ts +11 -0
  40. package/dist/components/feature-details.js +11 -0
  41. package/dist/components/feature-details2.js +449 -0
  42. package/dist/components/feature-list2.js +14 -1
  43. package/dist/components/info-card2.js +53 -5
  44. package/dist/components/layer-table2.js +2 -2
  45. package/dist/components/map-card2.js +1 -1
  46. package/dist/components/map-select-tools2.js +5 -5
  47. package/dist/components/mapViewUtils.js +11 -5
  48. package/dist/components/refine-selection2.js +1 -1
  49. package/dist/esm/{calcite-action-menu_2.entry.js → calcite-action-menu_3.entry.js} +118 -12
  50. package/dist/esm/calcite-alert_4.entry.js +46 -5
  51. package/dist/esm/{calcite-input-date-picker_3.entry.js → calcite-block_5.entry.js} +688 -12
  52. package/dist/esm/{calcite-combobox_5.entry.js → calcite-combobox_3.entry.js} +878 -844
  53. package/dist/esm/calcite-date-picker-day_3.entry.js +1 -1
  54. package/dist/esm/calcite-dropdown_4.entry.js +1016 -0
  55. package/dist/esm/{calcite-flow_5.entry.js → calcite-flow_6.entry.js} +327 -3
  56. package/dist/esm/card-manager_3.entry.js +5 -5
  57. package/dist/esm/crowdsource-manager.entry.js +1 -1
  58. package/dist/esm/crowdsource-reporter.entry.js +122 -21
  59. package/dist/esm/{date-5630530d.js → date-0c026a8b.js} +1 -1
  60. package/dist/esm/{downloadUtils-0c1e4d7b.js → downloadUtils-df4f21f6.js} +2 -2
  61. package/dist/esm/{index.es-286e3cfa.js → index.es-904fb846.js} +2 -2
  62. package/dist/esm/loader.js +1 -1
  63. package/dist/esm/map-select-tools_3.entry.js +8 -8
  64. package/dist/esm/{mapViewUtils-253178f1.js → mapViewUtils-2ec19fb0.js} +11 -5
  65. package/dist/esm/public-notification.entry.js +2 -2
  66. package/dist/esm/solutions-components.js +1 -1
  67. package/dist/solutions-components/demos/crowdsource-reporter.html +115 -1
  68. package/dist/solutions-components/{p-813fd8a4.entry.js → p-29f518fd.entry.js} +2 -2
  69. package/dist/solutions-components/{p-13ca3b00.entry.js → p-452fd697.entry.js} +1 -1
  70. package/dist/solutions-components/p-511b1c91.entry.js +23 -0
  71. package/dist/solutions-components/p-577efb16.js +36 -0
  72. package/dist/solutions-components/{p-94de9279.js → p-5817d78c.js} +1 -1
  73. package/dist/solutions-components/p-602cd811.entry.js +17 -0
  74. package/dist/solutions-components/{p-15f9624a.entry.js → p-6557b703.entry.js} +1 -1
  75. package/dist/solutions-components/p-7269c49b.entry.js +6 -0
  76. package/dist/solutions-components/p-760bd17e.entry.js +6 -0
  77. package/dist/solutions-components/p-95fea07a.entry.js +17 -0
  78. package/dist/solutions-components/{p-212b02e7.js → p-ae4d86e8.js} +1 -1
  79. package/dist/solutions-components/{p-038fcd93.entry.js → p-c273ab7a.entry.js} +1 -1
  80. package/dist/solutions-components/p-d742b915.entry.js +29 -0
  81. package/dist/solutions-components/p-dfad61a8.entry.js +24 -0
  82. package/dist/solutions-components/{p-331b5d1e.js → p-fca434c8.js} +2 -2
  83. package/dist/solutions-components/p-fd82a00f.entry.js +6 -0
  84. package/dist/solutions-components/solutions-components.esm.js +1 -1
  85. package/dist/solutions-components/utils/mapViewUtils.ts +13 -5
  86. package/dist/types/components/create-feature/create-feature.d.ts +4 -4
  87. package/dist/types/components/crowdsource-reporter/crowdsource-reporter.d.ts +91 -10
  88. package/dist/types/components/feature-details/feature-details.d.ts +151 -0
  89. package/dist/types/components/feature-list/feature-list.d.ts +6 -0
  90. package/dist/types/components/info-card/info-card.d.ts +33 -1
  91. package/dist/types/components.d.ts +129 -12
  92. package/dist/types/preact.d.ts +6 -1
  93. package/dist/types/utils/mapViewUtils.d.ts +5 -3
  94. package/package.json +1 -1
  95. package/dist/cjs/calcite-block_2.cjs.entry.js +0 -652
  96. package/dist/cjs/calcite-graph_2.cjs.entry.js +0 -1055
  97. package/dist/cjs/calcite-scrim.cjs.entry.js +0 -125
  98. package/dist/cjs/utils-7bc7f595.js +0 -64
  99. package/dist/esm/calcite-block_2.entry.js +0 -647
  100. package/dist/esm/calcite-graph_2.entry.js +0 -1050
  101. package/dist/esm/calcite-scrim.entry.js +0 -121
  102. package/dist/esm/utils-9fb4104a.js +0 -61
  103. package/dist/solutions-components/p-04c37d69.entry.js +0 -17
  104. package/dist/solutions-components/p-0b92e4b1.entry.js +0 -11
  105. package/dist/solutions-components/p-238d3b5f.entry.js +0 -6
  106. package/dist/solutions-components/p-3af79063.js +0 -36
  107. package/dist/solutions-components/p-80b11ec1.entry.js +0 -17
  108. package/dist/solutions-components/p-a3a11749.entry.js +0 -6
  109. package/dist/solutions-components/p-aec06ce4.entry.js +0 -18
  110. package/dist/solutions-components/p-bfdf89c2.js +0 -11
  111. package/dist/solutions-components/p-c4ff3b52.entry.js +0 -17
  112. package/dist/solutions-components/p-ced067bd.entry.js +0 -17
  113. package/dist/solutions-components/p-d136eab0.entry.js +0 -23
  114. package/dist/solutions-components/p-e0446d5b.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
  }