@esri/solutions-components 0.8.29 → 0.8.31

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. package/dist/cjs/basemap-gallery_7.cjs.entry.js +65 -40
  2. package/dist/cjs/calcite-alert_4.cjs.entry.js +1 -1
  3. package/dist/cjs/calcite-flow_6.cjs.entry.js +58 -34
  4. package/dist/cjs/crowdsource-reporter.cjs.entry.js +2 -2
  5. package/dist/cjs/feature-list.cjs.entry.js +1 -1
  6. package/dist/cjs/loader.cjs.js +1 -1
  7. package/dist/cjs/{popupUtils-e3fa775b.js → popupUtils-9ca69f8c.js} +1 -1
  8. package/dist/cjs/solutions-components.cjs.js +1 -1
  9. package/dist/collection/components/create-feature/create-feature.js +13 -8
  10. package/dist/collection/components/create-related-feature/create-related-feature.css +4 -0
  11. package/dist/collection/components/create-related-feature/create-related-feature.js +52 -26
  12. package/dist/collection/components/crowdsource-reporter/crowdsource-reporter.css +4 -0
  13. package/dist/collection/components/crowdsource-reporter/crowdsource-reporter.js +1 -1
  14. package/dist/collection/components/floor-filter/floor-filter.js +66 -39
  15. package/dist/collection/utils/popupUtils.js +1 -1
  16. package/dist/collection/utils/popupUtils.ts +1 -1
  17. package/dist/components/create-feature2.js +13 -8
  18. package/dist/components/create-related-feature2.js +57 -30
  19. package/dist/components/crowdsource-reporter.js +2 -2
  20. package/dist/components/floor-filter2.js +67 -41
  21. package/dist/components/popupUtils.js +1 -1
  22. package/dist/esm/basemap-gallery_7.entry.js +65 -40
  23. package/dist/esm/calcite-alert_4.entry.js +1 -1
  24. package/dist/esm/calcite-flow_6.entry.js +58 -34
  25. package/dist/esm/crowdsource-reporter.entry.js +2 -2
  26. package/dist/esm/feature-list.entry.js +1 -1
  27. package/dist/esm/loader.js +1 -1
  28. package/dist/esm/{popupUtils-17193415.js → popupUtils-8efd3cde.js} +1 -1
  29. package/dist/esm/solutions-components.js +1 -1
  30. package/dist/solutions-components/p-2455bcb0.js +21 -0
  31. package/dist/solutions-components/{p-bb90a138.entry.js → p-3365a6de.entry.js} +2 -2
  32. package/dist/solutions-components/p-4ae34862.entry.js +17 -0
  33. package/dist/solutions-components/{p-16fb8296.entry.js → p-628874a6.entry.js} +1 -1
  34. package/dist/solutions-components/{p-2f7bfd8d.entry.js → p-90c3bc54.entry.js} +1 -1
  35. package/dist/solutions-components/p-a0616647.entry.js +6 -0
  36. package/dist/solutions-components/solutions-components.esm.js +1 -1
  37. package/dist/solutions-components/utils/popupUtils.ts +1 -1
  38. package/dist/types/components/create-feature/create-feature.d.ts +1 -1
  39. package/dist/types/components/create-related-feature/create-related-feature.d.ts +19 -1
  40. package/dist/types/components/floor-filter/floor-filter.d.ts +23 -1
  41. package/package.json +1 -1
  42. package/dist/solutions-components/p-2e23ac2c.js +0 -21
  43. package/dist/solutions-components/p-327577d1.entry.js +0 -6
  44. package/dist/solutions-components/p-c21a6940.entry.js +0 -17
@@ -3,10 +3,11 @@
3
3
  * Licensed under the Apache License, Version 2.0
4
4
  * http://www.apache.org/licenses/LICENSE-2.0
5
5
  */
6
- import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
6
+ import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
7
7
  import { l as loadModules } from './loadModules.js';
8
+ import { d as defineCustomElement$1 } from './loader.js';
8
9
 
9
- const createRelatedFeatureCss = ":host{display:block}.esri-editor__panel-toolbar{display:none !important}";
10
+ const createRelatedFeatureCss = ":host{display:block}.esri-editor__panel-toolbar{display:none !important}.display-none{display:none !important}";
10
11
  const CreateRelatedFeatureStyle0 = createRelatedFeatureCss;
