@esri/solutions-components 0.6.28 → 0.6.29
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/cjs/basemap-gallery_7.cjs.entry.js +2 -2
- package/dist/cjs/calcite-combobox_6.cjs.entry.js +2 -2
- package/dist/cjs/card-manager_3.cjs.entry.js +333 -11
- 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/layer-table/layer-table.css +6 -2
- package/dist/collection/components/layer-table/layer-table.js +337 -10
- package/dist/collection/components/map-layer-picker/map-layer-picker.js +2 -2
- 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/layer-table2.js +336 -11
- package/dist/components/map-layer-picker2.js +2 -2
- package/dist/esm/basemap-gallery_7.entry.js +2 -2
- package/dist/esm/calcite-combobox_6.entry.js +2 -2
- package/dist/esm/card-manager_3.entry.js +333 -11
- package/dist/esm/crowdsource-manager.entry.js +4 -4
- package/dist/esm/loader.js +1 -1
- package/dist/esm/solutions-components.js +1 -1
- 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/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/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-cd7873ae.entry.js +0 -6
- package/dist/solutions-components/p-ea238bbc.entry.js +0 -6
@@ -93,9 +93,9 @@ const BasemapGallery = class {
|
|
93
93
|
}
|
94
94
|
const source = new this.PortalBasemapsSource({
|
95
95
|
query: ((_a = this.basemapConfig) === null || _a === void 0 ? void 0 : _a.basemapGroupId) ? `id:${this.basemapConfig.basemapGroupId}` : null,
|
96
|
-
filterFunction: (basemap) => {
|
96
|
+
filterFunction: this.basemapConfig ? (basemap) => {
|
97
97
|
return !this.basemapConfig.basemapIdsToFilter.includes(basemap.portalItem.id);
|
98
|
-
}
|
98
|
+
} : () => true
|
99
99
|
});
|
100
100
|
await source.refresh();
|
101
101
|
this.basemapWidget = new this.BasemapGallery({
|
@@ -1870,8 +1870,8 @@ const MapLayerPicker = class {
|
|
1870
1870
|
const mapTableIds = this.showTables ? this.onlyShowUpdatableLayers ?
|
1871
1871
|
this._getEditableIds(this._tableNameHash) : Object.keys(this._tableNameHash) : [];
|
1872
1872
|
this.ids = [
|
1873
|
-
...mapLayerIds.filter(n => { var _a; return ((_a = this.enabledLayerIds) === null || _a === void 0 ? void 0 : _a.length) > 0 ? this.enabledLayerIds.indexOf(n) > -1 : true; }),
|
1874
|
-
...mapTableIds.filter(n => { var _a; return ((_a = this.enabledTableIds) === null || _a === void 0 ? void 0 : _a.length) > 0 ? this.enabledTableIds.indexOf(n) > -1 : true; }),
|
1873
|
+
...mapLayerIds.reverse().filter(n => { var _a; return ((_a = this.enabledLayerIds) === null || _a === void 0 ? void 0 : _a.length) > 0 ? this.enabledLayerIds.reverse().indexOf(n) > -1 : true; }),
|
1874
|
+
...mapTableIds.reverse().filter(n => { var _a; return ((_a = this.enabledTableIds) === null || _a === void 0 ? void 0 : _a.length) > 0 ? this.enabledTableIds.reverse().indexOf(n) > -1 : true; }),
|
1875
1875
|
];
|
1876
1876
|
}
|
1877
1877
|
}
|
@@ -103,7 +103,7 @@ const CardManager = class {
|
|
103
103
|
};
|
104
104
|
CardManager.style = cardManagerCss;
|
105
105
|
|
106
|
-
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:
|
106
|
+
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}";
|
107
107
|
|
108
108
|
const LayerTable = class {
|
109
109
|
constructor(hostRef) {
|
@@ -138,6 +138,7 @@ const LayerTable = class {
|
|
138
138
|
this.showNewestFirst = undefined;
|
139
139
|
this.zoomAndScrollToSelected = undefined;
|
140
140
|
this._confirmDelete = false;
|
141
|
+
this._controlsThatFit = undefined;
|
141
142
|
this._fetchingData = false;
|
142
143
|
this._isDeleting = false;
|
143
144
|
this._layer = undefined;
|
@@ -151,6 +152,22 @@ const LayerTable = class {
|
|
151
152
|
// Watch handlers
|
152
153
|
//
|
153
154
|
//--------------------------------------------------------------------------
|
155
|
+
/**
|
156
|
+
* watch for changes to the list of controls that will currently fit in the display
|
157
|
+
*/
|
158
|
+
_controlsThatFitWatchHandler() {
|
159
|
+
const ids = this._controlsThatFit ? this._controlsThatFit.reduce((prev, cur) => {
|
160
|
+
prev.push(cur.id);
|
161
|
+
return prev;
|
162
|
+
}, []) : [];
|
163
|
+
this._toolInfos = this._toolInfos.map(ti => {
|
164
|
+
if (ti && this._controlsThatFit) {
|
165
|
+
const id = this._getId(ti.icon);
|
166
|
+
ti.isOverflow = ids.indexOf(id) < 0;
|
167
|
+
return ti;
|
168
|
+
}
|
169
|
+
});
|
170
|
+
}
|
154
171
|
/**
|
155
172
|
* watch for changes in map view and get the first layer
|
156
173
|
*/
|
@@ -172,6 +189,12 @@ const LayerTable = class {
|
|
172
189
|
await this._resetTable();
|
173
190
|
this._fetchingData = false;
|
174
191
|
}
|
192
|
+
/**
|
193
|
+
* watch for selection changes
|
194
|
+
*/
|
195
|
+
async _selectedIndexesWatchHandler() {
|
196
|
+
this._validateEnabledActions();
|
197
|
+
}
|
175
198
|
/**
|
176
199
|
* When sortActive is false the user has not defined a sort and we should use the default sort
|
177
200
|
*/
|
@@ -209,8 +232,8 @@ const LayerTable = class {
|
|
209
232
|
* Refresh the table when edits are completed
|
210
233
|
*
|
211
234
|
*/
|
212
|
-
editsComplete() {
|
213
|
-
this._refresh();
|
235
|
+
async editsComplete() {
|
236
|
+
await this._refresh();
|
214
237
|
}
|
215
238
|
/**
|
216
239
|
* Refresh the table when edits are completed
|
@@ -234,6 +257,8 @@ const LayerTable = class {
|
|
234
257
|
async componentWillLoad() {
|
235
258
|
await this._getTranslations();
|
236
259
|
await this._initModules();
|
260
|
+
this._initToolInfos();
|
261
|
+
this._resizeObserver = new ResizeObserver(() => this._onResize());
|
237
262
|
}
|
238
263
|
/**
|
239
264
|
* Renders the component.
|
@@ -243,10 +268,22 @@ const LayerTable = class {
|
|
243
268
|
const loadingClass = this._fetchingData ? "" : "display-none";
|
244
269
|
const total = this._allIds.length.toString();
|
245
270
|
const selected = this._selectedIndexes.length.toString();
|
246
|
-
return (index.h(index.Host, null, index.h("calcite-shell", null, this._getTableControlRow("header"), index.h("div", { class: "height-full-adjusted width-full" }, index.h("calcite-panel", { class: "height-full width-full" }, index.h("calcite-loader", { class: loadingClass, label: this._translations.fetchingData, scale: "l" }), index.h("div", { class: tableNodeClass, ref: this.onTableNodeCreate })), index.h("div", { class: "bottom-left text-color" }, this._translations.recordsSelected
|
271
|
+
return (index.h(index.Host, null, index.h("calcite-shell", null, this._getTableControlRow("header"), index.h("div", { class: "height-full-adjusted width-full" }, index.h("calcite-panel", { class: "height-full width-full" }, index.h("calcite-loader", { class: loadingClass, label: this._translations.fetchingData, scale: "l" }), index.h("div", { class: tableNodeClass, ref: this.onTableNodeCreate })), index.h("div", { class: "bottom-left text-color height-19" }, this._translations.recordsSelected
|
247
272
|
.replace("{{total}}", total)
|
248
273
|
.replace("{{selected}}", selected)))), this._deleteMessage()));
|
249
274
|
}
|
275
|
+
/**
|
276
|
+
* Called once after the component is loaded
|
277
|
+
*/
|
278
|
+
async componentDidLoad() {
|
279
|
+
this._resizeObserver.observe(this._toolbar);
|
280
|
+
}
|
281
|
+
/**
|
282
|
+
* Called after the component is rendered
|
283
|
+
*/
|
284
|
+
componentDidRender() {
|
285
|
+
this._updateToolbar();
|
286
|
+
}
|
250
287
|
//--------------------------------------------------------------------------
|
251
288
|
//
|
252
289
|
// Functions (protected)
|
@@ -267,6 +304,14 @@ const LayerTable = class {
|
|
267
304
|
this.FeatureTable = FeatureTable;
|
268
305
|
this.reactiveUtils = reactiveUtils;
|
269
306
|
}
|
307
|
+
/**
|
308
|
+
* Update the toolbar when its size changes
|
309
|
+
*
|
310
|
+
* @returns void
|
311
|
+
*/
|
312
|
+
_onResize() {
|
313
|
+
this._updateToolbar();
|
314
|
+
}
|
270
315
|
/**
|
271
316
|
* Gets a row of controls that can be used for various interactions with the table
|
272
317
|
*
|
@@ -275,11 +320,261 @@ const LayerTable = class {
|
|
275
320
|
* @returns The dom node that contains the controls
|
276
321
|
*/
|
277
322
|
_getTableControlRow(slot) {
|
323
|
+
const id = "more-table-options";
|
324
|
+
return (index.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)));
|
325
|
+
}
|
326
|
+
/**
|
327
|
+
* Gets a row of controls that can be used for various interactions with the table
|
328
|
+
*
|
329
|
+
* @param slot string optional slot to display the control within
|
330
|
+
*
|
331
|
+
* @returns The dom node that contains the controls
|
332
|
+
*/
|
333
|
+
_getActionBar() {
|
334
|
+
return (index.h("calcite-action-bar", { expandDisabled: true, expanded: true, id: this._getId("bar"), layout: "horizontal" }, index.h("div", { class: "border-end", id: "solutions-map-layer-picker-container" }, index.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()));
|
335
|
+
}
|
336
|
+
/**
|
337
|
+
* Get the actions that are used for various interactions with the table
|
338
|
+
*
|
339
|
+
* @returns VNode[] the action nodes
|
340
|
+
*/
|
341
|
+
_getActions() {
|
342
|
+
const actions = this._getActionItems();
|
343
|
+
return actions.reduce((prev, cur) => {
|
344
|
+
if (cur && !cur.isOverflow) {
|
345
|
+
prev.push(cur.isDanger ?
|
346
|
+
this._getDangerAction(cur.icon, cur.label, cur.func, cur.disabled) :
|
347
|
+
this._getAction(cur.icon, cur.label, cur.func, cur.disabled));
|
348
|
+
}
|
349
|
+
return prev;
|
350
|
+
}, []);
|
351
|
+
}
|
352
|
+
/**
|
353
|
+
* Update actions enabled prop based on number of selected indexes
|
354
|
+
*
|
355
|
+
* @returns void
|
356
|
+
*/
|
357
|
+
_validateEnabledActions() {
|
358
|
+
const featuresSelected = this._selectedIndexes.length > 0;
|
359
|
+
const selectionDependant = [
|
360
|
+
"zoom-to-object",
|
361
|
+
"trash",
|
362
|
+
"erase",
|
363
|
+
"selected-items-filter"
|
364
|
+
];
|
365
|
+
this._toolInfos.forEach(ti => {
|
366
|
+
if (ti && selectionDependant.indexOf(ti.icon) > -1) {
|
367
|
+
ti.disabled = !featuresSelected;
|
368
|
+
}
|
369
|
+
});
|
370
|
+
}
|
371
|
+
/**
|
372
|
+
* Get the full list of toolInfos.
|
373
|
+
* Order is important. They should be listed in the order they should display in the UI from
|
374
|
+
* Left to Right for the action bar and Top to Bottom for the dropdown.
|
375
|
+
*
|
376
|
+
* @returns void
|
377
|
+
*/
|
378
|
+
_initToolInfos() {
|
278
379
|
var _a;
|
279
380
|
const featuresSelected = this._selectedIndexes.length > 0;
|
280
|
-
|
281
|
-
|
282
|
-
|
381
|
+
this._toolInfos = [{
|
382
|
+
icon: "zoom-to-object",
|
383
|
+
label: this._translations.zoom,
|
384
|
+
func: () => this._zoom(),
|
385
|
+
disabled: !featuresSelected,
|
386
|
+
isOverflow: false
|
387
|
+
}, ((_a = this.mapInfo) === null || _a === void 0 ? void 0 : _a.filters) ? {
|
388
|
+
icon: "filter",
|
389
|
+
label: this._translations.filters,
|
390
|
+
func: () => this._filter(),
|
391
|
+
disabled: false,
|
392
|
+
isOverflow: false
|
393
|
+
} : undefined,
|
394
|
+
this._deleteEnabled ? {
|
395
|
+
icon: "trash",
|
396
|
+
label: this._translations.delete,
|
397
|
+
func: () => this._delete(),
|
398
|
+
disabled: !featuresSelected,
|
399
|
+
isDanger: true,
|
400
|
+
isOverflow: false
|
401
|
+
} : undefined, {
|
402
|
+
icon: "erase",
|
403
|
+
label: this._translations.clearSelection,
|
404
|
+
func: () => this._clearSelection(),
|
405
|
+
disabled: !featuresSelected,
|
406
|
+
isOverflow: false
|
407
|
+
}, {
|
408
|
+
icon: "selected-items-filter",
|
409
|
+
label: this._showOnlySelected ? this._translations.showAll : this._translations.showSelected,
|
410
|
+
func: () => this._toggleShowSelected(),
|
411
|
+
disabled: !featuresSelected,
|
412
|
+
isOverflow: false
|
413
|
+
}, {
|
414
|
+
icon: "list-check-all",
|
415
|
+
func: () => this._selectAll(),
|
416
|
+
label: this._translations.selectAll,
|
417
|
+
disabled: false,
|
418
|
+
isOverflow: true
|
419
|
+
}, {
|
420
|
+
icon: "compare",
|
421
|
+
func: () => this._switchSelected(),
|
422
|
+
label: this._translations.switchSelected,
|
423
|
+
disabled: false,
|
424
|
+
isOverflow: true
|
425
|
+
}, {
|
426
|
+
icon: "refresh",
|
427
|
+
func: () => this._refresh(),
|
428
|
+
label: this._translations.refresh,
|
429
|
+
disabled: false,
|
430
|
+
isOverflow: true
|
431
|
+
},
|
432
|
+
this.enableCSV ? {
|
433
|
+
icon: "export",
|
434
|
+
func: () => void this._exportToCSV(),
|
435
|
+
label: this._translations.exportCSV,
|
436
|
+
disabled: false,
|
437
|
+
isOverflow: true
|
438
|
+
} : undefined];
|
439
|
+
this._defaultVisibleToolSizeInfos = undefined;
|
440
|
+
}
|
441
|
+
/**
|
442
|
+
* Add/Remove tools from the action bar and dropdown based on available size
|
443
|
+
*
|
444
|
+
* @returns void
|
445
|
+
*/
|
446
|
+
_updateToolbar() {
|
447
|
+
if (this._timeout) {
|
448
|
+
clearTimeout(this._timeout);
|
449
|
+
}
|
450
|
+
this._timeout = setTimeout(() => {
|
451
|
+
clearTimeout(this._timeout);
|
452
|
+
this._setToolbarSizeInfos();
|
453
|
+
const toolbarWidth = this._toolbar.offsetWidth;
|
454
|
+
let controlsWidth = this._toolbarSizeInfos.reduce((prev, cur) => {
|
455
|
+
prev += cur.width;
|
456
|
+
return prev;
|
457
|
+
}, 0);
|
458
|
+
const skipControls = ["solutions-more", "solutions-map-layer-picker-container"];
|
459
|
+
if (controlsWidth > toolbarWidth) {
|
460
|
+
if (this._toolbarSizeInfos.length > 0) {
|
461
|
+
const controlsThatFit = [...this._toolbarSizeInfos].reverse().reduce((prev, cur) => {
|
462
|
+
if (skipControls.indexOf(cur.id) < 0) {
|
463
|
+
if (controlsWidth > toolbarWidth) {
|
464
|
+
controlsWidth -= cur.width;
|
465
|
+
}
|
466
|
+
else {
|
467
|
+
prev.push(cur);
|
468
|
+
}
|
469
|
+
}
|
470
|
+
return prev;
|
471
|
+
}, []).reverse();
|
472
|
+
this._setControlsThatFit(controlsThatFit, skipControls);
|
473
|
+
}
|
474
|
+
}
|
475
|
+
else {
|
476
|
+
if (this._defaultVisibleToolSizeInfos) {
|
477
|
+
const currentTools = this._toolbarSizeInfos.reduce((prev, cur) => {
|
478
|
+
prev.push(cur.id);
|
479
|
+
return prev;
|
480
|
+
}, []);
|
481
|
+
const controlsThatFit = [...this._defaultVisibleToolSizeInfos].reduce((prev, cur) => {
|
482
|
+
if (skipControls.indexOf(cur.id) < 0 &&
|
483
|
+
(currentTools.indexOf(cur.id) > -1 || (controlsWidth + cur.width) <= toolbarWidth)) {
|
484
|
+
if (currentTools.indexOf(cur.id) < 0) {
|
485
|
+
controlsWidth += cur.width;
|
486
|
+
}
|
487
|
+
prev.push(cur);
|
488
|
+
}
|
489
|
+
return prev;
|
490
|
+
}, []);
|
491
|
+
this._setControlsThatFit(controlsThatFit, skipControls);
|
492
|
+
}
|
493
|
+
}
|
494
|
+
}, 5);
|
495
|
+
}
|
496
|
+
/**
|
497
|
+
* Validate if controls that fit the current display has changed or
|
498
|
+
* is different from what is currently displayed
|
499
|
+
*
|
500
|
+
* @returns void
|
501
|
+
*/
|
502
|
+
_setControlsThatFit(controlsThatFit, skipControls) {
|
503
|
+
let update = JSON.stringify(controlsThatFit) !== JSON.stringify(this._controlsThatFit);
|
504
|
+
const actionbar = document.getElementById("solutions-action-bar");
|
505
|
+
actionbar.childNodes.forEach((n) => {
|
506
|
+
if (skipControls.indexOf(n.id) < 0 && !update) {
|
507
|
+
update = this._controlsThatFit.map(c => c.id).indexOf(n.id) < 0;
|
508
|
+
}
|
509
|
+
});
|
510
|
+
if (update) {
|
511
|
+
this._controlsThatFit = [...controlsThatFit];
|
512
|
+
}
|
513
|
+
}
|
514
|
+
/**
|
515
|
+
* Get the id and size for the toolbars current items
|
516
|
+
*
|
517
|
+
* @returns void
|
518
|
+
*/
|
519
|
+
_setToolbarSizeInfos() {
|
520
|
+
let hasWidth = false;
|
521
|
+
this._toolbarSizeInfos = [];
|
522
|
+
this._toolbar.childNodes.forEach((c, i) => {
|
523
|
+
// handle the action bar
|
524
|
+
if (i === 0) {
|
525
|
+
c.childNodes.forEach((actionbarChild) => {
|
526
|
+
this._toolbarSizeInfos.push({
|
527
|
+
id: actionbarChild.id,
|
528
|
+
width: actionbarChild.offsetWidth
|
529
|
+
});
|
530
|
+
if (!hasWidth) {
|
531
|
+
hasWidth = actionbarChild.offsetWidth > 0;
|
532
|
+
}
|
533
|
+
});
|
534
|
+
}
|
535
|
+
else if (!c.referenceElement) {
|
536
|
+
// skip tooltips
|
537
|
+
this._toolbarSizeInfos.push({
|
538
|
+
id: c.id,
|
539
|
+
width: c.offsetWidth
|
540
|
+
});
|
541
|
+
if (!hasWidth) {
|
542
|
+
hasWidth = c.offsetWidth > 0;
|
543
|
+
}
|
544
|
+
}
|
545
|
+
});
|
546
|
+
if (hasWidth && !this._defaultVisibleToolSizeInfos) {
|
547
|
+
this._defaultVisibleToolSizeInfos = [...this._toolbarSizeInfos];
|
548
|
+
}
|
549
|
+
}
|
550
|
+
/**
|
551
|
+
* Get a list of toolInfos that should display outside of the dropdown
|
552
|
+
*
|
553
|
+
* @returns IToolInfo[] the list of toolInfos that should not display in the overflow dropdown
|
554
|
+
*/
|
555
|
+
_getActionItems() {
|
556
|
+
return this._toolInfos.filter(toolInfo => toolInfo && !toolInfo.isOverflow);
|
557
|
+
}
|
558
|
+
/**
|
559
|
+
* Get a list of toolInfos that should display in the dropdown
|
560
|
+
*
|
561
|
+
* @param id string the id for the dropdown and its tooltip
|
562
|
+
*
|
563
|
+
* @returns VNode the dropdown node
|
564
|
+
*/
|
565
|
+
_getDropdown(id) {
|
566
|
+
const dropdownItems = this._getDropdownItems();
|
567
|
+
return (index.h("calcite-dropdown", { disabled: this._layer === undefined, id: "solutions-more" }, index.h("calcite-action", { appearance: "solid", id: id, label: "", slot: "trigger", text: "" }, index.h("calcite-button", { appearance: "transparent", iconEnd: "chevron-down", kind: "neutral" }, this._translations.more)), index.h("calcite-dropdown-group", { "selection-mode": "none" }, dropdownItems.map(item => {
|
568
|
+
return (index.h("calcite-dropdown-item", { iconStart: item.icon, onClick: item.func }, item.label));
|
569
|
+
}))));
|
570
|
+
}
|
571
|
+
/**
|
572
|
+
* Get a list of toolInfos that should display in the dropdown
|
573
|
+
*
|
574
|
+
* @returns IToolInfo[] the list of toolInfos that should display in the dropdown
|
575
|
+
*/
|
576
|
+
_getDropdownItems() {
|
577
|
+
return this._toolInfos.filter(toolInfo => toolInfo && toolInfo.isOverflow);
|
283
578
|
}
|
284
579
|
/**
|
285
580
|
* Get an action and tooltip
|
@@ -293,7 +588,30 @@ const LayerTable = class {
|
|
293
588
|
*/
|
294
589
|
_getAction(icon, label, func, disabled) {
|
295
590
|
const _disabled = this._layer === undefined ? true : disabled;
|
296
|
-
return (index.h("div", { class: "display-flex" }, index.h("calcite-action", { appearance: "solid", disabled: _disabled, icon: icon, id: icon, label: label, onClick: func, text: label, textEnabled: true }),
|
591
|
+
return (index.h("div", { class: "display-flex", id: this._getId(icon) }, index.h("calcite-action", { appearance: "solid", disabled: _disabled, icon: icon, id: icon, label: label, onClick: func, text: label, textEnabled: true }), this._getToolTip("", "bottom", icon, label)));
|
592
|
+
}
|
593
|
+
/**
|
594
|
+
* Get a tooltip
|
595
|
+
*
|
596
|
+
* @param label string accessible name for the component
|
597
|
+
* @param placement string where the tooltip should display
|
598
|
+
* @param referenceElement string the element the tooltip will be associated with
|
599
|
+
* @param text string the text to display in the tooltip
|
600
|
+
*
|
601
|
+
* @returns VNode The tooltip node
|
602
|
+
*/
|
603
|
+
_getToolTip(label, placement, referenceElement, text) {
|
604
|
+
return (index.h("calcite-tooltip", { label: label, placement: placement, "reference-element": referenceElement }, index.h("span", null, text)));
|
605
|
+
}
|
606
|
+
/**
|
607
|
+
* Get an id with a prefix to the user supplied value
|
608
|
+
*
|
609
|
+
* @param id the unique value for the id
|
610
|
+
*
|
611
|
+
* @returns the new id with the prefix value
|
612
|
+
*/
|
613
|
+
_getId(id) {
|
614
|
+
return `solutions-action-${id}`;
|
297
615
|
}
|
298
616
|
/**
|
299
617
|
* Get an action with danger color icon and text
|
@@ -307,7 +625,7 @@ const LayerTable = class {
|
|
307
625
|
*/
|
308
626
|
_getDangerAction(icon, label, func, disabled) {
|
309
627
|
const _disabled = this._layer === undefined ? true : disabled;
|
310
|
-
return (index.h("div", { class: "display-flex" }, index.h("calcite-action", { appearance: "solid", disabled: _disabled, id: icon, onClick: func, text: "" }, index.h("calcite-button", { appearance: "transparent", iconStart: icon, kind: "danger" }, label)),
|
628
|
+
return (index.h("div", { class: "display-flex", id: this._getId(icon) }, index.h("calcite-action", { appearance: "solid", disabled: _disabled, id: icon, onClick: func, text: "" }, index.h("calcite-button", { appearance: "transparent", iconStart: icon, kind: "danger" }, label)), this._getToolTip("", "bottom", icon, label)));
|
311
629
|
}
|
312
630
|
/**
|
313
631
|
* Initialize the FeatureTable
|
@@ -378,6 +696,7 @@ const LayerTable = class {
|
|
378
696
|
this._table.view = this.mapView;
|
379
697
|
this._checkEditEnabled();
|
380
698
|
this._table.editingEnabled = this._editEnabled && this.enableInlineEdit;
|
699
|
+
this._initToolInfos();
|
381
700
|
});
|
382
701
|
await this._table.when(() => {
|
383
702
|
this._table.clearSelectionFilter();
|
@@ -564,8 +883,9 @@ const LayerTable = class {
|
|
564
883
|
*
|
565
884
|
* @returns void
|
566
885
|
*/
|
567
|
-
_refresh() {
|
568
|
-
|
886
|
+
async _refresh() {
|
887
|
+
await this._table.refresh();
|
888
|
+
this.featureSelectionChange.emit(this._selectedIndexes);
|
569
889
|
}
|
570
890
|
/**
|
571
891
|
* Zoom to all selected features
|
@@ -663,8 +983,10 @@ const LayerTable = class {
|
|
663
983
|
}
|
664
984
|
get el() { return index.getElement(this); }
|
665
985
|
static get watchers() { return {
|
986
|
+
"_controlsThatFit": ["_controlsThatFitWatchHandler"],
|
666
987
|
"mapView": ["mapViewWatchHandler"],
|
667
988
|
"_layer": ["_layerWatchHandler"],
|
989
|
+
"_selectedIndexes": ["_selectedIndexesWatchHandler"],
|
668
990
|
"_sortActive": ["_sortActiveWatchHandler"]
|
669
991
|
}; }
|
670
992
|
};
|
@@ -12,7 +12,7 @@ const locale = require('./locale-d50f3250.js');
|
|
12
12
|
const interfaces = require('./interfaces-000be6de.js');
|
13
13
|
require('./_commonjsHelpers-384729db.js');
|
14
14
|
|
15
|
-
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-
|
15
|
+
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}";
|
16
16
|
|
17
17
|
const CrowdsourceManager = class {
|
18
18
|
constructor(hostRef) {
|
@@ -240,11 +240,11 @@ const CrowdsourceManager = class {
|
|
240
240
|
* @protected
|
241
241
|
*/
|
242
242
|
_getMapNode(layoutMode, hideMap) {
|
243
|
-
var _a, _b;
|
243
|
+
var _a, _b, _c;
|
244
244
|
const mapDisplayClass = this.classicGrid && layoutMode === interfaces.ELayoutMode.GRID ? "display-flex height-full width-1-2" :
|
245
245
|
layoutMode === interfaces.ELayoutMode.GRID && !hideMap ? "" : "display-none";
|
246
246
|
const mapContainerClass = this.classicGrid && layoutMode === interfaces.ELayoutMode.GRID ? "width-full" : this._expandPopup ? "height-50-px" : "adjusted-height-50";
|
247
|
-
return (index.h("div", { class: `${mapContainerClass} overflow-hidden ${mapDisplayClass}` }, index.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) })));
|
247
|
+
return (index.h("div", { class: `${mapContainerClass} overflow-hidden ${mapDisplayClass}` }, index.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) })));
|
248
248
|
}
|
249
249
|
/**
|
250
250
|
* Get the expand node for the popup information
|
@@ -257,7 +257,7 @@ const CrowdsourceManager = class {
|
|
257
257
|
const id = "expand-popup";
|
258
258
|
const tooltip = this._expandPopup ? this._translations.collapsePopup : this._translations.expandPopup;
|
259
259
|
const themeClass = this.theme === "dark" ? "calcite-mode-dark" : "calcite-mode-light";
|
260
|
-
return (index.h("div", { class: "calcite-mode-dark height-full" }, index.h("calcite-panel", null, index.h("div", { class: "display-flex align-items-center", slot: "header-content" }, index.h("calcite-icon", { icon: "information", scale: "s" }), index.h("div", { class: "padding-inline-start-75" }, this._translations.information)), index.h("calcite-action", {
|
260
|
+
return (index.h("div", { class: "calcite-mode-dark height-full" }, index.h("calcite-panel", null, index.h("div", { class: "display-flex align-items-center", slot: "header-content" }, index.h("calcite-icon", { icon: "information", scale: "s" }), index.h("div", { class: "padding-inline-start-75" }, this._translations.information)), index.h("calcite-action", { icon: icon, id: id, onClick: () => this._togglePopup(), slot: "header-actions-end" }), index.h("calcite-tooltip", { class: themeClass, label: "", placement: "bottom", "reference-element": id }, index.h("span", null, tooltip)), this._getCardNode())));
|
261
261
|
}
|
262
262
|
/**
|
263
263
|
* Toggle the popup information
|