@esri/solutions-components 0.6.27 → 0.6.29
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/basemap-gallery_7.cjs.entry.js +2 -2
- package/dist/cjs/calcite-alert_3.cjs.entry.js +1 -1
- package/dist/cjs/calcite-combobox_6.cjs.entry.js +2 -2
- package/dist/cjs/card-manager_3.cjs.entry.js +335 -16
- package/dist/cjs/crowdsource-manager.cjs.entry.js +4 -4
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/solutions-components.cjs.js +1 -1
- package/dist/collection/components/basemap-gallery/basemap-gallery.js +2 -2
- package/dist/collection/components/crowdsource-manager/crowdsource-manager.css +0 -4
- package/dist/collection/components/crowdsource-manager/crowdsource-manager.js +3 -3
- package/dist/collection/components/edit-card/edit-card.js +1 -1
- package/dist/collection/components/layer-table/layer-table.css +6 -2
- package/dist/collection/components/layer-table/layer-table.js +337 -10
- package/dist/collection/components/map-card/map-card.js +2 -5
- package/dist/collection/components/map-layer-picker/map-layer-picker.js +2 -2
- package/dist/collection/demos/crowdsource-manager.html +0 -3
- package/dist/collection/utils/interfaces.ts +14 -0
- package/dist/components/basemap-gallery2.js +2 -2
- package/dist/components/crowdsource-manager.js +4 -4
- package/dist/components/edit-card2.js +1 -1
- package/dist/components/layer-table2.js +336 -11
- package/dist/components/map-card2.js +2 -5
- package/dist/components/map-layer-picker2.js +2 -2
- package/dist/esm/basemap-gallery_7.entry.js +2 -2
- package/dist/esm/calcite-alert_3.entry.js +1 -1
- package/dist/esm/calcite-combobox_6.entry.js +2 -2
- package/dist/esm/card-manager_3.entry.js +335 -16
- package/dist/esm/crowdsource-manager.entry.js +4 -4
- package/dist/esm/loader.js +1 -1
- package/dist/esm/polyfills/core-js.js +11 -0
- package/dist/esm/polyfills/dom.js +79 -0
- package/dist/esm/polyfills/es5-html-element.js +1 -0
- package/dist/esm/polyfills/index.js +34 -0
- package/dist/esm/polyfills/system.js +6 -0
- package/dist/esm/solutions-components.js +1 -1
- package/dist/solutions-components/demos/crowdsource-manager.html +0 -3
- package/dist/solutions-components/{p-5e446b18.entry.js → p-190c83b9.entry.js} +1 -1
- package/dist/solutions-components/p-3c702004.entry.js +6 -0
- package/dist/solutions-components/p-d44ad6c4.entry.js +6 -0
- package/dist/solutions-components/p-f2dcb05a.entry.js +6 -0
- package/dist/solutions-components/{p-3fe6368e.entry.js → p-f8687049.entry.js} +1 -1
- package/dist/solutions-components/solutions-components.esm.js +1 -1
- package/dist/solutions-components/utils/interfaces.ts +14 -0
- package/dist/types/components/layer-table/layer-table.d.ts +140 -4
- package/dist/types/components/map-card/map-card.d.ts +0 -1
- package/dist/types/utils/interfaces.d.ts +12 -0
- package/package.json +1 -1
- package/dist/solutions-components/p-25729b41.entry.js +0 -6
- package/dist/solutions-components/p-8144c528.entry.js +0 -6
- package/dist/solutions-components/p-ea238bbc.entry.js +0 -6
@@ -99,7 +99,7 @@ const CardManager = class {
|
|
99
99
|
};
|
100
100
|
CardManager.style = cardManagerCss;
|
101
101
|
|
102
|
-
const layerTableCss = ":host{display:block}.height-full{height:100%}.height-full-adjusted{height:calc(100% - 20px)}.width-full{width:100%}.display-flex{display:flex}.table-border{border:1px solid var(--calcite-ui-border-2)}.border-end{border-inline-end:1px solid var(--calcite-ui-border-2)}.border-bottom{border-bottom:1px solid var(--calcite-ui-border-2)}.padding-5{padding:5px}.padding-end-1{padding-inline-end:1rem}.height-51{height:51px}.bottom-left{position:absolute;left:
|
102
|
+
const layerTableCss = ":host{display:block}.height-full{height:100%}.height-full-adjusted{height:calc(100% - 20px)}.width-full{width:100%}.display-flex{display:flex}.table-border{border:1px solid var(--calcite-ui-border-2)}.border-end{border-inline-end:1px solid var(--calcite-ui-border-2)}.border-bottom{border-bottom:1px solid var(--calcite-ui-border-2)}.padding-5{padding:5px}.padding-end-1{padding-inline-end:1rem}.height-51{height:51px}.bottom-left{position:absolute;left:5;bottom:0}html[dir=\"rtl\"] .bottom-left{position:absolute;right:5;bottom:0}.height-19{height:19px}.background{background-color:var(--calcite-ui-background)}.text-color{color:var(--calcite-ui-text-1)}.align-center{align-items:center}.danger-color{color:var(--calcite-ui-danger)}.esri-feature-table vaadin-grid{border:none !important}vaadin-grid-cell-content{padding:var(--lumo-space-xs) var(--lumo-space-m) !important;font-size:14px !important}";
|
103
103
|
|
104
104
|
const LayerTable = class {
|
105
105
|
constructor(hostRef) {
|
@@ -134,6 +134,7 @@ const LayerTable = class {
|
|
134
134
|
this.showNewestFirst = undefined;
|
135
135
|
this.zoomAndScrollToSelected = undefined;
|
136
136
|
this._confirmDelete = false;
|
137
|
+
this._controlsThatFit = undefined;
|
137
138
|
this._fetchingData = false;
|
138
139
|
this._isDeleting = false;
|
139
140
|
this._layer = undefined;
|
@@ -147,6 +148,22 @@ const LayerTable = class {
|
|
147
148
|
// Watch handlers
|
148
149
|
//
|
149
150
|
//--------------------------------------------------------------------------
|
151
|
+
/**
|
152
|
+
* watch for changes to the list of controls that will currently fit in the display
|
153
|
+
*/
|
154
|
+
_controlsThatFitWatchHandler() {
|
155
|
+
const ids = this._controlsThatFit ? this._controlsThatFit.reduce((prev, cur) => {
|
156
|
+
prev.push(cur.id);
|
157
|
+
return prev;
|
158
|
+
}, []) : [];
|
159
|
+
this._toolInfos = this._toolInfos.map(ti => {
|
160
|
+
if (ti && this._controlsThatFit) {
|
161
|
+
const id = this._getId(ti.icon);
|
162
|
+
ti.isOverflow = ids.indexOf(id) < 0;
|
163
|
+
return ti;
|
164
|
+
}
|
165
|
+
});
|
166
|
+
}
|
150
167
|
/**
|
151
168
|
* watch for changes in map view and get the first layer
|
152
169
|
*/
|
@@ -168,6 +185,12 @@ const LayerTable = class {
|
|
168
185
|
await this._resetTable();
|
169
186
|
this._fetchingData = false;
|
170
187
|
}
|
188
|
+
/**
|
189
|
+
* watch for selection changes
|
190
|
+
*/
|
191
|
+
async _selectedIndexesWatchHandler() {
|
192
|
+
this._validateEnabledActions();
|
193
|
+
}
|
171
194
|
/**
|
172
195
|
* When sortActive is false the user has not defined a sort and we should use the default sort
|
173
196
|
*/
|
@@ -205,8 +228,8 @@ const LayerTable = class {
|
|
205
228
|
* Refresh the table when edits are completed
|
206
229
|
*
|
207
230
|
*/
|
208
|
-
editsComplete() {
|
209
|
-
this._refresh();
|
231
|
+
async editsComplete() {
|
232
|
+
await this._refresh();
|
210
233
|
}
|
211
234
|
/**
|
212
235
|
* Refresh the table when edits are completed
|
@@ -230,6 +253,8 @@ const LayerTable = class {
|
|
230
253
|
async componentWillLoad() {
|
231
254
|
await this._getTranslations();
|
232
255
|
await this._initModules();
|
256
|
+
this._initToolInfos();
|
257
|
+
this._resizeObserver = new ResizeObserver(() => this._onResize());
|
233
258
|
}
|
234
259
|
/**
|
235
260
|
* Renders the component.
|
@@ -239,10 +264,22 @@ const LayerTable = class {
|
|
239
264
|
const loadingClass = this._fetchingData ? "" : "display-none";
|
240
265
|
const total = this._allIds.length.toString();
|
241
266
|
const selected = this._selectedIndexes.length.toString();
|
242
|
-
return (h(Host, null, h("calcite-shell", null, this._getTableControlRow("header"), h("div", { class: "height-full-adjusted width-full" }, h("calcite-panel", { class: "height-full width-full" }, h("calcite-loader", { class: loadingClass, label: this._translations.fetchingData, scale: "l" }), h("div", { class: tableNodeClass, ref: this.onTableNodeCreate })), h("div", { class: "bottom-left text-color" }, this._translations.recordsSelected
|
267
|
+
return (h(Host, null, h("calcite-shell", null, this._getTableControlRow("header"), h("div", { class: "height-full-adjusted width-full" }, h("calcite-panel", { class: "height-full width-full" }, h("calcite-loader", { class: loadingClass, label: this._translations.fetchingData, scale: "l" }), h("div", { class: tableNodeClass, ref: this.onTableNodeCreate })), h("div", { class: "bottom-left text-color height-19" }, this._translations.recordsSelected
|
243
268
|
.replace("{{total}}", total)
|
244
269
|
.replace("{{selected}}", selected)))), this._deleteMessage()));
|
245
270
|
}
|
271
|
+
/**
|
272
|
+
* Called once after the component is loaded
|
273
|
+
*/
|
274
|
+
async componentDidLoad() {
|
275
|
+
this._resizeObserver.observe(this._toolbar);
|
276
|
+
}
|
277
|
+
/**
|
278
|
+
* Called after the component is rendered
|
279
|
+
*/
|
280
|
+
componentDidRender() {
|
281
|
+
this._updateToolbar();
|
282
|
+
}
|
246
283
|
//--------------------------------------------------------------------------
|
247
284
|
//
|
248
285
|
// Functions (protected)
|
@@ -263,6 +300,14 @@ const LayerTable = class {
|
|
263
300
|
this.FeatureTable = FeatureTable;
|
264
301
|
this.reactiveUtils = reactiveUtils;
|
265
302
|
}
|
303
|
+
/**
|
304
|
+
* Update the toolbar when its size changes
|
305
|
+
*
|
306
|
+
* @returns void
|
307
|
+
*/
|
308
|
+
_onResize() {
|
309
|
+
this._updateToolbar();
|
310
|
+
}
|
266
311
|
/**
|
267
312
|
* Gets a row of controls that can be used for various interactions with the table
|
268
313
|
*
|
@@ -271,11 +316,261 @@ const LayerTable = class {
|
|
271
316
|
* @returns The dom node that contains the controls
|
272
317
|
*/
|
273
318
|
_getTableControlRow(slot) {
|
319
|
+
const id = "more-table-options";
|
320
|
+
return (h("div", { class: "display-flex border-bottom height-51", ref: (el) => this._toolbar = el, slot: slot }, this._getActionBar(), this._getDropdown(id), this._getToolTip("", "bottom", id, this._translations.moreOptions)));
|
321
|
+
}
|
322
|
+
/**
|
323
|
+
* Gets a row of controls that can be used for various interactions with the table
|
324
|
+
*
|
325
|
+
* @param slot string optional slot to display the control within
|
326
|
+
*
|
327
|
+
* @returns The dom node that contains the controls
|
328
|
+
*/
|
329
|
+
_getActionBar() {
|
330
|
+
return (h("calcite-action-bar", { expandDisabled: true, expanded: true, id: this._getId("bar"), layout: "horizontal" }, h("div", { class: "border-end", id: "solutions-map-layer-picker-container" }, h("map-layer-picker", { appearance: "transparent", mapView: this.mapView, onLayerSelectionChange: (evt) => this._layerSelectionChanged(evt), onlyShowUpdatableLayers: this.onlyShowUpdatableLayers, placeholderIcon: "layers", scale: "l", showTables: true, type: "dropdown" })), this._getActions()));
|
331
|
+
}
|
332
|
+
/**
|
333
|
+
* Get the actions that are used for various interactions with the table
|
334
|
+
*
|
335
|
+
* @returns VNode[] the action nodes
|
336
|
+
*/
|
337
|
+
_getActions() {
|
338
|
+
const actions = this._getActionItems();
|
339
|
+
return actions.reduce((prev, cur) => {
|
340
|
+
if (cur && !cur.isOverflow) {
|
341
|
+
prev.push(cur.isDanger ?
|
342
|
+
this._getDangerAction(cur.icon, cur.label, cur.func, cur.disabled) :
|
343
|
+
this._getAction(cur.icon, cur.label, cur.func, cur.disabled));
|
344
|
+
}
|
345
|
+
return prev;
|
346
|
+
}, []);
|
347
|
+
}
|
348
|
+
/**
|
349
|
+
* Update actions enabled prop based on number of selected indexes
|
350
|
+
*
|
351
|
+
* @returns void
|
352
|
+
*/
|
353
|
+
_validateEnabledActions() {
|
354
|
+
const featuresSelected = this._selectedIndexes.length > 0;
|
355
|
+
const selectionDependant = [
|
356
|
+
"zoom-to-object",
|
357
|
+
"trash",
|
358
|
+
"erase",
|
359
|
+
"selected-items-filter"
|
360
|
+
];
|
361
|
+
this._toolInfos.forEach(ti => {
|
362
|
+
if (ti && selectionDependant.indexOf(ti.icon) > -1) {
|
363
|
+
ti.disabled = !featuresSelected;
|
364
|
+
}
|
365
|
+
});
|
366
|
+
}
|
367
|
+
/**
|
368
|
+
* Get the full list of toolInfos.
|
369
|
+
* Order is important. They should be listed in the order they should display in the UI from
|
370
|
+
* Left to Right for the action bar and Top to Bottom for the dropdown.
|
371
|
+
*
|
372
|
+
* @returns void
|
373
|
+
*/
|
374
|
+
_initToolInfos() {
|
274
375
|
var _a;
|
275
376
|
const featuresSelected = this._selectedIndexes.length > 0;
|
276
|
-
|
277
|
-
|
278
|
-
|
377
|
+
this._toolInfos = [{
|
378
|
+
icon: "zoom-to-object",
|
379
|
+
label: this._translations.zoom,
|
380
|
+
func: () => this._zoom(),
|
381
|
+
disabled: !featuresSelected,
|
382
|
+
isOverflow: false
|
383
|
+
}, ((_a = this.mapInfo) === null || _a === void 0 ? void 0 : _a.filters) ? {
|
384
|
+
icon: "filter",
|
385
|
+
label: this._translations.filters,
|
386
|
+
func: () => this._filter(),
|
387
|
+
disabled: false,
|
388
|
+
isOverflow: false
|
389
|
+
} : undefined,
|
390
|
+
this._deleteEnabled ? {
|
391
|
+
icon: "trash",
|
392
|
+
label: this._translations.delete,
|
393
|
+
func: () => this._delete(),
|
394
|
+
disabled: !featuresSelected,
|
395
|
+
isDanger: true,
|
396
|
+
isOverflow: false
|
397
|
+
} : undefined, {
|
398
|
+
icon: "erase",
|
399
|
+
label: this._translations.clearSelection,
|
400
|
+
func: () => this._clearSelection(),
|
401
|
+
disabled: !featuresSelected,
|
402
|
+
isOverflow: false
|
403
|
+
}, {
|
404
|
+
icon: "selected-items-filter",
|
405
|
+
label: this._showOnlySelected ? this._translations.showAll : this._translations.showSelected,
|
406
|
+
func: () => this._toggleShowSelected(),
|
407
|
+
disabled: !featuresSelected,
|
408
|
+
isOverflow: false
|
409
|
+
}, {
|
410
|
+
icon: "list-check-all",
|
411
|
+
func: () => this._selectAll(),
|
412
|
+
label: this._translations.selectAll,
|
413
|
+
disabled: false,
|
414
|
+
isOverflow: true
|
415
|
+
}, {
|
416
|
+
icon: "compare",
|
417
|
+
func: () => this._switchSelected(),
|
418
|
+
label: this._translations.switchSelected,
|
419
|
+
disabled: false,
|
420
|
+
isOverflow: true
|
421
|
+
}, {
|
422
|
+
icon: "refresh",
|
423
|
+
func: () => this._refresh(),
|
424
|
+
label: this._translations.refresh,
|
425
|
+
disabled: false,
|
426
|
+
isOverflow: true
|
427
|
+
},
|
428
|
+
this.enableCSV ? {
|
429
|
+
icon: "export",
|
430
|
+
func: () => void this._exportToCSV(),
|
431
|
+
label: this._translations.exportCSV,
|
432
|
+
disabled: false,
|
433
|
+
isOverflow: true
|
434
|
+
} : undefined];
|
435
|
+
this._defaultVisibleToolSizeInfos = undefined;
|
436
|
+
}
|
437
|
+
/**
|
438
|
+
* Add/Remove tools from the action bar and dropdown based on available size
|
439
|
+
*
|
440
|
+
* @returns void
|
441
|
+
*/
|
442
|
+
_updateToolbar() {
|
443
|
+
if (this._timeout) {
|
444
|
+
clearTimeout(this._timeout);
|
445
|
+
}
|
446
|
+
this._timeout = setTimeout(() => {
|
447
|
+
clearTimeout(this._timeout);
|
448
|
+
this._setToolbarSizeInfos();
|
449
|
+
const toolbarWidth = this._toolbar.offsetWidth;
|
450
|
+
let controlsWidth = this._toolbarSizeInfos.reduce((prev, cur) => {
|
451
|
+
prev += cur.width;
|
452
|
+
return prev;
|
453
|
+
}, 0);
|
454
|
+
const skipControls = ["solutions-more", "solutions-map-layer-picker-container"];
|
455
|
+
if (controlsWidth > toolbarWidth) {
|
456
|
+
if (this._toolbarSizeInfos.length > 0) {
|
457
|
+
const controlsThatFit = [...this._toolbarSizeInfos].reverse().reduce((prev, cur) => {
|
458
|
+
if (skipControls.indexOf(cur.id) < 0) {
|
459
|
+
if (controlsWidth > toolbarWidth) {
|
460
|
+
controlsWidth -= cur.width;
|
461
|
+
}
|
462
|
+
else {
|
463
|
+
prev.push(cur);
|
464
|
+
}
|
465
|
+
}
|
466
|
+
return prev;
|
467
|
+
}, []).reverse();
|
468
|
+
this._setControlsThatFit(controlsThatFit, skipControls);
|
469
|
+
}
|
470
|
+
}
|
471
|
+
else {
|
472
|
+
if (this._defaultVisibleToolSizeInfos) {
|
473
|
+
const currentTools = this._toolbarSizeInfos.reduce((prev, cur) => {
|
474
|
+
prev.push(cur.id);
|
475
|
+
return prev;
|
476
|
+
}, []);
|
477
|
+
const controlsThatFit = [...this._defaultVisibleToolSizeInfos].reduce((prev, cur) => {
|
478
|
+
if (skipControls.indexOf(cur.id) < 0 &&
|
479
|
+
(currentTools.indexOf(cur.id) > -1 || (controlsWidth + cur.width) <= toolbarWidth)) {
|
480
|
+
if (currentTools.indexOf(cur.id) < 0) {
|
481
|
+
controlsWidth += cur.width;
|
482
|
+
}
|
483
|
+
prev.push(cur);
|
484
|
+
}
|
485
|
+
return prev;
|
486
|
+
}, []);
|
487
|
+
this._setControlsThatFit(controlsThatFit, skipControls);
|
488
|
+
}
|
489
|
+
}
|
490
|
+
}, 5);
|
491
|
+
}
|
492
|
+
/**
|
493
|
+
* Validate if controls that fit the current display has changed or
|
494
|
+
* is different from what is currently displayed
|
495
|
+
*
|
496
|
+
* @returns void
|
497
|
+
*/
|
498
|
+
_setControlsThatFit(controlsThatFit, skipControls) {
|
499
|
+
let update = JSON.stringify(controlsThatFit) !== JSON.stringify(this._controlsThatFit);
|
500
|
+
const actionbar = document.getElementById("solutions-action-bar");
|
501
|
+
actionbar.childNodes.forEach((n) => {
|
502
|
+
if (skipControls.indexOf(n.id) < 0 && !update) {
|
503
|
+
update = this._controlsThatFit.map(c => c.id).indexOf(n.id) < 0;
|
504
|
+
}
|
505
|
+
});
|
506
|
+
if (update) {
|
507
|
+
this._controlsThatFit = [...controlsThatFit];
|
508
|
+
}
|
509
|
+
}
|
510
|
+
/**
|
511
|
+
* Get the id and size for the toolbars current items
|
512
|
+
*
|
513
|
+
* @returns void
|
514
|
+
*/
|
515
|
+
_setToolbarSizeInfos() {
|
516
|
+
let hasWidth = false;
|
517
|
+
this._toolbarSizeInfos = [];
|
518
|
+
this._toolbar.childNodes.forEach((c, i) => {
|
519
|
+
// handle the action bar
|
520
|
+
if (i === 0) {
|
521
|
+
c.childNodes.forEach((actionbarChild) => {
|
522
|
+
this._toolbarSizeInfos.push({
|
523
|
+
id: actionbarChild.id,
|
524
|
+
width: actionbarChild.offsetWidth
|
525
|
+
});
|
526
|
+
if (!hasWidth) {
|
527
|
+
hasWidth = actionbarChild.offsetWidth > 0;
|
528
|
+
}
|
529
|
+
});
|
530
|
+
}
|
531
|
+
else if (!c.referenceElement) {
|
532
|
+
// skip tooltips
|
533
|
+
this._toolbarSizeInfos.push({
|
534
|
+
id: c.id,
|
535
|
+
width: c.offsetWidth
|
536
|
+
});
|
537
|
+
if (!hasWidth) {
|
538
|
+
hasWidth = c.offsetWidth > 0;
|
539
|
+
}
|
540
|
+
}
|
541
|
+
});
|
542
|
+
if (hasWidth && !this._defaultVisibleToolSizeInfos) {
|
543
|
+
this._defaultVisibleToolSizeInfos = [...this._toolbarSizeInfos];
|
544
|
+
}
|
545
|
+
}
|
546
|
+
/**
|
547
|
+
* Get a list of toolInfos that should display outside of the dropdown
|
548
|
+
*
|
549
|
+
* @returns IToolInfo[] the list of toolInfos that should not display in the overflow dropdown
|
550
|
+
*/
|
551
|
+
_getActionItems() {
|
552
|
+
return this._toolInfos.filter(toolInfo => toolInfo && !toolInfo.isOverflow);
|
553
|
+
}
|
554
|
+
/**
|
555
|
+
* Get a list of toolInfos that should display in the dropdown
|
556
|
+
*
|
557
|
+
* @param id string the id for the dropdown and its tooltip
|
558
|
+
*
|
559
|
+
* @returns VNode the dropdown node
|
560
|
+
*/
|
561
|
+
_getDropdown(id) {
|
562
|
+
const dropdownItems = this._getDropdownItems();
|
563
|
+
return (h("calcite-dropdown", { disabled: this._layer === undefined, id: "solutions-more" }, h("calcite-action", { appearance: "solid", id: id, label: "", slot: "trigger", text: "" }, h("calcite-button", { appearance: "transparent", iconEnd: "chevron-down", kind: "neutral" }, this._translations.more)), h("calcite-dropdown-group", { "selection-mode": "none" }, dropdownItems.map(item => {
|
564
|
+
return (h("calcite-dropdown-item", { iconStart: item.icon, onClick: item.func }, item.label));
|
565
|
+
}))));
|
566
|
+
}
|
567
|
+
/**
|
568
|
+
* Get a list of toolInfos that should display in the dropdown
|
569
|
+
*
|
570
|
+
* @returns IToolInfo[] the list of toolInfos that should display in the dropdown
|
571
|
+
*/
|
572
|
+
_getDropdownItems() {
|
573
|
+
return this._toolInfos.filter(toolInfo => toolInfo && toolInfo.isOverflow);
|
279
574
|
}
|
280
575
|
/**
|
281
576
|
* Get an action and tooltip
|
@@ -289,7 +584,30 @@ const LayerTable = class {
|
|
289
584
|
*/
|
290
585
|
_getAction(icon, label, func, disabled) {
|
291
586
|
const _disabled = this._layer === undefined ? true : disabled;
|
292
|
-
return (h("div", { class: "display-flex" }, h("calcite-action", { appearance: "solid", disabled: _disabled, icon: icon, id: icon, label: label, onClick: func, text: label, textEnabled: true }),
|
587
|
+
return (h("div", { class: "display-flex", id: this._getId(icon) }, h("calcite-action", { appearance: "solid", disabled: _disabled, icon: icon, id: icon, label: label, onClick: func, text: label, textEnabled: true }), this._getToolTip("", "bottom", icon, label)));
|
588
|
+
}
|
589
|
+
/**
|
590
|
+
* Get a tooltip
|
591
|
+
*
|
592
|
+
* @param label string accessible name for the component
|
593
|
+
* @param placement string where the tooltip should display
|
594
|
+
* @param referenceElement string the element the tooltip will be associated with
|
595
|
+
* @param text string the text to display in the tooltip
|
596
|
+
*
|
597
|
+
* @returns VNode The tooltip node
|
598
|
+
*/
|
599
|
+
_getToolTip(label, placement, referenceElement, text) {
|
600
|
+
return (h("calcite-tooltip", { label: label, placement: placement, "reference-element": referenceElement }, h("span", null, text)));
|
601
|
+
}
|
602
|
+
/**
|
603
|
+
* Get an id with a prefix to the user supplied value
|
604
|
+
*
|
605
|
+
* @param id the unique value for the id
|
606
|
+
*
|
607
|
+
* @returns the new id with the prefix value
|
608
|
+
*/
|
609
|
+
_getId(id) {
|
610
|
+
return `solutions-action-${id}`;
|
293
611
|
}
|
294
612
|
/**
|
295
613
|
* Get an action with danger color icon and text
|
@@ -303,7 +621,7 @@ const LayerTable = class {
|
|
303
621
|
*/
|
304
622
|
_getDangerAction(icon, label, func, disabled) {
|
305
623
|
const _disabled = this._layer === undefined ? true : disabled;
|
306
|
-
return (h("div", { class: "display-flex" }, h("calcite-action", { appearance: "solid", disabled: _disabled, id: icon, onClick: func, text: "" }, h("calcite-button", { appearance: "transparent", iconStart: icon, kind: "danger" }, label)),
|
624
|
+
return (h("div", { class: "display-flex", id: this._getId(icon) }, h("calcite-action", { appearance: "solid", disabled: _disabled, id: icon, onClick: func, text: "" }, h("calcite-button", { appearance: "transparent", iconStart: icon, kind: "danger" }, label)), this._getToolTip("", "bottom", icon, label)));
|
307
625
|
}
|
308
626
|
/**
|
309
627
|
* Initialize the FeatureTable
|
@@ -374,6 +692,7 @@ const LayerTable = class {
|
|
374
692
|
this._table.view = this.mapView;
|
375
693
|
this._checkEditEnabled();
|
376
694
|
this._table.editingEnabled = this._editEnabled && this.enableInlineEdit;
|
695
|
+
this._initToolInfos();
|
377
696
|
});
|
378
697
|
await this._table.when(() => {
|
379
698
|
this._table.clearSelectionFilter();
|
@@ -560,8 +879,9 @@ const LayerTable = class {
|
|
560
879
|
*
|
561
880
|
* @returns void
|
562
881
|
*/
|
563
|
-
_refresh() {
|
564
|
-
|
882
|
+
async _refresh() {
|
883
|
+
await this._table.refresh();
|
884
|
+
this.featureSelectionChange.emit(this._selectedIndexes);
|
565
885
|
}
|
566
886
|
/**
|
567
887
|
* Zoom to all selected features
|
@@ -659,8 +979,10 @@ const LayerTable = class {
|
|
659
979
|
}
|
660
980
|
get el() { return getElement(this); }
|
661
981
|
static get watchers() { return {
|
982
|
+
"_controlsThatFit": ["_controlsThatFitWatchHandler"],
|
662
983
|
"mapView": ["mapViewWatchHandler"],
|
663
984
|
"_layer": ["_layerWatchHandler"],
|
985
|
+
"_selectedIndexes": ["_selectedIndexesWatchHandler"],
|
664
986
|
"_sortActive": ["_sortActiveWatchHandler"]
|
665
987
|
}; }
|
666
988
|
};
|
@@ -704,7 +1026,6 @@ const MapCard = class {
|
|
704
1026
|
*/
|
705
1027
|
async componentWillLoad() {
|
706
1028
|
await this._initModules();
|
707
|
-
this.esriConfig.portalUrl = "https://holistic.mapsdevext.arcgis.com";
|
708
1029
|
}
|
709
1030
|
/**
|
710
1031
|
* Renders the component.
|
@@ -725,16 +1046,14 @@ const MapCard = class {
|
|
725
1046
|
* @protected
|
726
1047
|
*/
|
727
1048
|
async _initModules() {
|
728
|
-
const [WebMap, MapView, Home
|
1049
|
+
const [WebMap, MapView, Home] = await loadModules([
|
729
1050
|
"esri/WebMap",
|
730
1051
|
"esri/views/MapView",
|
731
|
-
"esri/widgets/Home"
|
732
|
-
"esri/config"
|
1052
|
+
"esri/widgets/Home"
|
733
1053
|
]);
|
734
1054
|
this.WebMap = WebMap;
|
735
1055
|
this.MapView = MapView;
|
736
1056
|
this.Home = Home;
|
737
|
-
this.esriConfig = esriConfig;
|
738
1057
|
}
|
739
1058
|
/**
|
740
1059
|
* Load the webmap for the provided webMapInfo
|
@@ -8,7 +8,7 @@ import { g as getLocaleComponentStrings } from './locale-6be4e8f0.js';
|
|
8
8
|
import { E as ELayoutMode } from './interfaces-7470d906.js';
|
9
9
|
import './_commonjsHelpers-d5f9d613.js';
|
10
10
|
|
11
|
-
const crowdsourceManagerCss = ":host{display:block;--calcite-label-margin-bottom:0px;--solutions-theme-foreground-color:var(--calcite-ui-foreground-1)}.padding-1-2{padding:0.5rem}.display-flex{display:flex}.width-full{width:100%}.width-1-2{position:relative;width:50%}.width-1-3{position:relative;width:33.33%}.width-2-3{position:relative;width:66.66%}.width-0{width:0}.height-full{height:100%}.height-1-2{position:relative;height:50%}.height-0{height:0}.toggle-node{width:51px;height:51px}.overflow-hidden{overflow:hidden}.flex-column{flex-direction:column}.border{border:1px solid var(--calcite-ui-border-3)}.border-bottom{border-bottom:1px solid var(--calcite-ui-border-3)}.border-sides{border-left:1px solid var(--calcite-ui-border-3);border-right:1px solid var(--calcite-ui-border-3)}.position-relative{position:relative}.height-50{height:50%}.adjusted-height-50{height:calc(50% - 25px)}.adjusted-height-100{height:calc(100% - 50px)}.adjusted-height-100-50{height:calc(100% - 50px)}.display-none{display:none}.height-53{height:53px}.position-absolute-53{position:absolute;top:53px}.display-grid{display:grid}.height-
|
11
|
+
const crowdsourceManagerCss = ":host{display:block;--calcite-label-margin-bottom:0px;--solutions-theme-foreground-color:var(--calcite-ui-foreground-1)}.padding-1-2{padding:0.5rem}.display-flex{display:flex}.width-full{width:100%}.width-1-2{position:relative;width:50%}.width-1-3{position:relative;width:33.33%}.width-2-3{position:relative;width:66.66%}.width-0{width:0}.height-full{height:100%}.height-1-2{position:relative;height:50%}.height-0{height:0}.toggle-node{width:51px;height:51px}.overflow-hidden{overflow:hidden}.flex-column{flex-direction:column}.border{border:1px solid var(--calcite-ui-border-3)}.border-bottom{border-bottom:1px solid var(--calcite-ui-border-3)}.border-sides{border-left:1px solid var(--calcite-ui-border-3);border-right:1px solid var(--calcite-ui-border-3)}.position-relative{position:relative}.height-50{height:50%}.adjusted-height-50{height:calc(50% - 25px)}.adjusted-height-100{height:calc(100% - 50px)}.adjusted-height-100-50{height:calc(100% - 50px)}.display-none{display:none}.height-53{height:53px}.position-absolute-53{position:absolute;top:53px}.display-grid{display:grid}.height-50-px{height:50px}.padding-inline-start-75{padding-inline-start:0.75rem}.align-items-center{align-items:center}.esri-floor-filter__close-levels-button{width:40px !important;height:40px !important}.esri-floor-filter__level-button{width:40px !important;height:40px !important}.esri-floor-filter__browse-button{width:40px !important;height:40px !important}";
|
12
12
|
|
13
13
|
const CrowdsourceManager = class {
|
14
14
|
constructor(hostRef) {
|
@@ -236,11 +236,11 @@ const CrowdsourceManager = class {
|
|
236
236
|
* @protected
|
237
237
|
*/
|
238
238
|
_getMapNode(layoutMode, hideMap) {
|
239
|
-
var _a, _b;
|
239
|
+
var _a, _b, _c;
|
240
240
|
const mapDisplayClass = this.classicGrid && layoutMode === ELayoutMode.GRID ? "display-flex height-full width-1-2" :
|
241
241
|
layoutMode === ELayoutMode.GRID && !hideMap ? "" : "display-none";
|
242
242
|
const mapContainerClass = this.classicGrid && layoutMode === ELayoutMode.GRID ? "width-full" : this._expandPopup ? "height-50-px" : "adjusted-height-50";
|
243
|
-
return (h("div", { class: `${mapContainerClass} overflow-hidden ${mapDisplayClass}` }, h("map-card", { basemapConfig: this.basemapConfig, class: "width-full", enableBasemap: this.enableBasemap, enableFloorFilter: this.enableFloorFilter && ((_b = (_a = this._mapView) === null || _a === void 0 ? void 0 : _a.map) === null || _b === void 0 ? void 0 : _b.floorInfo), enableFullscreen: this.enableFullscreen, enableLegend: this.enableLegend, enableSearch: this.enableSearch, mapInfos: this.mapInfos.filter(mapInfo => mapInfo.visible !== false) })));
|
243
|
+
return (h("div", { class: `${mapContainerClass} overflow-hidden ${mapDisplayClass}` }, h("map-card", { basemapConfig: this.basemapConfig, class: "width-full", enableBasemap: this.enableBasemap, enableFloorFilter: this.enableFloorFilter && ((_b = (_a = this._mapView) === null || _a === void 0 ? void 0 : _a.map) === null || _b === void 0 ? void 0 : _b.floorInfo), enableFullscreen: this.enableFullscreen, enableLegend: this.enableLegend, enableSearch: this.enableSearch, mapInfos: (_c = this.mapInfos) === null || _c === void 0 ? void 0 : _c.filter(mapInfo => mapInfo.visible !== false) })));
|
244
244
|
}
|
245
245
|
/**
|
246
246
|
* Get the expand node for the popup information
|
@@ -253,7 +253,7 @@ const CrowdsourceManager = class {
|
|
253
253
|
const id = "expand-popup";
|
254
254
|
const tooltip = this._expandPopup ? this._translations.collapsePopup : this._translations.expandPopup;
|
255
255
|
const themeClass = this.theme === "dark" ? "calcite-mode-dark" : "calcite-mode-light";
|
256
|
-
return (h("div", { class: "calcite-mode-dark height-full" }, h("calcite-panel", null, h("div", { class: "display-flex align-items-center", slot: "header-content" }, h("calcite-icon", { icon: "information", scale: "s" }), h("div", { class: "padding-inline-start-75" }, this._translations.information)), h("calcite-action", {
|
256
|
+
return (h("div", { class: "calcite-mode-dark height-full" }, h("calcite-panel", null, h("div", { class: "display-flex align-items-center", slot: "header-content" }, h("calcite-icon", { icon: "information", scale: "s" }), h("div", { class: "padding-inline-start-75" }, this._translations.information)), h("calcite-action", { icon: icon, id: id, onClick: () => this._togglePopup(), slot: "header-actions-end" }), h("calcite-tooltip", { class: themeClass, label: "", placement: "bottom", "reference-element": id }, h("span", null, tooltip)), this._getCardNode())));
|
257
257
|
}
|
258
258
|
/**
|
259
259
|
* Toggle the popup information
|