11
12
 
12
13
  const CreateRelatedFeature = /*@__PURE__*/ proxyCustomElement(class CreateRelatedFeature extends HTMLElement {
@@ -24,6 +25,7 @@ const CreateRelatedFeature = /*@__PURE__*/ proxyCustomElement(class CreateRelate
24
25
  this.table = undefined;
25
26
  this.selectedFeature = undefined;
26
27
  this.customizeSubmit = false;
28
+ this._editorLoading = false;
27
29
  }
28
30
  //--------------------------------------------------------------------------
29
31
  //
@@ -38,6 +40,18 @@ const CreateRelatedFeature = /*@__PURE__*/ proxyCustomElement(class CreateRelate
38
40
  await this.init();
39
41
  });
40
42
  }
43
+ /**
44
+ * When _editorLoading is true the container node will be hidden while starting the create workflow
45
+ */
46
+ async _editorLoadingWatchHandler(v) {
47
+ var _a, _b;
48
+ if (v) {
49
+ (_a = this._container) === null || _a === void 0 ? void 0 : _a.classList.add("display-none");
50
+ await this.startCreate();
51
+ (_b = this._container) === null || _b === void 0 ? void 0 : _b.classList.remove("display-none");
52
+ this._editorLoading = false;
53
+ }
54
+ }
41
55
  //--------------------------------------------------------------------------
42
56
  //
43
57
  // Methods (public)
@@ -94,7 +108,8 @@ const CreateRelatedFeature = /*@__PURE__*/ proxyCustomElement(class CreateRelate
94
108
  this.reactiveUtils = reactiveUtils;
95
109
  }
96
110
  render() {
97
- return (h(Host, { key: 'c8516898db79b35b7fba909810afdc56b0602ebd' }));
111
+ const loaderClass = this._editorLoading ? "" : "display-none";
112
+ return (h("calcite-loader", { key: 'a8fd1e83a4a9614779be19a11e6028b3a402cbd2', class: loaderClass, label: "", scale: "s" }));
98
113
  }
