@esri/solutions-components 0.7.24 → 0.7.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{info-card_4.cjs.entry.js → basemap-gallery_7.cjs.entry.js} +410 -324
- package/dist/cjs/buffer-tools_3.cjs.entry.js +3 -4
- package/dist/cjs/{calcite-alert_3.cjs.entry.js → calcite-alert_4.cjs.entry.js} +296 -3
- package/dist/cjs/calcite-combobox_6.cjs.entry.js +1 -2
- package/dist/cjs/calcite-flow_4.cjs.entry.js +3 -4
- package/dist/cjs/calcite-shell-panel_14.cjs.entry.js +1 -2
- package/dist/cjs/{card-manager_2.cjs.entry.js → card-manager_3.cjs.entry.js} +182 -5
- package/dist/cjs/crowdsource-manager.cjs.entry.js +1 -2
- package/dist/cjs/crowdsource-reporter.cjs.entry.js +32 -90
- package/dist/cjs/{downloadUtils-401356b5.js → downloadUtils-83c6d3c3.js} +6 -6
- package/dist/cjs/{index.es-a9a4ff08.js → index.es-bd1a93b2.js} +2 -2
- package/dist/cjs/layout-manager.cjs.entry.js +1 -2
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{locale-1ff119f5.js → locale-a476e15d.js} +24 -3
- package/dist/cjs/map-select-tools_3.cjs.entry.js +4 -5
- package/dist/cjs/{popupUtils-8d5b6e94.js → popupUtils-a73902a6.js} +2 -2
- package/dist/cjs/public-notification.cjs.entry.js +3 -4
- package/dist/cjs/solution-configuration.cjs.entry.js +1 -2
- package/dist/cjs/solution-contents_3.cjs.entry.js +1 -2
- package/dist/cjs/solutions-components.cjs.js +1 -1
- package/dist/cjs/spatial-ref.cjs.entry.js +1 -2
- package/dist/collection/components/crowdsource-reporter/crowdsource-reporter.css +5 -27
- package/dist/collection/components/crowdsource-reporter/crowdsource-reporter.js +69 -95
- package/dist/collection/demos/crowdsource-reporter.html +96 -45
- package/dist/components/crowdsource-reporter.js +95 -209
- package/dist/esm/{info-card_4.entry.js → basemap-gallery_7.entry.js} +406 -323
- package/dist/esm/buffer-tools_3.entry.js +1 -2
- package/dist/esm/{calcite-alert_3.entry.js → calcite-alert_4.entry.js} +295 -3
- package/dist/esm/calcite-combobox_6.entry.js +1 -2
- package/dist/esm/calcite-flow_4.entry.js +3 -4
- package/dist/esm/calcite-shell-panel_14.entry.js +1 -2
- package/dist/esm/{card-manager_2.entry.js → card-manager_3.entry.js} +181 -5
- package/dist/esm/crowdsource-manager.entry.js +1 -2
- package/dist/esm/crowdsource-reporter.entry.js +32 -90
- package/dist/esm/{downloadUtils-067dc2ff.js → downloadUtils-a301c193.js} +2 -2
- package/dist/esm/{index.es-92e46d8b.js → index.es-37a9907e.js} +2 -2
- package/dist/esm/layout-manager.entry.js +1 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{locale-13e3c96c.js → locale-731e75a8.js} +22 -2
- package/dist/esm/map-select-tools_3.entry.js +2 -3
- package/dist/esm/{popupUtils-b71f30fc.js → popupUtils-a593bd78.js} +1 -1
- package/dist/esm/public-notification.entry.js +2 -3
- package/dist/esm/solution-configuration.entry.js +1 -2
- package/dist/esm/solution-contents_3.entry.js +1 -2
- package/dist/esm/solutions-components.js +1 -1
- package/dist/esm/spatial-ref.entry.js +1 -2
- package/dist/solutions-components/demos/crowdsource-reporter.html +96 -45
- package/dist/solutions-components/{p-36cbf14f.js → p-0587972d.js} +1 -1
- package/dist/solutions-components/p-0b4f4b0e.entry.js +6 -0
- package/dist/solutions-components/{p-f54f3719.entry.js → p-0b619197.entry.js} +1 -1
- package/dist/solutions-components/{p-d50f34c4.entry.js → p-2656c6e4.entry.js} +1 -1
- package/dist/solutions-components/p-284cc5cd.entry.js +6 -0
- package/dist/solutions-components/{p-01032eec.entry.js → p-29f661f5.entry.js} +2 -2
- package/dist/solutions-components/p-5af99fd8.entry.js +6 -0
- package/dist/solutions-components/{p-d9061e5d.entry.js → p-7116f96d.entry.js} +1 -1
- package/dist/solutions-components/p-7c13406e.entry.js +6 -0
- package/dist/solutions-components/{p-685257d1.entry.js → p-7dbccc10.entry.js} +1 -1
- package/dist/solutions-components/p-8308f64c.entry.js +6 -0
- package/dist/solutions-components/{p-ca4023f4.entry.js → p-891682da.entry.js} +1 -1
- package/dist/solutions-components/{p-14ff1465.js → p-a603e673.js} +2 -2
- package/dist/solutions-components/p-b37ec1f3.entry.js +6 -0
- package/dist/solutions-components/{p-fec77450.js → p-db868283.js} +1 -1
- package/dist/solutions-components/{p-fb1c6811.entry.js → p-dded59a7.entry.js} +1 -1
- package/dist/solutions-components/p-e88a64be.entry.js +6 -0
- package/dist/solutions-components/p-e902ba19.js +36 -0
- package/dist/solutions-components/p-fe295e9d.entry.js +6 -0
- package/dist/solutions-components/solutions-components.esm.js +1 -1
- package/dist/types/components/crowdsource-reporter/crowdsource-reporter.d.ts +14 -28
- package/dist/types/components.d.ts +16 -0
- package/package.json +1 -1
- package/dist/cjs/basemap-gallery_5.cjs.entry.js +0 -573
- package/dist/cjs/loadModules-46d14e81.js +0 -30
- package/dist/esm/basemap-gallery_5.entry.js +0 -565
- package/dist/esm/loadModules-cea493da.js +0 -28
- package/dist/solutions-components/p-3606c4b8.entry.js +0 -6
- package/dist/solutions-components/p-48ff9cea.js +0 -21
- package/dist/solutions-components/p-5e832d65.entry.js +0 -6
- package/dist/solutions-components/p-8fc072ca.entry.js +0 -6
- package/dist/solutions-components/p-a2d3df14.entry.js +0 -6
- package/dist/solutions-components/p-ab006ace.js +0 -21
- package/dist/solutions-components/p-ba56035f.entry.js +0 -6
- package/dist/solutions-components/p-c0ed2b83.entry.js +0 -6
- package/dist/solutions-components/p-cc88bb42.entry.js +0 -6
- package/dist/solutions-components/p-db69f4ba.entry.js +0 -6
- package/dist/solutions-components/p-e3061220.entry.js +0 -6
|
@@ -3,95 +3,136 @@
|
|
|
3
3
|
* Licensed under the Apache License, Version 2.0
|
|
4
4
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { r as registerInstance,
|
|
7
|
-
import { g as getLocaleComponentStrings } from './locale-
|
|
8
|
-
import { l as loadModules } from './loadModules-cea493da.js';
|
|
9
|
-
import { P as PopupUtils } from './popupUtils-b71f30fc.js';
|
|
6
|
+
import { r as registerInstance, h, H as Host, g as getElement, c as createEvent } from './index-7183ce4a.js';
|
|
7
|
+
import { l as loadModules, g as getLocaleComponentStrings } from './locale-731e75a8.js';
|
|
10
8
|
import './esri-loader-eda07632.js';
|
|
11
9
|
import './_commonjsHelpers-d5f9d613.js';
|
|
12
10
|
|
|
13
|
-
const
|
|
11
|
+
const basemapGalleryCss = ":host{display:block}";
|
|
14
12
|
|
|
15
|
-
const
|
|
13
|
+
const BasemapGallery = class {
|
|
16
14
|
constructor(hostRef) {
|
|
17
15
|
registerInstance(this, hostRef);
|
|
18
|
-
this.popupClosed = createEvent(this, "popupClosed", 7);
|
|
19
|
-
this.selectionChanged = createEvent(this, "selectionChanged", 7);
|
|
20
|
-
this.graphics = undefined;
|
|
21
|
-
this.isLoading = false;
|
|
22
|
-
this.isMobile = undefined;
|
|
23
16
|
this.mapView = undefined;
|
|
24
|
-
this.
|
|
25
|
-
this.
|
|
26
|
-
this._alertOpen = false;
|
|
27
|
-
this._count = "";
|
|
28
|
-
this._editRecordOpen = false;
|
|
29
|
-
this._mobileTitle = "";
|
|
30
|
-
this._showListView = false;
|
|
31
|
-
this._translations = undefined;
|
|
17
|
+
this.basemapConfig = undefined;
|
|
18
|
+
this.basemapWidget = undefined;
|
|
32
19
|
}
|
|
33
20
|
//--------------------------------------------------------------------------
|
|
34
21
|
//
|
|
35
22
|
// Watch handlers
|
|
36
23
|
//
|
|
37
24
|
//--------------------------------------------------------------------------
|
|
25
|
+
async mapViewWatchHandler() {
|
|
26
|
+
await this.mapView.when(() => {
|
|
27
|
+
void this._initBaseMapGallery(this.mapView);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
//--------------------------------------------------------------------------
|
|
31
|
+
//
|
|
32
|
+
// Methods (public)
|
|
33
|
+
//
|
|
34
|
+
//--------------------------------------------------------------------------
|
|
35
|
+
//--------------------------------------------------------------------------
|
|
36
|
+
//
|
|
37
|
+
// Events (public)
|
|
38
|
+
//
|
|
39
|
+
//--------------------------------------------------------------------------
|
|
40
|
+
//--------------------------------------------------------------------------
|
|
41
|
+
//
|
|
42
|
+
// Functions (lifecycle)
|
|
43
|
+
//
|
|
44
|
+
//--------------------------------------------------------------------------
|
|
38
45
|
/**
|
|
39
|
-
*
|
|
46
|
+
* StencilJS: Called once just after the component is first connected to the DOM.
|
|
40
47
|
*/
|
|
41
|
-
async
|
|
42
|
-
|
|
48
|
+
async componentWillLoad() {
|
|
49
|
+
return this._initModules();
|
|
43
50
|
}
|
|
44
51
|
/**
|
|
45
|
-
*
|
|
46
|
-
* We need to know if the title should be displayed by the widget (non mobile)
|
|
47
|
-
* or by us (mobile)
|
|
52
|
+
* StencilJS: Renders the component.
|
|
48
53
|
*/
|
|
49
|
-
|
|
50
|
-
|
|
54
|
+
render() {
|
|
55
|
+
return (h(Host, null, h("div", { ref: (el) => { this._basemapElement = el; } })));
|
|
51
56
|
}
|
|
52
57
|
/**
|
|
53
|
-
*
|
|
58
|
+
* StencilJS: Called once just after the component is fully loaded and the first render() occurs.
|
|
54
59
|
*/
|
|
55
|
-
async
|
|
56
|
-
|
|
60
|
+
async componentDidLoad() {
|
|
61
|
+
if (this.mapView) {
|
|
62
|
+
await this.mapViewWatchHandler();
|
|
63
|
+
}
|
|
57
64
|
}
|
|
58
65
|
//--------------------------------------------------------------------------
|
|
59
66
|
//
|
|
60
|
-
//
|
|
67
|
+
// Functions (protected)
|
|
61
68
|
//
|
|
62
69
|
//--------------------------------------------------------------------------
|
|
63
70
|
/**
|
|
64
|
-
*
|
|
71
|
+
* Load esri javascript api modules
|
|
65
72
|
*
|
|
66
|
-
* @returns Promise resolving
|
|
67
|
-
*/
|
|
68
|
-
async getSelectedFeature() {
|
|
69
|
-
return this._features.selectedFeature;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Respond to and close the edit record display
|
|
73
|
+
* @returns Promise resolving when function is done
|
|
73
74
|
*
|
|
74
|
-
* @
|
|
75
|
+
* @protected
|
|
75
76
|
*/
|
|
76
|
-
async
|
|
77
|
-
|
|
77
|
+
async _initModules() {
|
|
78
|
+
const [BasemapGallery, PortalBasemapsSource] = await loadModules([
|
|
79
|
+
"esri/widgets/BasemapGallery",
|
|
80
|
+
"esri/widgets/BasemapGallery/support/PortalBasemapsSource"
|
|
81
|
+
]);
|
|
82
|
+
this.BasemapGallery = BasemapGallery;
|
|
83
|
+
this.PortalBasemapsSource = PortalBasemapsSource;
|
|
78
84
|
}
|
|
79
85
|
/**
|
|
80
|
-
*
|
|
86
|
+
* Initialize the basemap gallery or reset the current view if it already exists
|
|
87
|
+
*
|
|
88
|
+
* @protected
|
|
81
89
|
*/
|
|
82
|
-
async
|
|
90
|
+
async _initBaseMapGallery(view) {
|
|
83
91
|
var _a;
|
|
84
|
-
this.
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
92
|
+
if (this.BasemapGallery) {
|
|
93
|
+
if (this.basemapWidget) {
|
|
94
|
+
this.basemapWidget.destroy();
|
|
95
|
+
}
|
|
96
|
+
const source = new this.PortalBasemapsSource({
|
|
97
|
+
query: ((_a = this.basemapConfig) === null || _a === void 0 ? void 0 : _a.basemapGroupId) ? `id:${this.basemapConfig.basemapGroupId}` : null,
|
|
98
|
+
filterFunction: this.basemapConfig ? (basemap) => {
|
|
99
|
+
return !this.basemapConfig.basemapIdsToFilter.includes(basemap.portalItem.id);
|
|
100
|
+
} : () => true
|
|
101
|
+
});
|
|
102
|
+
await source.refresh();
|
|
103
|
+
this.basemapWidget = new this.BasemapGallery({
|
|
104
|
+
container: this._basemapElement,
|
|
105
|
+
view,
|
|
106
|
+
source
|
|
107
|
+
});
|
|
88
108
|
}
|
|
89
109
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
110
|
+
get el() { return getElement(this); }
|
|
111
|
+
static get watchers() { return {
|
|
112
|
+
"mapView": ["mapViewWatchHandler"]
|
|
113
|
+
}; }
|
|
114
|
+
};
|
|
115
|
+
BasemapGallery.style = basemapGalleryCss;
|
|
116
|
+
|
|
117
|
+
const floorFilterCss = ":host{display:block}";
|
|
118
|
+
|
|
119
|
+
const FloorFilter = class {
|
|
120
|
+
constructor(hostRef) {
|
|
121
|
+
registerInstance(this, hostRef);
|
|
122
|
+
this.levelChanged = createEvent(this, "levelChanged", 7);
|
|
123
|
+
this.enabled = undefined;
|
|
124
|
+
this.floorFilterWidget = undefined;
|
|
125
|
+
this.mapView = undefined;
|
|
126
|
+
}
|
|
127
|
+
//--------------------------------------------------------------------------
|
|
128
|
+
//
|
|
129
|
+
// Watch handlers
|
|
130
|
+
//
|
|
131
|
+
//--------------------------------------------------------------------------
|
|
132
|
+
async mapViewWatchHandler() {
|
|
133
|
+
await this.mapView.when(() => {
|
|
134
|
+
this._initFloorFilter(this.mapView);
|
|
135
|
+
});
|
|
95
136
|
}
|
|
96
137
|
//--------------------------------------------------------------------------
|
|
97
138
|
//
|
|
@@ -100,41 +141,12 @@ const InfoCard = class {
|
|
|
100
141
|
//--------------------------------------------------------------------------
|
|
101
142
|
/**
|
|
102
143
|
* StencilJS: Called once just after the component is first connected to the DOM.
|
|
103
|
-
*
|
|
104
|
-
* @returns Promise when complete
|
|
105
144
|
*/
|
|
106
145
|
async componentWillLoad() {
|
|
107
|
-
|
|
108
|
-
await this._getTranslations();
|
|
109
|
-
this._popupUtils = new PopupUtils();
|
|
146
|
+
return this._initModules();
|
|
110
147
|
}
|
|
111
|
-
/**
|
|
112
|
-
* StencilJS: Called once just after the component is fully loaded and the first render() occurs.
|
|
113
|
-
* @returns Promise when complete
|
|
114
|
-
*/
|
|
115
|
-
async componentDidLoad() {
|
|
116
|
-
var _a;
|
|
117
|
-
if (((_a = this.graphics) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
118
|
-
await this.setGraphics();
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Renders the component.
|
|
123
|
-
*/
|
|
124
148
|
render() {
|
|
125
|
-
|
|
126
|
-
const loadingClass = this.isLoading ? "" : "display-none";
|
|
127
|
-
const featureNodeClass = this.isLoading || this._editRecordOpen ? "visibility-hidden" : "position-absolute";
|
|
128
|
-
const editClass = !this.isLoading && this._editRecordOpen ? "position-absolute" : "display-none";
|
|
129
|
-
const editButtonClass = (!this.isLoading && this._editRecordOpen) || this._showListView ? "display-none" : "";
|
|
130
|
-
const nextBackDisabled = ((_b = (_a = this._features) === null || _a === void 0 ? void 0 : _a.features) === null || _b === void 0 ? void 0 : _b.length) < 2;
|
|
131
|
-
const nextBackClass = this.isMobile ? "display-none" : "";
|
|
132
|
-
const shellClass = this.isMobile && !this._editRecordOpen ? "padding-top-46" : "";
|
|
133
|
-
const id = (_d = (_c = this._features) === null || _c === void 0 ? void 0 : _c.selectedFeature) === null || _d === void 0 ? void 0 : _d.getObjectId();
|
|
134
|
-
const ids = parseInt(id === null || id === void 0 ? void 0 : id.toString(), 10) > -1 ? [id] : [];
|
|
135
|
-
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);
|
|
136
|
-
return (h(Host, null, this.isMobile && !this._editRecordOpen ? (h("calcite-panel", null, h("calcite-action", { class: "end-border", icon: "chevron-left", iconFlipRtl: true, onClick: () => this._closePopup(), scale: "s", slot: "header-actions-start", text: "" }), h("span", { class: "font-bold", slot: "header-content" }, this._mobileTitle))) : undefined, h("calcite-shell", { class: shellClass }, h("calcite-loader", { class: loadingClass, label: this._translations.fetchingData }), h("div", { class: "esri-widget " + featureNodeClass, id: "features-node" }), h("div", { class: `${editButtonClass} width-100`, slot: "footer" }, this.allowEditing &&
|
|
137
|
-
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)))));
|
|
149
|
+
return (h(Host, null, h("div", { ref: (el) => { this._floorFilterElement = el; } })));
|
|
138
150
|
}
|
|
139
151
|
//--------------------------------------------------------------------------
|
|
140
152
|
//
|
|
@@ -149,217 +161,174 @@ const InfoCard = class {
|
|
|
149
161
|
* @protected
|
|
150
162
|
*/
|
|
151
163
|
async _initModules() {
|
|
152
|
-
const [
|
|
153
|
-
"esri/widgets/
|
|
164
|
+
const [FloorFilter, reactiveUtils] = await loadModules([
|
|
165
|
+
"esri/widgets/FloorFilter",
|
|
154
166
|
"esri/core/reactiveUtils"
|
|
155
167
|
]);
|
|
156
|
-
this.
|
|
168
|
+
this.FloorFilter = FloorFilter;
|
|
157
169
|
this.reactiveUtils = reactiveUtils;
|
|
158
170
|
}
|
|
159
171
|
/**
|
|
160
|
-
*
|
|
161
|
-
*
|
|
162
|
-
* @protected
|
|
172
|
+
* Initialize the floor filter or reset the current view if it already exists
|
|
163
173
|
*/
|
|
164
|
-
|
|
174
|
+
_initFloorFilter(view) {
|
|
165
175
|
var _a;
|
|
166
|
-
if (
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
this._editEnabled = this._layer.editingEnabled && this._layer.capabilities.operations.supportsUpdate;
|
|
172
|
-
this._mobileTitle = await this._popupUtils.getPopupTitle(this.graphics[0]);
|
|
173
|
-
this._features.open({
|
|
174
|
-
features: this.graphics
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
else {
|
|
178
|
-
this._features.clear();
|
|
179
|
-
this._features.close();
|
|
180
|
-
}
|
|
181
|
-
this._count = this._getCount();
|
|
182
|
-
}
|
|
183
|
-
/**
|
|
184
|
-
* Init the Feature widget so we can display the popup content
|
|
185
|
-
*
|
|
186
|
-
* @returns a promise when the operation has completed
|
|
187
|
-
*
|
|
188
|
-
* @protected
|
|
189
|
-
*/
|
|
190
|
-
async _initFeaturesWidget() {
|
|
191
|
-
var _a;
|
|
192
|
-
return this.isMobile !== undefined ? await ((_a = this.mapView) === null || _a === void 0 ? void 0 : _a.when(() => {
|
|
193
|
-
if (!this._features) {
|
|
194
|
-
this._features = new this.Features({
|
|
195
|
-
view: this.mapView,
|
|
196
|
-
container: "features-node",
|
|
197
|
-
visibleElements: {
|
|
198
|
-
actionBar: false,
|
|
199
|
-
closeButton: false,
|
|
200
|
-
heading: !this.isMobile
|
|
201
|
-
}
|
|
176
|
+
if (view && this.enabled && this.FloorFilter && ((_a = view === null || view === void 0 ? void 0 : view.map) === null || _a === void 0 ? void 0 : _a.floorInfo)) {
|
|
177
|
+
if (!this.floorFilterWidget) {
|
|
178
|
+
this.floorFilterWidget = new this.FloorFilter({
|
|
179
|
+
container: this._floorFilterElement,
|
|
180
|
+
view
|
|
202
181
|
});
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
this._showListView = isOpen;
|
|
206
|
-
}
|
|
207
|
-
});
|
|
208
|
-
if (this.zoomAndScrollToSelected) {
|
|
209
|
-
this.reactiveUtils.watch(() => this._features.selectedFeatureIndex, (i) => {
|
|
210
|
-
if (i > -1) {
|
|
211
|
-
this.selectionChanged.emit([this._features.selectedFeature]);
|
|
212
|
-
}
|
|
213
|
-
});
|
|
182
|
+
if (this._levelHandle) {
|
|
183
|
+
this._levelHandle.remove();
|
|
214
184
|
}
|
|
185
|
+
this._levelHandle = this.reactiveUtils.watch(() => this.floorFilterWidget.level, (level) => {
|
|
186
|
+
this.levelChanged.emit(level);
|
|
187
|
+
});
|
|
215
188
|
}
|
|
216
189
|
else {
|
|
217
|
-
this.
|
|
218
|
-
this._features.visibleElements.actionBar = false;
|
|
219
|
-
this._features.visibleElements.closeButton = false;
|
|
220
|
-
this._features.visibleElements.heading = !this.isMobile;
|
|
190
|
+
this.floorFilterWidget.view = view;
|
|
221
191
|
}
|
|
222
|
-
}
|
|
192
|
+
}
|
|
223
193
|
}
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
194
|
+
get el() { return getElement(this); }
|
|
195
|
+
static get watchers() { return {
|
|
196
|
+
"mapView": ["mapViewWatchHandler"]
|
|
197
|
+
}; }
|
|
198
|
+
};
|
|
199
|
+
FloorFilter.style = floorFilterCss;
|
|
200
|
+
|
|
201
|
+
const mapFullscreenCss = ":host{display:block}";
|
|
202
|
+
|
|
203
|
+
const MapFullscreen = class {
|
|
204
|
+
constructor(hostRef) {
|
|
205
|
+
registerInstance(this, hostRef);
|
|
206
|
+
this.fullscreenStateChange = createEvent(this, "fullscreenStateChange", 7);
|
|
207
|
+
this.mapView = undefined;
|
|
208
|
+
this.fullscreenWidget = undefined;
|
|
229
209
|
}
|
|
210
|
+
//--------------------------------------------------------------------------
|
|
211
|
+
//
|
|
212
|
+
// Watch handlers
|
|
213
|
+
//
|
|
214
|
+
//--------------------------------------------------------------------------
|
|
230
215
|
/**
|
|
231
|
-
*
|
|
216
|
+
* Called each time the mapView prop is changed.
|
|
217
|
+
*
|
|
218
|
+
* @returns Promise when complete
|
|
232
219
|
*/
|
|
233
|
-
|
|
234
|
-
this.
|
|
220
|
+
async mapViewWatchHandler() {
|
|
221
|
+
await this.mapView.when(async () => {
|
|
222
|
+
await this._initFullscreenWidget();
|
|
223
|
+
});
|
|
235
224
|
}
|
|
225
|
+
//--------------------------------------------------------------------------
|
|
226
|
+
//
|
|
227
|
+
// Functions (lifecycle)
|
|
228
|
+
//
|
|
229
|
+
//--------------------------------------------------------------------------
|
|
236
230
|
/**
|
|
237
|
-
*
|
|
231
|
+
* StencilJS: Called once just after the component is first connected to the DOM.
|
|
238
232
|
*/
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
this._editRecordOpen = true;
|
|
242
|
-
}
|
|
243
|
-
else {
|
|
244
|
-
this._alertOpen = true;
|
|
245
|
-
}
|
|
233
|
+
async componentWillLoad() {
|
|
234
|
+
await this._initModules();
|
|
246
235
|
}
|
|
247
236
|
/**
|
|
248
|
-
*
|
|
237
|
+
* Renders the component.
|
|
249
238
|
*/
|
|
250
|
-
|
|
251
|
-
this.
|
|
252
|
-
this._count = this._getCount();
|
|
239
|
+
render() {
|
|
240
|
+
return (h(Host, null, h("div", { class: "fullscreen-widget", ref: (el) => { this._fullscreenElement = el; } })));
|
|
253
241
|
}
|
|
254
242
|
/**
|
|
255
|
-
*
|
|
243
|
+
* StencilJS: Called just after the component updates.
|
|
244
|
+
* It's never called during the first render().
|
|
256
245
|
*/
|
|
257
|
-
|
|
258
|
-
this.
|
|
259
|
-
this._count = this._getCount();
|
|
246
|
+
async componentDidUpdate() {
|
|
247
|
+
await this._initFullscreenWidget();
|
|
260
248
|
}
|
|
261
249
|
/**
|
|
262
|
-
*
|
|
263
|
-
*
|
|
264
|
-
* @returns the index of total string
|
|
250
|
+
* StencilJS: Called once just after the component is fully loaded and the first render() occurs.
|
|
265
251
|
*/
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
const index = (((_a = this._features) === null || _a === void 0 ? void 0 : _a.viewModel.selectedFeatureIndex) + 1).toString();
|
|
269
|
-
const total = (_c = (_b = this._features) === null || _b === void 0 ? void 0 : _b.features) === null || _c === void 0 ? void 0 : _c.length.toString();
|
|
270
|
-
return this._translations.indexOfTotal
|
|
271
|
-
.replace("{{index}}", index)
|
|
272
|
-
.replace("{{total}}", total);
|
|
252
|
+
async componentDidLoad() {
|
|
253
|
+
await this._initFullscreenWidget();
|
|
273
254
|
}
|
|
255
|
+
//--------------------------------------------------------------------------
|
|
256
|
+
//
|
|
257
|
+
// Functions (protected)
|
|
258
|
+
//
|
|
259
|
+
//--------------------------------------------------------------------------
|
|
274
260
|
/**
|
|
275
|
-
*
|
|
261
|
+
* Load esri javascript api modules
|
|
262
|
+
*
|
|
263
|
+
* @returns Promise resolving when function is done
|
|
264
|
+
*
|
|
265
|
+
* @protected
|
|
276
266
|
*/
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
this._features.selectedFeatureIndex = i;
|
|
267
|
+
async _initModules() {
|
|
268
|
+
const [Fullscreen, reactiveUtils] = await loadModules([
|
|
269
|
+
"esri/widgets/Fullscreen",
|
|
270
|
+
"esri/core/reactiveUtils"
|
|
271
|
+
]);
|
|
272
|
+
this.Fullscreen = Fullscreen;
|
|
273
|
+
this.reactiveUtils = reactiveUtils;
|
|
285
274
|
}
|
|
286
275
|
/**
|
|
287
|
-
*
|
|
276
|
+
* Initialize the search widget
|
|
288
277
|
*
|
|
289
|
-
* @returns Promise when complete
|
|
290
278
|
* @protected
|
|
291
279
|
*/
|
|
292
|
-
async
|
|
293
|
-
|
|
294
|
-
|
|
280
|
+
async _initFullscreenWidget() {
|
|
281
|
+
if (this.mapView && this._fullscreenElement && !this.fullscreenWidget) {
|
|
282
|
+
this.fullscreenWidget = new this.Fullscreen({
|
|
283
|
+
view: this.mapView
|
|
284
|
+
});
|
|
285
|
+
await this.fullscreenWidget.when(() => {
|
|
286
|
+
if (this._fullscreenStateChangeHandle) {
|
|
287
|
+
this._fullscreenStateChangeHandle.remove();
|
|
288
|
+
}
|
|
289
|
+
this._fullscreenStateChangeHandle = this.reactiveUtils.watch(() => this.fullscreenWidget.viewModel.state, (state) => this.fullscreenStateChange.emit(state));
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
else if (this.fullscreenWidget) {
|
|
293
|
+
this.fullscreenWidget.view = this.mapView;
|
|
294
|
+
}
|
|
295
295
|
}
|
|
296
|
-
get el() { return getElement(this); }
|
|
297
296
|
static get watchers() { return {
|
|
298
|
-
"graphics": ["graphicsWatchHandler"],
|
|
299
|
-
"isMobile": ["isMobileWatchHandler"],
|
|
300
297
|
"mapView": ["mapViewWatchHandler"]
|
|
301
298
|
}; }
|
|
302
299
|
};
|
|
303
|
-
|
|
300
|
+
MapFullscreen.style = mapFullscreenCss;
|
|
304
301
|
|
|
305
|
-
const
|
|
302
|
+
const mapLegendCss = ":host{display:block}";
|
|
306
303
|
|
|
307
|
-
const
|
|
304
|
+
const MapLegend = class {
|
|
308
305
|
constructor(hostRef) {
|
|
309
306
|
registerInstance(this, hostRef);
|
|
310
|
-
this.mapChanged = createEvent(this, "mapChanged", 7);
|
|
311
|
-
this.beforeMapChanged = createEvent(this, "beforeMapChanged", 7);
|
|
312
|
-
/**
|
|
313
|
-
* boolean: When true the default map provided via url params has been loaded and should no longer override other maps
|
|
314
|
-
*/
|
|
315
|
-
this._defaultWebmapHonored = false;
|
|
316
|
-
/**
|
|
317
|
-
* string: the id of map currently displayed
|
|
318
|
-
*/
|
|
319
|
-
this._loadedId = "";
|
|
320
|
-
this.defaultWebmapId = "";
|
|
321
|
-
this.enableHome = undefined;
|
|
322
|
-
this.enableLegend = undefined;
|
|
323
|
-
this.enableFloorFilter = undefined;
|
|
324
|
-
this.enableFullscreen = undefined;
|
|
325
|
-
this.enableSingleExpand = true;
|
|
326
|
-
this.enableSearch = undefined;
|
|
327
|
-
this.enableBasemap = undefined;
|
|
328
|
-
this.basemapConfig = undefined;
|
|
329
|
-
this.hidden = undefined;
|
|
330
|
-
this.homeZoomIndex = 3;
|
|
331
|
-
this.homeZoomPosition = "top-left";
|
|
332
|
-
this.homeZoomToolsSize = "m";
|
|
333
|
-
this.mapInfos = [];
|
|
334
|
-
this.mapWidgetsIndex = 0;
|
|
335
|
-
this.mapWidgetsPosition = "top-right";
|
|
336
|
-
this.mapWidgetsSize = "m";
|
|
337
307
|
this.mapView = undefined;
|
|
338
|
-
this.
|
|
339
|
-
this.theme = undefined;
|
|
340
|
-
this.toolOrder = undefined;
|
|
341
|
-
this._searchConfiguration = undefined;
|
|
342
|
-
this._webMapInfo = undefined;
|
|
308
|
+
this.legendWidget = undefined;
|
|
343
309
|
}
|
|
344
310
|
//--------------------------------------------------------------------------
|
|
345
311
|
//
|
|
346
312
|
// Watch handlers
|
|
347
313
|
//
|
|
348
314
|
//--------------------------------------------------------------------------
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
this._initHome();
|
|
354
|
-
}
|
|
355
|
-
/**
|
|
356
|
-
* Listen for changes to map info and load the appropriate map
|
|
357
|
-
*/
|
|
358
|
-
async mapInfoChange(evt) {
|
|
359
|
-
await this._loadMap(evt.detail);
|
|
315
|
+
async mapViewWatchHandler() {
|
|
316
|
+
await this.mapView.when(() => {
|
|
317
|
+
this._initLegend(this.mapView);
|
|
318
|
+
});
|
|
360
319
|
}
|
|
361
320
|
//--------------------------------------------------------------------------
|
|
362
321
|
//
|
|
322
|
+
// Methods (public)
|
|
323
|
+
//
|
|
324
|
+
//--------------------------------------------------------------------------
|
|
325
|
+
//--------------------------------------------------------------------------
|
|
326
|
+
//
|
|
327
|
+
// Events (public)
|
|
328
|
+
//
|
|
329
|
+
//--------------------------------------------------------------------------
|
|
330
|
+
//--------------------------------------------------------------------------
|
|
331
|
+
//
|
|
363
332
|
// Functions (lifecycle)
|
|
364
333
|
//
|
|
365
334
|
//--------------------------------------------------------------------------
|
|
@@ -367,18 +336,21 @@ const MapCard = class {
|
|
|
367
336
|
* StencilJS: Called once just after the component is first connected to the DOM.
|
|
368
337
|
*/
|
|
369
338
|
async componentWillLoad() {
|
|
370
|
-
|
|
339
|
+
return this._initModules();
|
|
371
340
|
}
|
|
372
341
|
/**
|
|
373
|
-
* Renders the component.
|
|
342
|
+
* StencilJS: Renders the component.
|
|
374
343
|
*/
|
|
375
344
|
render() {
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
345
|
+
return (h(Host, null, h("div", { ref: (el) => { this._legendElement = el; } })));
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* StencilJS: Called once just after the component is fully loaded and the first render() occurs.
|
|
349
|
+
*/
|
|
350
|
+
async componentDidLoad() {
|
|
351
|
+
if (this.mapView) {
|
|
352
|
+
await this.mapViewWatchHandler();
|
|
353
|
+
}
|
|
382
354
|
}
|
|
383
355
|
//--------------------------------------------------------------------------
|
|
384
356
|
//
|
|
@@ -393,91 +365,33 @@ const MapCard = class {
|
|
|
393
365
|
* @protected
|
|
394
366
|
*/
|
|
395
367
|
async _initModules() {
|
|
396
|
-
const [
|
|
397
|
-
"esri/
|
|
398
|
-
"esri/views/MapView",
|
|
399
|
-
"esri/widgets/Home"
|
|
368
|
+
const [Legend] = await loadModules([
|
|
369
|
+
"esri/widgets/Legend"
|
|
400
370
|
]);
|
|
401
|
-
this.
|
|
402
|
-
this.MapView = MapView;
|
|
403
|
-
this.Home = Home;
|
|
371
|
+
this.Legend = Legend;
|
|
404
372
|
}
|
|
405
373
|
/**
|
|
406
|
-
*
|
|
407
|
-
*
|
|
408
|
-
* @param webMapInfo the webmap id and name to load
|
|
374
|
+
* Initialize the basemap gallery or reset the current view if it already exists
|
|
409
375
|
*/
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
this._webMapInfo = loadDefaultMap && defaultMap ? defaultMap[0] :
|
|
417
|
-
!(webMapInfo === null || webMapInfo === void 0 ? void 0 : webMapInfo.id) && this.mapInfos.length > 0 ? this.mapInfos[0] : webMapInfo;
|
|
418
|
-
const id = this._webMapInfo.id;
|
|
419
|
-
const isDefaultMap = loadDefaultMap && (webMapInfo === null || webMapInfo === void 0 ? void 0 : webMapInfo.id) === this.defaultWebmapId;
|
|
420
|
-
if ((this._loadedId !== id && !loadDefaultMap) || isDefaultMap) {
|
|
421
|
-
const webMap = new this.WebMap({
|
|
422
|
-
portalItem: { id }
|
|
423
|
-
});
|
|
424
|
-
this.mapView = new this.MapView({
|
|
425
|
-
container: this._mapDiv,
|
|
426
|
-
map: webMap,
|
|
427
|
-
resizeAlign: "center"
|
|
428
|
-
});
|
|
429
|
-
this._loadedId = id;
|
|
430
|
-
this._searchConfiguration = this._webMapInfo.searchConfiguration;
|
|
431
|
-
this.beforeMapChanged.emit();
|
|
432
|
-
await this.mapView.when(() => {
|
|
433
|
-
this._initHome();
|
|
434
|
-
this.mapView.ui.add(this._mapTools, { position: this.mapWidgetsPosition, index: this.mapWidgetsIndex });
|
|
435
|
-
this._defaultWebmapHonored = isDefaultMap ? true : this._defaultWebmapHonored;
|
|
436
|
-
this.mapChanged.emit({
|
|
437
|
-
id: id,
|
|
438
|
-
mapView: this.mapView
|
|
376
|
+
_initLegend(view) {
|
|
377
|
+
if (view && this.Legend) {
|
|
378
|
+
if (!this.legendWidget) {
|
|
379
|
+
this.legendWidget = new this.Legend({
|
|
380
|
+
container: this._legendElement,
|
|
381
|
+
view
|
|
439
382
|
});
|
|
440
|
-
}
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
this._mapPicker.setMapByID(id);
|
|
445
|
-
}
|
|
446
|
-
else if (mapConfigChanged) {
|
|
447
|
-
// Map is the same so no need to reload but we need to update for any changes from the config
|
|
448
|
-
this._searchConfiguration = this._webMapInfo.searchConfiguration;
|
|
449
|
-
this.beforeMapChanged.emit();
|
|
450
|
-
this.mapChanged.emit({
|
|
451
|
-
id: id,
|
|
452
|
-
mapView: this.mapView
|
|
453
|
-
});
|
|
454
|
-
}
|
|
455
|
-
}
|
|
456
|
-
/**
|
|
457
|
-
* Add/remove the home widget base on enableHome prop
|
|
458
|
-
*
|
|
459
|
-
* @protected
|
|
460
|
-
*/
|
|
461
|
-
_initHome() {
|
|
462
|
-
if (this.enableHome) {
|
|
463
|
-
this._homeWidget = new this.Home({
|
|
464
|
-
view: this.mapView
|
|
465
|
-
});
|
|
466
|
-
this.mapView.ui.add(this._homeWidget, { position: this.homeZoomPosition, index: this.homeZoomIndex });
|
|
467
|
-
const size = this.homeZoomToolsSize === "s" ? "32px" : this.homeZoomToolsSize === "m" ? "40px" : "48px";
|
|
468
|
-
this._homeWidget.domNode.style.height = size;
|
|
469
|
-
this._homeWidget.domNode.style.width = size;
|
|
470
|
-
}
|
|
471
|
-
else if (this._homeWidget) {
|
|
472
|
-
this.mapView.ui.remove(this._homeWidget);
|
|
383
|
+
}
|
|
384
|
+
else {
|
|
385
|
+
this.legendWidget.view = view;
|
|
386
|
+
}
|
|
473
387
|
}
|
|
474
388
|
}
|
|
475
389
|
get el() { return getElement(this); }
|
|
476
390
|
static get watchers() { return {
|
|
477
|
-
"
|
|
391
|
+
"mapView": ["mapViewWatchHandler"]
|
|
478
392
|
}; }
|
|
479
393
|
};
|
|
480
|
-
|
|
394
|
+
MapLegend.style = mapLegendCss;
|
|
481
395
|
|
|
482
396
|
const mapPickerCss = ":host{display:block;--solutions-theme-foreground-color:var(--calcite-color-foreground-1)}.width-full{width:100%}.height-full{height:100%}.display-flex{display:flex}.border-bottom-1{border-width:0px;border-bottom-width:1px;border-style:solid;border-color:var(--calcite-color-border-3)}.action-bar-size{height:51px;width:100%}.map-list{position:absolute;display:flex;flex-direction:column;overflow:hidden;animation:calcite-scrim-fade-in var(--calcite-internal-animation-timing-medium) ease-in-out;background-color:var(--calcite-color-background);z-index:1000;width:100%;height:-moz-fit-content;height:fit-content}.display-none{display:none}.align-center{align-items:center}";
|
|
483
397
|
|
|
@@ -637,6 +551,175 @@ const MapPicker = class {
|
|
|
637
551
|
};
|
|
638
552
|
MapPicker.style = mapPickerCss;
|
|
639
553
|
|
|
554
|
+
const mapSearchCss = ":host{display:block}.search-widget{width:100% !important;border:1px solid var(--calcite-color-border-input)}";
|
|
555
|
+
|
|
556
|
+
const MapSearch = class {
|
|
557
|
+
constructor(hostRef) {
|
|
558
|
+
registerInstance(this, hostRef);
|
|
559
|
+
this.mapView = undefined;
|
|
560
|
+
this.popupEnabled = false;
|
|
561
|
+
this.resultGraphicEnabled = false;
|
|
562
|
+
this.searchConfiguration = undefined;
|
|
563
|
+
this.searchTerm = undefined;
|
|
564
|
+
this.searchWidget = undefined;
|
|
565
|
+
}
|
|
566
|
+
//--------------------------------------------------------------------------
|
|
567
|
+
//
|
|
568
|
+
// Watch handlers
|
|
569
|
+
//
|
|
570
|
+
//--------------------------------------------------------------------------
|
|
571
|
+
/**
|
|
572
|
+
* Called each time the searchConfiguration prop is changed.
|
|
573
|
+
*
|
|
574
|
+
* @returns Promise when complete
|
|
575
|
+
*/
|
|
576
|
+
async watchSearchConfigurationHandler() {
|
|
577
|
+
this._initSearchWidget();
|
|
578
|
+
}
|
|
579
|
+
/**
|
|
580
|
+
* Called each time the mapView prop is changed.
|
|
581
|
+
*
|
|
582
|
+
* @returns Promise when complete
|
|
583
|
+
*/
|
|
584
|
+
async mapViewWatchHandler() {
|
|
585
|
+
await this.mapView.when(() => {
|
|
586
|
+
this._initSearchWidget();
|
|
587
|
+
});
|
|
588
|
+
}
|
|
589
|
+
//--------------------------------------------------------------------------
|
|
590
|
+
//
|
|
591
|
+
// Methods (public)
|
|
592
|
+
//
|
|
593
|
+
//--------------------------------------------------------------------------
|
|
594
|
+
//--------------------------------------------------------------------------
|
|
595
|
+
//
|
|
596
|
+
// Events (public)
|
|
597
|
+
//
|
|
598
|
+
//--------------------------------------------------------------------------
|
|
599
|
+
//--------------------------------------------------------------------------
|
|
600
|
+
//
|
|
601
|
+
// Functions (lifecycle)
|
|
602
|
+
//
|
|
603
|
+
//--------------------------------------------------------------------------
|
|
604
|
+
/**
|
|
605
|
+
* StencilJS: Called once just after the component is first connected to the DOM.
|
|
606
|
+
*/
|
|
607
|
+
async componentWillLoad() {
|
|
608
|
+
await this._initModules();
|
|
609
|
+
}
|
|
610
|
+
/**
|
|
611
|
+
* StencilJS: Called once just after the component is fully loaded and the first render() occurs.
|
|
612
|
+
*/
|
|
613
|
+
async componentDidLoad() {
|
|
614
|
+
return this._initSearchWidget();
|
|
615
|
+
}
|
|
616
|
+
/**
|
|
617
|
+
* Renders the component.
|
|
618
|
+
*/
|
|
619
|
+
render() {
|
|
620
|
+
return (h(Host, null, h("div", { class: "search-widget", ref: (el) => { this._searchElement = el; } })));
|
|
621
|
+
}
|
|
622
|
+
//--------------------------------------------------------------------------
|
|
623
|
+
//
|
|
624
|
+
// Functions (protected)
|
|
625
|
+
//
|
|
626
|
+
//--------------------------------------------------------------------------
|
|
627
|
+
/**
|
|
628
|
+
* Load esri javascript api modules
|
|
629
|
+
*
|
|
630
|
+
* @returns Promise resolving when function is done
|
|
631
|
+
*
|
|
632
|
+
* @protected
|
|
633
|
+
*/
|
|
634
|
+
async _initModules() {
|
|
635
|
+
const [Search, FeatureLayer] = await loadModules([
|
|
636
|
+
"esri/widgets/Search",
|
|
637
|
+
"esri/layers/FeatureLayer"
|
|
638
|
+
]);
|
|
639
|
+
this.Search = Search;
|
|
640
|
+
this.FeatureLayer = FeatureLayer;
|
|
641
|
+
}
|
|
642
|
+
/**
|
|
643
|
+
* Initialize the search widget
|
|
644
|
+
*
|
|
645
|
+
* @protected
|
|
646
|
+
*/
|
|
647
|
+
_initSearchWidget() {
|
|
648
|
+
if (this.mapView && this._searchElement && !this.searchWidget) {
|
|
649
|
+
let searchOptions = {
|
|
650
|
+
view: this.mapView,
|
|
651
|
+
container: this._searchElement,
|
|
652
|
+
searchTerm: this.searchTerm
|
|
653
|
+
};
|
|
654
|
+
if (this.searchConfiguration) {
|
|
655
|
+
const searchConfiguration = this._getSearchConfig(this.searchConfiguration, this.mapView);
|
|
656
|
+
searchOptions = Object.assign({}, searchConfiguration);
|
|
657
|
+
}
|
|
658
|
+
this.searchWidget = new this.Search(searchOptions);
|
|
659
|
+
this.searchWidget.popupEnabled = this.popupEnabled;
|
|
660
|
+
this.searchWidget.resultGraphicEnabled = this.resultGraphicEnabled;
|
|
661
|
+
}
|
|
662
|
+
else {
|
|
663
|
+
if (this.searchWidget) {
|
|
664
|
+
this.searchWidget.view = this.mapView;
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
/**
|
|
669
|
+
* Initialize the search widget based on user defined configuration
|
|
670
|
+
*
|
|
671
|
+
* @param searchConfiguration search configuration defined by the user
|
|
672
|
+
* @param view the current map view
|
|
673
|
+
*
|
|
674
|
+
* @protected
|
|
675
|
+
*/
|
|
676
|
+
_getSearchConfig(searchConfiguration, view) {
|
|
677
|
+
const INCLUDE_DEFAULT_SOURCES = "includeDefaultSources";
|
|
678
|
+
const sources = searchConfiguration.sources;
|
|
679
|
+
if ((sources === null || sources === void 0 ? void 0 : sources.length) > 0) {
|
|
680
|
+
searchConfiguration[INCLUDE_DEFAULT_SOURCES] = false;
|
|
681
|
+
sources.forEach((source) => {
|
|
682
|
+
var _a, _b;
|
|
683
|
+
const isLayerSource = source.hasOwnProperty("layer");
|
|
684
|
+
if (isLayerSource) {
|
|
685
|
+
const layerSource = source;
|
|
686
|
+
const layerId = (_a = layerSource.layer) === null || _a === void 0 ? void 0 : _a.id;
|
|
687
|
+
const layerFromMap = layerId ? view.map.findLayerById(layerId) : null;
|
|
688
|
+
const layerUrl = (_b = layerSource === null || layerSource === void 0 ? void 0 : layerSource.layer) === null || _b === void 0 ? void 0 : _b.url;
|
|
689
|
+
if (layerFromMap) {
|
|
690
|
+
layerSource.layer = layerFromMap;
|
|
691
|
+
}
|
|
692
|
+
else if (layerUrl) {
|
|
693
|
+
layerSource.layer = new this.FeatureLayer(layerUrl);
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
});
|
|
697
|
+
sources === null || sources === void 0 ? void 0 : sources.forEach((source) => {
|
|
698
|
+
const isLocatorSource = source.hasOwnProperty("locator");
|
|
699
|
+
if (isLocatorSource) {
|
|
700
|
+
const locatorSource = source;
|
|
701
|
+
if ((locatorSource === null || locatorSource === void 0 ? void 0 : locatorSource.name) === "ArcGIS World Geocoding Service") {
|
|
702
|
+
const outFields = locatorSource.outFields || ["Addr_type", "Match_addr", "StAddr", "City"];
|
|
703
|
+
locatorSource.outFields = outFields;
|
|
704
|
+
locatorSource.singleLineFieldName = "SingleLine";
|
|
705
|
+
}
|
|
706
|
+
locatorSource.url = locatorSource.url;
|
|
707
|
+
delete locatorSource.url;
|
|
708
|
+
}
|
|
709
|
+
});
|
|
710
|
+
}
|
|
711
|
+
else {
|
|
712
|
+
searchConfiguration = Object.assign(Object.assign({}, searchConfiguration), { includeDefaultSources: true });
|
|
713
|
+
}
|
|
714
|
+
return searchConfiguration;
|
|
715
|
+
}
|
|
716
|
+
static get watchers() { return {
|
|
717
|
+
"searchConfiguration": ["watchSearchConfigurationHandler"],
|
|
718
|
+
"mapView": ["mapViewWatchHandler"]
|
|
719
|
+
}; }
|
|
720
|
+
};
|
|
721
|
+
MapSearch.style = mapSearchCss;
|
|
722
|
+
|
|
640
723
|
const mapToolsCss = ":host{display:block}.display-none{display:none}.margin-top-1-2{margin-top:0.5rem}.square-32{width:32px;height:32px}.square-40{width:40px;height:40px}.square-48{width:48px;height:48px}.width-40{width:40px}.square-40-41{width:40px;height:41px}.border-bottom{border-bottom:1px solid var(--calcite-color-border-3)}.box-shadow{box-shadow:0 1px 2px rgba(0, 0, 0, 0.3)}.margin-bottom-1-2{margin-bottom:0.5rem}";
|
|
641
724
|
|
|
642
725
|
const MapTools = class {
|
|
@@ -994,4 +1077,4 @@ const MapTools = class {
|
|
|
994
1077
|
};
|
|
995
1078
|
MapTools.style = mapToolsCss;
|
|
996
1079
|
|
|
997
|
-
export {
|
|
1080
|
+
export { BasemapGallery as basemap_gallery, FloorFilter as floor_filter, MapFullscreen as map_fullscreen, MapLegend as map_legend, MapPicker as map_picker, MapSearch as map_search, MapTools as map_tools };
|