@esri/solutions-components 0.10.35 → 0.10.37

Sign up to get free protection for your applications and to get access to all the features.
Files changed (157) hide show
  1. package/dist/cjs/basemap-gallery_7.cjs.entry.js +1 -0
  2. package/dist/cjs/calcite-action-pad_2.cjs.entry.js +2 -2
  3. package/dist/cjs/calcite-alert_5.cjs.entry.js +3 -3
  4. package/dist/cjs/calcite-block_5.cjs.entry.js +2 -2
  5. package/dist/cjs/card-manager_3.cjs.entry.js +2 -2
  6. package/dist/cjs/{constants-0a4fc296.js → constants-51cf394f.js} +57 -1
  7. package/dist/cjs/crowdsource-manager.cjs.entry.js +25 -29
  8. package/dist/cjs/{downloadUtils-20637f89.js → downloadUtils-76bc7e30.js} +6 -5
  9. package/dist/cjs/feature-list.cjs.entry.js +3 -3
  10. package/dist/cjs/{helpers-415179ad.js → helpers-afcac967.js} +1 -1
  11. package/dist/cjs/{index.es-a242cb45.js → index.es-8336efed.js} +2 -2
  12. package/dist/cjs/instant-apps-app-guide.cjs.entry.js +26 -13
  13. package/dist/cjs/instant-apps-export.cjs.entry.js +1086 -59
  14. package/dist/cjs/instant-apps-interactive-legend-classic.cjs.entry.js +8 -4
  15. package/dist/cjs/instant-apps-interactive-legend-count_2.cjs.entry.js +10 -5
  16. package/dist/cjs/instant-apps-interactive-legend-group-legend-element-caption.cjs.entry.js +1 -1
  17. package/dist/cjs/instant-apps-interactive-legend-group-legend-element_5.cjs.entry.js +52 -12
  18. package/dist/cjs/instant-apps-interactive-legend.cjs.entry.js +9 -3
  19. package/dist/cjs/instant-apps-landing-page.cjs.entry.js +19 -13
  20. package/dist/cjs/instant-apps-language-switcher.cjs.entry.js +3 -2
  21. package/dist/cjs/instant-apps-language-translator.cjs.entry.js +1 -1
  22. package/dist/cjs/instant-apps-measurement.cjs.entry.js +2 -2
  23. package/dist/cjs/instant-apps-popover.cjs.entry.js +1 -1
  24. package/dist/cjs/instant-apps-scoreboard.cjs.entry.js +1 -1
  25. package/dist/cjs/instant-apps-sign-in.cjs.entry.js +13 -9
  26. package/dist/cjs/instant-apps-splash.cjs.entry.js +1 -1
  27. package/dist/cjs/instant-apps-time-filter.cjs.entry.js +11 -9
  28. package/dist/cjs/loader.cjs.js +1 -1
  29. package/dist/cjs/map-select-tools_3.cjs.entry.js +2 -2
  30. package/dist/cjs/{popupUtils-d477705b.js → popupUtils-bc762034.js} +1 -1
  31. package/dist/cjs/public-notification.cjs.entry.js +2 -2
  32. package/dist/cjs/solution-item-accordion.cjs.entry.js +7 -3
  33. package/dist/cjs/solutions-components.cjs.js +1 -1
  34. package/dist/collection/components/crowdsource-manager/crowdsource-manager.js +27 -29
  35. package/dist/collection/components/map-legend/map-legend.js +1 -0
  36. package/dist/collection/components/solution-item-accordion/solution-item-accordion.js +7 -3
  37. package/dist/collection/demos/solution-item-accordion.html +32 -0
  38. package/dist/collection/utils/downloadUtils.js +5 -3
  39. package/dist/collection/utils/downloadUtils.ts +6 -3
  40. package/dist/collection/utils/test/downloadUtils.spec.tsx +10 -12
  41. package/dist/components/crowdsource-manager.js +26 -29
  42. package/dist/components/downloadUtils.js +5 -4
  43. package/dist/components/instant-apps-app-guide.js +28 -14
  44. package/dist/components/instant-apps-export.js +1119 -76
  45. package/dist/components/instant-apps-interactive-legend-classic2.js +8 -4
  46. package/dist/components/instant-apps-interactive-legend-count2.js +6 -3
  47. package/dist/components/instant-apps-interactive-legend-layer-element-caption2.js +5 -2
  48. package/dist/components/instant-apps-interactive-legend-legend-element-caption2.js +52 -12
  49. package/dist/components/instant-apps-interactive-legend.js +13 -4
  50. package/dist/components/instant-apps-landing-page.js +19 -13
  51. package/dist/components/instant-apps-language-switcher.js +3 -1
  52. package/dist/components/instant-apps-language-translator2.js +57 -1
  53. package/dist/components/instant-apps-measurement-tool2.js +2 -2
  54. package/dist/components/instant-apps-measurement.js +2 -2
  55. package/dist/components/instant-apps-popover.js +1 -1
  56. package/dist/components/instant-apps-scoreboard.js +1 -1
  57. package/dist/components/instant-apps-sign-in2.js +14 -9
  58. package/dist/components/instant-apps-social-share2.js +2 -2
  59. package/dist/components/instant-apps-splash.js +1 -1
  60. package/dist/components/instant-apps-time-filter.js +11 -9
  61. package/dist/components/map-legend2.js +1 -0
  62. package/dist/components/solution-item-accordion.js +7 -3
  63. package/dist/components/store.js +1 -1
  64. package/dist/esm/basemap-gallery_7.entry.js +1 -0
  65. package/dist/esm/calcite-action-pad_2.entry.js +2 -2
  66. package/dist/esm/calcite-alert_5.entry.js +3 -3
  67. package/dist/esm/calcite-block_5.entry.js +2 -2
  68. package/dist/esm/card-manager_3.entry.js +2 -2
  69. package/dist/esm/{constants-045d6a1b.js → constants-886c7c2c.js} +57 -1
  70. package/dist/esm/crowdsource-manager.entry.js +25 -29
  71. package/dist/esm/{downloadUtils-e266e98d.js → downloadUtils-bc7a4ba1.js} +6 -5
  72. package/dist/esm/feature-list.entry.js +3 -3
  73. package/dist/esm/{helpers-f9bf9c0b.js → helpers-91087955.js} +1 -1
  74. package/dist/esm/{index.es-c5f258e2.js → index.es-0d189a34.js} +2 -2
  75. package/dist/esm/instant-apps-app-guide.entry.js +26 -13
  76. package/dist/esm/instant-apps-export.entry.js +1086 -59
  77. package/dist/esm/instant-apps-interactive-legend-classic.entry.js +8 -4
  78. package/dist/esm/instant-apps-interactive-legend-count_2.entry.js +10 -5
  79. package/dist/esm/instant-apps-interactive-legend-group-legend-element-caption.entry.js +1 -1
  80. package/dist/esm/instant-apps-interactive-legend-group-legend-element_5.entry.js +52 -12
  81. package/dist/esm/instant-apps-interactive-legend.entry.js +9 -3
  82. package/dist/esm/instant-apps-landing-page.entry.js +19 -13
  83. package/dist/esm/instant-apps-language-switcher.entry.js +3 -2
  84. package/dist/esm/instant-apps-language-translator.entry.js +1 -1
  85. package/dist/esm/instant-apps-measurement.entry.js +2 -2
  86. package/dist/esm/instant-apps-popover.entry.js +1 -1
  87. package/dist/esm/instant-apps-scoreboard.entry.js +1 -1
  88. package/dist/esm/instant-apps-sign-in.entry.js +13 -9
  89. package/dist/esm/instant-apps-splash.entry.js +1 -1
  90. package/dist/esm/instant-apps-time-filter.entry.js +11 -9
  91. package/dist/esm/loader.js +1 -1
  92. package/dist/esm/map-select-tools_3.entry.js +2 -2
  93. package/dist/esm/{popupUtils-4570096e.js → popupUtils-03dc398a.js} +1 -1
  94. package/dist/esm/public-notification.entry.js +2 -2
  95. package/dist/esm/solution-item-accordion.entry.js +7 -3
  96. package/dist/esm/solutions-components.js +1 -1
  97. package/dist/node_modules/@esri/instant-apps-components/dist/collection/components/instant-apps-app-guide/instant-apps-app-guide.css +0 -5
  98. package/dist/node_modules/@esri/instant-apps-components/dist/collection/components/instant-apps-export/instant-apps-export.css +4 -0
  99. package/dist/node_modules/@esri/instant-apps-components/dist/collection/components/instant-apps-interactive-legend/instant-apps-interactive-legend-classic/instant-apps-interactive-legend-classic.css +14 -0
  100. package/dist/node_modules/@esri/instant-apps-components/dist/collection/components/instant-apps-interactive-legend/instant-apps-interactive-legend-count/instant-apps-interactive-legend-count.css +9 -0
  101. package/dist/node_modules/@esri/instant-apps-components/dist/collection/components/instant-apps-interactive-legend/instant-apps-interactive-legend-layer-element-caption/instant-apps-interactive-legend-layer-element-caption.css +5 -3
  102. package/dist/node_modules/@esri/instant-apps-components/dist/collection/components/instant-apps-interactive-legend/instant-apps-interactive-legend-legend-element-caption/instant-apps-interactive-legend-legend-element-caption.css +29 -0
  103. package/dist/node_modules/@esri/instant-apps-components/dist/collection/components/instant-apps-landing-page/instant-apps-landing-page.css +8 -0
  104. package/dist/node_modules/@esri/instant-apps-components/dist/collection/components/instant-apps-sign-in/instant-apps-sign-in.css +22 -0
  105. package/dist/solutions-components/demos/solution-item-accordion.html +32 -0
  106. package/dist/solutions-components/{p-cb3199f9.entry.js → p-04ab956c.entry.js} +1 -1
  107. package/dist/solutions-components/p-1e14b3d0.entry.js +6 -0
  108. package/dist/solutions-components/p-2542d5c9.entry.js +6 -0
  109. package/dist/solutions-components/{p-70ecc979.entry.js → p-374ddead.entry.js} +1 -1
  110. package/dist/solutions-components/{p-146acd9a.entry.js → p-3fc18283.entry.js} +1 -1
  111. package/dist/solutions-components/p-43699470.entry.js +6 -0
  112. package/dist/solutions-components/p-5585dcd3.entry.js +6 -0
  113. package/dist/solutions-components/{p-3a513c67.entry.js → p-5b3c0418.entry.js} +1 -1
  114. package/dist/solutions-components/{p-f7e7b830.entry.js → p-6438d1ea.entry.js} +1 -1
  115. package/dist/solutions-components/{p-a568af9f.js → p-6f606cdb.js} +1 -1
  116. package/dist/solutions-components/p-720de4db.entry.js +6 -0
  117. package/dist/solutions-components/p-750b3277.entry.js +6 -0
  118. package/dist/solutions-components/p-8779ee41.entry.js +6 -0
  119. package/dist/solutions-components/p-90fc786f.entry.js +6 -0
  120. package/dist/solutions-components/p-97fe6ec5.entry.js +6 -0
  121. package/dist/solutions-components/{p-43165ebd.entry.js → p-9c170b30.entry.js} +1 -1
  122. package/dist/solutions-components/{p-b4c49411.entry.js → p-9c4fef09.entry.js} +1 -1
  123. package/dist/solutions-components/p-a5b751e2.entry.js +6 -0
  124. package/dist/solutions-components/{p-89046451.entry.js → p-aac0c89c.entry.js} +1 -1
  125. package/dist/solutions-components/p-af573e0d.js +6 -0
  126. package/dist/solutions-components/p-bb8b1ee2.entry.js +6 -0
  127. package/dist/solutions-components/{p-b79f296d.entry.js → p-c48be45f.entry.js} +2 -2
  128. package/dist/solutions-components/p-ca3cbd29.entry.js +6 -0
  129. package/dist/solutions-components/p-cd482a33.js +21 -0
  130. package/dist/solutions-components/p-ceb1030b.js +6 -0
  131. package/dist/solutions-components/{p-b86b2664.entry.js → p-d2612c30.entry.js} +1 -1
  132. package/dist/solutions-components/{p-29047e77.entry.js → p-e1391389.entry.js} +1 -1
  133. package/dist/solutions-components/{p-588adf13.entry.js → p-e345f9c4.entry.js} +1 -1
  134. package/dist/solutions-components/p-f3b71784.entry.js +6 -0
  135. package/dist/solutions-components/{p-759d0beb.entry.js → p-f728af86.entry.js} +1 -1
  136. package/dist/solutions-components/{p-46c8015c.js → p-ff9e28d1.js} +30 -30
  137. package/dist/solutions-components/solutions-components.esm.js +1 -1
  138. package/dist/solutions-components/utils/downloadUtils.ts +6 -3
  139. package/dist/solutions-components/utils/test/downloadUtils.spec.tsx +10 -12
  140. package/dist/types/components/crowdsource-manager/crowdsource-manager.d.ts +4 -7
  141. package/package.json +8 -7
  142. package/dist/solutions-components/p-07a194e6.entry.js +0 -6
  143. package/dist/solutions-components/p-14d78748.entry.js +0 -6
  144. package/dist/solutions-components/p-2360802a.js +0 -21
  145. package/dist/solutions-components/p-24e3f09f.entry.js +0 -6
  146. package/dist/solutions-components/p-3a33ef72.entry.js +0 -6
  147. package/dist/solutions-components/p-402301cb.js +0 -6
  148. package/dist/solutions-components/p-41a6f03d.entry.js +0 -6
  149. package/dist/solutions-components/p-4db86c5e.entry.js +0 -6
  150. package/dist/solutions-components/p-5eb9a413.entry.js +0 -6
  151. package/dist/solutions-components/p-750f234e.entry.js +0 -6
  152. package/dist/solutions-components/p-7e97d4d6.entry.js +0 -6
  153. package/dist/solutions-components/p-7eb5d31a.js +0 -6
  154. package/dist/solutions-components/p-90d2aadc.entry.js +0 -6
  155. package/dist/solutions-components/p-b78a4ce7.entry.js +0 -6
  156. package/dist/solutions-components/p-ecf642c2.entry.js +0 -6
  157. package/dist/solutions-components/p-efb4cb43.entry.js +0 -6