99
114
  /**
100
115
  * StencilJS: Called once just after the component is fully loaded and the first render() occurs.
@@ -107,29 +122,24 @@ const CreateRelatedFeature = /*@__PURE__*/ proxyCustomElement(class CreateRelate
107
122
  * @protected
108
123
  */
109
124
  async createEditorWidget() {
125
+ var _a;
110
126
  if (this._editor) {
111
127
  this._editor.destroy();
112
128
  }
113
- const container = document.createElement("div");
129
+ this._container = document.createElement("div");
130
+ (_a = this._container) === null || _a === void 0 ? void 0 : _a.classList.add("display-none");
114
131
  this._editor = new this.Editor({
115
132
  view: this.mapView,
116
133
  visibleElements: {
117
134
  snappingControls: false
118
135
  },
119
- container
120
- });
121
- this.el.appendChild(container);
122
- //Add handle to watch featureFormViewModel ready state and hide the editor elements
123
- const hideElementHandle = this.reactiveUtils.watch(() => { var _a; return (_a = this._editor.viewModel.featureFormViewModel) === null || _a === void 0 ? void 0 : _a.state; }, (state) => {
124
- if (state === 'ready') {
125
- this.hideEditorsElements();
126
- }
136
+ container: this._container
127
137
  });
128
- this._editor.viewModel.addHandles(hideElementHandle);
138
+ this.el.appendChild(this._container);
129
139
  //Add handle to watch featureTemplatesViewModel ready state and then start the creation
130
140
  const handle = this.reactiveUtils.watch(() => this._editor.viewModel.featureTemplatesViewModel.state, (state) => {
131
141
  if (state === 'ready') {
132
- void this.startCreate();
142
+ this._editorLoading = true;
133
143
  }
134
144
  });
135
145
  this._editor.viewModel.addHandles(handle);
@@ -170,6 +180,8 @@ const CreateRelatedFeature = /*@__PURE__*/ proxyCustomElement(class CreateRelate
170
180
  template,
171
181
  };
172
182
  await this._editor.startCreateFeaturesWorkflowAtFeatureCreation(creationInfo);
183
+ //hides the header and footer elements in editor widget
184
+ await this.hideEditorsElements();
173
185
  // Emit an event to show submit cancel buttons
174
186
  this.isActionPending.emit(false);
175
187
  this._editor.viewModel.featureFormViewModel.on('submit', this.submitted.bind(this));
@@ -178,22 +190,21 @@ const CreateRelatedFeature = /*@__PURE__*/ proxyCustomElement(class CreateRelate
178
190
  * Hides the elements of editor widget
179
191
  * @protected
180
192
  */
181
- hideEditorsElements() {
193
+ async hideEditorsElements() {
194
+ var _a, _b;
182
195
  if (!this.customizeSubmit) {
183
196
  return;
184
197
  }
185
- setTimeout(() => {
186
- var _a;
187
- //hides the header and footer on the featureForm
188
- (_a = this.el.querySelector('.esri-editor').querySelectorAll('calcite-flow-item')) === null || _a === void 0 ? void 0 : _a.forEach((flowItem) => {
189
- var _a, _b, _c, _d, _e;
190
- const article = (_c = (_b = (_a = flowItem.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('calcite-panel')) === null || _b === void 0 ? void 0 : _b.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('article');
191
- //hide the header
192
- (_d = article === null || article === void 0 ? void 0 : article.querySelector('header')) === null || _d === void 0 ? void 0 : _d.setAttribute('style', 'display: none');
193
- //hide the footer
194
- (_e = article === null || article === void 0 ? void 0 : article.querySelector('footer')) === null || _e === void 0 ? void 0 : _e.setAttribute('style', 'display: none');
195
- });
196
- }, 700);
198
+ await this.timeout(700);
199
+ //hides the header and footer on the featureForm
200
+ (_b = (_a = this.el.querySelector('.esri-editor')) === null || _a === void 0 ? void 0 : _a.querySelectorAll('calcite-flow-item')) === null || _b === void 0 ? void 0 : _b.forEach((flowItem) => {
201
+ var _a, _b, _c, _d, _e;
202
+ const article = (_c = (_b = (_a = flowItem.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('calcite-panel')) === null || _b === void 0 ? void 0 : _b.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('article');
203
+ //hide the header
204
+ (_d = article === null || article === void 0 ? void 0 : article.querySelector('header')) === null || _d === void 0 ? void 0 : _d.setAttribute('style', 'display: none');
205
+ //hide the footer
206
+ (_e = article === null || article === void 0 ? void 0 : article.querySelector('footer')) === null || _e === void 0 ? void 0 : _e.setAttribute('style', 'display: none');
207
+ });
197
208
  }
198
209
  /**
199
210
  * Makes attributes for related feature
@@ -249,9 +260,18 @@ const CreateRelatedFeature = /*@__PURE__*/ proxyCustomElement(class CreateRelate
249
260
  this.success.emit();
250
261
  }
251
262
  }
263
+ /**
264
+ * call setTimeout in Promise wrapper
265
+ * @param delay The time, in milliseconds that the timer should wait before the promise is resolved
266
+ * @protected
267
+ */
268
+ timeout(delay) {
269
+ return new Promise(resolve => setTimeout(resolve, delay));
270
+ }
252
271
  get el() { return this; }
253
272
  static get watchers() { return {
254
- "mapView": ["mapViewWatchHandler"]
273
+ "mapView": ["mapViewWatchHandler"],
274
+ "_editorLoading": ["_editorLoadingWatchHandler"]
255
275
  }; }
256
276
  static get style() { return CreateRelatedFeatureStyle0; }
257
277
  }, [0, "create-related-feature", {
@@ -259,22 +279,29 @@ const CreateRelatedFeature = /*@__PURE__*/ proxyCustomElement(class CreateRelate
259
279
  "table": [16],
260
280
  "selectedFeature": [16],
261
281
  "customizeSubmit": [4, "customize-submit"],
282
+ "_editorLoading": [32],
262
283
  "close": [64],
263
284
  "submit": [64]
264
285
  }, undefined, {
265
- "mapView": ["mapViewWatchHandler"]
286
+ "mapView": ["mapViewWatchHandler"],
287
+ "_editorLoading": ["_editorLoadingWatchHandler"]
266
288
  }]);
267
289
  function defineCustomElement() {
268
290
  if (typeof customElements === "undefined") {
269
291
  return;
270
292
  }
271
- const components = ["create-related-feature"];
293
+ const components = ["create-related-feature", "calcite-loader"];
272
294
  components.forEach(tagName => { switch (tagName) {
273
295
  case "create-related-feature":
274
296
  if (!customElements.get(tagName)) {
275
297
  customElements.define(tagName, CreateRelatedFeature);
276
298
  }
277
299
  break;
300
+ case "calcite-loader":
301
+ if (!customElements.get(tagName)) {
302
+ defineCustomElement$1();
303
+ }
304
+ break;
278
305
  } });
279
306
  }
280
307
  defineCustomElement();
@@ -55,7 +55,7 @@ import { d as defineCustomElement$4 } from './instant-apps-filter-list2.js';
55
55
  import { d as defineCustomElement$3 } from './instant-apps-social-share2.js';
56
56
  import { d as defineCustomElement$2 } from './layer-list2.js';
57
57
 
58
- const crowdsourceReporterCss = ":host{display:block;--calcite-label-margin-bottom:0px;--solutions-theme-foreground-color:var(--calcite-color-foreground-1)}.width-full{width:100% !important}.width-0{width:0}.height-full{height:100% !important}.height-0{height:0}.overflow-hidden{overflow:hidden}.border{border:1px solid var(--calcite-color-border-3)}.notice-msg{padding:10px;width:calc(100% - 20px)}.progress-bar{padding:12px}.footer-top-button{padding-bottom:7px}.footer-button{height:35px}.feature-pagination{background-color:var(--calcite-color-foreground-1) !important;border-block-end:1px solid var(--calcite-color-border-3);display:flex;justify-content:center;padding:5px 0}.pagination-count{color:var(--calcite-color-brand);border-bottom:1px solid var(--calcite-color-brand);font-weight:bold}.report-submitted-msg{position:absolute;z-index:1000}";
58
+ const crowdsourceReporterCss = ":host{display:block;--calcite-label-margin-bottom:0px;--solutions-theme-foreground-color:var(--calcite-color-foreground-1)}.width-full{width:100% !important}.width-0{width:0}.height-full{height:100% !important}.height-0{height:0}.overflow-hidden{overflow:hidden}.border{border:1px solid var(--calcite-color-border-3)}.notice-msg{padding:10px;width:calc(100% - 20px)}.progress-bar{padding:12px}.footer-top-button{padding-bottom:7px}.footer-button{height:35px}.feature-pagination{background-color:var(--calcite-color-foreground-1) !important;border-block-end:1px solid var(--calcite-color-border-3);display:flex;justify-content:center;padding:5px 0}.pagination-count{color:var(--calcite-color-brand);border-bottom:1px solid var(--calcite-color-brand);font-weight:bold}.report-submitted-msg{position:absolute;z-index:1000}.share-node{display:flex}";
59
59
  const CrowdsourceReporterStyle0 = crowdsourceReporterCss;
60
60
 
61
61
  const CrowdsourceReporter$1 = /*@__PURE__*/ proxyCustomElement(class CrowdsourceReporter extends HTMLElement {
@@ -618,7 +618,7 @@ const CrowdsourceReporter$1 = /*@__PURE__*/ proxyCustomElement(class Crowdsource
618
618
  getFeatureDetailsFlowItem() {
619
619
  var _a;
620
620
  const showCommentBtn = ((_a = this._getLayersConfig(this._selectedLayerId)) === null || _a === void 0 ? void 0 : _a.comment) && this._selectedLayer.relationships.length > 0;
621
- return (h("calcite-flow-item", { collapsed: this.isMobile && this._sidePanelCollapsed, heading: this._selectedLayerName, loading: this._showLoadingIndicator, onCalciteFlowItemBack: this.backFromSelectedPanel.bind(this) }, this.isMobile && this.getActionToExpandCollapsePanel(), h("instant-apps-social-share", { autoUpdateShareUrl: false, embed: false, popoverButtonIconScale: "s", ref: el => this._shareNode = el, removePopoverOffset: true, scale: "s", shareButtonColor: "neutral", shareButtonType: "action", slot: "header-actions-end", socialMedia: true, view: this.mapView }), this._selectedFeature.length > 1 && this.getFeaturesPagination(), h("calcite-panel", null, h("feature-details", { class: 'full-height', graphics: this._selectedFeature, layerItemsHash: this._layerItemsHash, mapView: this.mapView, onCommentSelect: this.onCommentSelectFromList.bind(this), onFeatureSelectionChange: this.selectionChanged.bind(this), onLoadingStatus: (evt) => void this.updatingFeatureDetails(evt.detail), ref: el => this._featureDetails = el, reportingOptions: this.reportingOptions }), showCommentBtn &&
621
+ return (h("calcite-flow-item", { collapsed: this.isMobile && this._sidePanelCollapsed, heading: this._selectedLayerName, loading: this._showLoadingIndicator, onCalciteFlowItemBack: this.backFromSelectedPanel.bind(this) }, this.isMobile && this.getActionToExpandCollapsePanel(), h("instant-apps-social-share", { autoUpdateShareUrl: false, class: "share-node", embed: false, popoverButtonIconScale: "s", ref: el => this._shareNode = el, removePopoverOffset: true, scale: "m", shareButtonColor: "neutral", shareButtonType: "action", slot: "header-actions-end", socialMedia: true, view: this.mapView }), this._selectedFeature.length > 1 && this.getFeaturesPagination(), h("calcite-panel", null, h("feature-details", { class: 'full-height', graphics: this._selectedFeature, layerItemsHash: this._layerItemsHash, mapView: this.mapView, onCommentSelect: this.onCommentSelectFromList.bind(this), onFeatureSelectionChange: this.selectionChanged.bind(this), onLoadingStatus: (evt) => void this.updatingFeatureDetails(evt.detail), ref: el => this._featureDetails = el, reportingOptions: this.reportingOptions }), showCommentBtn &&
622
622
  h("calcite-button", { appearance: "solid", onClick: () => this._flowItems = [...this._flowItems, "add-comment"], slot: "footer", width: "full" }, this._translations.comment))));
623
623
  }
624
624
  /**
@@ -26,23 +26,22 @@ const FloorFilter = /*@__PURE__*/ proxyCustomElement(class FloorFilter extends H
26
26
  // Watch handlers
27
27
  //
28
28
  //--------------------------------------------------------------------------
29
+ /**
30
+ * Watch for changes to the mapView and re-init the floor filter
31
+ */
29
32
  async mapViewWatchHandler() {
30
- console.log("mapViewWatchHandler FF");
31
- const webMap = this.mapView.map;
32
- await webMap.when(() => {
33
- console.log("webMap.when FF");
34
- if (this.floorFilterWidget) {
35
- this.floorFilterWidget.destroy();
36
- this.floorFilterWidget = undefined;
37
- console.log("floorFilterWidget destroyed");
38
- }
39
- if (this._floorFilterElement) {
40
- this._floorFilterElement.remove();
41
- this._floorFilterElement = document.createElement("div");
42
- console.log("this._floorFilterElement created");
43
- }
44
- this._initFloorFilter(this.mapView, webMap);
45
- });
33
+ await this._initFloorFilter(this.mapView);
34
+ }
35
+ /**
36
+ * Watch for changes to the enabled property and re-init or destroy the floor filter
37
+ */
38
+ async enabledWatchHandler() {
39
+ if (this.enabled) {
40
+ await this._initFloorFilter(this.mapView);
41
+ }
42
+ else if (!this.enabled) {
43
+ this._destroyWidget();
44
+ }
46
45
  }
47
46
  //--------------------------------------------------------------------------
48
47
  //
@@ -55,8 +54,11 @@ const FloorFilter = /*@__PURE__*/ proxyCustomElement(class FloorFilter extends H
55
54
  async componentWillLoad() {
56
55
  return this._initModules();
57
56
  }
57
+ /**
58
+ * Renders the component.
59
+ */
58
60
  render() {
59
- return (h(Host, { key: 'df3c419f3eaf30590c44c4919f0eeddfc333b81d' }, h("div", { key: '8496099f3bc35f34db6e47f73870ead9144df0a4', ref: (el) => { this._floorFilterElement = el; } })));
61
+ return (h(Host, { key: 'c80a8d46fb48f3789d9fa09c2400faad49e2e236' }, h("div", { key: '82919a3ba061a17c8aeaa0d2f6f4f13bc428b519', ref: (el) => { this._floorFilterElement = el; } })));
60
62
  }
61
63
  //--------------------------------------------------------------------------
62
64
  //
@@ -78,38 +80,61 @@ const FloorFilter = /*@__PURE__*/ proxyCustomElement(class FloorFilter extends H
78
80
  this.FloorFilter = FloorFilter;
79
81
  this.reactiveUtils = reactiveUtils;
80
82
  }
83
+ /**
84
+ * Destroy the widget and remove the containing element if it exists
85
+ *
86
+ * @protected
87
+ */
88
+ _destroyWidget() {
89
+ if (this.floorFilterWidget) {
90
+ this.floorFilterWidget.destroy();
91
+ this.floorFilterWidget = undefined;
92
+ }
93
+ if (this._floorFilterElement) {
94
+ this._floorFilterElement.remove();
95
+ }
96
+ }
97
+ /**
98
+ * Destroy the widget and remove the containing element then re-create the container element
99
+ *
100
+ * @protected
101
+ */
102
+ _initContainer() {
103
+ this._destroyWidget();
104
+ this._floorFilterElement = document.createElement("div");
105
+ }
81
106
  /**
82
107
  * Initialize the floor filter or reset the current view if it already exists
83
108
  */
84
- _initFloorFilter(view, webMap) {
85
- var _a, _b, _c;
86
- console.log("_initFloorFilter");
87
- console.log(`view: ${view}`);
88
- console.log(`this.enabled: ${this.enabled}`);
89
- console.log(`this.FloorFilter: ${this.FloorFilter}`);
90
- console.log(`webMap?.floorInfo: ${webMap === null || webMap === void 0 ? void 0 : webMap.floorInfo}`);
109
+ async _initFloorFilter(view) {
110
+ const webMap = view === null || view === void 0 ? void 0 : view.map;
91
111
  if (view && this.enabled && this.FloorFilter && (webMap === null || webMap === void 0 ? void 0 : webMap.floorInfo)) {
92
- this.floorFilterWidget = new this.FloorFilter({
93
- container: this._floorFilterElement,
94
- view
95
- });
96
- (_a = this._facilityHandle) === null || _a === void 0 ? void 0 : _a.remove();
97
- this._facilityHandle = this.reactiveUtils.watch(() => this.floorFilterWidget.facility, (facility) => {
98
- this.facilityChanged.emit(facility);
99
- });
100
- (_b = this._levelHandle) === null || _b === void 0 ? void 0 : _b.remove();
101
- this._levelHandle = this.reactiveUtils.watch(() => this.floorFilterWidget.level, (level) => {
102
- this.levelChanged.emit(level);
103
- });
104
- (_c = this._siteHandle) === null || _c === void 0 ? void 0 : _c.remove();
105
- this._siteHandle = this.reactiveUtils.watch(() => this.floorFilterWidget.site, (site) => {
106
- this.siteChanged.emit(site);
112
+ this._initContainer();
113
+ await webMap.when(() => {
114
+ var _a, _b, _c;
115
+ this.floorFilterWidget = new this.FloorFilter({
116
+ container: this._floorFilterElement,
117
+ view
118
+ });
119
+ (_a = this._facilityHandle) === null || _a === void 0 ? void 0 : _a.remove();
120
+ this._facilityHandle = this.reactiveUtils.watch(() => this.floorFilterWidget.facility, (facility) => {
121
+ this.facilityChanged.emit(facility);
122
+ });
123
+ (_b = this._levelHandle) === null || _b === void 0 ? void 0 : _b.remove();
124
+ this._levelHandle = this.reactiveUtils.watch(() => this.floorFilterWidget.level, (level) => {
125
+ this.levelChanged.emit(level);
126
+ });
127
+ (_c = this._siteHandle) === null || _c === void 0 ? void 0 : _c.remove();
128
+ this._siteHandle = this.reactiveUtils.watch(() => this.floorFilterWidget.site, (site) => {
129
+ this.siteChanged.emit(site);
130
+ });
107
131
  });
108
132
  }
109
133
  }
110
134
  get el() { return this; }
111
135
  static get watchers() { return {
112
- "mapView": ["mapViewWatchHandler"]
136
+ "mapView": ["mapViewWatchHandler"],
137
+ "enabled": ["enabledWatchHandler"]
113
138
  }; }
114
139
  static get style() { return FloorFilterStyle0; }
115
140
  }, [1, "floor-filter", {
@@ -117,7 +142,8 @@ const FloorFilter = /*@__PURE__*/ proxyCustomElement(class FloorFilter extends H
117
142
  "floorFilterWidget": [16],
118
143
  "mapView": [16]
119
144
  }, undefined, {
120
- "mapView": ["mapViewWatchHandler"]
145
+ "mapView": ["mapViewWatchHandler"],
146
+ "enabled": ["enabledWatchHandler"]
121
147
  }]);
122
148
  function defineCustomElement() {
123
149
  if (typeof customElements === "undefined") {
@@ -69,7 +69,7 @@ class PopupUtils {
69
69
  const fieldInfo = layer.popupTemplate.fieldInfos.find((fInfo) => fInfo.fieldName.toLowerCase() === field.name.toLowerCase());
70
70
  //format the attribute value
71
71
  const formattedAttributeValue = _prepareAttributeValue(attributeValue, field.type, field.domain, fieldInfo === null || fieldInfo === void 0 ? void 0 : fieldInfo.format, this.intl);
72
- attributes[`{${field.name.toUpperCase()}}`] = formattedAttributeValue;
72
+ attributes[`{${field.name.toUpperCase()}}`] = formattedAttributeValue !== null && formattedAttributeValue !== void 0 ? formattedAttributeValue : attributeValue;
73
73
  });
74
74
  }
75
75
  return popupTitle === null || popupTitle === void 0 ? void 0 : popupTitle.replace(/{.*?}/g, (placeholder) => {
@@ -132,23 +132,22 @@ const FloorFilter = class {
132
132
  // Watch handlers
133
133
  //
134
134
  //--------------------------------------------------------------------------
135
+ /**
136
+ * Watch for changes to the mapView and re-init the floor filter
137
+ */
135
138
  async mapViewWatchHandler() {
136
- console.log("mapViewWatchHandler FF");
137
- const webMap = this.mapView.map;
138
- await webMap.when(() => {
139
- console.log("webMap.when FF");
140
- if (this.floorFilterWidget) {
141
- this.floorFilterWidget.destroy();
142
- this.floorFilterWidget = undefined;
143
- console.log("floorFilterWidget destroyed");
144
- }
145
- if (this._floorFilterElement) {
146
- this._floorFilterElement.remove();
147
- this._floorFilterElement = document.createElement("div");
148
- console.log("this._floorFilterElement created");
149
- }
150
- this._initFloorFilter(this.mapView, webMap);
151
- });
139
+ await this._initFloorFilter(this.mapView);
140
+ }
141
+ /**
142
+ * Watch for changes to the enabled property and re-init or destroy the floor filter
143
+ */
144
+ async enabledWatchHandler() {
145
+ if (this.enabled) {
146
+ await this._initFloorFilter(this.mapView);
147
+ }
148
+ else if (!this.enabled) {
149
+ this._destroyWidget();
150
+ }
152
151
  }
153
152
  //--------------------------------------------------------------------------
154
153
  //
@@ -161,8 +160,11 @@ const FloorFilter = class {
161
160
  async componentWillLoad() {
162
161
  return this._initModules();
163
162
  }
163
+ /**
164
+ * Renders the component.
165
+ */
164
166
  render() {
165
- return (h(Host, { key: 'df3c419f3eaf30590c44c4919f0eeddfc333b81d' }, h("div", { key: '8496099f3bc35f34db6e47f73870ead9144df0a4', ref: (el) => { this._floorFilterElement = el; } })));
167
+ return (h(Host, { key: 'c80a8d46fb48f3789d9fa09c2400faad49e2e236' }, h("div", { key: '82919a3ba061a17c8aeaa0d2f6f4f13bc428b519', ref: (el) => { this._floorFilterElement = el; } })));
166
168
  }
167
169
  //--------------------------------------------------------------------------
168
170
  //
@@ -184,38 +186,61 @@ const FloorFilter = class {
184
186
  this.FloorFilter = FloorFilter;
185
187
  this.reactiveUtils = reactiveUtils;
186
188
  }
189
+ /**
190
+ * Destroy the widget and remove the containing element if it exists
191
+ *
192
+ * @protected
193
+ */
194
+ _destroyWidget() {
195
+ if (this.floorFilterWidget) {
196
+ this.floorFilterWidget.destroy();
197
+ this.floorFilterWidget = undefined;
198
+ }
199
+ if (this._floorFilterElement) {
200
+ this._floorFilterElement.remove();
201
+ }
202
+ }
203
+ /**
204
+ * Destroy the widget and remove the containing element then re-create the container element
205
+ *
206
+ * @protected
207
+ */
208
+ _initContainer() {
209
+ this._destroyWidget();
210
+ this._floorFilterElement = document.createElement("div");
211
+ }
187
212
  /**
188
213
  * Initialize the floor filter or reset the current view if it already exists
189
214
  */
190
- _initFloorFilter(view, webMap) {
191
- var _a, _b, _c;
192
- console.log("_initFloorFilter");
193
- console.log(`view: ${view}`);
194
- console.log(`this.enabled: ${this.enabled}`);
195
- console.log(`this.FloorFilter: ${this.FloorFilter}`);
196
- console.log(`webMap?.floorInfo: ${webMap === null || webMap === void 0 ? void 0 : webMap.floorInfo}`);
215
+ async _initFloorFilter(view) {
216
+ const webMap = view === null || view === void 0 ? void 0 : view.map;
197
217
  if (view && this.enabled && this.FloorFilter && (webMap === null || webMap === void 0 ? void 0 : webMap.floorInfo)) {
198
- this.floorFilterWidget = new this.FloorFilter({
199
- container: this._floorFilterElement,
200
- view
201
- });
202
- (_a = this._facilityHandle) === null || _a === void 0 ? void 0 : _a.remove();
203
- this._facilityHandle = this.reactiveUtils.watch(() => this.floorFilterWidget.facility, (facility) => {
204
- this.facilityChanged.emit(facility);
205
- });
206
- (_b = this._levelHandle) === null || _b === void 0 ? void 0 : _b.remove();
207
- this._levelHandle = this.reactiveUtils.watch(() => this.floorFilterWidget.level, (level) => {
208
- this.levelChanged.emit(level);
209
- });
210
- (_c = this._siteHandle) === null || _c === void 0 ? void 0 : _c.remove();
211
- this._siteHandle = this.reactiveUtils.watch(() => this.floorFilterWidget.site, (site) => {
212
- this.siteChanged.emit(site);
218
+ this._initContainer();
219
+ await webMap.when(() => {
220
+ var _a, _b, _c;
221
+ this.floorFilterWidget = new this.FloorFilter({
222
+ container: this._floorFilterElement,
223
+ view
224
+ });
225
+ (_a = this._facilityHandle) === null || _a === void 0 ? void 0 : _a.remove();
226
+ this._facilityHandle = this.reactiveUtils.watch(() => this.floorFilterWidget.facility, (facility) => {
227
+ this.facilityChanged.emit(facility);
228
+ });
229
+ (_b = this._levelHandle) === null || _b === void 0 ? void 0 : _b.remove();
230
+ this._levelHandle = this.reactiveUtils.watch(() => this.floorFilterWidget.level, (level) => {
231
+ this.levelChanged.emit(level);
232
+ });
233
+ (_c = this._siteHandle) === null || _c === void 0 ? void 0 : _c.remove();
234
+ this._siteHandle = this.reactiveUtils.watch(() => this.floorFilterWidget.site, (site) => {
235
+ this.siteChanged.emit(site);
236
+ });
213
237
  });
214
238
  }
215
239
  }
216
240
  get el() { return getElement(this); }
217
241
  static get watchers() { return {
218
- "mapView": ["mapViewWatchHandler"]
242
+ "mapView": ["mapViewWatchHandler"],
243
+ "enabled": ["enabledWatchHandler"]
219
244
  }; }
220
245
  };
221
246
  FloorFilter.style = FloorFilterStyle0;
@@ -13,7 +13,7 @@ import { c as connectMessages, s as setUpMessages, d as disconnectMessages, u as
13
13
  import { K as KindIcons } from './resources-ae36eaff.js';
14
14
  import { g as getLocaleComponentStrings, l as loadModules } from './locale-a490c4f6.js';
15
15
  import { a as getAllLayers } from './mapViewUtils-b8deb4ae.js';
16
- import { P as PopupUtils } from './popupUtils-17193415.js';
16
+ import { P as PopupUtils } from './popupUtils-8efd3cde.js';
17
17
  import './guid-f05d01d5.js';
18
18
  import './resources-1febf4c6.js';
19
19
  import './key-092b6260.js';