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