@@ -142,6 +142,22 @@ export class CrowdsourceManager {
142
142
  // Watch handlers
143
143
  //
144
144
  //--------------------------------------------------------------------------
145
+ /**
146
+ * Adjust layout based on current appLayout value
147
+ */
148
+ appLayoutWatchHandler(newAppLayout, oldAppLayout) {
149
+ if (newAppLayout !== oldAppLayout) {
150
+ this._setActiveLayout(newAppLayout);
151
+ // update the layer if table selected while switching to map view
152
+ if (this.appLayout === "mapView" && this._layer.isTable) {
153
+ void this._mapCard.updateLayer();
154
+ }
155
+ if (this._isMapViewOnLoad) {
156
+ void this._layerTable.refresh();
157
+ this._isMapViewOnLoad = false;
158
+ }
159
+ }
160
+ }
145
161
  /**
146
162
  * When true the map zoom tools will be available
147
163
  */
@@ -210,7 +226,7 @@ export class CrowdsourceManager {
210
226
  layer && await layer.when(() => {
211
227
  // on render if no layer is present and only one table is present in map and app is in map view layer then change it to split layout
212
228
  if (this._layerIds.length === 0 && this.appLayout === 'mapView' && layer.isTable) {
213
- this._changeLayout('splitView');
229
+ this.appLayout = "splitView";
214
230
  }
215
231
  this._layer = layer;
216
232
  this._initLayerExpressions();
@@ -243,7 +259,7 @@ export class CrowdsourceManager {
243
259
  render() {
244
260
  // only avoid border when we have a header color that is not white
245
261
  const borderClass = this.popupHeaderColor && this.popupHeaderColor !== "#FFFFFF" ? "border-width-0" : "";
246
- return (h(Host, { key: 'ddb8bb35d74ab89ffd62d7bd0468b5a757fa5ba1' }, h("calcite-shell", { key: '74d941a3b1d4149a57c88cea263a2fd7e2b4f840', class: "position-relative" }, h("calcite-panel", { key: '3ff44942eab43c6f3a1cd92c918c0e2bae3d500a', class: `width-full height-full ${borderClass}`, loading: this._isLoading }, this._getBody(this._layoutMode, this._panelOpen, this._hideTable)), this._getFooter()), this._filterModal()));
262
+ return (h(Host, { key: 'ace73bfa1aa7d460f1cba60d13e94c4f47f77bd0' }, h("calcite-shell", { key: 'f14e70be762bf236be566111b45e40a42f0997f7', class: "position-relative" }, h("calcite-panel", { key: '0dde9426295a780b6a12cd98513f655914c0dab5', class: `width-full height-full ${borderClass}`, loading: this._isLoading }, this._getBody(this._layoutMode, this._panelOpen, this._hideTable)), this._getFooter()), this._filterModal()));
247
263
  }
248
264
  /**
249
265
  * Called after each render
@@ -476,10 +492,9 @@ export class CrowdsourceManager {
476
492
  const cardManagerHeight = isTableLayout && this.mapInfos?.length > 1 ? "adjusted-height-100-51" : isMapLayout || isTableLayout ? "height-full" : (this._numSelected > 0 && !this._isMobile) ? "height-50" : !this._showInformationHeader ? "adjusted-height-50_25" : !this._isPortraitMobile ? "height-50" : "height-full";
477
493
  const themeClass = this.theme === "dark" ? "calcite-mode-dark" : "calcite-mode-light";
478
494
  return (h("div", { class: `width-50 height-full ${themeClass}` }, h("card-manager", { class: `${cardManagerHeight} width-full`, customInfoText: this.customInfoText, enableCreateFeatures: this._enableCreateFeatures && !this._isMobile, enableEditGeometry: this?._mapInfo?.enableEditGeometry, isMobile: this._isPortraitMobile, layer: this._layer, mapView: this?._mapView, onBackFromCreateWorkFlow: () => {
479
- this._changeLayout(this.appLayout);
480
495
  this._showInformationHeader = true;
481
496
  }, onCreateWorkFlowStarted: () => {
482
- this._changeLayout(this._layer.isTable ? "tableView" : "mapView");
497
+ this.appLayout = this._layer.isTable ? "tableView" : "mapView";
483
498
  this._showInformationHeader = false;
484
499
  }, onFeatureOrRecordSubmitted: () => void this._layerTable.refresh(), selectedFeaturesIds: this._layerTable?.selectedIds, selectingFeatureFromMap: this.appLayout === "mapView", zoomAndScrollToSelected: this.zoomAndScrollToSelected })));
485
500
  }
@@ -517,7 +532,7 @@ export class CrowdsourceManager {
517
532
  const icon = this._getDividerIcon(layoutMode, panelOpen);
518
533
  const tooltip = panelOpen ? this._translations.close : this._translations.open;
519
534
  const id = "toggle-layout";
520
- return (h(Fragment, null, h("calcite-action", { active: this.appLayout === 'splitView', class: "toggle-node", icon: "browser", id: "browser-action", onClick: () => { this._changeLayout('splitView'); }, text: "" }), h("calcite-tooltip", { placement: "right", "reference-element": "browser-action" }, h("span", null, this._translations.splitView)), h("calcite-action", { active: this.appLayout === 'tableView', class: "toggle-node", icon: "dock-left", id: "dock-left-action", onClick: () => { this._changeLayout('tableView'); }, text: "" }), h("calcite-tooltip", { placement: "right", "reference-element": "dock-left-action" }, h("span", null, this._translations.tableView)), h("calcite-action", { active: this.appLayout === 'mapView', class: "toggle-node", disabled: this._layerIds?.length === 0, icon: "browser-map", id: "browser-map-action", onClick: () => { this._changeLayout('mapView'); }, text: "" }), h("calcite-tooltip", { placement: "right", "reference-element": "browser-map-action" }, h("span", null, this._translations.mapView)), h("calcite-action", { class: "toggle-node", icon: icon, id: id, onClick: () => this._toggleLayout(), slot: "actions-end", text: "" }), h("calcite-tooltip", { placement: "bottom", "reference-element": id }, h("span", null, tooltip))));
535
+ return (h(Fragment, null, h("calcite-action", { active: this.appLayout === 'splitView', class: "toggle-node", icon: "browser", id: "browser-action", onClick: () => { this.appLayout = "splitView"; }, text: "" }), h("calcite-tooltip", { placement: "right", "reference-element": "browser-action" }, h("span", null, this._translations.splitView)), h("calcite-action", { active: this.appLayout === 'tableView', class: "toggle-node", icon: "dock-left", id: "dock-left-action", onClick: () => { this.appLayout = "tableView"; }, text: "" }), h("calcite-tooltip", { placement: "right", "reference-element": "dock-left-action" }, h("span", null, this._translations.tableView)), h("calcite-action", { active: this.appLayout === 'mapView', class: "toggle-node", disabled: this._layerIds?.length === 0, icon: "browser-map", id: "browser-map-action", onClick: () => { this.appLayout = "mapView"; }, text: "" }), h("calcite-tooltip", { placement: "right", "reference-element": "browser-map-action" }, h("span", null, this._translations.mapView)), h("calcite-action", { class: "toggle-node", icon: icon, id: id, onClick: () => this._toggleLayout(), slot: "actions-end", text: "" }), h("calcite-tooltip", { placement: "bottom", "reference-element": id }, h("span", null, tooltip))));
521
536
  }
522
537
  /**
523
538
  * Show filter component in modal
@@ -590,7 +605,7 @@ export class CrowdsourceManager {
590
605
  if (this._isMobile) {
591
606
  this.showHideMapPopupAndTable(!this._isMobile);
592
607
  this._isPortraitMobile = !!window.matchMedia("(orientation: portrait)").matches;
593
- this._changeLayout('splitView');
608
+ this.appLayout = "splitView";
594
609
  }
595
610
  else {
596
611
  this._isPortraitMobile = false;
@@ -606,34 +621,14 @@ export class CrowdsourceManager {
606
621
  _toggleLayout() {
607
622
  this._panelOpen = !this._panelOpen;
608
623
  }
609
- /**
610
- * Changes the layout mode
611
- * @param appLayout selected active app layout
612
- *
613
- * @protected
614
- */
615
- _changeLayout(appLayout) {
616
- if (this.appLayout !== appLayout) {
617
- this._setActiveLayout(appLayout);
618
- this.appLayout = appLayout;
619
- // update the layer if table selected while switching to map view
620
- if (this.appLayout === "mapView" && this._layer.isTable) {
621
- void this._mapCard.updateLayer();
622
- }
623
- if (this._isMapViewOnLoad) {
624
- void this._layerTable.refresh();
625
- this._isMapViewOnLoad = false;
626
- }
627
- }
628
- }
629
624
  /**
630
625
  * shows the map in card view
631
626
  *
632
627
  * @protected
633
628
  */
634
629
  _showMapInCardView() {
635
- if (this.appLayout === 'mapView') {
636
- const fullMapView = document.getElementById('full-map-view').childNodes[0];
630
+ if (this.appLayout !== "mapView") {
631
+ const fullMapView = document.getElementById('full-map-view')?.childNodes[0];
637
632
  const splitMapClass = document.getElementById('card-mapView');
638
633
  if (fullMapView) {
639
634
  splitMapClass.appendChild(fullMapView);
@@ -646,7 +641,7 @@ export class CrowdsourceManager {
646
641
  * @protected
647
642
  */
648
643
  _showMapInFullView() {
649
- const splitMap = document.getElementById('card-mapView').childNodes[0];
644
+ const splitMap = document.getElementById('card-mapView')?.childNodes[0];
650
645
  const fullMapViewClass = document.getElementById('full-map-view');
651
646
  if (splitMap) {
652
647
  fullMapViewClass.appendChild(splitMap);
@@ -1501,6 +1496,9 @@ export class CrowdsourceManager {
1501
1496
  static get elementRef() { return "el"; }
1502
1497
  static get watchers() {
1503
1498
  return [{
1499
+ "propName": "appLayout",
1500
+ "methodName": "appLayoutWatchHandler"
1501
+ }, {
1504
1502
  "propName": "enableZoom",
1505
1503
  "methodName": "enableZoomWatchHandler"
1506
1504
  }, {
@@ -122,6 +122,7 @@ export class MapLegend {
122
122
  if (!this.legendWidget) {
123
123
  this.legendWidget = new this.Legend({
124
124
  container: this._legendElement,
125
+ respectLayerDefinitionExpression: true,
125
126
  view
126
127
  });
127
128
  }
@@ -64,6 +64,8 @@ export class SolutionItemAccordion {
64
64
  "Web Scene",
65
65
  "Feature Layer (hosted, view)",
66
66
  "Feature Layer (hosted)",
67
+ "Table (hosted, view)",
68
+ "Table (hosted)",
67
69
  "Tile Layer",
68
70
  "CSV",
69
71
  "Microsoft Excel",
@@ -119,7 +121,7 @@ export class SolutionItemAccordion {
119
121
  * Renders the component.
120
122
  */
121
123
  render() {
122
- return (h(Host, { key: '9a940187b8b91f94346f51cd67cb3c9fd2d8f470' }, this._getAccordion()));
124
+ return (h(Host, { key: 'bf7f34f247fd1936435394aa8740bfc1136325ed' }, this._getAccordion()));
123
125
  }
124
126
  //--------------------------------------------------------------------------
125
127
  //
@@ -251,8 +253,10 @@ export class SolutionItemAccordion {
251
253
  _getTypeForDisplay(type, typeKeywords) {
252
254
  let _type = type;
253
255
  if (type === "Feature Service") {
254
- _type = typeKeywords.indexOf("View Service") > -1 ?
255
- "Feature Layer (hosted, view)" : "Feature Layer (hosted)";
256
+ const isView = typeKeywords.indexOf("View Service") > -1;
257
+ const isTable = typeKeywords.indexOf("Table") > -1;
258
+ _type = isView && isTable ? "Table (hosted, view)" : isTable ? "Table (hosted)" :
259
+ isView ? "Feature Layer (hosted, view)" : "Feature Layer (hosted)";
256
260
  }
257
261
  if (type === "Web Mapping Application") {
258
262
  _type = typeKeywords.indexOf("configurableApp") > -1 ?
@@ -135,6 +135,38 @@
135
135
  ],
136
136
  "snippet": "A feature layer view used to share volunteers and clearing activities with the Adopt-A-Catch Basin site."
137
137
  },
138
+ {
139
+ "id": "aa2a7f901eb9492a829ab918cd38318d",
140
+ "type": "Feature Service",
141
+ "title": "CatchBasinVolunteers_public_table",
142
+ "typeKeywords": [
143
+ "ArcGIS Server",
144
+ "Data",
145
+ "Feature Access",
146
+ "Feature Service",
147
+ "Multilayer",
148
+ "Service",
149
+ "Hosted Service",
150
+ "View Service",
151
+ "Table"
152
+ ],
153
+ "snippet": "A feature table view"
154
+ },
155
+ {
156
+ "id": "bb2a7f901eb9492a829ab918cd38318d",
157
+ "type": "Feature Service",
158
+ "title": "CatchBasinVolunteers_table",
159
+ "typeKeywords": [
160
+ "ArcGIS Server",
161
+ "Data",
162
+ "Feature Access",
163
+ "Feature Service",
164
+ "Multilayer",
165
+ "Service",
166
+ "Table"
167
+ ],
168
+ "snippet": "A feature table"
169
+ },
138
170
  {
139
171
  "id": "cb7f74af39c64abfbe7c7fc5b69587b1",
140
172
  "type": "Feature Service",
@@ -23,6 +23,7 @@ import { exportCSV } from "./csvUtils";
23
23
  import { exportPDF } from "./pdfUtils";
24
24
  import { loadModules } from "./loadModules";
25
25
  import { queryFeaturesByID } from "./queryUtils";
26
+ import { Sanitizer } from "@esri/arcgis-html-sanitizer";
26
27
  import * as common from "@esri/solution-common";
27
28
  const lineSeparatorChar = "|";
28
29
  import { queryRelated } from "@esri/arcgis-rest-feature-layer";
@@ -145,12 +146,13 @@ export function _cleanupLabel(labelText) {
145
146
  labelText = labelText.replace(/<\/p>/gi, "");
146
147
  // Replace \n with the line separator character
147
148
  labelText = labelText.replace(/\n/gi, "|");
148
- // Remove remaining HTML tags, replace 0xA0 that popup uses for spaces, and replace some char representations
149
+ // Remove tricky stuff
150
+ const sanitizer = new Sanitizer();
151
+ labelText = sanitizer.sanitize(labelText);
152
+ // Remove remaining HTML tags, replace 0xA0 that popup uses for spaces, and replace &nbsp;
149
153
  labelText = labelText
150
154
  .replace(/<[\s.]*[^<>]*\/?>/gi, "")
151
155
  .replace(/\xA0/gi, " ")
152
- .replace(/&lt;/gi, "<")
153
- .replace(/&gt;/gi, ">")
154
156
  .replace(/&nbsp;/gi, " ");
155
157
  // Trim each line
156
158
  labelText = labelText.replace(/\s*\|\s*/g, "|");
@@ -21,6 +21,7 @@ import { ILabel, exportPDF } from "./pdfUtils";
21
21
  import { loadModules } from "./loadModules";
22
22
  import { queryFeaturesByID } from "./queryUtils";
23
23
  import { IExportInfo, IExportInfos } from "../utils/interfaces";
24
+ import { Sanitizer } from "@esri/arcgis-html-sanitizer";
24
25
  import * as common from "@esri/solution-common";
25
26
 
26
27
  export { ILabel } from "./pdfUtils";
@@ -277,12 +278,14 @@ export function _cleanupLabel(
277
278
  // Replace \n with the line separator character
278
279
  labelText = labelText.replace(/\n/gi, "|");
279
280
 
280
- // Remove remaining HTML tags, replace 0xA0 that popup uses for spaces, and replace some char representations
281
+ // Remove tricky stuff
282
+ const sanitizer = new Sanitizer();
283
+ labelText = sanitizer.sanitize(labelText);
284
+
285
+ // Remove remaining HTML tags, replace 0xA0 that popup uses for spaces, and replace &nbsp;
281
286
  labelText = labelText
282
287
  .replace(/<[\s.]*[^<>]*\/?>/gi, "")
283
288
  .replace(/\xA0/gi, " ")
284
- .replace(/&lt;/gi, "<")
285
- .replace(/&gt;/gi, ">")
286
289
  .replace(/&nbsp;/gi, " ");
287
290
 
288
291
  // Trim each line
@@ -93,8 +93,16 @@ describe("downloadUtils", () => {
93
93
 
94
94
  it("handles some special characters", () => {
95
95
  const labelText =
96
- "<div style='text-align: left;'>&lt;{NAME}&gt;<br />{STREET}<br/>{CITY},&nbsp;{STATE}&nbsp;{ZIP}<br></div>";
97
- const expectedCleanedText = "<{NAME}>|{STREET}|{CITY}, {STATE} {ZIP}";
96
+ "<div style='text-align: left;'>&lt;{NAME}&gt;<br />{STREET}<br/>{CITY},&nbsp;{STATE}\xA0{ZIP}<br></div>";
97
+ const expectedCleanedText = "&lt;{NAME}&gt;|{STREET}|{CITY}, {STATE} {ZIP}";
98
+
99
+ const result: string = downloadUtils._cleanupLabel(labelText);
100
+ expect(result).toEqual(expectedCleanedText);
101
+ });
102
+
103
+ it("handles embedded script tag", () => {
104
+ const labelText = "<scrip<script>is removed</script>t>alert(123)</script>";
105
+ const expectedCleanedText = "&lt;scrip&lt;script&gt;is removed&lt;/script&gt;t&gt;alert(123)&lt;/script&gt;";
98
106
 
99
107
  const result: string = downloadUtils._cleanupLabel(labelText);
100
108
  expect(result).toEqual(expectedCleanedText);
@@ -188,16 +196,6 @@ describe("downloadUtils", () => {
188
196
  expect(result.format).toEqual(expectedLabelSpec);
189
197
  });
190
198
 
191
- it("handles some special characters", () => {
192
- const popupInfo =
193
- "<div style='text-align: left;'>&lt;{NAME}&gt;<br />{STREET}<br/>{CITY},&nbsp;{STATE}&nbsp;{ZIP}<br></div>";
194
- const expectedLabelSpec = "<{NAME}>|{STREET}|{CITY}, {STATE} {ZIP}";
195
-
196
- const result: downloadUtils.ILabelFormat = downloadUtils._convertPopupTextToLabelSpec(popupInfo);
197
- expect(result.type).toEqual("pattern");
198
- expect(result.format).toEqual(expectedLabelSpec);
199
- });
200
-
201
199
  });
202
200
 
203
201
  describe("_convertPopupArcadeToLabelSpec", () => {
@@ -190,6 +190,22 @@ const CrowdsourceManager$1 = /*@__PURE__*/ proxyCustomElement(class CrowdsourceM
190
190
  // Watch handlers
191
191
  //
192
192
  //--------------------------------------------------------------------------
193
+ /**
194
+ * Adjust layout based on current appLayout value
195
+ */
196
+ appLayoutWatchHandler(newAppLayout, oldAppLayout) {
197
+ if (newAppLayout !== oldAppLayout) {
198
+ this._setActiveLayout(newAppLayout);
199
+ // update the layer if table selected while switching to map view
200
+ if (this.appLayout === "mapView" && this._layer.isTable) {
201
+ void this._mapCard.updateLayer();
202
+ }
203
+ if (this._isMapViewOnLoad) {
204
+ void this._layerTable.refresh();
205
+ this._isMapViewOnLoad = false;
206
+ }
207
+ }
208
+ }
193
209
  /**
194
210
  * When true the map zoom tools will be available
195
211
  */
@@ -258,7 +274,7 @@ const CrowdsourceManager$1 = /*@__PURE__*/ proxyCustomElement(class CrowdsourceM
258
274
  layer && await layer.when(() => {
259
275
  // on render if no layer is present and only one table is present in map and app is in map view layer then change it to split layout
260
276
  if (this._layerIds.length === 0 && this.appLayout === 'mapView' && layer.isTable) {
261
- this._changeLayout('splitView');
277
+ this.appLayout = "splitView";
262
278
  }
263
279
  this._layer = layer;
264
280
  this._initLayerExpressions();
@@ -291,7 +307,7 @@ const CrowdsourceManager$1 = /*@__PURE__*/ proxyCustomElement(class CrowdsourceM
291
307
  render() {
292
308
  // only avoid border when we have a header color that is not white
293
309
  const borderClass = this.popupHeaderColor && this.popupHeaderColor !== "#FFFFFF" ? "border-width-0" : "";
294
- return (h(Host, { key: 'ddb8bb35d74ab89ffd62d7bd0468b5a757fa5ba1' }, h("calcite-shell", { key: '74d941a3b1d4149a57c88cea263a2fd7e2b4f840', class: "position-relative" }, h("calcite-panel", { key: '3ff44942eab43c6f3a1cd92c918c0e2bae3d500a', class: `width-full height-full ${borderClass}`, loading: this._isLoading }, this._getBody(this._layoutMode, this._panelOpen, this._hideTable)), this._getFooter()), this._filterModal()));
310
+ return (h(Host, { key: 'ace73bfa1aa7d460f1cba60d13e94c4f47f77bd0' }, h("calcite-shell", { key: 'f14e70be762bf236be566111b45e40a42f0997f7', class: "position-relative" }, h("calcite-panel", { key: '0dde9426295a780b6a12cd98513f655914c0dab5', class: `width-full height-full ${borderClass}`, loading: this._isLoading }, this._getBody(this._layoutMode, this._panelOpen, this._hideTable)), this._getFooter()), this._filterModal()));
295
311
  }
296
312
  /**
297
313
  * Called after each render
@@ -524,10 +540,9 @@ const CrowdsourceManager$1 = /*@__PURE__*/ proxyCustomElement(class CrowdsourceM
524
540
  const cardManagerHeight = isTableLayout && this.mapInfos?.length > 1 ? "adjusted-height-100-51" : isMapLayout || isTableLayout ? "height-full" : (this._numSelected > 0 && !this._isMobile) ? "height-50" : !this._showInformationHeader ? "adjusted-height-50_25" : !this._isPortraitMobile ? "height-50" : "height-full";
525
541
  const themeClass = this.theme === "dark" ? "calcite-mode-dark" : "calcite-mode-light";
526
542
  return (h("div", { class: `width-50 height-full ${themeClass}` }, h("card-manager", { class: `${cardManagerHeight} width-full`, customInfoText: this.customInfoText, enableCreateFeatures: this._enableCreateFeatures && !this._isMobile, enableEditGeometry: this?._mapInfo?.enableEditGeometry, isMobile: this._isPortraitMobile, layer: this._layer, mapView: this?._mapView, onBackFromCreateWorkFlow: () => {
527
- this._changeLayout(this.appLayout);
528
543
  this._showInformationHeader = true;
529
544
  }, onCreateWorkFlowStarted: () => {
530
- this._changeLayout(this._layer.isTable ? "tableView" : "mapView");
545
+ this.appLayout = this._layer.isTable ? "tableView" : "mapView";
531
546
  this._showInformationHeader = false;
532
547
  }, onFeatureOrRecordSubmitted: () => void this._layerTable.refresh(), selectedFeaturesIds: this._layerTable?.selectedIds, selectingFeatureFromMap: this.appLayout === "mapView", zoomAndScrollToSelected: this.zoomAndScrollToSelected })));
533
548
  }
@@ -565,7 +580,7 @@ const CrowdsourceManager$1 = /*@__PURE__*/ proxyCustomElement(class CrowdsourceM
565
580
  const icon = this._getDividerIcon(layoutMode, panelOpen);
566
581
  const tooltip = panelOpen ? this._translations.close : this._translations.open;
567
582
  const id = "toggle-layout";
568
- return (h(Fragment, null, h("calcite-action", { active: this.appLayout === 'splitView', class: "toggle-node", icon: "browser", id: "browser-action", onClick: () => { this._changeLayout('splitView'); }, text: "" }), h("calcite-tooltip", { placement: "right", "reference-element": "browser-action" }, h("span", null, this._translations.splitView)), h("calcite-action", { active: this.appLayout === 'tableView', class: "toggle-node", icon: "dock-left", id: "dock-left-action", onClick: () => { this._changeLayout('tableView'); }, text: "" }), h("calcite-tooltip", { placement: "right", "reference-element": "dock-left-action" }, h("span", null, this._translations.tableView)), h("calcite-action", { active: this.appLayout === 'mapView', class: "toggle-node", disabled: this._layerIds?.length === 0, icon: "browser-map", id: "browser-map-action", onClick: () => { this._changeLayout('mapView'); }, text: "" }), h("calcite-tooltip", { placement: "right", "reference-element": "browser-map-action" }, h("span", null, this._translations.mapView)), h("calcite-action", { class: "toggle-node", icon: icon, id: id, onClick: () => this._toggleLayout(), slot: "actions-end", text: "" }), h("calcite-tooltip", { placement: "bottom", "reference-element": id }, h("span", null, tooltip))));
583
+ return (h(Fragment, null, h("calcite-action", { active: this.appLayout === 'splitView', class: "toggle-node", icon: "browser", id: "browser-action", onClick: () => { this.appLayout = "splitView"; }, text: "" }), h("calcite-tooltip", { placement: "right", "reference-element": "browser-action" }, h("span", null, this._translations.splitView)), h("calcite-action", { active: this.appLayout === 'tableView', class: "toggle-node", icon: "dock-left", id: "dock-left-action", onClick: () => { this.appLayout = "tableView"; }, text: "" }), h("calcite-tooltip", { placement: "right", "reference-element": "dock-left-action" }, h("span", null, this._translations.tableView)), h("calcite-action", { active: this.appLayout === 'mapView', class: "toggle-node", disabled: this._layerIds?.length === 0, icon: "browser-map", id: "browser-map-action", onClick: () => { this.appLayout = "mapView"; }, text: "" }), h("calcite-tooltip", { placement: "right", "reference-element": "browser-map-action" }, h("span", null, this._translations.mapView)), h("calcite-action", { class: "toggle-node", icon: icon, id: id, onClick: () => this._toggleLayout(), slot: "actions-end", text: "" }), h("calcite-tooltip", { placement: "bottom", "reference-element": id }, h("span", null, tooltip))));
569
584
  }
570
585
  /**
571
586
  * Show filter component in modal
@@ -638,7 +653,7 @@ const CrowdsourceManager$1 = /*@__PURE__*/ proxyCustomElement(class CrowdsourceM
638
653
  if (this._isMobile) {
639
654
  this.showHideMapPopupAndTable(!this._isMobile);
640
655
  this._isPortraitMobile = !!window.matchMedia("(orientation: portrait)").matches;
641
- this._changeLayout('splitView');
656
+ this.appLayout = "splitView";
642
657
  }
643
658
  else {
644
659
  this._isPortraitMobile = false;
@@ -654,34 +669,14 @@ const CrowdsourceManager$1 = /*@__PURE__*/ proxyCustomElement(class CrowdsourceM
654
669
  _toggleLayout() {
655
670
  this._panelOpen = !this._panelOpen;
656
671
  }
657
- /**
658
- * Changes the layout mode
659
- * @param appLayout selected active app layout
660
- *
661
- * @protected
662
- */
663
- _changeLayout(appLayout) {
664
- if (this.appLayout !== appLayout) {
665
- this._setActiveLayout(appLayout);
666
- this.appLayout = appLayout;
667
- // update the layer if table selected while switching to map view
668
- if (this.appLayout === "mapView" && this._layer.isTable) {
669
- void this._mapCard.updateLayer();
670
- }
671
- if (this._isMapViewOnLoad) {
672
- void this._layerTable.refresh();
673
- this._isMapViewOnLoad = false;
674
- }
675
- }
676
- }
677
672
  /**
678
673
  * shows the map in card view
679
674
  *
680
675
  * @protected
681
676
  */
682
677
  _showMapInCardView() {
683
- if (this.appLayout === 'mapView') {
684
- const fullMapView = document.getElementById('full-map-view').childNodes[0];
678
+ if (this.appLayout !== "mapView") {
679
+ const fullMapView = document.getElementById('full-map-view')?.childNodes[0];
685
680
  const splitMapClass = document.getElementById('card-mapView');
686
681
  if (fullMapView) {
687
682
  splitMapClass.appendChild(fullMapView);
@@ -694,7 +689,7 @@ const CrowdsourceManager$1 = /*@__PURE__*/ proxyCustomElement(class CrowdsourceM
694
689
  * @protected
695
690
  */
696
691
  _showMapInFullView() {
697
- const splitMap = document.getElementById('card-mapView').childNodes[0];
692
+ const splitMap = document.getElementById('card-mapView')?.childNodes[0];
698
693
  const fullMapViewClass = document.getElementById('full-map-view');
699
694
  if (splitMap) {
700
695
  fullMapViewClass.appendChild(splitMap);
@@ -779,6 +774,7 @@ const CrowdsourceManager$1 = /*@__PURE__*/ proxyCustomElement(class CrowdsourceM
779
774
  this._translations = messages[0];
780
775
  }
781
776
  static get watchers() { return {
777
+ "appLayout": ["appLayoutWatchHandler"],
782
778
  "enableZoom": ["enableZoomWatchHandler"],
783
779
  "hideMapOnLoad": ["hideMapOnLoadWatchHandler"]
784
780
  }; }
@@ -839,6 +835,7 @@ const CrowdsourceManager$1 = /*@__PURE__*/ proxyCustomElement(class CrowdsourceM
839
835
  "_layerIds": [32],
840
836
  "_isLoading": [32]
841
837
  }, [[8, "featureSelectionChange", "featureSelectionChange"], [8, "popupClosed", "popupClosed"], [8, "layoutChanged", "layoutChanged"], [8, "mapChanged", "mapChanged"], [8, "layerSelectionChange", "layerSelectionChange"], [8, "idsFound", "idsFound"]], {
838
+ "appLayout": ["appLayoutWatchHandler"],
842
839
  "enableZoom": ["enableZoomWatchHandler"],
843
840
  "hideMapOnLoad": ["hideMapOnLoadWatchHandler"]
844
841
  }]);
@@ -7,8 +7,8 @@ import { g as getDefaultExportFromCjs } from './_commonjsHelpers.js';
7
7
  import { getAssetPath } from '@stencil/core/internal/client';
8
8
  import { l as loadModules } from './loadModules.js';
9
9
  import { q as queryFeaturesByID } from './queryUtils.js';
10
+ import { S as Sanitizer } from './index2.js';
10
11
  import './solution-resource.js';
11
- import './index2.js';
12
12
  import { _ as __assign$1, r as request, c as cleanUrl, g as getJson } from './restHelpersGet.js';
13
13
 
14
14
  /** @license
@@ -2541,12 +2541,13 @@ function _cleanupLabel(labelText) {
2541
2541
  labelText = labelText.replace(/<\/p>/gi, "");
2542
2542
  // Replace \n with the line separator character
2543
2543
  labelText = labelText.replace(/\n/gi, "|");
2544
- // Remove remaining HTML tags, replace 0xA0 that popup uses for spaces, and replace some char representations
2544
+ // Remove tricky stuff
2545
+ const sanitizer = new Sanitizer();
2546
+ labelText = sanitizer.sanitize(labelText);
2547
+ // Remove remaining HTML tags, replace 0xA0 that popup uses for spaces, and replace &nbsp;
2545
2548
  labelText = labelText
2546
2549
  .replace(/<[\s.]*[^<>]*\/?>/gi, "")
2547
2550
  .replace(/\xA0/gi, " ")
2548
- .replace(/&lt;/gi, "<")
2549
- .replace(/&gt;/gi, ">")
2550
2551
  .replace(/&nbsp;/gi, " ");
2551
2552
  // Trim each line
2552
2553
  labelText = labelText.replace(/\s*\|\s*/g, "|");
@@ -19,16 +19,19 @@ import { d as defineCustomElement$2 } from './scrim.js';
19
19
  class AppGuideViewModel {
20
20
  constructor() {
21
21
  this.pages = [];
22
+ this.headerText = '';
23
+ this.pages = [];
22
24
  }
23
- addPage(page) {
24
- this.pages = [...this.pages, page];
25
+ setPages(pages) {
26
+ this.pages = pages;
27
+ this.setDefaultHeaderText();
25
28
  }
26
- removePage(page) {
27
- this.pages = this.pages.filter(p => p !== page);
29
+ setDefaultHeaderText() {
30
+ this.headerText = !!this.pages.length ? this.pages[0].title : '';
28
31
  }
29
32
  }
30
33
 
31
- const instantAppsAppGuideCss = ":host{--instant-apps-app-guide-width:300px;--instant-apps-app-guide-height:400px;--instant-apps-app-guide-list-item-bubble-size:22px;width:var(--instant-apps-app-guide-width);height:var(--instant-apps-app-guide-height);display:block}:host calcite-panel{max-width:var(--instant-apps-app-guide-width);max-height:var(--instant-apps-app-guide-height);display:flex}:host calcite-carousel{flex:1;overflow:scroll;height:-moz-fit-content;height:fit-content;background-color:var(--calcite-color-foreground-1)}:host [slot=header-content]{display:flex;gap:var(--calcite-spacing-sm);padding-inline-start:0.25rem}:host .content-heading{font-weight:var(--calcite-font-weight-bold);display:flex;gap:var(--calcite-spacing-sm);line-height:var(--calcite-font-line-height-fixed-lg)}:host calcite-carousel-item{flex-grow:1;display:flex;flex-direction:column}:host .instant-apps-app-guide__content-wrapper{padding-block-start:0.5rem;padding-inline:0.5rem;flex-shrink:1;flex-grow:0}:host calcite-icon{--calcite-ui-icon-color:var(--calcite-color-brand)}:host .instant-apps-app-guide__content-list{counter-set:item-counter;margin-inline:0;padding-inline-start:var(--calcite-spacing-xxxl);padding-inline-end:var(--calcite-spacing-lg);position:relative}:host .instant-apps-app-guide__content-list .instant-apps-app-guide__content-list--item{counter-increment:item-counter;margin-block-start:var(--calcite-spacing-lg);display:flex;align-items:flex-start}:host .instant-apps-app-guide__content-list .instant-apps-app-guide__content-list--item::before{content:counter(item-counter);background-color:var(--calcite-color-text-2);color:var(--calcite-color-text-inverse);line-height:var(--calcite-font-line-height-fixed-xl);width:var(--instant-apps-app-guide-list-item-bubble-size);left:0;border-radius:var(--calcite-corner-radius-pill);display:flex;justify-content:center;font-size:var(--calcite-font-size-sm);position:absolute;max-height:var(--instant-apps-app-guide-list-item-bubble-size)}:host .instant-apps-app-guide__content-list .instant-apps-app-guide__content-list--item::marker{color:var(--calcite-color-transparent)}";
34
+ const instantAppsAppGuideCss = ":host{--instant-apps-app-guide-width:300px;--instant-apps-app-guide-height:400px;--instant-apps-app-guide-list-item-bubble-size:22px;width:var(--instant-apps-app-guide-width);height:var(--instant-apps-app-guide-height);display:block}:host calcite-panel{max-width:var(--instant-apps-app-guide-width);max-height:var(--instant-apps-app-guide-height);display:flex}:host calcite-carousel{flex:1;overflow:scroll;height:-moz-fit-content;height:fit-content;background-color:var(--calcite-color-foreground-1)}:host [slot=header-content]{display:flex;gap:var(--calcite-spacing-sm);padding-inline-start:0.25rem;font-weight:var(--calcite-font-weight-bold)}:host calcite-carousel-item{flex-grow:1;display:flex;flex-direction:column}:host .instant-apps-app-guide__content-wrapper{padding-block-start:0.5rem;padding-inline:0.5rem;flex-shrink:1;flex-grow:0}:host calcite-icon{--calcite-ui-icon-color:var(--calcite-color-brand)}:host .instant-apps-app-guide__content-list{counter-set:item-counter;margin-inline:0;padding-inline-start:var(--calcite-spacing-xxxl);padding-inline-end:var(--calcite-spacing-lg);position:relative}:host .instant-apps-app-guide__content-list .instant-apps-app-guide__content-list--item{counter-increment:item-counter;margin-block-start:var(--calcite-spacing-lg);display:flex;align-items:flex-start}:host .instant-apps-app-guide__content-list .instant-apps-app-guide__content-list--item::before{content:counter(item-counter);background-color:var(--calcite-color-text-2);color:var(--calcite-color-text-inverse);line-height:var(--calcite-font-line-height-fixed-xl);width:var(--instant-apps-app-guide-list-item-bubble-size);left:0;border-radius:var(--calcite-corner-radius-pill);display:flex;justify-content:center;font-size:var(--calcite-font-size-sm);position:absolute;max-height:var(--instant-apps-app-guide-list-item-bubble-size)}:host .instant-apps-app-guide__content-list .instant-apps-app-guide__content-list--item::marker{color:var(--calcite-color-transparent)}";
32
35
  const InstantAppsAppGuideStyle0 = instantAppsAppGuideCss;
33
36
 
34
37
  const CSS = {
@@ -41,6 +44,9 @@ const InstantAppsAppGuide$1 = /*@__PURE__*/ proxyCustomElement(class InstantApps
41
44
  super();
42
45
  this.__registerHost();
43
46
  this.__attachShadow();
47
+ /**
48
+ * Private Variables
49
+ */
44
50
  this._viewModel = new AppGuideViewModel();
45
51
  this.header = true;
46
52
  this.data = undefined;
@@ -48,19 +54,25 @@ const InstantAppsAppGuide$1 = /*@__PURE__*/ proxyCustomElement(class InstantApps
48
54
  this.headerText = undefined;
49
55
  }
50
56
  watchPropHandler(newValue) {
51
- this._viewModel.pages = newValue;
52
- this._updateHeaderText();
57
+ this._setContent(newValue);
58
+ }
59
+ watchStateHandler(newValue) {
60
+ this._viewModel.headerText = newValue;
53
61
  }
54
- connectedCallback() {
55
- var _a, _b, _c, _d;
56
- this._viewModel.pages = (this === null || this === void 0 ? void 0 : this.data) || [];
57
- this.headerText = (_c = (_b = (_a = this === null || this === void 0 ? void 0 : this.data) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.title) !== null && _c !== void 0 ? _c : (_d = this === null || this === void 0 ? void 0 : this.messages) === null || _d === void 0 ? void 0 : _d.headerText;
62
+ componentWillLoad() {
63
+ this._setContent(this === null || this === void 0 ? void 0 : this.data);
58
64
  }
59
65
  componentDidLoad() {
60
66
  getMessages(this);
61
67
  }
62
68
  render() {
63
- return (h(Host, { key: '3c6bf465e2543e62f8e991a22a4f8b8420556285' }, h("calcite-panel", { key: '15a145d4f930de4325716dcd8b73fdcbbe5fa31e', scale: "s" }, this._renderAppGuideHeader(), h("calcite-carousel", { key: '8f962b828f76b8a68f19b71fb79d3f4c93420e38', onCalciteCarouselChange: () => this._updateHeaderText(), ref: el => this._carouselRef = el, "arrow-type": this._getArrowType() }, this._renderAppGuidePages(this._viewModel.pages)))));
69
+ const pages = this._renderAppGuidePages(this._viewModel.pages);
70
+ const header = this._renderAppGuideHeader();
71
+ return (h(Host, { key: 'a6969274bbb9e917869c4c09910ef04b2d40c49a' }, h("calcite-panel", { key: 'f203f430978eed0db5aa0058ae53bd811ba0fdfe', scale: "s" }, header, h("calcite-carousel", { key: 'afd572b169f27b03616e568b9146cb2e52f04cae', onCalciteCarouselChange: () => this._updateHeaderText(), ref: el => this._carouselRef = el, "arrow-type": this._getArrowType() }, pages))));
72
+ }
73
+ _setContent(content) {
74
+ this._viewModel.setPages(content);
75
+ this.headerText = this._viewModel.headerText;
64
76
  }
65
77
  _updateHeaderText() {
66
78
  var _a;
@@ -102,7 +114,8 @@ const InstantAppsAppGuide$1 = /*@__PURE__*/ proxyCustomElement(class InstantApps
102
114
  }
103
115
  get el() { return this; }
104
116
  static get watchers() { return {
105
- "data": ["watchPropHandler"]
117
+ "data": ["watchPropHandler"],
118
+ "headerText": ["watchStateHandler"]
106
119
  }; }
107
120
  static get style() { return InstantAppsAppGuideStyle0; }
108
121
  }, [1, "instant-apps-app-guide", {
@@ -111,7 +124,8 @@ const InstantAppsAppGuide$1 = /*@__PURE__*/ proxyCustomElement(class InstantApps
111
124
  "messages": [32],
112
125
  "headerText": [32]
113
126
  }, undefined, {
114
- "data": ["watchPropHandler"]
127
+ "data": ["watchPropHandler"],
128
+ "headerText": ["watchStateHandler"]
115
129
  }]);
116
130
  function defineCustomElement$1() {
117
131
  if (typeof customElements === "undefined") {