@igo2/context 21.0.0-next.1 → 21.0.0-next.11
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/fesm2022/igo2-context.mjs +335 -462
- package/fesm2022/igo2-context.mjs.map +1 -1
- package/package.json +6 -6
- package/types/igo2-context.d.ts +165 -185
|
@@ -25,7 +25,7 @@ import { HttpParams, HttpClient } from '@angular/common/http';
|
|
|
25
25
|
import { AuthService } from '@igo2/auth';
|
|
26
26
|
import { RouteService } from '@igo2/core/route';
|
|
27
27
|
import { StorageService } from '@igo2/core/storage';
|
|
28
|
-
import { QueryFormat, isLayerGroupOptions, ID_GROUP_PREFIX, isLayerGroup, isLayerItem, getLayerOptionIdentifier, findParentId, generateIdFromSourceOptions, ExportService, FeatureDataSource,
|
|
28
|
+
import { QueryFormat, isLayerGroupOptions, ID_GROUP_PREFIX, isLayerGroup, isLayerItem, getLayerOptionIdentifier, findParentId, generateIdFromSourceOptions, ExportService, FeatureDataSource, VectorLayer, randomOlFlatStyle, MapBrowserComponent, LayerService, sortLayersByZindex, mergeLayersOptions, MapService, isLayerItemOptions, moveToOlFeatures, FeatureMotion, FeatureDetailsComponent } from '@igo2/geo';
|
|
29
29
|
import { ObjectUtils, uuid, downloadContent } from '@igo2/utils';
|
|
30
30
|
import GeoJSON from 'ol/format/GeoJSON';
|
|
31
31
|
import olPoint from 'ol/geom/Point';
|
|
@@ -256,13 +256,13 @@ function stringifyType(value) {
|
|
|
256
256
|
function parseLayerType(params, key) {
|
|
257
257
|
const param = extractParam(params, key);
|
|
258
258
|
if (!param) {
|
|
259
|
-
return;
|
|
259
|
+
return undefined;
|
|
260
260
|
}
|
|
261
261
|
const type = Number(param);
|
|
262
262
|
return ServiceTypeEnum[type];
|
|
263
263
|
}
|
|
264
|
-
function stringifyCenter(
|
|
265
|
-
return
|
|
264
|
+
function stringifyCenter(value) {
|
|
265
|
+
return value.map(formatNumber).join(',');
|
|
266
266
|
}
|
|
267
267
|
function parseCenter(params) {
|
|
268
268
|
if (!params?.startsWith('@')) {
|
|
@@ -278,7 +278,7 @@ function parseCenter(params) {
|
|
|
278
278
|
function parseRotation(params, key) {
|
|
279
279
|
const param = extractParam(params, key);
|
|
280
280
|
if (!param) {
|
|
281
|
-
return;
|
|
281
|
+
return undefined;
|
|
282
282
|
}
|
|
283
283
|
const degree = parseInteger(param);
|
|
284
284
|
return (degree * Math.PI) / 180;
|
|
@@ -286,21 +286,21 @@ function parseRotation(params, key) {
|
|
|
286
286
|
function parseIntergerParam(params, key) {
|
|
287
287
|
const param = extractParam(params, key);
|
|
288
288
|
if (!param) {
|
|
289
|
-
return;
|
|
289
|
+
return undefined;
|
|
290
290
|
}
|
|
291
291
|
return parseInteger(param);
|
|
292
292
|
}
|
|
293
293
|
function parseBooleanParam(params, key) {
|
|
294
294
|
const param = extractParam(params, key);
|
|
295
295
|
if (!param) {
|
|
296
|
-
return;
|
|
296
|
+
return undefined;
|
|
297
297
|
}
|
|
298
298
|
return parseBoolean(param);
|
|
299
299
|
}
|
|
300
300
|
function parseFloatParam(params, key) {
|
|
301
301
|
const param = extractParam(params, key);
|
|
302
302
|
if (!param) {
|
|
303
|
-
return;
|
|
303
|
+
return undefined;
|
|
304
304
|
}
|
|
305
305
|
return parseFloat(param);
|
|
306
306
|
}
|
|
@@ -343,7 +343,9 @@ function buildDataSourceOptions(type, url, layers, version) {
|
|
|
343
343
|
const arcgisClause = type === 'arcgisrest' ||
|
|
344
344
|
type === 'imagearcgisrest' ||
|
|
345
345
|
type === 'tilearcgisrest';
|
|
346
|
-
const params = type === 'wms'
|
|
346
|
+
const params = type === 'wms'
|
|
347
|
+
? { LAYERS: layers.join(','), ...(version ? { VERSION: version } : {}) }
|
|
348
|
+
: undefined;
|
|
347
349
|
const layer = isLayerType ? layers.join(',') : undefined;
|
|
348
350
|
const baseParams = {
|
|
349
351
|
type: type,
|
|
@@ -418,7 +420,7 @@ class ShareMapEncoder {
|
|
|
418
420
|
const layers = [
|
|
419
421
|
map.layerController.baseLayer,
|
|
420
422
|
...map.layerController.layersFlattened
|
|
421
|
-
].filter(
|
|
423
|
+
].filter((l) => !!l);
|
|
422
424
|
const urlParams = this.getBaseUrlConfig(map.viewController);
|
|
423
425
|
this.buildQueryUrl(layers, urlParams);
|
|
424
426
|
const [baseUrl] = this.document.location.href.split('?');
|
|
@@ -431,7 +433,7 @@ class ShareMapEncoder {
|
|
|
431
433
|
*/
|
|
432
434
|
replaceGroupLocalIds(layers) {
|
|
433
435
|
const idMap = new Map();
|
|
434
|
-
const existingIds = new Set(layers.map((layer) => layer.id).filter(
|
|
436
|
+
const existingIds = new Set(layers.map((layer) => layer.id).filter((id) => id != null));
|
|
435
437
|
// eslint-disable-next-line prefer-const
|
|
436
438
|
let counter = 1;
|
|
437
439
|
layers.forEach((layer) => {
|
|
@@ -451,11 +453,11 @@ class ShareMapEncoder {
|
|
|
451
453
|
}
|
|
452
454
|
getCurrentContext() {
|
|
453
455
|
return ObjectUtils.removeUndefined({
|
|
454
|
-
layers: this.context?.layers,
|
|
455
|
-
center: this.context?.map
|
|
456
|
-
projection: this.context?.map
|
|
457
|
-
zoom: this.context?.map
|
|
458
|
-
rotation: this.context?.map
|
|
456
|
+
layers: this.context?.layers ?? [],
|
|
457
|
+
center: this.context?.map?.view.center,
|
|
458
|
+
projection: this.context?.map?.view.projection,
|
|
459
|
+
zoom: this.context?.map?.view.zoom,
|
|
460
|
+
rotation: this.context?.map?.view.rotation
|
|
459
461
|
});
|
|
460
462
|
}
|
|
461
463
|
/**
|
|
@@ -502,10 +504,12 @@ class ShareMapEncoder {
|
|
|
502
504
|
getContextLayersMap() {
|
|
503
505
|
const ctxLayers = this.getCurrentContext()?.layers || [];
|
|
504
506
|
const ctxFlattened = getFlattenOptions(ctxLayers);
|
|
505
|
-
return new Map(ctxFlattened
|
|
507
|
+
return new Map(ctxFlattened
|
|
508
|
+
.map((lctx) => {
|
|
506
509
|
const identifier = getLayerOptionIdentifier(lctx);
|
|
507
|
-
return [identifier, lctx];
|
|
508
|
-
})
|
|
510
|
+
return [identifier ?? '', lctx];
|
|
511
|
+
})
|
|
512
|
+
.filter(([key]) => key !== ''));
|
|
509
513
|
}
|
|
510
514
|
/**
|
|
511
515
|
* Filters layers and context layers based on visibility, opacity, and expanded state.
|
|
@@ -522,7 +526,7 @@ class ShareMapEncoder {
|
|
|
522
526
|
const visibilityChange = layer.visible !== (ctxLayer.visible ?? true);
|
|
523
527
|
const opacityChange = layer.opacity !== (ctxLayer.opacity ?? 1);
|
|
524
528
|
const layerParentId = this.getIdsNestedParent(layer)?.join('.');
|
|
525
|
-
const ctxParentId = ctxLayer.parentId ?? findParentId(this.context
|
|
529
|
+
const ctxParentId = ctxLayer.parentId ?? findParentId(this.context?.layers ?? [], ctxLayer);
|
|
526
530
|
const parentIdChange = ctxParentId !== layerParentId;
|
|
527
531
|
let expandedChange = false;
|
|
528
532
|
let titleChange = false;
|
|
@@ -595,7 +599,9 @@ class ShareMapEncoder {
|
|
|
595
599
|
.params;
|
|
596
600
|
return params.LAYERS;
|
|
597
601
|
}
|
|
598
|
-
return 'layer' in dataSourceOptions
|
|
602
|
+
return 'layer' in dataSourceOptions
|
|
603
|
+
? (dataSourceOptions.layer ?? '')
|
|
604
|
+
: '';
|
|
599
605
|
}
|
|
600
606
|
getWmsVersion(dataSourceOptions) {
|
|
601
607
|
const params = dataSourceOptions?.params;
|
|
@@ -604,7 +610,7 @@ class ShareMapEncoder {
|
|
|
604
610
|
: undefined;
|
|
605
611
|
}
|
|
606
612
|
concatUrlWithVersion(dataSourceOptions) {
|
|
607
|
-
const url = dataSourceOptions.url;
|
|
613
|
+
const url = dataSourceOptions.url ?? '';
|
|
608
614
|
if (dataSourceOptions.type.toLowerCase() === 'wms') {
|
|
609
615
|
const version = this.getWmsVersion(dataSourceOptions);
|
|
610
616
|
if (version) {
|
|
@@ -613,7 +619,7 @@ class ShareMapEncoder {
|
|
|
613
619
|
return `${url}${operator}${versionDef.key}=${version}`;
|
|
614
620
|
}
|
|
615
621
|
}
|
|
616
|
-
return
|
|
622
|
+
return url;
|
|
617
623
|
}
|
|
618
624
|
getLayerParams(layer) {
|
|
619
625
|
const dataSourceOptions = layer.dataSource.options;
|
|
@@ -621,7 +627,7 @@ class ShareMapEncoder {
|
|
|
621
627
|
? this.hasLayerId(this.context.layers, layer.id)
|
|
622
628
|
: false;
|
|
623
629
|
return {
|
|
624
|
-
index:
|
|
630
|
+
index: 0,
|
|
625
631
|
...(isExisting
|
|
626
632
|
? { id: layer.id }
|
|
627
633
|
: {
|
|
@@ -750,8 +756,11 @@ class ShareMapEncoder {
|
|
|
750
756
|
const definitions = this.SHARE_MAP_DEFS.pos.params;
|
|
751
757
|
const { center, ...restPosition } = position;
|
|
752
758
|
const stringifiedParams = this.stringifyDefinitions(restPosition, definitions);
|
|
759
|
+
const centerDef = definitions.center;
|
|
753
760
|
const result = [
|
|
754
|
-
|
|
761
|
+
centerDef && center
|
|
762
|
+
? `${centerDef.key}${centerDef.stringify(center)}`
|
|
763
|
+
: undefined,
|
|
755
764
|
stringifiedParams
|
|
756
765
|
].filter(Boolean);
|
|
757
766
|
return result.join(',');
|
|
@@ -759,10 +768,14 @@ class ShareMapEncoder {
|
|
|
759
768
|
stringifyDefinitions(values, definitions) {
|
|
760
769
|
const result = Object.keys(ObjectUtils.removeUndefined(values))
|
|
761
770
|
.map((key) => {
|
|
762
|
-
const
|
|
771
|
+
const def = definitions[key];
|
|
772
|
+
if (!def)
|
|
773
|
+
return undefined;
|
|
774
|
+
const { key: defKey, stringify } = def;
|
|
763
775
|
const value = stringify ? stringify(values[key]) : values[key];
|
|
764
776
|
return `${value}${defKey}`;
|
|
765
777
|
})
|
|
778
|
+
.filter(Boolean)
|
|
766
779
|
.join(',');
|
|
767
780
|
return result === '' ? undefined : result;
|
|
768
781
|
}
|
|
@@ -798,7 +811,7 @@ class ShareMapLegacyParser {
|
|
|
798
811
|
this.options = options;
|
|
799
812
|
}
|
|
800
813
|
parseUrl(params) {
|
|
801
|
-
const layerOptions = ServiceType.flatMap((type) => this.readLayersQueryParamsByType(params, type)).filter(
|
|
814
|
+
const layerOptions = ServiceType.flatMap((type) => this.readLayersQueryParamsByType(params, type)).filter((l) => !!l);
|
|
802
815
|
return layerOptions;
|
|
803
816
|
}
|
|
804
817
|
parsePosition(params) {
|
|
@@ -836,7 +849,8 @@ class ShareMapLegacyParser {
|
|
|
836
849
|
const { layersKey, wmsUrlKey, wmsLayersKey, wmtsUrlKey, wmtsLayersKey, arcgisUrlKey, arcgisLayersKey, iarcgisUrlKey, iarcgisLayersKey, tarcgisUrlKey, tarcgisLayersKey } = this.options;
|
|
837
850
|
switch (type) {
|
|
838
851
|
case 'wms':
|
|
839
|
-
if ((params[layersKey] || params[wmsLayersKey]) &&
|
|
852
|
+
if ((params[layersKey] || params[wmsLayersKey]) &&
|
|
853
|
+
params[wmsUrlKey]) {
|
|
840
854
|
urlsKey = wmsUrlKey;
|
|
841
855
|
nameParamLayersKey = params[wmsLayersKey] ? wmsLayersKey : layersKey;
|
|
842
856
|
}
|
|
@@ -872,7 +886,7 @@ class ShareMapLegacyParser {
|
|
|
872
886
|
return [nameParamLayersKey, urlsKey];
|
|
873
887
|
}
|
|
874
888
|
sanitizeUrl(url) {
|
|
875
|
-
const version = this.getQueryParam('version', url.toLocaleLowerCase())
|
|
889
|
+
const version = this.getQueryParam('version', url.toLocaleLowerCase()) ?? undefined;
|
|
876
890
|
if (version) {
|
|
877
891
|
const versionRegex = new RegExp(`[?&]version=${version}`, 'i');
|
|
878
892
|
url = url.replace(versionRegex, '').replace(/[?&]$/, '');
|
|
@@ -888,14 +902,14 @@ class ShareMapLegacyParser {
|
|
|
888
902
|
const httpParams = new HttpParams({ fromString: url.split('?')[1] });
|
|
889
903
|
paramValue = httpParams.get(name);
|
|
890
904
|
}
|
|
891
|
-
return paramValue;
|
|
905
|
+
return paramValue ?? undefined;
|
|
892
906
|
}
|
|
893
907
|
extractLayersByService(layersByService) {
|
|
894
908
|
if (!layersByService.includes(':igoz')) {
|
|
895
909
|
return [
|
|
896
910
|
{
|
|
897
911
|
layers: layersByService.split(','),
|
|
898
|
-
zIndex:
|
|
912
|
+
zIndex: undefined
|
|
899
913
|
}
|
|
900
914
|
];
|
|
901
915
|
}
|
|
@@ -988,7 +1002,7 @@ class ShareMapParser {
|
|
|
988
1002
|
const groupsOptions = groupsArray.map((layer) => this.parseGroup(layer));
|
|
989
1003
|
const layersOptions = layersArray
|
|
990
1004
|
.map((layer) => this.parseLayer(layer, urlsArray))
|
|
991
|
-
.filter(
|
|
1005
|
+
.filter((l) => !!l);
|
|
992
1006
|
return [...groupsOptions, ...layersOptions];
|
|
993
1007
|
}
|
|
994
1008
|
splitParam(value, delimiter) {
|
|
@@ -1001,10 +1015,16 @@ class ShareMapParser {
|
|
|
1001
1015
|
}
|
|
1002
1016
|
const { center, zoom, rotation, projection } = this.keysDefinitions.pos.params;
|
|
1003
1017
|
return ObjectUtils.removeUndefined({
|
|
1004
|
-
center: center
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1018
|
+
center: center?.parse
|
|
1019
|
+
? center.parse(position)
|
|
1020
|
+
: undefined,
|
|
1021
|
+
zoom: zoom?.parse ? zoom.parse(position) : undefined,
|
|
1022
|
+
rotation: rotation?.parse
|
|
1023
|
+
? rotation.parse(position)
|
|
1024
|
+
: undefined,
|
|
1025
|
+
projection: projection?.parse
|
|
1026
|
+
? projection.parse(position)
|
|
1027
|
+
: undefined
|
|
1008
1028
|
});
|
|
1009
1029
|
}
|
|
1010
1030
|
parseLayer(layer, urls) {
|
|
@@ -1053,10 +1073,12 @@ class ShareMapParser {
|
|
|
1053
1073
|
}
|
|
1054
1074
|
extractVersionFromUrl(url) {
|
|
1055
1075
|
const versionDef = this.keysDefinitions.layers.params.version;
|
|
1056
|
-
return versionDef.parse(url);
|
|
1076
|
+
return versionDef?.parse ? versionDef.parse(url) : undefined;
|
|
1057
1077
|
}
|
|
1058
1078
|
extractLayerId(layer) {
|
|
1059
|
-
const
|
|
1079
|
+
const id = this.keysDefinitions.layers.params.id;
|
|
1080
|
+
if (!id)
|
|
1081
|
+
return undefined;
|
|
1060
1082
|
const regex = new RegExp(`([a-zA-Z0-9_]+)${id.key}\\b`);
|
|
1061
1083
|
const match = layer.match(regex);
|
|
1062
1084
|
return match ? match[1] : undefined;
|
|
@@ -1068,7 +1090,9 @@ class ShareMapParser {
|
|
|
1068
1090
|
return match ? parseInt(match[1], 10) : undefined;
|
|
1069
1091
|
}
|
|
1070
1092
|
extractLayerNames(layer) {
|
|
1071
|
-
const
|
|
1093
|
+
const names = this.keysDefinitions.layers.params.names;
|
|
1094
|
+
if (!names)
|
|
1095
|
+
return undefined;
|
|
1072
1096
|
const pattern = new RegExp(`\\[.*?\\]${names.key}`, 'g');
|
|
1073
1097
|
const matches = layer.match(pattern);
|
|
1074
1098
|
if (!matches)
|
|
@@ -1140,10 +1164,12 @@ class ShareMapService {
|
|
|
1140
1164
|
return queryString !== '' ? `${base}?${queryString}&` : `${base}?`;
|
|
1141
1165
|
}
|
|
1142
1166
|
getContext(params) {
|
|
1143
|
-
|
|
1167
|
+
const legacyKey = this.optionsLegacy.contextKey;
|
|
1168
|
+
return (params[this.options.context] ??
|
|
1169
|
+
(legacyKey ? params[legacyKey] : undefined));
|
|
1144
1170
|
}
|
|
1145
1171
|
getZoom(params) {
|
|
1146
|
-
return this.parsePosition(params)
|
|
1172
|
+
return this.parsePosition(params)?.zoom;
|
|
1147
1173
|
}
|
|
1148
1174
|
getUrlWithApi(formValues) {
|
|
1149
1175
|
const loc = this.document.location;
|
|
@@ -1161,15 +1187,15 @@ class ShareMapService {
|
|
|
1161
1187
|
const { projectionKey, rotationKey, zoomKey, centerKey } = this.optionsLegacy;
|
|
1162
1188
|
const { pos } = this.keysDefinitions;
|
|
1163
1189
|
return Boolean(params[pos.key] ||
|
|
1164
|
-
params[projectionKey] ||
|
|
1165
|
-
params[rotationKey] ||
|
|
1166
|
-
params[zoomKey] ||
|
|
1167
|
-
params[centerKey]);
|
|
1190
|
+
(projectionKey && params[projectionKey]) ||
|
|
1191
|
+
(rotationKey && params[rotationKey]) ||
|
|
1192
|
+
(zoomKey && params[zoomKey]) ||
|
|
1193
|
+
(centerKey && params[centerKey]));
|
|
1168
1194
|
}
|
|
1169
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
1170
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
1195
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ShareMapService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1196
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ShareMapService, providedIn: 'root' });
|
|
1171
1197
|
}
|
|
1172
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
1198
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ShareMapService, decorators: [{
|
|
1173
1199
|
type: Injectable,
|
|
1174
1200
|
args: [{
|
|
1175
1201
|
providedIn: 'root'
|
|
@@ -1307,7 +1333,8 @@ class ContextService {
|
|
|
1307
1333
|
}
|
|
1308
1334
|
delete(id, imported = false) {
|
|
1309
1335
|
const contexts = { ours: [] };
|
|
1310
|
-
Object.keys(this.contexts$.value).forEach((key) => (contexts[key] =
|
|
1336
|
+
Object.keys(this.contexts$.value).forEach((key) => (contexts[key] =
|
|
1337
|
+
this.contexts$.value[key]?.filter((c) => c.id !== id) ?? []));
|
|
1311
1338
|
if (imported) {
|
|
1312
1339
|
this.importedContext = this.importedContext.filter((c) => c.id !== id);
|
|
1313
1340
|
return of(this.contexts$.next(contexts));
|
|
@@ -1616,9 +1643,7 @@ class ContextService {
|
|
|
1616
1643
|
if (this.baseUrl) {
|
|
1617
1644
|
let contextToLoad;
|
|
1618
1645
|
for (const key of Object.keys(this.contexts$.value)) {
|
|
1619
|
-
contextToLoad = this.contexts$.value[key]
|
|
1620
|
-
return c.uri === uri;
|
|
1621
|
-
});
|
|
1646
|
+
contextToLoad = this.contexts$.value[key]?.find((c) => c.uri === uri);
|
|
1622
1647
|
if (contextToLoad) {
|
|
1623
1648
|
break;
|
|
1624
1649
|
}
|
|
@@ -1679,7 +1704,9 @@ class ContextService {
|
|
|
1679
1704
|
this.getDefault().subscribe();
|
|
1680
1705
|
}
|
|
1681
1706
|
}
|
|
1682
|
-
const editedFound =
|
|
1707
|
+
const editedFound = editedContext
|
|
1708
|
+
? this.findContext(editedContext)
|
|
1709
|
+
: undefined;
|
|
1683
1710
|
if (!editedFound || editedFound.permission !== 'write') {
|
|
1684
1711
|
this.setEditedContext(undefined);
|
|
1685
1712
|
}
|
|
@@ -1707,8 +1734,7 @@ class ContextService {
|
|
|
1707
1734
|
const contexts = this.contexts$.value;
|
|
1708
1735
|
let found;
|
|
1709
1736
|
for (const key of Object.keys(contexts)) {
|
|
1710
|
-
|
|
1711
|
-
found = value.find((c) => (context.id && c.id === context.id) ||
|
|
1737
|
+
found = contexts[key]?.find((c) => (context.id && c.id === context.id) ||
|
|
1712
1738
|
(context.uri && c.uri === context.uri));
|
|
1713
1739
|
if (found) {
|
|
1714
1740
|
break;
|
|
@@ -1716,10 +1742,10 @@ class ContextService {
|
|
|
1716
1742
|
}
|
|
1717
1743
|
return found;
|
|
1718
1744
|
}
|
|
1719
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
1720
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
1745
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ContextService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1746
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ContextService, providedIn: 'root' });
|
|
1721
1747
|
}
|
|
1722
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
1748
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ContextService, decorators: [{
|
|
1723
1749
|
type: Injectable,
|
|
1724
1750
|
args: [{
|
|
1725
1751
|
providedIn: 'root'
|
|
@@ -1764,10 +1790,10 @@ class ContextExportService {
|
|
|
1764
1790
|
}
|
|
1765
1791
|
return false;
|
|
1766
1792
|
}
|
|
1767
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
1768
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
1793
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ContextExportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1794
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ContextExportService, providedIn: 'root' });
|
|
1769
1795
|
}
|
|
1770
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
1796
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ContextExportService, decorators: [{
|
|
1771
1797
|
type: Injectable,
|
|
1772
1798
|
args: [{
|
|
1773
1799
|
providedIn: 'root'
|
|
@@ -1776,7 +1802,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
|
|
|
1776
1802
|
|
|
1777
1803
|
function handleFileExportError(error, messageService) {
|
|
1778
1804
|
if (error instanceof ExportNothingToExportError) {
|
|
1779
|
-
|
|
1805
|
+
handleNothingToExportError(messageService);
|
|
1780
1806
|
return;
|
|
1781
1807
|
}
|
|
1782
1808
|
messageService.error('igo.context.contextImportExport.export.failed.text', 'igo.context.contextImportExport.export.failed.title');
|
|
@@ -1839,7 +1865,10 @@ function handleFileImportError(file, error, messageService, sizeMb) {
|
|
|
1839
1865
|
'File is too large': handleSizeFileImportError,
|
|
1840
1866
|
'Failed to read file': handleUnreadbleFileImportError
|
|
1841
1867
|
};
|
|
1842
|
-
errMapping[error.message]
|
|
1868
|
+
const handler = errMapping[error.message];
|
|
1869
|
+
if (handler) {
|
|
1870
|
+
handler(file, error, messageService, sizeMb);
|
|
1871
|
+
}
|
|
1843
1872
|
}
|
|
1844
1873
|
function handleInvalidFileImportError(file, error, messageService) {
|
|
1845
1874
|
messageService.error('igo.context.contextImportExport.import.invalid.text', 'igo.context.contextImportExport.import.invalid.title', undefined, {
|
|
@@ -1870,7 +1899,7 @@ function addContextToContextList(context, contextTitle, contextService) {
|
|
|
1870
1899
|
contextService.loadContext(context.uri);
|
|
1871
1900
|
}
|
|
1872
1901
|
function getFileExtension(file) {
|
|
1873
|
-
return file.name.split('.').pop()
|
|
1902
|
+
return file.name.split('.').pop()?.toLowerCase() ?? '';
|
|
1874
1903
|
}
|
|
1875
1904
|
function computeLayerTitleFromFile(file) {
|
|
1876
1905
|
return file.name.substr(0, file.name.lastIndexOf('.'));
|
|
@@ -1883,81 +1912,17 @@ function addImportedFeaturesToMap(extraFeatures, map) {
|
|
|
1883
1912
|
const olFeatures = collectFeaturesFromExtraFeatures(extraFeatures);
|
|
1884
1913
|
const source = new FeatureDataSource(sourceOptions);
|
|
1885
1914
|
source.ol.addFeatures(olFeatures);
|
|
1886
|
-
let randomStyle;
|
|
1887
|
-
let editable = false;
|
|
1888
|
-
const featureKeys = olFeatures[0]?.getKeys() ?? [];
|
|
1889
|
-
if (featureKeys.includes('_style') || featureKeys.includes('_mapTitle')) {
|
|
1890
|
-
randomStyle = featureRandomStyleFunction();
|
|
1891
|
-
}
|
|
1892
|
-
else {
|
|
1893
|
-
randomStyle = featureRandomStyle();
|
|
1894
|
-
editable = true;
|
|
1895
|
-
}
|
|
1896
1915
|
const layer = new VectorLayer({
|
|
1897
1916
|
title: extraFeatures.name,
|
|
1898
1917
|
isIgoInternalLayer: true,
|
|
1899
1918
|
source,
|
|
1900
|
-
|
|
1901
|
-
style: randomStyle,
|
|
1919
|
+
style: randomOlFlatStyle(),
|
|
1902
1920
|
visible: extraFeatures.visible,
|
|
1903
1921
|
opacity: extraFeatures.opacity
|
|
1904
1922
|
});
|
|
1905
1923
|
map.layerController.add(layer);
|
|
1906
1924
|
return layer;
|
|
1907
1925
|
}
|
|
1908
|
-
function addImportedFeaturesStyledToMap(extraFeatures, map, styleListService, styleService) {
|
|
1909
|
-
let style;
|
|
1910
|
-
let distance;
|
|
1911
|
-
if (styleListService.getStyleList(extraFeatures.name + '.styleByAttribute')) {
|
|
1912
|
-
const styleByAttribute = styleListService.getStyleList(extraFeatures.name + '.styleByAttribute');
|
|
1913
|
-
style = (feature, resolution) => {
|
|
1914
|
-
return styleService.createStyleByAttribute(feature, styleByAttribute, resolution);
|
|
1915
|
-
};
|
|
1916
|
-
}
|
|
1917
|
-
else if (styleListService.getStyleList(extraFeatures.name + '.clusterStyle')) {
|
|
1918
|
-
const clusterParam = styleListService.getStyleList(extraFeatures.name + '.clusterParam');
|
|
1919
|
-
distance = styleListService.getStyleList(extraFeatures.name + '.distance');
|
|
1920
|
-
style = (feature, resolution) => {
|
|
1921
|
-
const baseStyle = styleService.createStyle(styleListService.getStyleList(extraFeatures.name + '.clusterStyle'), feature, resolution);
|
|
1922
|
-
return styleService.createClusterStyle(feature, resolution, clusterParam, baseStyle);
|
|
1923
|
-
};
|
|
1924
|
-
}
|
|
1925
|
-
else if (styleListService.getStyleList(extraFeatures.name + '.style')) {
|
|
1926
|
-
style = (feature, resolution) => styleService.createStyle(styleListService.getStyleList(extraFeatures.name + '.style'), feature, resolution);
|
|
1927
|
-
}
|
|
1928
|
-
else {
|
|
1929
|
-
style = (feature, resolution) => styleService.createStyle(styleListService.getStyleList('default.style'), feature, resolution);
|
|
1930
|
-
}
|
|
1931
|
-
let source;
|
|
1932
|
-
const olFeatures = collectFeaturesFromExtraFeatures(extraFeatures);
|
|
1933
|
-
if (styleListService.getStyleList(extraFeatures.name + '.clusterStyle')) {
|
|
1934
|
-
const sourceOptions = {
|
|
1935
|
-
distance,
|
|
1936
|
-
type: 'cluster',
|
|
1937
|
-
queryable: true
|
|
1938
|
-
};
|
|
1939
|
-
source = new ClusterDataSource(sourceOptions);
|
|
1940
|
-
source.ol.source.addFeatures(olFeatures);
|
|
1941
|
-
}
|
|
1942
|
-
else {
|
|
1943
|
-
const sourceOptions = {
|
|
1944
|
-
type: 'vector',
|
|
1945
|
-
queryable: true
|
|
1946
|
-
};
|
|
1947
|
-
source = new FeatureDataSource(sourceOptions);
|
|
1948
|
-
source.ol.addFeatures(olFeatures);
|
|
1949
|
-
}
|
|
1950
|
-
const layer = new VectorLayer({
|
|
1951
|
-
title: extraFeatures.name,
|
|
1952
|
-
isIgoInternalLayer: true,
|
|
1953
|
-
source,
|
|
1954
|
-
style,
|
|
1955
|
-
opacity: extraFeatures.opacity,
|
|
1956
|
-
visible: extraFeatures.visible
|
|
1957
|
-
});
|
|
1958
|
-
map.layerController.add(layer);
|
|
1959
|
-
return layer;
|
|
1960
|
-
}
|
|
1961
1926
|
function collectFeaturesFromExtraFeatures(featureCollection) {
|
|
1962
1927
|
const format = new GeoJSON();
|
|
1963
1928
|
const features = format.readFeatures(featureCollection, {
|
|
@@ -2031,10 +1996,10 @@ class ContextImportService {
|
|
|
2031
1996
|
const context = JSON.parse(data);
|
|
2032
1997
|
return context;
|
|
2033
1998
|
}
|
|
2034
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
2035
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
1999
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ContextImportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2000
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ContextImportService, providedIn: 'root' });
|
|
2036
2001
|
}
|
|
2037
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
2002
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ContextImportService, decorators: [{
|
|
2038
2003
|
type: Injectable,
|
|
2039
2004
|
args: [{
|
|
2040
2005
|
providedIn: 'root'
|
|
@@ -2059,7 +2024,7 @@ class ContextImportExportComponent {
|
|
|
2059
2024
|
clientSideFileSizeMax;
|
|
2060
2025
|
fileSizeMb;
|
|
2061
2026
|
activeImportExport = 'import';
|
|
2062
|
-
map = input(
|
|
2027
|
+
map = input.required(...(ngDevMode ? [{ debugName: "map" }] : /* istanbul ignore next */ []));
|
|
2063
2028
|
constructor() {
|
|
2064
2029
|
this.buildForm();
|
|
2065
2030
|
}
|
|
@@ -2118,21 +2083,20 @@ class ContextImportExportComponent {
|
|
|
2118
2083
|
handleFileExportSuccess(this.messageService);
|
|
2119
2084
|
}
|
|
2120
2085
|
selectAll(e) {
|
|
2121
|
-
if (e.
|
|
2086
|
+
if (e.selected) {
|
|
2122
2087
|
this.form.controls.layers.setValue(this.userControlledLayerList);
|
|
2123
|
-
e._selected = true;
|
|
2124
2088
|
}
|
|
2125
|
-
|
|
2089
|
+
else {
|
|
2126
2090
|
this.form.controls.layers.setValue([]);
|
|
2127
2091
|
}
|
|
2128
2092
|
}
|
|
2129
2093
|
onImportExportChange(event) {
|
|
2130
2094
|
this.activeImportExport = event.value;
|
|
2131
2095
|
}
|
|
2132
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
2133
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
2096
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ContextImportExportComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2097
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: ContextImportExportComponent, isStandalone: true, selector: "igo-context-import-export", inputs: { map: { classPropertyName: "map", publicName: "map", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<div class=\"import-export-toggle\">\n <mat-button-toggle-group\n [value]=\"activeImportExport\"\n (change)=\"onImportExportChange($event)\"\n >\n <mat-button-toggle [value]=\"'import'\">\n {{ 'igo.geo.importExportForm.importTabTitle' | translate }}\n </mat-button-toggle>\n <mat-button-toggle [value]=\"'export'\">\n {{ 'igo.geo.importExportForm.exportTabTitle' | translate }}\n </mat-button-toggle>\n </mat-button-toggle-group>\n</div>\n\n@if (activeImportExport === 'import') {\n <div>\n <form class=\"igo-form\">\n <div class=\"igo-form-button-group\">\n <button\n matButton=\"elevated\"\n type=\"button\"\n (click)=\"fileInput.click()\"\n [disabled]=\"loading$ | async\"\n >\n {{ 'igo.geo.importExportForm.importButton' | translate }}\n </button>\n <igo-spinner [shown]=\"(loading$ | async) ?? false\" />\n <input\n #fileInput\n type=\"file\"\n [style.display]=\"'none'\"\n (click)=\"fileInput.value = ''\"\n (change)=\"importFiles($any($event.target).files)\"\n />\n </div>\n </form>\n <section>\n <h4>{{ 'igo.geo.importExportForm.importClarifications' | translate }}</h4>\n <ul>\n <li>\n {{\n 'igo.geo.importExportForm.importSizeMax'\n | translate: { size: fileSizeMb }\n }}\n </li>\n </ul>\n </section>\n </div>\n}\n\n@if (activeImportExport === 'export') {\n <form class=\"igo-form\" [formGroup]=\"form\">\n <div class=\"igo-input-container\">\n <mat-form-field class=\"example-full-width\">\n <mat-label>{{\n 'igo.context.contextImportExport.export.exportContextName' | translate\n }}</mat-label>\n <input formControlName=\"name\" matInput [value]=\"\" />\n </mat-form-field>\n </div>\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{\n 'igo.context.contextImportExport.export.exportPlaceHolder' | translate\n }}</mat-label>\n <mat-select formControlName=\"layers\" multiple>\n <mat-option [value]=\"1\" (click)=\"selectAll(e)\" #e>\n {{\n 'igo.context.contextImportExport.export.exportSelectAll'\n | translate\n }}\n </mat-option>\n <mat-divider />\n @for (layer of userControlledLayerList; track layer) {\n <mat-option [value]=\"layer\">{{ layer.title }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"igo-form-button-group\">\n <button\n matButton=\"elevated\"\n type=\"button\"\n [disabled]=\"!form.valid || (loading$ | async)\"\n (click)=\"handleExportFormSubmit(form.value)\"\n >\n {{ 'igo.geo.importExportForm.exportButton' | translate }}\n </button>\n <igo-spinner [shown]=\"(loading$ | async) ?? false\" />\n </div>\n </form>\n}\n", styles: [".import-export-toggle{padding:10px;text-align:center}.import-export-toggle mat-button-toggle-group{width:100%}.import-export-toggle mat-button-toggle-group mat-button-toggle{width:50%}.igo-input-container{padding:10px}.igo-input-container mat-form-field{width:100%}h4{padding:0 5px}.igo-form{padding:15px 5px}.igo-form-button-group{text-align:center;padding-top:10px}igo-spinner{position:absolute;padding-left:10px}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]):not([formArray]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: SpinnerComponent, selector: "igo-spinner", inputs: ["shown"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$2.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i2$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i5$1.TranslatePipe, name: "translate" }] });
|
|
2134
2098
|
}
|
|
2135
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
2099
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ContextImportExportComponent, decorators: [{
|
|
2136
2100
|
type: Component,
|
|
2137
2101
|
args: [{ selector: 'igo-context-import-export', imports: [
|
|
2138
2102
|
MatButtonToggleModule,
|
|
@@ -2147,8 +2111,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
|
|
|
2147
2111
|
MatDividerModule,
|
|
2148
2112
|
AsyncPipe,
|
|
2149
2113
|
IgoLanguageModule
|
|
2150
|
-
], template: "<div class=\"import-export-toggle\">\n <mat-button-toggle-group\n [value]=\"activeImportExport\"\n (change)=\"onImportExportChange($event)\"\n >\n <mat-button-toggle [value]=\"'import'\">\n {{ 'igo.geo.importExportForm.importTabTitle' | translate }}\n </mat-button-toggle>\n <mat-button-toggle [value]=\"'export'\">\n {{ 'igo.geo.importExportForm.exportTabTitle' | translate }}\n </mat-button-toggle>\n </mat-button-toggle-group>\n</div>\n\n@if (activeImportExport === 'import') {\n <div>\n <form class=\"igo-form\">\n <div class=\"igo-form-button-group\">\n <button\n matButton=\"elevated\"\n type=\"button\"\n (click)=\"fileInput.click()\"\n [disabled]=\"loading$ | async\"\n >\n {{ 'igo.geo.importExportForm.importButton' | translate }}\n </button>\n <igo-spinner [shown]=\"loading$ | async\" />\n <input\n #fileInput\n type=\"file\"\n [style.display]=\"'none'\"\n (click)=\"fileInput.value =
|
|
2151
|
-
}], ctorParameters: () => [], propDecorators: { map: [{ type: i0.Input, args: [{ isSignal: true, alias: "map", required:
|
|
2114
|
+
], template: "<div class=\"import-export-toggle\">\n <mat-button-toggle-group\n [value]=\"activeImportExport\"\n (change)=\"onImportExportChange($event)\"\n >\n <mat-button-toggle [value]=\"'import'\">\n {{ 'igo.geo.importExportForm.importTabTitle' | translate }}\n </mat-button-toggle>\n <mat-button-toggle [value]=\"'export'\">\n {{ 'igo.geo.importExportForm.exportTabTitle' | translate }}\n </mat-button-toggle>\n </mat-button-toggle-group>\n</div>\n\n@if (activeImportExport === 'import') {\n <div>\n <form class=\"igo-form\">\n <div class=\"igo-form-button-group\">\n <button\n matButton=\"elevated\"\n type=\"button\"\n (click)=\"fileInput.click()\"\n [disabled]=\"loading$ | async\"\n >\n {{ 'igo.geo.importExportForm.importButton' | translate }}\n </button>\n <igo-spinner [shown]=\"(loading$ | async) ?? false\" />\n <input\n #fileInput\n type=\"file\"\n [style.display]=\"'none'\"\n (click)=\"fileInput.value = ''\"\n (change)=\"importFiles($any($event.target).files)\"\n />\n </div>\n </form>\n <section>\n <h4>{{ 'igo.geo.importExportForm.importClarifications' | translate }}</h4>\n <ul>\n <li>\n {{\n 'igo.geo.importExportForm.importSizeMax'\n | translate: { size: fileSizeMb }\n }}\n </li>\n </ul>\n </section>\n </div>\n}\n\n@if (activeImportExport === 'export') {\n <form class=\"igo-form\" [formGroup]=\"form\">\n <div class=\"igo-input-container\">\n <mat-form-field class=\"example-full-width\">\n <mat-label>{{\n 'igo.context.contextImportExport.export.exportContextName' | translate\n }}</mat-label>\n <input formControlName=\"name\" matInput [value]=\"\" />\n </mat-form-field>\n </div>\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{\n 'igo.context.contextImportExport.export.exportPlaceHolder' | translate\n }}</mat-label>\n <mat-select formControlName=\"layers\" multiple>\n <mat-option [value]=\"1\" (click)=\"selectAll(e)\" #e>\n {{\n 'igo.context.contextImportExport.export.exportSelectAll'\n | translate\n }}\n </mat-option>\n <mat-divider />\n @for (layer of userControlledLayerList; track layer) {\n <mat-option [value]=\"layer\">{{ layer.title }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"igo-form-button-group\">\n <button\n matButton=\"elevated\"\n type=\"button\"\n [disabled]=\"!form.valid || (loading$ | async)\"\n (click)=\"handleExportFormSubmit(form.value)\"\n >\n {{ 'igo.geo.importExportForm.exportButton' | translate }}\n </button>\n <igo-spinner [shown]=\"(loading$ | async) ?? false\" />\n </div>\n </form>\n}\n", styles: [".import-export-toggle{padding:10px;text-align:center}.import-export-toggle mat-button-toggle-group{width:100%}.import-export-toggle mat-button-toggle-group mat-button-toggle{width:50%}.igo-input-container{padding:10px}.igo-input-container mat-form-field{width:100%}h4{padding:0 5px}.igo-form{padding:15px 5px}.igo-form-button-group{text-align:center;padding-top:10px}igo-spinner{position:absolute;padding-left:10px}\n"] }]
|
|
2115
|
+
}], ctorParameters: () => [], propDecorators: { map: [{ type: i0.Input, args: [{ isSignal: true, alias: "map", required: true }] }] } });
|
|
2152
2116
|
|
|
2153
2117
|
/**
|
|
2154
2118
|
* @deprecated import the ContextImportExportComponent directly
|
|
@@ -2159,11 +2123,11 @@ class IgoContextImportExportModule {
|
|
|
2159
2123
|
ngModule: IgoContextImportExportModule
|
|
2160
2124
|
};
|
|
2161
2125
|
}
|
|
2162
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
2163
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.
|
|
2164
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.
|
|
2126
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: IgoContextImportExportModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
2127
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.17", ngImport: i0, type: IgoContextImportExportModule, imports: [ContextImportExportComponent], exports: [ContextImportExportComponent] });
|
|
2128
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: IgoContextImportExportModule, imports: [ContextImportExportComponent] });
|
|
2165
2129
|
}
|
|
2166
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
2130
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: IgoContextImportExportModule, decorators: [{
|
|
2167
2131
|
type: NgModule,
|
|
2168
2132
|
args: [{
|
|
2169
2133
|
imports: [ContextImportExportComponent],
|
|
@@ -2175,9 +2139,9 @@ class ContextFormComponent {
|
|
|
2175
2139
|
clipboard = inject(Clipboard);
|
|
2176
2140
|
formBuilder = inject(UntypedFormBuilder);
|
|
2177
2141
|
messageService = inject(MessageService);
|
|
2178
|
-
prefix;
|
|
2142
|
+
prefix = '';
|
|
2179
2143
|
btnSubmitText = input(...(ngDevMode ? [undefined, { debugName: "btnSubmitText" }] : /* istanbul ignore next */ []));
|
|
2180
|
-
context = input(...(ngDevMode ? [
|
|
2144
|
+
context = input.required(...(ngDevMode ? [{ debugName: "context" }] : /* istanbul ignore next */ []));
|
|
2181
2145
|
disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
2182
2146
|
submitForm = output();
|
|
2183
2147
|
clone = output();
|
|
@@ -2210,17 +2174,17 @@ class ContextFormComponent {
|
|
|
2210
2174
|
}
|
|
2211
2175
|
buildForm(context) {
|
|
2212
2176
|
const uriSplit = context.uri.split('-');
|
|
2213
|
-
this.prefix = uriSplit.shift();
|
|
2177
|
+
this.prefix = uriSplit.shift() ?? '';
|
|
2214
2178
|
const uri = uriSplit.join('-');
|
|
2215
2179
|
return this.formBuilder.group({
|
|
2216
2180
|
title: [context.title],
|
|
2217
2181
|
uri: [uri || ' ']
|
|
2218
2182
|
});
|
|
2219
2183
|
}
|
|
2220
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
2221
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
2184
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ContextFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2185
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: ContextFormComponent, isStandalone: true, selector: "igo-context-form", inputs: { btnSubmitText: { classPropertyName: "btnSubmitText", publicName: "btnSubmitText", isSignal: true, isRequired: false, transformFunction: null }, context: { classPropertyName: "context", publicName: "context", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { submitForm: "submitForm", clone: "clone", delete: "delete" }, ngImport: i0, template: "@let form = this.form();\n@if (form) {\n <form\n class=\"igo-form\"\n [formGroup]=\"form\"\n (ngSubmit)=\"handleFormSubmit(form.value)\"\n >\n <mat-form-field class=\"full-width\">\n <input\n matInput\n required\n maxlength=\"128\"\n [placeholder]=\"'igo.context.contextManager.form.title' | translate\"\n formControlName=\"title\"\n />\n <mat-error>\n {{ 'igo.context.contextManager.form.titleRequired' | translate }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field id=\"uriInput\" class=\"full-width\">\n @if (prefix) {\n <span class=\"prefix\">{{ prefix }}-</span>\n }\n <span class=\"fieldWrapper\">\n <input\n matInput\n maxlength=\"64\"\n floatLabel=\"always\"\n [placeholder]=\"'igo.context.contextManager.form.uri' | translate\"\n formControlName=\"uri\"\n />\n </span>\n </mat-form-field>\n\n <button\n id=\"copyButton\"\n type=\"button\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.context.contextManager.form.copy' | translate\"\n color=\"primary\"\n (click)=\"copyTextToClipboard()\"\n >\n <mat-icon>content_copy</mat-icon>\n </button>\n\n <div class=\"igo-form-button-group\">\n <button\n matButton=\"elevated\"\n type=\"submit\"\n [disabled]=\"form.invalid || disabled()\"\n >\n {{ 'igo.context.contextManager.form.edit' | translate }}\n </button>\n </div>\n </form>\n}\n", styles: ["form{margin:10px}.full-width{width:100%}#uriInput .fieldWrapper{display:block;overflow:hidden}#uriInput .prefix{float:left}#copyButton{width:24px;float:right;position:relative;top:-58px;left:5px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i5$1.TranslatePipe, name: "translate" }] });
|
|
2222
2186
|
}
|
|
2223
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
2187
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ContextFormComponent, decorators: [{
|
|
2224
2188
|
type: Component,
|
|
2225
2189
|
args: [{ selector: 'igo-context-form', imports: [
|
|
2226
2190
|
FormsModule,
|
|
@@ -2231,8 +2195,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
|
|
|
2231
2195
|
MatTooltipModule,
|
|
2232
2196
|
MatIconModule,
|
|
2233
2197
|
IgoLanguageModule
|
|
2234
|
-
], template: "@let form = this.form();\n<form\n
|
|
2235
|
-
}], propDecorators: { btnSubmitText: [{ type: i0.Input, args: [{ isSignal: true, alias: "btnSubmitText", required: false }] }], context: [{ type: i0.Input, args: [{ isSignal: true, alias: "context", required:
|
|
2198
|
+
], template: "@let form = this.form();\n@if (form) {\n <form\n class=\"igo-form\"\n [formGroup]=\"form\"\n (ngSubmit)=\"handleFormSubmit(form.value)\"\n >\n <mat-form-field class=\"full-width\">\n <input\n matInput\n required\n maxlength=\"128\"\n [placeholder]=\"'igo.context.contextManager.form.title' | translate\"\n formControlName=\"title\"\n />\n <mat-error>\n {{ 'igo.context.contextManager.form.titleRequired' | translate }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field id=\"uriInput\" class=\"full-width\">\n @if (prefix) {\n <span class=\"prefix\">{{ prefix }}-</span>\n }\n <span class=\"fieldWrapper\">\n <input\n matInput\n maxlength=\"64\"\n floatLabel=\"always\"\n [placeholder]=\"'igo.context.contextManager.form.uri' | translate\"\n formControlName=\"uri\"\n />\n </span>\n </mat-form-field>\n\n <button\n id=\"copyButton\"\n type=\"button\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.context.contextManager.form.copy' | translate\"\n color=\"primary\"\n (click)=\"copyTextToClipboard()\"\n >\n <mat-icon>content_copy</mat-icon>\n </button>\n\n <div class=\"igo-form-button-group\">\n <button\n matButton=\"elevated\"\n type=\"submit\"\n [disabled]=\"form.invalid || disabled()\"\n >\n {{ 'igo.context.contextManager.form.edit' | translate }}\n </button>\n </div>\n </form>\n}\n", styles: ["form{margin:10px}.full-width{width:100%}#uriInput .fieldWrapper{display:block;overflow:hidden}#uriInput .prefix{float:left}#copyButton{width:24px;float:right;position:relative;top:-58px;left:5px}\n"] }]
|
|
2199
|
+
}], propDecorators: { btnSubmitText: [{ type: i0.Input, args: [{ isSignal: true, alias: "btnSubmitText", required: false }] }], context: [{ type: i0.Input, args: [{ isSignal: true, alias: "context", required: true }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], submitForm: [{ type: i0.Output, args: ["submitForm"] }], clone: [{ type: i0.Output, args: ["clone"] }], delete: [{ type: i0.Output, args: ["delete"] }] } });
|
|
2236
2200
|
|
|
2237
2201
|
const TypePermission = ['read', 'write'];
|
|
2238
2202
|
var Scope;
|
|
@@ -2247,8 +2211,6 @@ class LayerContextDirective {
|
|
|
2247
2211
|
contextService = inject(ContextService);
|
|
2248
2212
|
layerService = inject(LayerService);
|
|
2249
2213
|
configService = inject(ConfigService);
|
|
2250
|
-
styleListService = inject(StyleListService);
|
|
2251
|
-
styleService = inject(StyleService);
|
|
2252
2214
|
shareMapService = inject(ShareMapService);
|
|
2253
2215
|
context$$;
|
|
2254
2216
|
queryParams;
|
|
@@ -2289,19 +2251,13 @@ class LayerContextDirective {
|
|
|
2289
2251
|
}
|
|
2290
2252
|
this.contextLayers = [];
|
|
2291
2253
|
this.layerService.unavailableLayers = [];
|
|
2292
|
-
const importExportOptions = this.configService.getConfig('importExport');
|
|
2293
2254
|
this.layerService
|
|
2294
2255
|
.createLayers(contextLayers, context.uri)
|
|
2295
2256
|
.subscribe((layers) => {
|
|
2296
2257
|
this.handleAddLayers(layers);
|
|
2297
2258
|
if (context.extraFeatures) {
|
|
2298
2259
|
context.extraFeatures.forEach((featureCollection) => {
|
|
2299
|
-
|
|
2300
|
-
addImportedFeaturesToMap(featureCollection, this.map);
|
|
2301
|
-
}
|
|
2302
|
-
else {
|
|
2303
|
-
addImportedFeaturesStyledToMap(featureCollection, this.map, this.styleListService, this.styleService);
|
|
2304
|
-
}
|
|
2260
|
+
addImportedFeaturesToMap(featureCollection, this.map);
|
|
2305
2261
|
});
|
|
2306
2262
|
}
|
|
2307
2263
|
this.contextLayersLoaded.emit(true);
|
|
@@ -2315,7 +2271,7 @@ class LayerContextDirective {
|
|
|
2315
2271
|
}
|
|
2316
2272
|
handleAddLayers(layers) {
|
|
2317
2273
|
const layersFiltrered = layers
|
|
2318
|
-
.filter((layer) => layer)
|
|
2274
|
+
.filter((layer) => !!layer)
|
|
2319
2275
|
.map((layer) => {
|
|
2320
2276
|
layer.visible = this.computeLayerVisibilityFromUrl(layer);
|
|
2321
2277
|
return layer;
|
|
@@ -2326,7 +2282,7 @@ class LayerContextDirective {
|
|
|
2326
2282
|
}
|
|
2327
2283
|
computeLayerVisibilityFromUrl(layer) {
|
|
2328
2284
|
const params = this.queryParams;
|
|
2329
|
-
const currentContext = this.contextService.context$.value
|
|
2285
|
+
const currentContext = this.contextService.context$.value?.uri;
|
|
2330
2286
|
const currentLayerid = layer.id;
|
|
2331
2287
|
let visible = layer.visible;
|
|
2332
2288
|
if (!params || !currentLayerid) {
|
|
@@ -2368,22 +2324,22 @@ class LayerContextDirective {
|
|
|
2368
2324
|
}
|
|
2369
2325
|
handleContextWithSharedUrl(context) {
|
|
2370
2326
|
if (!this.queryParams) {
|
|
2371
|
-
return context.layers;
|
|
2327
|
+
return context.layers ?? [];
|
|
2372
2328
|
}
|
|
2373
2329
|
const { layers, uri } = context;
|
|
2374
2330
|
const contextValue = this.shareMapService.getContext(this.queryParams);
|
|
2375
2331
|
if (!contextValue || contextValue === uri) {
|
|
2376
2332
|
const layersOptions = this.shareMapService.parseLayers(this.queryParams);
|
|
2377
|
-
if (layersOptions.length) {
|
|
2378
|
-
return mergeLayersOptions([...layers], layersOptions);
|
|
2333
|
+
if (layersOptions && layersOptions.length) {
|
|
2334
|
+
return mergeLayersOptions([...(layers ?? [])], layersOptions);
|
|
2379
2335
|
}
|
|
2380
2336
|
}
|
|
2381
|
-
return layers;
|
|
2337
|
+
return layers ?? [];
|
|
2382
2338
|
}
|
|
2383
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
2384
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.
|
|
2339
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: LayerContextDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2340
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.17", type: LayerContextDirective, isStandalone: true, selector: "[igoLayerContext]", inputs: { removeLayersOnContextChange: { classPropertyName: "removeLayersOnContextChange", publicName: "removeLayersOnContextChange", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { contextLayersLoaded: "contextLayersLoaded" }, ngImport: i0 });
|
|
2385
2341
|
}
|
|
2386
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
2342
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: LayerContextDirective, decorators: [{
|
|
2387
2343
|
type: Directive,
|
|
2388
2344
|
args: [{
|
|
2389
2345
|
selector: '[igoLayerContext]'
|
|
@@ -2451,7 +2407,7 @@ class MapContextDirective {
|
|
|
2451
2407
|
if (this.mediaService.isMobile()) {
|
|
2452
2408
|
if (typeof controlsContext.scaleLine !== 'boolean') {
|
|
2453
2409
|
const scaleLineOption = controlsContext.scaleLine;
|
|
2454
|
-
if (
|
|
2410
|
+
if (scaleLineOption && scaleLineOption.minWidth != null) {
|
|
2455
2411
|
scaleLineOption.minWidth = Math.min(64, scaleLineOption.minWidth);
|
|
2456
2412
|
controlsContext.scaleLine = scaleLineOption;
|
|
2457
2413
|
}
|
|
@@ -2460,10 +2416,10 @@ class MapContextDirective {
|
|
|
2460
2416
|
this.component.controls = controlsContext;
|
|
2461
2417
|
}
|
|
2462
2418
|
}
|
|
2463
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
2464
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.
|
|
2419
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: MapContextDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2420
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.17", type: MapContextDirective, isStandalone: true, selector: "[igoMapContext]", ngImport: i0 });
|
|
2465
2421
|
}
|
|
2466
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
2422
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: MapContextDirective, decorators: [{
|
|
2467
2423
|
type: Directive,
|
|
2468
2424
|
args: [{
|
|
2469
2425
|
selector: '[igoMapContext]'
|
|
@@ -2476,10 +2432,13 @@ class ContextEditComponent {
|
|
|
2476
2432
|
context = toSignal(this.contextService.editedContext$);
|
|
2477
2433
|
submitSuccessed = output();
|
|
2478
2434
|
onEdit(context) {
|
|
2479
|
-
const id = this.context()
|
|
2435
|
+
const id = this.context()?.id;
|
|
2436
|
+
if (!id) {
|
|
2437
|
+
throw new Error('Context id is required to update context');
|
|
2438
|
+
}
|
|
2480
2439
|
this.contextService.update(id, context).subscribe(() => {
|
|
2481
2440
|
this.messageService.success('igo.context.contextManager.dialog.saveMsg', 'igo.context.contextManager.dialog.saveTitle', undefined, {
|
|
2482
|
-
value: context.title || this.context()
|
|
2441
|
+
value: context.title || this.context()?.title
|
|
2483
2442
|
});
|
|
2484
2443
|
const currentContext = this.contextService.context$.value;
|
|
2485
2444
|
if (currentContext && currentContext.id === id) {
|
|
@@ -2490,12 +2449,12 @@ class ContextEditComponent {
|
|
|
2490
2449
|
this.submitSuccessed.emit(context);
|
|
2491
2450
|
});
|
|
2492
2451
|
}
|
|
2493
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
2494
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
2452
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ContextEditComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2453
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: ContextEditComponent, isStandalone: true, selector: "igo-context-edit", outputs: { submitSuccessed: "submitSuccessed" }, ngImport: i0, template: "@if (context()) {\n <igo-context-form\n [btnSubmitText]=\"'igo.context.contextManager.save' | translate\"\n [context]=\"context()\"\n (submitForm)=\"onEdit($any($event))\"\n />\n}\n", dependencies: [{ kind: "component", type: ContextFormComponent, selector: "igo-context-form", inputs: ["btnSubmitText", "context", "disabled"], outputs: ["submitForm", "clone", "delete"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i5$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2495
2454
|
}
|
|
2496
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
2455
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ContextEditComponent, decorators: [{
|
|
2497
2456
|
type: Component,
|
|
2498
|
-
args: [{ selector: 'igo-context-edit', imports: [ContextFormComponent, IgoLanguageModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (context()) {\n <igo-context-form\n [btnSubmitText]=\"'igo.context.contextManager.save' | translate\"\n [context]=\"context()\"\n (submitForm)=\"onEdit($event)\"\n />\n}\n" }]
|
|
2457
|
+
args: [{ selector: 'igo-context-edit', imports: [ContextFormComponent, IgoLanguageModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (context()) {\n <igo-context-form\n [btnSubmitText]=\"'igo.context.contextManager.save' | translate\"\n [context]=\"context()\"\n (submitForm)=\"onEdit($any($event))\"\n />\n}\n" }]
|
|
2499
2458
|
}], propDecorators: { submitSuccessed: [{ type: i0.Output, args: ["submitSuccessed"] }] } });
|
|
2500
2459
|
|
|
2501
2460
|
class ContextItemComponent {
|
|
@@ -2505,10 +2464,10 @@ class ContextItemComponent {
|
|
|
2505
2464
|
color = 'primary';
|
|
2506
2465
|
collapsed = true;
|
|
2507
2466
|
showFavorite = input(true, ...(ngDevMode ? [{ debugName: "showFavorite" }] : /* istanbul ignore next */ []));
|
|
2508
|
-
context = input(
|
|
2509
|
-
default = input(
|
|
2510
|
-
selected = input(
|
|
2511
|
-
isDesktop = input(
|
|
2467
|
+
context = input.required(...(ngDevMode ? [{ debugName: "context" }] : /* istanbul ignore next */ []));
|
|
2468
|
+
default = input(...(ngDevMode ? [undefined, { debugName: "default" }] : /* istanbul ignore next */ []));
|
|
2469
|
+
selected = input(...(ngDevMode ? [undefined, { debugName: "selected" }] : /* istanbul ignore next */ []));
|
|
2470
|
+
isDesktop = input(...(ngDevMode ? [undefined, { debugName: "isDesktop" }] : /* istanbul ignore next */ []));
|
|
2512
2471
|
edit = output();
|
|
2513
2472
|
delete = output();
|
|
2514
2473
|
save = output();
|
|
@@ -2520,7 +2479,7 @@ class ContextItemComponent {
|
|
|
2520
2479
|
manageTools = output();
|
|
2521
2480
|
share = output();
|
|
2522
2481
|
get hidden() {
|
|
2523
|
-
return this.context()
|
|
2482
|
+
return this.context()?.hidden ?? false;
|
|
2524
2483
|
}
|
|
2525
2484
|
get canShare() {
|
|
2526
2485
|
return this.storageService.get('canShare') === true;
|
|
@@ -2532,10 +2491,10 @@ class ContextItemComponent {
|
|
|
2532
2491
|
favoriteClick(context) {
|
|
2533
2492
|
this.favorite.emit(context);
|
|
2534
2493
|
}
|
|
2535
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
2536
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
2494
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ContextItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2495
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: ContextItemComponent, isStandalone: true, selector: "igo-context-item", inputs: { showFavorite: { classPropertyName: "showFavorite", publicName: "showFavorite", isSignal: true, isRequired: false, transformFunction: null }, context: { classPropertyName: "context", publicName: "context", isSignal: true, isRequired: true, transformFunction: null }, default: { classPropertyName: "default", publicName: "default", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, isDesktop: { classPropertyName: "isDesktop", publicName: "isDesktop", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { edit: "edit", delete: "delete", save: "save", clone: "clone", hide: "hide", show: "show", favorite: "favorite", managePermissions: "managePermissions", manageTools: "manageTools", share: "share" }, host: { properties: { "class.igo-list-item-focused": "this.isMenuOpen" } }, viewQueries: [{ propertyName: "itemActionsMenuTrigger", first: true, predicate: MatMenuTrigger, descendants: true, isSignal: true }], ngImport: i0, template: "@let ctx = context()!;\n<mat-list-item class=\"mat-list-item\" [class.mat-list-item-light]=\"hidden\">\n @if (auth.authenticated) {\n <button\n matListItemAvatar\n mat-icon-button\n igoStopPropagation\n [matTooltip]=\"\n auth.authenticated\n ? ('igo.context.contextManager.favorite' | translate)\n : ''\n \"\n matTooltipShowDelay=\"500\"\n [color]=\"default() ? 'primary' : 'default'\"\n (click)=\"favoriteClick(ctx)\"\n >\n @if (!ctx.iconImage) {\n <mat-icon>{{\n ctx.icon ? ctx.icon : ctx.scope === 'public' ? 'public' : 'star'\n }}</mat-icon>\n } @else {\n <img [src]=\"ctx.iconImage\" alt=\"Ic\u00F4ne pour le favori de contexte\" />\n }\n </button>\n } @else if (showFavorite()) {\n <button\n matListItemAvatar\n mat-icon-button\n igoStopPropagation\n [matTooltip]=\"'igo.context.contextManager.favorite' | translate\"\n matTooltipShowDelay=\"500\"\n [color]=\"default() ? 'primary' : 'default'\"\n (click)=\"favoriteClick(ctx)\"\n >\n <mat-icon>star</mat-icon>\n </button>\n }\n\n <span matListItemTitle>{{ ctx.title }}</span>\n\n @if (auth.authenticated) {\n <div\n matListItemMeta\n igoStopPropagation\n class=\"igo-actions-container\"\n [class.--not-desktop]=\"!isDesktop()\"\n [class.--selected]=\"selected()\"\n >\n @if (\n collapsed && selected() && (ctx.permission === 'write' || ctx.imported)\n ) {\n <button\n class=\"save-button\"\n mat-icon-button\n [matTooltip]=\"'igo.context.contextManager.save' | translate\"\n matTooltipShowDelay=\"500\"\n [color]=\"color\"\n (click)=\"save.emit(ctx)\"\n >\n <mat-icon>save</mat-icon>\n </button>\n }\n\n <button\n class=\"actions-button\"\n mat-icon-button\n [color]=\"color\"\n [matMenuTriggerFor]=\"itemActionsMenu\"\n #itemActionsMenuTrigger=\"matMenuTrigger\"\n >\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #itemActionsMenu=\"matMenu\">\n @if (!ctx.imported) {\n @if (canShare) {\n <button\n mat-menu-item\n [matTooltip]=\"\n 'igo.context.contextManager.managePermissions' | translate\n \"\n matTooltipShowDelay=\"500\"\n (click)=\"managePermissions.emit(ctx)\"\n >\n <mat-icon>manage_accounts</mat-icon\n ><span>{{\n 'igo.context.contextManager.managePermissions' | translate\n }}</span>\n </button>\n }\n\n <button\n class=\"clone-button\"\n mat-menu-item\n [matTooltip]=\"'igo.context.contextManager.clone' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"clone.emit(ctx)\"\n >\n <mat-icon>content_copy</mat-icon>\n <span>{{ 'igo.context.contextManager.clone' | translate }}</span>\n </button>\n\n @if (ctx.permission === 'write') {\n <button\n class=\"edit-button\"\n mat-menu-item\n [matTooltip]=\"'igo.context.contextManager.edit' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"edit.emit(ctx)\"\n >\n <mat-icon>edit</mat-icon>\n <span>{{ 'igo.context.contextManager.edit' | translate }}</span>\n </button>\n }\n\n @if (!ctx.hidden) {\n <button\n class=\"hide-button\"\n mat-menu-item\n [matTooltip]=\"'igo.context.contextManager.hide' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"hide.emit(ctx)\"\n >\n <mat-icon>visibility</mat-icon>\n <span>{{ 'igo.context.contextManager.hide' | translate }}</span>\n </button>\n }\n\n @if (ctx.hidden) {\n <button\n class=\"hide-button\"\n mat-menu-item\n [matTooltip]=\"'igo.context.contextManager.show' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"show.emit(ctx)\"\n >\n <mat-icon>visibility_off</mat-icon>\n <span>{{ 'igo.context.contextManager.show' | translate }}</span>\n </button>\n }\n\n <button\n mat-menu-item\n class=\"share-button\"\n [matTooltip]=\"'igo.context.contextManager.share' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"share.emit(ctx)\"\n >\n <mat-icon>share</mat-icon>\n <span>{{ 'igo.context.contextManager.share' | translate }}</span>\n </button>\n }\n\n @if (ctx.permission === 'write' || ctx.imported) {\n <button\n class=\"delete-button\"\n mat-menu-item\n color=\"warn\"\n [matTooltip]=\"'igo.context.contextManager.delete' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"delete.emit(ctx)\"\n >\n <mat-icon>delete</mat-icon>\n <span>{{ 'igo.context.contextManager.delete' | translate }}</span>\n </button>\n }\n </mat-menu>\n </div>\n }\n</mat-list-item>\n", styles: [":host{overflow:hidden}:host:hover .igo-actions-container button,:host.igo-list-item-focused .igo-actions-container button,:host .--not-desktop button,:host .--selected button{visibility:visible!important}.igo-actions-container{flex-shrink:0}.igo-actions-container button{visibility:hidden}.igo-actions-container button.disabled{visibility:visible}.igo-actions-expand-container{display:inline-flex}mat-icon.disabled{color:#00000061}button[matlistitemavatar]{margin-right:8px}.mdc-list-item--with-leading-avatar .mat-mdc-list-item-avatar{background-color:transparent}\n"], dependencies: [{ kind: "ngmodule", type: MatListModule }, { kind: "component", type: i3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i3.MatListItemAvatar, selector: "[matListItemAvatar]" }, { kind: "directive", type: i3.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "directive", type: i3.MatListItemMeta, selector: "[matListItemMeta]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: StopPropagationDirective, selector: "[igoStopPropagation]" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i5$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i5$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2537
2496
|
}
|
|
2538
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
2497
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ContextItemComponent, decorators: [{
|
|
2539
2498
|
type: Component,
|
|
2540
2499
|
args: [{ selector: 'igo-context-item', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
2541
2500
|
MatListModule,
|
|
@@ -2547,16 +2506,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
|
|
|
2547
2506
|
IgoLanguageModule
|
|
2548
2507
|
], host: {
|
|
2549
2508
|
'[class.igo-list-item-focused]': 'this.isMenuOpen'
|
|
2550
|
-
}, template: "<mat-list-item class=\"mat-list-item\" [class.mat-list-item-light]=\"hidden\">\n @if (auth.authenticated) {\n <button\n matListItemAvatar\n mat-icon-button\n igoStopPropagation\n [matTooltip]=\"\n auth.authenticated\n ? ('igo.context.contextManager.favorite' | translate)\n : ''\n \"\n matTooltipShowDelay=\"500\"\n [color]=\"default() ? 'primary' : 'default'\"\n (click)=\"favoriteClick(
|
|
2551
|
-
}], propDecorators: { showFavorite: [{ type: i0.Input, args: [{ isSignal: true, alias: "showFavorite", required: false }] }], context: [{ type: i0.Input, args: [{ isSignal: true, alias: "context", required:
|
|
2509
|
+
}, template: "@let ctx = context()!;\n<mat-list-item class=\"mat-list-item\" [class.mat-list-item-light]=\"hidden\">\n @if (auth.authenticated) {\n <button\n matListItemAvatar\n mat-icon-button\n igoStopPropagation\n [matTooltip]=\"\n auth.authenticated\n ? ('igo.context.contextManager.favorite' | translate)\n : ''\n \"\n matTooltipShowDelay=\"500\"\n [color]=\"default() ? 'primary' : 'default'\"\n (click)=\"favoriteClick(ctx)\"\n >\n @if (!ctx.iconImage) {\n <mat-icon>{{\n ctx.icon ? ctx.icon : ctx.scope === 'public' ? 'public' : 'star'\n }}</mat-icon>\n } @else {\n <img [src]=\"ctx.iconImage\" alt=\"Ic\u00F4ne pour le favori de contexte\" />\n }\n </button>\n } @else if (showFavorite()) {\n <button\n matListItemAvatar\n mat-icon-button\n igoStopPropagation\n [matTooltip]=\"'igo.context.contextManager.favorite' | translate\"\n matTooltipShowDelay=\"500\"\n [color]=\"default() ? 'primary' : 'default'\"\n (click)=\"favoriteClick(ctx)\"\n >\n <mat-icon>star</mat-icon>\n </button>\n }\n\n <span matListItemTitle>{{ ctx.title }}</span>\n\n @if (auth.authenticated) {\n <div\n matListItemMeta\n igoStopPropagation\n class=\"igo-actions-container\"\n [class.--not-desktop]=\"!isDesktop()\"\n [class.--selected]=\"selected()\"\n >\n @if (\n collapsed && selected() && (ctx.permission === 'write' || ctx.imported)\n ) {\n <button\n class=\"save-button\"\n mat-icon-button\n [matTooltip]=\"'igo.context.contextManager.save' | translate\"\n matTooltipShowDelay=\"500\"\n [color]=\"color\"\n (click)=\"save.emit(ctx)\"\n >\n <mat-icon>save</mat-icon>\n </button>\n }\n\n <button\n class=\"actions-button\"\n mat-icon-button\n [color]=\"color\"\n [matMenuTriggerFor]=\"itemActionsMenu\"\n #itemActionsMenuTrigger=\"matMenuTrigger\"\n >\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #itemActionsMenu=\"matMenu\">\n @if (!ctx.imported) {\n @if (canShare) {\n <button\n mat-menu-item\n [matTooltip]=\"\n 'igo.context.contextManager.managePermissions' | translate\n \"\n matTooltipShowDelay=\"500\"\n (click)=\"managePermissions.emit(ctx)\"\n >\n <mat-icon>manage_accounts</mat-icon\n ><span>{{\n 'igo.context.contextManager.managePermissions' | translate\n }}</span>\n </button>\n }\n\n <button\n class=\"clone-button\"\n mat-menu-item\n [matTooltip]=\"'igo.context.contextManager.clone' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"clone.emit(ctx)\"\n >\n <mat-icon>content_copy</mat-icon>\n <span>{{ 'igo.context.contextManager.clone' | translate }}</span>\n </button>\n\n @if (ctx.permission === 'write') {\n <button\n class=\"edit-button\"\n mat-menu-item\n [matTooltip]=\"'igo.context.contextManager.edit' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"edit.emit(ctx)\"\n >\n <mat-icon>edit</mat-icon>\n <span>{{ 'igo.context.contextManager.edit' | translate }}</span>\n </button>\n }\n\n @if (!ctx.hidden) {\n <button\n class=\"hide-button\"\n mat-menu-item\n [matTooltip]=\"'igo.context.contextManager.hide' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"hide.emit(ctx)\"\n >\n <mat-icon>visibility</mat-icon>\n <span>{{ 'igo.context.contextManager.hide' | translate }}</span>\n </button>\n }\n\n @if (ctx.hidden) {\n <button\n class=\"hide-button\"\n mat-menu-item\n [matTooltip]=\"'igo.context.contextManager.show' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"show.emit(ctx)\"\n >\n <mat-icon>visibility_off</mat-icon>\n <span>{{ 'igo.context.contextManager.show' | translate }}</span>\n </button>\n }\n\n <button\n mat-menu-item\n class=\"share-button\"\n [matTooltip]=\"'igo.context.contextManager.share' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"share.emit(ctx)\"\n >\n <mat-icon>share</mat-icon>\n <span>{{ 'igo.context.contextManager.share' | translate }}</span>\n </button>\n }\n\n @if (ctx.permission === 'write' || ctx.imported) {\n <button\n class=\"delete-button\"\n mat-menu-item\n color=\"warn\"\n [matTooltip]=\"'igo.context.contextManager.delete' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"delete.emit(ctx)\"\n >\n <mat-icon>delete</mat-icon>\n <span>{{ 'igo.context.contextManager.delete' | translate }}</span>\n </button>\n }\n </mat-menu>\n </div>\n }\n</mat-list-item>\n", styles: [":host{overflow:hidden}:host:hover .igo-actions-container button,:host.igo-list-item-focused .igo-actions-container button,:host .--not-desktop button,:host .--selected button{visibility:visible!important}.igo-actions-container{flex-shrink:0}.igo-actions-container button{visibility:hidden}.igo-actions-container button.disabled{visibility:visible}.igo-actions-expand-container{display:inline-flex}mat-icon.disabled{color:#00000061}button[matlistitemavatar]{margin-right:8px}.mdc-list-item--with-leading-avatar .mat-mdc-list-item-avatar{background-color:transparent}\n"] }]
|
|
2510
|
+
}], propDecorators: { showFavorite: [{ type: i0.Input, args: [{ isSignal: true, alias: "showFavorite", required: false }] }], context: [{ type: i0.Input, args: [{ isSignal: true, alias: "context", required: true }] }], default: [{ type: i0.Input, args: [{ isSignal: true, alias: "default", required: false }] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }], isDesktop: [{ type: i0.Input, args: [{ isSignal: true, alias: "isDesktop", required: false }] }], edit: [{ type: i0.Output, args: ["edit"] }], delete: [{ type: i0.Output, args: ["delete"] }], save: [{ type: i0.Output, args: ["save"] }], clone: [{ type: i0.Output, args: ["clone"] }], hide: [{ type: i0.Output, args: ["hide"] }], show: [{ type: i0.Output, args: ["show"] }], favorite: [{ type: i0.Output, args: ["favorite"] }], managePermissions: [{ type: i0.Output, args: ["managePermissions"] }], manageTools: [{ type: i0.Output, args: ["manageTools"] }], share: [{ type: i0.Output, args: ["share"] }], itemActionsMenuTrigger: [{ type: i0.ViewChild, args: [i0.forwardRef(() => MatMenuTrigger), { isSignal: true }] }] } });
|
|
2552
2511
|
|
|
2553
2512
|
class BookmarkDialogComponent {
|
|
2554
2513
|
dialogRef = inject(MatDialogRef);
|
|
2555
|
-
title;
|
|
2556
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
2557
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.
|
|
2514
|
+
title = '';
|
|
2515
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: BookmarkDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2516
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.17", type: BookmarkDialogComponent, isStandalone: true, selector: "igo-bookmark-dialog", ngImport: i0, template: "<h1 mat-dialog-title>\n {{ 'igo.context.bookmarkButton.dialog.title' | translate }}\n</h1>\n<div mat-dialog-content>\n <mat-form-field>\n <input\n matInput\n required\n autocomplete=\"off\"\n maxlength=\"128\"\n [placeholder]=\"\n 'igo.context.bookmarkButton.dialog.placeholder' | translate\n \"\n [(ngModel)]=\"title\"\n />\n </mat-form-field>\n</div>\n<div mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n [disabled]=\"!title\"\n (click)=\"dialogRef.close(title)\"\n >\n {{ 'igo.common.confirmDialog.confirmBtn' | translate }}\n </button>\n <button mat-button (click)=\"dialogRef.close(false)\">\n {{ 'igo.common.confirmDialog.cancelBtn' | translate }}\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i5$1.TranslatePipe, name: "translate" }] });
|
|
2558
2517
|
}
|
|
2559
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
2518
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: BookmarkDialogComponent, decorators: [{
|
|
2560
2519
|
type: Component,
|
|
2561
2520
|
args: [{ selector: 'igo-bookmark-dialog', imports: [
|
|
2562
2521
|
MatDialogTitle,
|
|
@@ -2597,7 +2556,7 @@ class ContextListComponent {
|
|
|
2597
2556
|
previousMessageId;
|
|
2598
2557
|
sortAlphaOnIcon = SORT_ALPHA_ON_ICON;
|
|
2599
2558
|
sortAlphaOffIcon = SORT_ALPHA_OFF_ICON;
|
|
2600
|
-
isDesktop = input(
|
|
2559
|
+
isDesktop = input(...(ngDevMode ? [undefined, { debugName: "isDesktop" }] : /* istanbul ignore next */ []));
|
|
2601
2560
|
get contexts() {
|
|
2602
2561
|
return this._contexts;
|
|
2603
2562
|
}
|
|
@@ -2606,8 +2565,8 @@ class ContextListComponent {
|
|
|
2606
2565
|
this.next();
|
|
2607
2566
|
}
|
|
2608
2567
|
_contexts = { ours: [] };
|
|
2609
|
-
selectedContext = model(
|
|
2610
|
-
map = input(
|
|
2568
|
+
selectedContext = model(...(ngDevMode ? [undefined, { debugName: "selectedContext" }] : /* istanbul ignore next */ []));
|
|
2569
|
+
map = input(...(ngDevMode ? [undefined, { debugName: "map" }] : /* istanbul ignore next */ []));
|
|
2611
2570
|
get defaultContextId() {
|
|
2612
2571
|
return this.contextConfigs
|
|
2613
2572
|
? this._defaultContextId
|
|
@@ -2638,7 +2597,7 @@ class ContextListComponent {
|
|
|
2638
2597
|
shared: 'igo.context.contextManager.sharedContexts',
|
|
2639
2598
|
public: 'igo.context.contextManager.publicContexts'
|
|
2640
2599
|
};
|
|
2641
|
-
users;
|
|
2600
|
+
users = [];
|
|
2642
2601
|
permissions = [];
|
|
2643
2602
|
actionStore = new ActionStore([]);
|
|
2644
2603
|
actionbarMode = ActionbarMode.Overlay;
|
|
@@ -2656,13 +2615,13 @@ class ContextListComponent {
|
|
|
2656
2615
|
}
|
|
2657
2616
|
_term = '';
|
|
2658
2617
|
get sortedAlpha() {
|
|
2659
|
-
return this._sortedAlpha;
|
|
2618
|
+
return this._sortedAlpha ?? false;
|
|
2660
2619
|
}
|
|
2661
2620
|
set sortedAlpha(value) {
|
|
2662
2621
|
this._sortedAlpha = value;
|
|
2663
2622
|
this.next();
|
|
2664
2623
|
}
|
|
2665
|
-
_sortedAlpha
|
|
2624
|
+
_sortedAlpha;
|
|
2666
2625
|
showContextFilter = ContextListControlsEnum.always;
|
|
2667
2626
|
thresholdToFilter = 5;
|
|
2668
2627
|
get isEmpty() {
|
|
@@ -2707,7 +2666,8 @@ class ContextListComponent {
|
|
|
2707
2666
|
this.showHidden = this.storageService.get('contexts.showHidden');
|
|
2708
2667
|
this.contexts$$ = this.contextService.contexts$.subscribe((contexts) => (this.contexts = contexts));
|
|
2709
2668
|
this.defaultContextId$$ = this.contextService.defaultContextId$.subscribe((id) => {
|
|
2710
|
-
|
|
2669
|
+
if (id != null)
|
|
2670
|
+
this.defaultContextId = id;
|
|
2711
2671
|
});
|
|
2712
2672
|
const storedContextUri = this.storageService.get('favorite.context.uri');
|
|
2713
2673
|
if (storedContextUri && !this.auth.authenticated) {
|
|
@@ -2717,7 +2677,8 @@ class ContextListComponent {
|
|
|
2717
2677
|
this.selectedContext$$ = this.contextService.context$
|
|
2718
2678
|
.pipe(debounceTime(100))
|
|
2719
2679
|
.subscribe((context) => {
|
|
2720
|
-
|
|
2680
|
+
if (context)
|
|
2681
|
+
this.setSelected(context);
|
|
2721
2682
|
});
|
|
2722
2683
|
this.auth.authenticate$.subscribe((authenticate) => {
|
|
2723
2684
|
if (authenticate) {
|
|
@@ -2781,9 +2742,11 @@ class ContextListComponent {
|
|
|
2781
2742
|
.normalize('NFD')
|
|
2782
2743
|
.replace(/[\u0300-\u036f]/g, '');
|
|
2783
2744
|
const contextTitleNormalized = context.title
|
|
2784
|
-
.
|
|
2785
|
-
|
|
2786
|
-
|
|
2745
|
+
? context.title
|
|
2746
|
+
.toLowerCase()
|
|
2747
|
+
.normalize('NFD')
|
|
2748
|
+
.replace(/[\u0300-\u036f]/g, '')
|
|
2749
|
+
: '';
|
|
2787
2750
|
return contextTitleNormalized.includes(filterNormalized);
|
|
2788
2751
|
});
|
|
2789
2752
|
let updateContexts = {
|
|
@@ -2796,9 +2759,11 @@ class ContextListComponent {
|
|
|
2796
2759
|
.normalize('NFD')
|
|
2797
2760
|
.replace(/[\u0300-\u036f]/g, '');
|
|
2798
2761
|
const contextTitleNormalized = context.title
|
|
2799
|
-
.
|
|
2800
|
-
|
|
2801
|
-
|
|
2762
|
+
? context.title
|
|
2763
|
+
.toLowerCase()
|
|
2764
|
+
.normalize('NFD')
|
|
2765
|
+
.replace(/[\u0300-\u036f]/g, '')
|
|
2766
|
+
: '';
|
|
2802
2767
|
return contextTitleNormalized.includes(filterNormalized);
|
|
2803
2768
|
});
|
|
2804
2769
|
updateContexts.public = publics;
|
|
@@ -2810,9 +2775,11 @@ class ContextListComponent {
|
|
|
2810
2775
|
.normalize('NFD')
|
|
2811
2776
|
.replace(/[\u0300-\u036f]/g, '');
|
|
2812
2777
|
const contextTitleNormalized = context.title
|
|
2813
|
-
.
|
|
2814
|
-
|
|
2815
|
-
|
|
2778
|
+
? context.title
|
|
2779
|
+
.toLowerCase()
|
|
2780
|
+
.normalize('NFD')
|
|
2781
|
+
.replace(/[\u0300-\u036f]/g, '')
|
|
2782
|
+
: '';
|
|
2816
2783
|
return contextTitleNormalized.includes(filterNormalized);
|
|
2817
2784
|
});
|
|
2818
2785
|
updateContexts.shared = shared;
|
|
@@ -2845,41 +2812,39 @@ class ContextListComponent {
|
|
|
2845
2812
|
}
|
|
2846
2813
|
}
|
|
2847
2814
|
sortContextsList(contexts) {
|
|
2848
|
-
|
|
2849
|
-
|
|
2850
|
-
|
|
2851
|
-
|
|
2815
|
+
const contextsList = JSON.parse(JSON.stringify(contexts));
|
|
2816
|
+
contextsList.ours.sort((a, b) => {
|
|
2817
|
+
if (this.normalize(a.title ?? '') < this.normalize(b.title ?? '')) {
|
|
2818
|
+
return -1;
|
|
2819
|
+
}
|
|
2820
|
+
if (this.normalize(a.title ?? '') > this.normalize(b.title ?? '')) {
|
|
2821
|
+
return 1;
|
|
2822
|
+
}
|
|
2823
|
+
return 0;
|
|
2824
|
+
});
|
|
2825
|
+
if (contextsList.shared) {
|
|
2826
|
+
contextsList.shared.sort((a, b) => {
|
|
2827
|
+
if (this.normalize(a.title ?? '') < this.normalize(b.title ?? '')) {
|
|
2852
2828
|
return -1;
|
|
2853
2829
|
}
|
|
2854
|
-
if (this.normalize(a.title) > this.normalize(b.title)) {
|
|
2830
|
+
if (this.normalize(a.title ?? '') > this.normalize(b.title ?? '')) {
|
|
2831
|
+
return 1;
|
|
2832
|
+
}
|
|
2833
|
+
return 0;
|
|
2834
|
+
});
|
|
2835
|
+
}
|
|
2836
|
+
else if (contextsList.public) {
|
|
2837
|
+
contextsList.public.sort((a, b) => {
|
|
2838
|
+
if (this.normalize(a.title ?? '') < this.normalize(b.title ?? '')) {
|
|
2839
|
+
return -1;
|
|
2840
|
+
}
|
|
2841
|
+
if (this.normalize(a.title ?? '') > this.normalize(b.title ?? '')) {
|
|
2855
2842
|
return 1;
|
|
2856
2843
|
}
|
|
2857
2844
|
return 0;
|
|
2858
2845
|
});
|
|
2859
|
-
if (contextsList.shared) {
|
|
2860
|
-
contextsList.shared.sort((a, b) => {
|
|
2861
|
-
if (this.normalize(a.title) < this.normalize(b.title)) {
|
|
2862
|
-
return -1;
|
|
2863
|
-
}
|
|
2864
|
-
if (this.normalize(a.title) > this.normalize(b.title)) {
|
|
2865
|
-
return 1;
|
|
2866
|
-
}
|
|
2867
|
-
return 0;
|
|
2868
|
-
});
|
|
2869
|
-
}
|
|
2870
|
-
else if (contextsList.public) {
|
|
2871
|
-
contextsList.public.sort((a, b) => {
|
|
2872
|
-
if (this.normalize(a.title) < this.normalize(b.title)) {
|
|
2873
|
-
return -1;
|
|
2874
|
-
}
|
|
2875
|
-
if (this.normalize(a.title) > this.normalize(b.title)) {
|
|
2876
|
-
return 1;
|
|
2877
|
-
}
|
|
2878
|
-
return 0;
|
|
2879
|
-
});
|
|
2880
|
-
}
|
|
2881
|
-
return contextsList;
|
|
2882
2846
|
}
|
|
2847
|
+
return contextsList;
|
|
2883
2848
|
}
|
|
2884
2849
|
normalize(str) {
|
|
2885
2850
|
return str
|
|
@@ -2900,14 +2865,13 @@ class ContextListComponent {
|
|
|
2900
2865
|
.pipe(take(1))
|
|
2901
2866
|
.subscribe((title) => {
|
|
2902
2867
|
if (title) {
|
|
2903
|
-
this.onCreate({ title, empty });
|
|
2868
|
+
this.onCreate({ title, empty: empty ?? false });
|
|
2904
2869
|
}
|
|
2905
2870
|
});
|
|
2906
2871
|
}
|
|
2907
2872
|
getPermission(user) {
|
|
2908
2873
|
if (user) {
|
|
2909
|
-
|
|
2910
|
-
return permission;
|
|
2874
|
+
return this.permissions.find((p) => p.name === user.name);
|
|
2911
2875
|
}
|
|
2912
2876
|
}
|
|
2913
2877
|
handleToggleCategory(user, parent) {
|
|
@@ -2919,17 +2883,17 @@ class ContextListComponent {
|
|
|
2919
2883
|
}
|
|
2920
2884
|
if (parent) {
|
|
2921
2885
|
let indeterminate = false;
|
|
2922
|
-
for (const c of parent.childs) {
|
|
2886
|
+
for (const c of parent.childs ?? []) {
|
|
2923
2887
|
const cPermission = this.getPermission(c);
|
|
2924
|
-
if (cPermission.checked !== permission
|
|
2888
|
+
if (cPermission && cPermission.checked !== permission?.checked) {
|
|
2925
2889
|
indeterminate = true;
|
|
2926
2890
|
break;
|
|
2927
2891
|
}
|
|
2928
2892
|
}
|
|
2929
2893
|
const parentPermission = this.getPermission(parent);
|
|
2930
2894
|
if (parentPermission) {
|
|
2931
|
-
parentPermission.checked = permission
|
|
2932
|
-
this.storageService.set('contexts.permissions.' + parentPermission.name, permission
|
|
2895
|
+
parentPermission.checked = permission?.checked ?? false;
|
|
2896
|
+
this.storageService.set('contexts.permissions.' + parentPermission.name, permission?.checked ?? false);
|
|
2933
2897
|
parentPermission.indeterminate = indeterminate;
|
|
2934
2898
|
}
|
|
2935
2899
|
}
|
|
@@ -2937,9 +2901,9 @@ class ContextListComponent {
|
|
|
2937
2901
|
for (const c of user.childs) {
|
|
2938
2902
|
const childrenPermission = this.getPermission(c);
|
|
2939
2903
|
if (childrenPermission &&
|
|
2940
|
-
childrenPermission.checked !== permission
|
|
2941
|
-
childrenPermission.checked = permission
|
|
2942
|
-
this.storageService.set('contexts.permissions.' + childrenPermission.name, permission
|
|
2904
|
+
childrenPermission.checked !== permission?.checked) {
|
|
2905
|
+
childrenPermission.checked = permission?.checked ?? false;
|
|
2906
|
+
this.storageService.set('contexts.permissions.' + childrenPermission.name, permission?.checked ?? false);
|
|
2943
2907
|
}
|
|
2944
2908
|
}
|
|
2945
2909
|
}
|
|
@@ -2967,7 +2931,7 @@ class ContextListComponent {
|
|
|
2967
2931
|
const { toolKey, sidenavKey, languageKey } = this.shareMapService.routeService.options;
|
|
2968
2932
|
const { context: contextKey } = this.shareMapService.options;
|
|
2969
2933
|
const baseOrigin = this.shareMapService.sanitizeBaseUrl(this.shareMapService.document.location.href);
|
|
2970
|
-
const url = context.uri === currentContext
|
|
2934
|
+
const url = context.uri === currentContext?.uri
|
|
2971
2935
|
? this.shareMapService.generateUrl(this.map(), this.contextService.context$.value)
|
|
2972
2936
|
: `${baseOrigin}${contextKey}=${context.uri}`;
|
|
2973
2937
|
const params = [];
|
|
@@ -3017,7 +2981,9 @@ class ContextListComponent {
|
|
|
3017
2981
|
this.handleContextChanges(changes);
|
|
3018
2982
|
msgSuccess();
|
|
3019
2983
|
}), switchMap(() => this.contextService.getDetails(context.id)), tap((fullContext) => {
|
|
3020
|
-
this.contextService.context$.value
|
|
2984
|
+
const currentCtx = this.contextService.context$.value;
|
|
2985
|
+
if (currentCtx)
|
|
2986
|
+
currentCtx.layers = fullContext.layers;
|
|
3021
2987
|
}), take(1))
|
|
3022
2988
|
.subscribe();
|
|
3023
2989
|
this.save.emit(context);
|
|
@@ -3026,8 +2992,8 @@ class ContextListComponent {
|
|
|
3026
2992
|
const map = this.mapService.getMap();
|
|
3027
2993
|
changes.layers.created.forEach((layerCreated) => {
|
|
3028
2994
|
const layer = isLayerItemOptions(layerCreated)
|
|
3029
|
-
? map
|
|
3030
|
-
: map
|
|
2995
|
+
? map?.layerController.getBySourceId(layerCreated.sourceOptions.id)
|
|
2996
|
+
: map?.layerController.getByTitle(layerCreated.title);
|
|
3031
2997
|
if (layer) {
|
|
3032
2998
|
layer.id = layerCreated.id;
|
|
3033
2999
|
}
|
|
@@ -3123,10 +3089,10 @@ class ContextListComponent {
|
|
|
3123
3089
|
}
|
|
3124
3090
|
this.hide.emit(context);
|
|
3125
3091
|
}
|
|
3126
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3127
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: ContextListComponent, isStandalone: true, selector: "igo-context-list", inputs: { isDesktop: { classPropertyName: "isDesktop", publicName: "isDesktop", isSignal: true, isRequired: false, transformFunction: null }, contexts: { classPropertyName: "contexts", publicName: "contexts", isSignal: false, isRequired: false, transformFunction: null }, selectedContext: { classPropertyName: "selectedContext", publicName: "selectedContext", isSignal: true, isRequired: false, transformFunction: null }, map: { classPropertyName: "map", publicName: "map", isSignal: true, isRequired: false, transformFunction: null }, defaultContextId: { classPropertyName: "defaultContextId", publicName: "defaultContextId", isSignal: false, isRequired: false, transformFunction: null }, term: { classPropertyName: "term", publicName: "term", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { selectedContext: "selectedContextChange", select: "select", unselect: "unselect", edit: "edit", delete: "delete", save: "save", clone: "clone", create: "create", hide: "hide", show: "show", showHiddenContexts: "showHiddenContexts", favorite: "favorite", managePermissions: "managePermissions", manageTools: "manageTools", filterPermissionsChanged: "filterPermissionsChanged" }, ngImport: i0, template: "<igo-list [navigation]=\"true\">\n <div class=\"context-filter-container\">\n @if (showFilter()) {\n <mat-form-field>\n <mat-label>{{\n 'igo.context.contextManager.filterPlaceHolder' | translate\n }}</mat-label>\n <input\n matInput\n type=\"text\"\n [placeholder]=\"\n 'igo.context.contextManager.filterPlaceHolder' | translate\n \"\n [(ngModel)]=\"term\"\n />\n @if (term.length) {\n <button\n mat-icon-button\n matSuffix\n class=\"clear-button\"\n aria-label=\"Clear\"\n color=\"warn\"\n (click)=\"clearFilter()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n }\n\n <div class=\"actions-container\">\n <button\n mat-icon-button\n [matTooltip]=\"\n sortedAlpha\n ? ('igo.context.contextManager.sortDefault' | translate)\n : ('igo.context.contextManager.sortAlphabetically' | translate)\n \"\n matTooltipShowDelay=\"500\"\n (click)=\"toggleSort()\"\n >\n <igo-icon\n color=\"primary\"\n [icon]=\"sortedAlpha ? sortAlphaOnIcon : sortAlphaOffIcon\"\n />\n </button>\n\n @if (auth.authenticated && contextConfigs) {\n <igo-actionbar\n class=\"add-context-button\"\n [iconColor]=\"color\"\n [store]=\"actionStore\"\n [withIcon]=\"true\"\n icon=\"add\"\n [withTitle]=\"actionbarMode === 'overlay'\"\n [horizontal]=\"false\"\n [mode]=\"actionbarMode\"\n />\n\n <button\n class=\"users-filter\"\n mat-icon-button\n [matTooltip]=\"'igo.context.contextManager.filterUser' | translate\"\n matTooltipShowDelay=\"500\"\n [matMenuTriggerFor]=\"accountMenu\"\n >\n <mat-icon color=\"primary\">filter_alt</mat-icon>\n </button>\n }\n <mat-menu #accountMenu=\"matMenu\">\n @for (user of users; track user.name) {\n @if (!user.childs) {\n <button mat-menu-item class=\"profil-menu\">\n <mat-checkbox\n [checked]=\"getPermission(user).checked\"\n [indeterminate]=\"getPermission(user).indeterminate\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"handleToggleCategory(user)\"\n />\n <span>{{ user.title }}</span>\n </button>\n } @else {\n <button\n mat-menu-item\n [matMenuTriggerFor]=\"subAccountMenu\"\n class=\"profil-menu\"\n >\n <mat-checkbox\n [checked]=\"getPermission(user).checked\"\n [indeterminate]=\"getPermission(user).indeterminate\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"handleToggleCategory(user)\"\n />\n <span>{{ user.title }}</span>\n </button>\n <mat-menu #subAccountMenu=\"matMenu\">\n @for (child of user.childs; track child.name) {\n <button mat-menu-item class=\"profil-menu\">\n <mat-checkbox\n [checked]=\"getPermission(child).checked\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"handleToggleCategory(child, user)\"\n >\n {{ child.title }}\n </mat-checkbox>\n </button>\n }\n </mat-menu>\n }\n }\n\n <button mat-menu-item class=\"profil-menu\">\n <mat-checkbox\n [checked]=\"showHidden\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"onShowHiddenContexts()\"\n />\n <span>\n {{ 'igo.context.contextManager.showHidden' | translate }}\n </span>\n </button>\n </mat-menu>\n </div>\n </div>\n\n @for (\n groupContexts of $any(contexts$ | async) | keyvalue: sortByKeyPriority;\n track groupContexts\n ) {\n @if ($any(groupContexts).value.length) {\n @if (auth.authenticated) {\n <igo-collapsible\n [title]=\"titleMapping[$any(groupContexts).key] | translate\"\n [collapsed]=\"$any(collapsed[titleMapping[$any(groupContexts).key]])\"\n (toggle)=\"\n collapsed[titleMapping[$any(groupContexts).key]] = $any($event)\n \"\n >\n @for (\n context of $any(groupContexts).value;\n track context.id ?? context.uri\n ) {\n <igo-context-item\n igoListItem\n color=\"accent\"\n [selected]=\"\n selectedContext() && selectedContext().uri === context.uri\n \"\n [context]=\"context\"\n [default]=\"\n context.id &&\n this.defaultContextId &&\n this.defaultContextId === context.id\n \"\n [isDesktop]=\"isDesktop()\"\n (edit)=\"onEdit(context)\"\n (delete)=\"onDelete(context)\"\n (clone)=\"onClone(context)\"\n (save)=\"onSave(context)\"\n (hide)=\"onHideContext(context)\"\n (show)=\"showContext(context)\"\n (favorite)=\"onFavorite(context)\"\n (manageTools)=\"onManageTools(context)\"\n (managePermissions)=\"onManagePermissions(context)\"\n (select)=\"onSelect(context)\"\n (unselect)=\"unselect.emit(context)\"\n (share)=\"onShareContext(context)\"\n />\n }\n </igo-collapsible>\n } @else {\n @for (\n context of $any(groupContexts).value;\n track context.id ?? context.uri\n ) {\n <igo-context-item\n igoListItem\n color=\"accent\"\n [showFavorite]=\"\n configService.getConfig('favoriteContext4NonAuthenticated')\n \"\n [selected]=\"isContextSelected(context)\"\n [context]=\"context\"\n [default]=\"\n contextConfigs\n ? defaultContextId === context.id\n : defaultContextId === context.uri\n \"\n [isDesktop]=\"isDesktop()\"\n (edit)=\"onEdit(context)\"\n (delete)=\"onDelete(context)\"\n (clone)=\"onClone(context)\"\n (save)=\"onSave(context)\"\n (hide)=\"onHideContext(context)\"\n (show)=\"showContext(context)\"\n (favorite)=\"onFavorite(context)\"\n (select)=\"onSelect(context)\"\n (unselect)=\"unselect.emit(context)\"\n />\n }\n }\n }\n }\n\n @if (isEmpty) {\n <div class=\"no-result\">\n {{ 'igo.context.contextManager.noResult' | translate }}\n </div>\n }\n</igo-list>\n", styles: [":host{--mat-list-list-item-one-line-container-height: 40px;--mat-form-field-container-height: 48px;--mat-form-field-container-vertical-padding: 12px;--mat-icon-button-state-layer-size: 40px}:host ::ng-deep mat-form-field .mat-mdc-form-field-subscript-wrapper{display:none}.context-filter-container{display:flex;align-items:center;padding:8px 4px}.context-filter-container mat-form-field{flex:1}.context-filter-min-width{width:calc(100% - 135px);margin:5px;padding-left:6px}.profil-menu{padding-left:8px}.profil-menu mat-checkbox{margin-right:8px}.add-context-button{margin:0;width:40px;display:inline-flex;overflow:hidden}.actions-container{margin-left:4px}.no-result{padding:16px}\n"], dependencies: [{ kind: "component", type: ListComponent, selector: "igo-list", inputs: ["navigation", "selection"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: ActionbarComponent, selector: "igo-actionbar", inputs: ["store", "mode", "withToggleButton", "horizontal", "color", "iconColor", "withTitle", "withTooltip", "scrollActive", "withIcon", "icon", "xPosition", "yPosition", "overlayClass"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i5$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i8.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: CollapsibleComponent, selector: "igo-collapsible", inputs: ["title", "collapsed"], outputs: ["collapsedChange", "toggle"] }, { kind: "component", type: ContextItemComponent, selector: "igo-context-item", inputs: ["showFavorite", "context", "default", "selected", "isDesktop"], outputs: ["edit", "delete", "save", "clone", "hide", "show", "favorite", "managePermissions", "manageTools", "share"] }, { kind: "directive", type: ListItemDirective, selector: "[igoListItem]", inputs: ["color", "focused", "selected", "disabled"], outputs: ["beforeSelect", "beforeFocus", "beforeUnselect", "beforeUnfocus", "beforeDisable", "beforeEnable", "focus", "unfocus", "select", "unselect", "disable", "enable"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "component", type: IgoIconComponent, selector: "igo-icon", inputs: ["color", "icon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i5$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3092
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ContextListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3093
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: ContextListComponent, isStandalone: true, selector: "igo-context-list", inputs: { isDesktop: { classPropertyName: "isDesktop", publicName: "isDesktop", isSignal: true, isRequired: false, transformFunction: null }, contexts: { classPropertyName: "contexts", publicName: "contexts", isSignal: false, isRequired: false, transformFunction: null }, selectedContext: { classPropertyName: "selectedContext", publicName: "selectedContext", isSignal: true, isRequired: false, transformFunction: null }, map: { classPropertyName: "map", publicName: "map", isSignal: true, isRequired: false, transformFunction: null }, defaultContextId: { classPropertyName: "defaultContextId", publicName: "defaultContextId", isSignal: false, isRequired: false, transformFunction: null }, term: { classPropertyName: "term", publicName: "term", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { selectedContext: "selectedContextChange", select: "select", unselect: "unselect", edit: "edit", delete: "delete", save: "save", clone: "clone", create: "create", hide: "hide", show: "show", showHiddenContexts: "showHiddenContexts", favorite: "favorite", managePermissions: "managePermissions", manageTools: "manageTools", filterPermissionsChanged: "filterPermissionsChanged" }, ngImport: i0, template: "<igo-list [navigation]=\"true\">\n <div class=\"context-filter-container\">\n @if (showFilter()) {\n <mat-form-field>\n <mat-label>{{\n 'igo.context.contextManager.filterPlaceHolder' | translate\n }}</mat-label>\n <input\n matInput\n type=\"text\"\n [placeholder]=\"\n 'igo.context.contextManager.filterPlaceHolder' | translate\n \"\n [(ngModel)]=\"term\"\n />\n @if (term.length) {\n <button\n mat-icon-button\n matSuffix\n class=\"clear-button\"\n aria-label=\"Clear\"\n color=\"warn\"\n (click)=\"clearFilter()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n }\n\n <div class=\"actions-container\">\n <button\n mat-icon-button\n [matTooltip]=\"\n sortedAlpha\n ? ('igo.context.contextManager.sortDefault' | translate)\n : ('igo.context.contextManager.sortAlphabetically' | translate)\n \"\n matTooltipShowDelay=\"500\"\n (click)=\"toggleSort()\"\n >\n <igo-icon\n color=\"primary\"\n [icon]=\"sortedAlpha ? sortAlphaOnIcon : sortAlphaOffIcon\"\n />\n </button>\n\n @if (auth.authenticated && contextConfigs) {\n <igo-actionbar\n class=\"add-context-button\"\n [iconColor]=\"color\"\n [store]=\"actionStore\"\n [withIcon]=\"true\"\n icon=\"add\"\n [withTitle]=\"actionbarMode === 'overlay'\"\n [horizontal]=\"false\"\n [mode]=\"actionbarMode\"\n />\n\n <button\n class=\"users-filter\"\n mat-icon-button\n [matTooltip]=\"'igo.context.contextManager.filterUser' | translate\"\n matTooltipShowDelay=\"500\"\n [matMenuTriggerFor]=\"accountMenu\"\n >\n <mat-icon color=\"primary\">filter_alt</mat-icon>\n </button>\n }\n <mat-menu #accountMenu=\"matMenu\">\n @for (user of users; track user.name) {\n @if (!user.childs) {\n <button mat-menu-item class=\"profil-menu\">\n <mat-checkbox\n [checked]=\"getPermission(user)?.checked ?? false\"\n [indeterminate]=\"getPermission(user)?.indeterminate ?? false\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"handleToggleCategory(user)\"\n />\n <span>{{ user.title }}</span>\n </button>\n } @else {\n <button\n mat-menu-item\n [matMenuTriggerFor]=\"subAccountMenu\"\n class=\"profil-menu\"\n >\n <mat-checkbox\n [checked]=\"getPermission(user)?.checked ?? false\"\n [indeterminate]=\"getPermission(user)?.indeterminate ?? false\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"handleToggleCategory(user)\"\n />\n <span>{{ user.title }}</span>\n </button>\n <mat-menu #subAccountMenu=\"matMenu\">\n @for (child of user.childs; track child.name) {\n <button mat-menu-item class=\"profil-menu\">\n <mat-checkbox\n [checked]=\"getPermission(child)?.checked ?? false\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"handleToggleCategory(child, user)\"\n >\n {{ child.title }}\n </mat-checkbox>\n </button>\n }\n </mat-menu>\n }\n }\n\n <button mat-menu-item class=\"profil-menu\">\n <mat-checkbox\n [checked]=\"showHidden\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"onShowHiddenContexts()\"\n />\n <span>\n {{ 'igo.context.contextManager.showHidden' | translate }}\n </span>\n </button>\n </mat-menu>\n </div>\n </div>\n\n @for (\n groupContexts of $any(contexts$ | async) | keyvalue: sortByKeyPriority;\n track groupContexts\n ) {\n @if ($any(groupContexts).value.length) {\n @if (auth.authenticated) {\n <igo-collapsible\n [title]=\"$any(titleMapping)[$any(groupContexts).key] | translate\"\n [collapsed]=\"\n $any(collapsed[$any(titleMapping)[$any(groupContexts).key]])\n \"\n (toggle)=\"\n collapsed[$any(titleMapping)[$any(groupContexts).key]] =\n $any($event)\n \"\n >\n @for (\n context of $any(groupContexts).value;\n track context.id ?? context.uri\n ) {\n <igo-context-item\n igoListItem\n color=\"accent\"\n [selected]=\"selectedContext()?.uri === context.uri\"\n [context]=\"context\"\n [default]=\"\n context.id &&\n this.defaultContextId &&\n this.defaultContextId === context.id\n \"\n [isDesktop]=\"isDesktop()\"\n (edit)=\"onEdit(context)\"\n (delete)=\"onDelete(context)\"\n (clone)=\"onClone(context)\"\n (save)=\"onSave(context)\"\n (hide)=\"onHideContext(context)\"\n (show)=\"showContext(context)\"\n (favorite)=\"onFavorite(context)\"\n (manageTools)=\"onManageTools(context)\"\n (managePermissions)=\"onManagePermissions(context)\"\n (select)=\"onSelect(context)\"\n (unselect)=\"unselect.emit(context)\"\n (share)=\"onShareContext(context)\"\n />\n }\n </igo-collapsible>\n } @else {\n @for (\n context of $any(groupContexts).value;\n track context.id ?? context.uri\n ) {\n <igo-context-item\n igoListItem\n color=\"accent\"\n [showFavorite]=\"\n configService.getConfig('favoriteContext4NonAuthenticated')\n \"\n [selected]=\"isContextSelected(context)\"\n [context]=\"context\"\n [default]=\"\n contextConfigs\n ? defaultContextId === context.id\n : defaultContextId === context.uri\n \"\n [isDesktop]=\"isDesktop()\"\n (edit)=\"onEdit(context)\"\n (delete)=\"onDelete(context)\"\n (clone)=\"onClone(context)\"\n (save)=\"onSave(context)\"\n (hide)=\"onHideContext(context)\"\n (show)=\"showContext(context)\"\n (favorite)=\"onFavorite(context)\"\n (select)=\"onSelect(context)\"\n (unselect)=\"unselect.emit(context)\"\n />\n }\n }\n }\n }\n\n @if (isEmpty) {\n <div class=\"no-result\">\n {{ 'igo.context.contextManager.noResult' | translate }}\n </div>\n }\n</igo-list>\n", styles: [":host{--mat-list-list-item-one-line-container-height: 40px;--mat-form-field-container-height: 48px;--mat-form-field-container-vertical-padding: 12px;--mat-icon-button-state-layer-size: 40px}:host ::ng-deep mat-form-field .mat-mdc-form-field-subscript-wrapper{display:none}.context-filter-container{display:flex;align-items:center;padding:8px 4px}.context-filter-container mat-form-field{flex:1}.context-filter-min-width{width:calc(100% - 135px);margin:5px;padding-left:6px}.profil-menu{padding-left:8px}.profil-menu mat-checkbox{margin-right:8px}.add-context-button{margin:0;width:40px;display:inline-flex;overflow:hidden}.actions-container{margin-left:4px}.no-result{padding:16px}\n"], dependencies: [{ kind: "component", type: ListComponent, selector: "igo-list", inputs: ["navigation", "selection"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: ActionbarComponent, selector: "igo-actionbar", inputs: ["store", "mode", "withToggleButton", "horizontal", "color", "iconColor", "withTitle", "withTooltip", "scrollActive", "withIcon", "icon", "xPosition", "yPosition", "overlayClass"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i5$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i8.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: CollapsibleComponent, selector: "igo-collapsible", inputs: ["title", "collapsed"], outputs: ["collapsedChange", "toggle"] }, { kind: "component", type: ContextItemComponent, selector: "igo-context-item", inputs: ["showFavorite", "context", "default", "selected", "isDesktop"], outputs: ["edit", "delete", "save", "clone", "hide", "show", "favorite", "managePermissions", "manageTools", "share"] }, { kind: "directive", type: ListItemDirective, selector: "[igoListItem]", inputs: ["color", "focused", "selected", "disabled"], outputs: ["beforeSelect", "beforeFocus", "beforeUnselect", "beforeUnfocus", "beforeDisable", "beforeEnable", "focus", "unfocus", "select", "unselect", "disable", "enable"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "component", type: IgoIconComponent, selector: "igo-icon", inputs: ["color", "icon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i5$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3128
3094
|
}
|
|
3129
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3095
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ContextListComponent, decorators: [{
|
|
3130
3096
|
type: Component,
|
|
3131
3097
|
args: [{ selector: 'igo-context-list', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
3132
3098
|
ListComponent,
|
|
@@ -3146,7 +3112,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
|
|
|
3146
3112
|
KeyValuePipe,
|
|
3147
3113
|
IgoLanguageModule,
|
|
3148
3114
|
IgoIconComponent
|
|
3149
|
-
], template: "<igo-list [navigation]=\"true\">\n <div class=\"context-filter-container\">\n @if (showFilter()) {\n <mat-form-field>\n <mat-label>{{\n 'igo.context.contextManager.filterPlaceHolder' | translate\n }}</mat-label>\n <input\n matInput\n type=\"text\"\n [placeholder]=\"\n 'igo.context.contextManager.filterPlaceHolder' | translate\n \"\n [(ngModel)]=\"term\"\n />\n @if (term.length) {\n <button\n mat-icon-button\n matSuffix\n class=\"clear-button\"\n aria-label=\"Clear\"\n color=\"warn\"\n (click)=\"clearFilter()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n }\n\n <div class=\"actions-container\">\n <button\n mat-icon-button\n [matTooltip]=\"\n sortedAlpha\n ? ('igo.context.contextManager.sortDefault' | translate)\n : ('igo.context.contextManager.sortAlphabetically' | translate)\n \"\n matTooltipShowDelay=\"500\"\n (click)=\"toggleSort()\"\n >\n <igo-icon\n color=\"primary\"\n [icon]=\"sortedAlpha ? sortAlphaOnIcon : sortAlphaOffIcon\"\n />\n </button>\n\n @if (auth.authenticated && contextConfigs) {\n <igo-actionbar\n class=\"add-context-button\"\n [iconColor]=\"color\"\n [store]=\"actionStore\"\n [withIcon]=\"true\"\n icon=\"add\"\n [withTitle]=\"actionbarMode === 'overlay'\"\n [horizontal]=\"false\"\n [mode]=\"actionbarMode\"\n />\n\n <button\n class=\"users-filter\"\n mat-icon-button\n [matTooltip]=\"'igo.context.contextManager.filterUser' | translate\"\n matTooltipShowDelay=\"500\"\n [matMenuTriggerFor]=\"accountMenu\"\n >\n <mat-icon color=\"primary\">filter_alt</mat-icon>\n </button>\n }\n <mat-menu #accountMenu=\"matMenu\">\n @for (user of users; track user.name) {\n @if (!user.childs) {\n <button mat-menu-item class=\"profil-menu\">\n <mat-checkbox\n [checked]=\"getPermission(user)
|
|
3115
|
+
], template: "<igo-list [navigation]=\"true\">\n <div class=\"context-filter-container\">\n @if (showFilter()) {\n <mat-form-field>\n <mat-label>{{\n 'igo.context.contextManager.filterPlaceHolder' | translate\n }}</mat-label>\n <input\n matInput\n type=\"text\"\n [placeholder]=\"\n 'igo.context.contextManager.filterPlaceHolder' | translate\n \"\n [(ngModel)]=\"term\"\n />\n @if (term.length) {\n <button\n mat-icon-button\n matSuffix\n class=\"clear-button\"\n aria-label=\"Clear\"\n color=\"warn\"\n (click)=\"clearFilter()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n }\n\n <div class=\"actions-container\">\n <button\n mat-icon-button\n [matTooltip]=\"\n sortedAlpha\n ? ('igo.context.contextManager.sortDefault' | translate)\n : ('igo.context.contextManager.sortAlphabetically' | translate)\n \"\n matTooltipShowDelay=\"500\"\n (click)=\"toggleSort()\"\n >\n <igo-icon\n color=\"primary\"\n [icon]=\"sortedAlpha ? sortAlphaOnIcon : sortAlphaOffIcon\"\n />\n </button>\n\n @if (auth.authenticated && contextConfigs) {\n <igo-actionbar\n class=\"add-context-button\"\n [iconColor]=\"color\"\n [store]=\"actionStore\"\n [withIcon]=\"true\"\n icon=\"add\"\n [withTitle]=\"actionbarMode === 'overlay'\"\n [horizontal]=\"false\"\n [mode]=\"actionbarMode\"\n />\n\n <button\n class=\"users-filter\"\n mat-icon-button\n [matTooltip]=\"'igo.context.contextManager.filterUser' | translate\"\n matTooltipShowDelay=\"500\"\n [matMenuTriggerFor]=\"accountMenu\"\n >\n <mat-icon color=\"primary\">filter_alt</mat-icon>\n </button>\n }\n <mat-menu #accountMenu=\"matMenu\">\n @for (user of users; track user.name) {\n @if (!user.childs) {\n <button mat-menu-item class=\"profil-menu\">\n <mat-checkbox\n [checked]=\"getPermission(user)?.checked ?? false\"\n [indeterminate]=\"getPermission(user)?.indeterminate ?? false\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"handleToggleCategory(user)\"\n />\n <span>{{ user.title }}</span>\n </button>\n } @else {\n <button\n mat-menu-item\n [matMenuTriggerFor]=\"subAccountMenu\"\n class=\"profil-menu\"\n >\n <mat-checkbox\n [checked]=\"getPermission(user)?.checked ?? false\"\n [indeterminate]=\"getPermission(user)?.indeterminate ?? false\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"handleToggleCategory(user)\"\n />\n <span>{{ user.title }}</span>\n </button>\n <mat-menu #subAccountMenu=\"matMenu\">\n @for (child of user.childs; track child.name) {\n <button mat-menu-item class=\"profil-menu\">\n <mat-checkbox\n [checked]=\"getPermission(child)?.checked ?? false\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"handleToggleCategory(child, user)\"\n >\n {{ child.title }}\n </mat-checkbox>\n </button>\n }\n </mat-menu>\n }\n }\n\n <button mat-menu-item class=\"profil-menu\">\n <mat-checkbox\n [checked]=\"showHidden\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"onShowHiddenContexts()\"\n />\n <span>\n {{ 'igo.context.contextManager.showHidden' | translate }}\n </span>\n </button>\n </mat-menu>\n </div>\n </div>\n\n @for (\n groupContexts of $any(contexts$ | async) | keyvalue: sortByKeyPriority;\n track groupContexts\n ) {\n @if ($any(groupContexts).value.length) {\n @if (auth.authenticated) {\n <igo-collapsible\n [title]=\"$any(titleMapping)[$any(groupContexts).key] | translate\"\n [collapsed]=\"\n $any(collapsed[$any(titleMapping)[$any(groupContexts).key]])\n \"\n (toggle)=\"\n collapsed[$any(titleMapping)[$any(groupContexts).key]] =\n $any($event)\n \"\n >\n @for (\n context of $any(groupContexts).value;\n track context.id ?? context.uri\n ) {\n <igo-context-item\n igoListItem\n color=\"accent\"\n [selected]=\"selectedContext()?.uri === context.uri\"\n [context]=\"context\"\n [default]=\"\n context.id &&\n this.defaultContextId &&\n this.defaultContextId === context.id\n \"\n [isDesktop]=\"isDesktop()\"\n (edit)=\"onEdit(context)\"\n (delete)=\"onDelete(context)\"\n (clone)=\"onClone(context)\"\n (save)=\"onSave(context)\"\n (hide)=\"onHideContext(context)\"\n (show)=\"showContext(context)\"\n (favorite)=\"onFavorite(context)\"\n (manageTools)=\"onManageTools(context)\"\n (managePermissions)=\"onManagePermissions(context)\"\n (select)=\"onSelect(context)\"\n (unselect)=\"unselect.emit(context)\"\n (share)=\"onShareContext(context)\"\n />\n }\n </igo-collapsible>\n } @else {\n @for (\n context of $any(groupContexts).value;\n track context.id ?? context.uri\n ) {\n <igo-context-item\n igoListItem\n color=\"accent\"\n [showFavorite]=\"\n configService.getConfig('favoriteContext4NonAuthenticated')\n \"\n [selected]=\"isContextSelected(context)\"\n [context]=\"context\"\n [default]=\"\n contextConfigs\n ? defaultContextId === context.id\n : defaultContextId === context.uri\n \"\n [isDesktop]=\"isDesktop()\"\n (edit)=\"onEdit(context)\"\n (delete)=\"onDelete(context)\"\n (clone)=\"onClone(context)\"\n (save)=\"onSave(context)\"\n (hide)=\"onHideContext(context)\"\n (show)=\"showContext(context)\"\n (favorite)=\"onFavorite(context)\"\n (select)=\"onSelect(context)\"\n (unselect)=\"unselect.emit(context)\"\n />\n }\n }\n }\n }\n\n @if (isEmpty) {\n <div class=\"no-result\">\n {{ 'igo.context.contextManager.noResult' | translate }}\n </div>\n }\n</igo-list>\n", styles: [":host{--mat-list-list-item-one-line-container-height: 40px;--mat-form-field-container-height: 48px;--mat-form-field-container-vertical-padding: 12px;--mat-icon-button-state-layer-size: 40px}:host ::ng-deep mat-form-field .mat-mdc-form-field-subscript-wrapper{display:none}.context-filter-container{display:flex;align-items:center;padding:8px 4px}.context-filter-container mat-form-field{flex:1}.context-filter-min-width{width:calc(100% - 135px);margin:5px;padding-left:6px}.profil-menu{padding-left:8px}.profil-menu mat-checkbox{margin-right:8px}.add-context-button{margin:0;width:40px;display:inline-flex;overflow:hidden}.actions-container{margin-left:4px}.no-result{padding:16px}\n"] }]
|
|
3150
3116
|
}], ctorParameters: () => [], propDecorators: { isDesktop: [{ type: i0.Input, args: [{ isSignal: true, alias: "isDesktop", required: false }] }], contexts: [{
|
|
3151
3117
|
type: Input
|
|
3152
3118
|
}], selectedContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedContext", required: false }] }, { type: i0.Output, args: ["selectedContextChange"] }], map: [{ type: i0.Input, args: [{ isSignal: true, alias: "map", required: false }] }], defaultContextId: [{
|
|
@@ -3179,7 +3145,7 @@ class ContextPermissionItemComponent {
|
|
|
3179
3145
|
const permission = this.permission();
|
|
3180
3146
|
return (this.canWrite() ||
|
|
3181
3147
|
(isContextPermissionUser(permission) &&
|
|
3182
|
-
permission.user.externalId === this.user()
|
|
3148
|
+
permission.user.externalId === this.user()?.id));
|
|
3183
3149
|
}, ...(ngDevMode ? [{ debugName: "canDelete" }] : /* istanbul ignore next */ []));
|
|
3184
3150
|
delete = output();
|
|
3185
3151
|
isContextPermissionUser = isContextPermissionUser;
|
|
@@ -3190,10 +3156,10 @@ class ContextPermissionItemComponent {
|
|
|
3190
3156
|
onDelete() {
|
|
3191
3157
|
this.delete.emit(this.permission());
|
|
3192
3158
|
}
|
|
3193
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3194
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
3159
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ContextPermissionItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3160
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: ContextPermissionItemComponent, isStandalone: true, selector: "igo-context-permission-item", inputs: { permission: { classPropertyName: "permission", publicName: "permission", isSignal: true, isRequired: true, transformFunction: null }, canWrite: { classPropertyName: "canWrite", publicName: "canWrite", isSignal: true, isRequired: true, transformFunction: null }, user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { delete: "delete" }, ngImport: i0, template: "@let permission = this.permission();\n\n<mat-list-item>\n <mat-icon matListItemIcon [matTooltip]=\"type()\">\n {{ icon() }}\n </mat-icon>\n\n <span matListItemTitle [matTooltip]=\"permission.title\">\n {{ permission.title }}\n </span>\n\n <span matListItemLine>{{ type() }}</span>\n <div matListItemMeta class=\"igo-actions-container\">\n @if (canDelete()) {\n <button\n mat-icon-button\n [matTooltip]=\"'igo.context.permission.delete' | translate\"\n matTooltipShowDelay=\"500\"\n color=\"warn\"\n (click)=\"onDelete()\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n }\n </div>\n</mat-list-item>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i3.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i3.MatListItemLine, selector: "[matListItemLine]" }, { kind: "directive", type: i3.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "directive", type: i3.MatListItemMeta, selector: "[matListItemMeta]" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i5$1.TranslatePipe, name: "translate" }] });
|
|
3195
3161
|
}
|
|
3196
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3162
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ContextPermissionItemComponent, decorators: [{
|
|
3197
3163
|
type: Component,
|
|
3198
3164
|
args: [{ selector: 'igo-context-permission-item', imports: [
|
|
3199
3165
|
MatButtonModule,
|
|
@@ -3240,10 +3206,10 @@ class ContextPermissionService {
|
|
|
3240
3206
|
}
|
|
3241
3207
|
this.messageService.error('igo.context.contextManager.errors.addPermission', 'igo.context.contextManager.errors.addPermissionTitle');
|
|
3242
3208
|
}
|
|
3243
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3244
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
3209
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ContextPermissionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3210
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ContextPermissionService, providedIn: 'root' });
|
|
3245
3211
|
}
|
|
3246
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3212
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ContextPermissionService, decorators: [{
|
|
3247
3213
|
type: Injectable,
|
|
3248
3214
|
args: [{
|
|
3249
3215
|
providedIn: 'root'
|
|
@@ -3262,10 +3228,10 @@ class ContextPermissionsComponent {
|
|
|
3262
3228
|
form;
|
|
3263
3229
|
context = model(...(ngDevMode ? [undefined, { debugName: "context" }] : /* istanbul ignore next */ []));
|
|
3264
3230
|
permissions = model(...(ngDevMode ? [undefined, { debugName: "permissions" }] : /* istanbul ignore next */ []));
|
|
3265
|
-
permissionsRead = computed(() => this.permissions()
|
|
3266
|
-
permissionsWrite = computed(() => this.permissions()
|
|
3231
|
+
permissionsRead = computed(() => this.permissions()?.filter((permission) => permission.typePermission === 'read'), ...(ngDevMode ? [{ debugName: "permissionsRead" }] : /* istanbul ignore next */ []));
|
|
3232
|
+
permissionsWrite = computed(() => this.permissions()?.filter((permission) => permission.typePermission === 'write'), ...(ngDevMode ? [{ debugName: "permissionsWrite" }] : /* istanbul ignore next */ []));
|
|
3267
3233
|
profils = signal([], ...(ngDevMode ? [{ debugName: "profils" }] : /* istanbul ignore next */ []));
|
|
3268
|
-
canWrite = computed(() => this.context()
|
|
3234
|
+
canWrite = computed(() => this.context()?.permission === 'write', ...(ngDevMode ? [{ debugName: "canWrite" }] : /* istanbul ignore next */ []));
|
|
3269
3235
|
baseUrlProfils;
|
|
3270
3236
|
formControl = new UntypedFormControl();
|
|
3271
3237
|
formValueChanges$$;
|
|
@@ -3284,10 +3250,10 @@ class ContextPermissionsComponent {
|
|
|
3284
3250
|
this.handleEditedContextChange();
|
|
3285
3251
|
}
|
|
3286
3252
|
displayFn(profil) {
|
|
3287
|
-
return profil ? profil.title :
|
|
3253
|
+
return profil ? profil.title : '';
|
|
3288
3254
|
}
|
|
3289
3255
|
handleFormSubmit(value) {
|
|
3290
|
-
const contextId = this.context()
|
|
3256
|
+
const contextId = this.context()?.id;
|
|
3291
3257
|
this.contextPermissionService
|
|
3292
3258
|
.add(contextId, value)
|
|
3293
3259
|
.subscribe((permission) => {
|
|
@@ -3315,7 +3281,7 @@ class ContextPermissionsComponent {
|
|
|
3315
3281
|
});
|
|
3316
3282
|
}
|
|
3317
3283
|
onRemovePermission(permission) {
|
|
3318
|
-
const contextId = this.context()
|
|
3284
|
+
const contextId = this.context()?.id;
|
|
3319
3285
|
this.contextPermissionService
|
|
3320
3286
|
.delete(contextId, permission.id)
|
|
3321
3287
|
.subscribe(() => {
|
|
@@ -3360,10 +3326,10 @@ class ContextPermissionsComponent {
|
|
|
3360
3326
|
return profils.filter((p) => normalizeStr(p.name + p.title).includes(search));
|
|
3361
3327
|
}));
|
|
3362
3328
|
}
|
|
3363
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3364
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
3329
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ContextPermissionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3330
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: ContextPermissionsComponent, isStandalone: true, selector: "igo-context-permissions", inputs: { context: { classPropertyName: "context", publicName: "context", isSignal: true, isRequired: false, transformFunction: null }, permissions: { classPropertyName: "permissions", publicName: "permissions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { context: "contextChange", permissions: "permissionsChange" }, ngImport: i0, template: "@let user = authService.user;\n@let context = this.context();\n@let permissions = this.permissions();\n@if (context) {\n <div>\n @if (!canWrite()) {\n <div class=\"scopeForm\">\n <h4>{{ 'igo.context.permission.readOnlyTitle' | translate }}</h4>\n <p>{{ 'igo.context.permission.readOnlyMsg' | translate }}</p>\n </div>\n } @else {\n <div class=\"scopeForm\">\n <mat-radio-group\n [(ngModel)]=\"context.scope!\"\n (change)=\"onScopeChanged(context)\"\n >\n <mat-radio-button value=\"private\">\n {{ 'igo.context.permission.scope.private' | translate }}\n </mat-radio-button>\n <mat-radio-button value=\"protected\">\n {{ 'igo.context.permission.scope.shared' | translate }}\n </mat-radio-button>\n @if (authService.isAdmin) {\n <mat-radio-button value=\"public\">\n {{ 'igo.context.permission.scope.public' | translate }}\n </mat-radio-button>\n }\n </mat-radio-group>\n </div>\n }\n @if (context.scope !== 'private') {\n @if (canWrite()) {\n <form [formGroup]=\"form\" (ngSubmit)=\"handleFormSubmit(form.value)\">\n <mat-form-field class=\"full-width\">\n <input\n matInput\n required\n [placeholder]=\"'igo.context.permission.user' | translate\"\n [formControl]=\"formControl\"\n [matAutocomplete]=\"auto\"\n />\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"onProfilSelected($event.option.value)\"\n [displayWith]=\"displayFn\"\n >\n @for (profil of this.profils(); track profil) {\n <mat-option [value]=\"profil\">\n {{ profil.title }}<br />\n <small>{{ profil.name }}</small>\n </mat-option>\n }\n </mat-autocomplete>\n <mat-error>\n {{ 'igo.context.permission.profilRequired' | translate }}\n </mat-error>\n </mat-form-field>\n <mat-radio-group formControlName=\"typePermission\">\n <mat-radio-button value=\"read\">\n {{ 'igo.context.permission.read' | translate }}\n </mat-radio-button>\n <mat-radio-button value=\"write\">\n {{ 'igo.context.permission.write' | translate }}\n </mat-radio-button>\n </mat-radio-group>\n <div class=\"igo-form-button-group\">\n <button matButton=\"elevated\" type=\"submit\" [disabled]=\"!form.valid\">\n {{ 'igo.context.permission.addBtn' | translate }}\n </button>\n </div>\n </form>\n }\n @if (permissions) {\n <igo-list>\n @if (permissionsRead()?.length) {\n <igo-collapsible\n [title]=\"'igo.context.permission.' + 'read' | translate\"\n >\n @for (permission of permissionsRead(); track permission) {\n <igo-context-permission-item\n [permission]=\"permission\"\n [canWrite]=\"canWrite()\"\n [user]=\"user ?? undefined\"\n (delete)=\"onRemovePermission($event)\"\n />\n }\n </igo-collapsible>\n }\n @if (permissionsWrite()?.length) {\n <igo-collapsible\n [title]=\"'igo.context.permission.' + 'write' | translate\"\n >\n @for (permission of permissionsWrite(); track permission) {\n <igo-context-permission-item\n [permission]=\"permission\"\n [canWrite]=\"canWrite()\"\n [user]=\"user ?? undefined\"\n (delete)=\"onRemovePermission($event)\"\n />\n }\n </igo-collapsible>\n }\n </igo-list>\n }\n }\n </div>\n}\n", styles: [".full-width{width:100%}mat-radio-button{padding:14px 14px 14px 0}.scopeForm,form{padding:5px}\n"], dependencies: [{ kind: "component", type: CollapsibleComponent, selector: "igo-collapsible", inputs: ["title", "collapsed"], outputs: ["collapsedChange", "toggle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "component", type: ListComponent, selector: "igo-list", inputs: ["navigation", "selection"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i2$1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i2$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i2$1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatListModule }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i6$1.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i6$1.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: ContextPermissionItemComponent, selector: "igo-context-permission-item", inputs: ["permission", "canWrite", "user"], outputs: ["delete"] }, { kind: "pipe", type: i5$1.TranslatePipe, name: "translate" }] });
|
|
3365
3331
|
}
|
|
3366
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3332
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ContextPermissionsComponent, decorators: [{
|
|
3367
3333
|
type: Component,
|
|
3368
3334
|
args: [{ selector: 'igo-context-permissions', imports: [
|
|
3369
3335
|
CollapsibleComponent,
|
|
@@ -3381,7 +3347,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
|
|
|
3381
3347
|
MatTooltipModule,
|
|
3382
3348
|
ReactiveFormsModule,
|
|
3383
3349
|
ContextPermissionItemComponent
|
|
3384
|
-
], template: "@let user = authService.user;\n
|
|
3350
|
+
], template: "@let user = authService.user;\n@let context = this.context();\n@let permissions = this.permissions();\n@if (context) {\n <div>\n @if (!canWrite()) {\n <div class=\"scopeForm\">\n <h4>{{ 'igo.context.permission.readOnlyTitle' | translate }}</h4>\n <p>{{ 'igo.context.permission.readOnlyMsg' | translate }}</p>\n </div>\n } @else {\n <div class=\"scopeForm\">\n <mat-radio-group\n [(ngModel)]=\"context.scope!\"\n (change)=\"onScopeChanged(context)\"\n >\n <mat-radio-button value=\"private\">\n {{ 'igo.context.permission.scope.private' | translate }}\n </mat-radio-button>\n <mat-radio-button value=\"protected\">\n {{ 'igo.context.permission.scope.shared' | translate }}\n </mat-radio-button>\n @if (authService.isAdmin) {\n <mat-radio-button value=\"public\">\n {{ 'igo.context.permission.scope.public' | translate }}\n </mat-radio-button>\n }\n </mat-radio-group>\n </div>\n }\n @if (context.scope !== 'private') {\n @if (canWrite()) {\n <form [formGroup]=\"form\" (ngSubmit)=\"handleFormSubmit(form.value)\">\n <mat-form-field class=\"full-width\">\n <input\n matInput\n required\n [placeholder]=\"'igo.context.permission.user' | translate\"\n [formControl]=\"formControl\"\n [matAutocomplete]=\"auto\"\n />\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"onProfilSelected($event.option.value)\"\n [displayWith]=\"displayFn\"\n >\n @for (profil of this.profils(); track profil) {\n <mat-option [value]=\"profil\">\n {{ profil.title }}<br />\n <small>{{ profil.name }}</small>\n </mat-option>\n }\n </mat-autocomplete>\n <mat-error>\n {{ 'igo.context.permission.profilRequired' | translate }}\n </mat-error>\n </mat-form-field>\n <mat-radio-group formControlName=\"typePermission\">\n <mat-radio-button value=\"read\">\n {{ 'igo.context.permission.read' | translate }}\n </mat-radio-button>\n <mat-radio-button value=\"write\">\n {{ 'igo.context.permission.write' | translate }}\n </mat-radio-button>\n </mat-radio-group>\n <div class=\"igo-form-button-group\">\n <button matButton=\"elevated\" type=\"submit\" [disabled]=\"!form.valid\">\n {{ 'igo.context.permission.addBtn' | translate }}\n </button>\n </div>\n </form>\n }\n @if (permissions) {\n <igo-list>\n @if (permissionsRead()?.length) {\n <igo-collapsible\n [title]=\"'igo.context.permission.' + 'read' | translate\"\n >\n @for (permission of permissionsRead(); track permission) {\n <igo-context-permission-item\n [permission]=\"permission\"\n [canWrite]=\"canWrite()\"\n [user]=\"user ?? undefined\"\n (delete)=\"onRemovePermission($event)\"\n />\n }\n </igo-collapsible>\n }\n @if (permissionsWrite()?.length) {\n <igo-collapsible\n [title]=\"'igo.context.permission.' + 'write' | translate\"\n >\n @for (permission of permissionsWrite(); track permission) {\n <igo-context-permission-item\n [permission]=\"permission\"\n [canWrite]=\"canWrite()\"\n [user]=\"user ?? undefined\"\n (delete)=\"onRemovePermission($event)\"\n />\n }\n </igo-collapsible>\n }\n </igo-list>\n }\n }\n </div>\n}\n", styles: [".full-width{width:100%}mat-radio-button{padding:14px 14px 14px 0}.scopeForm,form{padding:5px}\n"] }]
|
|
3385
3351
|
}], propDecorators: { context: [{ type: i0.Input, args: [{ isSignal: true, alias: "context", required: false }] }, { type: i0.Output, args: ["contextChange"] }], permissions: [{ type: i0.Input, args: [{ isSignal: true, alias: "permissions", required: false }] }, { type: i0.Output, args: ["permissionsChange"] }] } });
|
|
3386
3352
|
const normalizeStr = (str) => str
|
|
3387
3353
|
.toLowerCase()
|
|
@@ -3397,8 +3363,8 @@ class IgoContextManagerModule {
|
|
|
3397
3363
|
ngModule: IgoContextManagerModule
|
|
3398
3364
|
};
|
|
3399
3365
|
}
|
|
3400
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3401
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.
|
|
3366
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: IgoContextManagerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
3367
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.17", ngImport: i0, type: IgoContextManagerModule, imports: [ContextListComponent,
|
|
3402
3368
|
ContextItemComponent,
|
|
3403
3369
|
ContextFormComponent,
|
|
3404
3370
|
ContextEditComponent,
|
|
@@ -3411,13 +3377,13 @@ class IgoContextManagerModule {
|
|
|
3411
3377
|
ContextPermissionsComponent,
|
|
3412
3378
|
LayerContextDirective,
|
|
3413
3379
|
MapContextDirective] });
|
|
3414
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.
|
|
3380
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: IgoContextManagerModule, imports: [ContextListComponent,
|
|
3415
3381
|
ContextItemComponent,
|
|
3416
3382
|
ContextFormComponent,
|
|
3417
3383
|
ContextEditComponent,
|
|
3418
3384
|
ContextPermissionsComponent] });
|
|
3419
3385
|
}
|
|
3420
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3386
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: IgoContextManagerModule, decorators: [{
|
|
3421
3387
|
type: NgModule,
|
|
3422
3388
|
args: [{
|
|
3423
3389
|
imports: [
|
|
@@ -3445,20 +3411,8 @@ class BookmarkButtonComponent {
|
|
|
3445
3411
|
dialog = inject(MatDialog);
|
|
3446
3412
|
contextService = inject(ContextService);
|
|
3447
3413
|
messageService = inject(MessageService);
|
|
3448
|
-
|
|
3449
|
-
|
|
3450
|
-
}
|
|
3451
|
-
set map(value) {
|
|
3452
|
-
this._map = value;
|
|
3453
|
-
}
|
|
3454
|
-
_map;
|
|
3455
|
-
get color() {
|
|
3456
|
-
return this._color;
|
|
3457
|
-
}
|
|
3458
|
-
set color(value) {
|
|
3459
|
-
this._color = value;
|
|
3460
|
-
}
|
|
3461
|
-
_color;
|
|
3414
|
+
map = input.required(...(ngDevMode ? [{ debugName: "map" }] : /* istanbul ignore next */ []));
|
|
3415
|
+
color = input(...(ngDevMode ? [undefined, { debugName: "color" }] : /* istanbul ignore next */ []));
|
|
3462
3416
|
createContext() {
|
|
3463
3417
|
this.dialog
|
|
3464
3418
|
.open(BookmarkDialogComponent, { disableClose: false })
|
|
@@ -3466,7 +3420,7 @@ class BookmarkButtonComponent {
|
|
|
3466
3420
|
.pipe(take(1))
|
|
3467
3421
|
.subscribe((title) => {
|
|
3468
3422
|
if (title) {
|
|
3469
|
-
const context = this.contextService.getContextFromMap(this.map);
|
|
3423
|
+
const context = this.contextService.getContextFromMap(this.map());
|
|
3470
3424
|
context.title = title;
|
|
3471
3425
|
this.contextService.create(context).subscribe(() => {
|
|
3472
3426
|
this.messageService.success('igo.context.bookmarkButton.dialog.createMsg', 'igo.context.bookmarkButton.dialog.createTitle', undefined, { value: context.title });
|
|
@@ -3475,25 +3429,21 @@ class BookmarkButtonComponent {
|
|
|
3475
3429
|
}
|
|
3476
3430
|
});
|
|
3477
3431
|
}
|
|
3478
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3479
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
3432
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: BookmarkButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3433
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.17", type: BookmarkButtonComponent, isStandalone: true, selector: "igo-bookmark-button", inputs: { map: { classPropertyName: "map", publicName: "map", isSignal: true, isRequired: true, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"igo-bookmark-button-container\">\n <button\n mat-icon-button\n [matTooltip]=\"'igo.context.bookmarkButton.create' | translate\"\n matTooltipPosition=\"above\"\n [color]=\"color()\"\n (click)=\"createContext()\"\n >\n <mat-icon>star</mat-icon>\n </button>\n</div>\n", styles: [":host button{border-radius:0!important;background-color:var(--mat-sys-surface-bright)}:host button .mat-ripple,:host button .mdc-icon-button__ripple{border-radius:0!important}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i5$1.TranslatePipe, name: "translate" }] });
|
|
3480
3434
|
}
|
|
3481
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3435
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: BookmarkButtonComponent, decorators: [{
|
|
3482
3436
|
type: Component,
|
|
3483
|
-
args: [{ selector: 'igo-bookmark-button', imports: [MatButtonModule, MatTooltipModule, MatIconModule, IgoLanguageModule], template: "<div class=\"igo-bookmark-button-container\">\n <button\n mat-icon-button\n [matTooltip]=\"'igo.context.bookmarkButton.create' | translate\"\n matTooltipPosition=\"above\"\n [color]=\"color\"\n (click)=\"createContext()\"\n >\n <mat-icon>star</mat-icon>\n </button>\n</div>\n", styles: [":host button{border-radius:0!important;background-color:var(--mat-sys-surface-bright)}:host button .mat-ripple,:host button .mdc-icon-button__ripple{border-radius:0!important}\n"] }]
|
|
3484
|
-
}], propDecorators: { map: [{
|
|
3485
|
-
type: Input
|
|
3486
|
-
}], color: [{
|
|
3487
|
-
type: Input
|
|
3488
|
-
}] } });
|
|
3437
|
+
args: [{ selector: 'igo-bookmark-button', imports: [MatButtonModule, MatTooltipModule, MatIconModule, IgoLanguageModule], template: "<div class=\"igo-bookmark-button-container\">\n <button\n mat-icon-button\n [matTooltip]=\"'igo.context.bookmarkButton.create' | translate\"\n matTooltipPosition=\"above\"\n [color]=\"color()\"\n (click)=\"createContext()\"\n >\n <mat-icon>star</mat-icon>\n </button>\n</div>\n", styles: [":host button{border-radius:0!important;background-color:var(--mat-sys-surface-bright)}:host button .mat-ripple,:host button .mdc-icon-button__ripple{border-radius:0!important}\n"] }]
|
|
3438
|
+
}], propDecorators: { map: [{ type: i0.Input, args: [{ isSignal: true, alias: "map", required: true }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }] } });
|
|
3489
3439
|
|
|
3490
3440
|
class PoiDialogComponent {
|
|
3491
3441
|
dialogRef = inject(MatDialogRef);
|
|
3492
|
-
title;
|
|
3493
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3494
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.
|
|
3442
|
+
title = '';
|
|
3443
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PoiDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3444
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.17", type: PoiDialogComponent, isStandalone: true, selector: "igo-poi-dialog", ngImport: i0, template: "<h1 mat-dialog-title>\n {{ 'igo.context.poiButton.dialog.title' | translate }}\n</h1>\n<div mat-dialog-content>\n <mat-form-field>\n <input\n matInput\n required\n autocomplete=\"off\"\n [placeholder]=\"'igo.context.poiButton.dialog.placeholder' | translate\"\n [(ngModel)]=\"title\"\n />\n </mat-form-field>\n</div>\n<div mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n [disabled]=\"!title\"\n (click)=\"dialogRef.close(title)\"\n >\n {{ 'igo.common.confirmDialog.confirmBtn' | translate }}\n </button>\n <button matButton (click)=\"dialogRef.close(false)\">\n {{ 'igo.common.confirmDialog.cancelBtn' | translate }}\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i5$1.TranslatePipe, name: "translate" }] });
|
|
3495
3445
|
}
|
|
3496
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3446
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PoiDialogComponent, decorators: [{
|
|
3497
3447
|
type: Component,
|
|
3498
3448
|
args: [{ selector: 'igo-poi-dialog', imports: [
|
|
3499
3449
|
MatDialogTitle,
|
|
@@ -3529,10 +3479,10 @@ class PoiService {
|
|
|
3529
3479
|
const url = this.baseUrl + '/pois';
|
|
3530
3480
|
return this.http.post(url, context);
|
|
3531
3481
|
}
|
|
3532
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3533
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
3482
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PoiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3483
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PoiService });
|
|
3534
3484
|
}
|
|
3535
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3485
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PoiService, decorators: [{
|
|
3536
3486
|
type: Injectable
|
|
3537
3487
|
}], ctorParameters: () => [] });
|
|
3538
3488
|
|
|
@@ -3544,21 +3494,9 @@ class PoiButtonComponent {
|
|
|
3544
3494
|
languageService = inject(LanguageService);
|
|
3545
3495
|
confirmDialogService = inject(ConfirmDialogService);
|
|
3546
3496
|
selected;
|
|
3547
|
-
|
|
3548
|
-
|
|
3549
|
-
|
|
3550
|
-
set map(value) {
|
|
3551
|
-
this._map = value;
|
|
3552
|
-
}
|
|
3553
|
-
_map;
|
|
3554
|
-
get color() {
|
|
3555
|
-
return this._color;
|
|
3556
|
-
}
|
|
3557
|
-
set color(value) {
|
|
3558
|
-
this._color = value;
|
|
3559
|
-
}
|
|
3560
|
-
_color;
|
|
3561
|
-
pois;
|
|
3497
|
+
map = input.required(...(ngDevMode ? [{ debugName: "map" }] : /* istanbul ignore next */ []));
|
|
3498
|
+
color = input(...(ngDevMode ? [undefined, { debugName: "color" }] : /* istanbul ignore next */ []));
|
|
3499
|
+
pois = [];
|
|
3562
3500
|
authenticate$$;
|
|
3563
3501
|
ngOnInit() {
|
|
3564
3502
|
this.authenticate$$ = this.authService.authenticate$.subscribe((auth) => {
|
|
@@ -3599,7 +3537,7 @@ class PoiButtonComponent {
|
|
|
3599
3537
|
});
|
|
3600
3538
|
}
|
|
3601
3539
|
createPoi() {
|
|
3602
|
-
const view = this.map.ol.getView();
|
|
3540
|
+
const view = this.map().ol.getView();
|
|
3603
3541
|
const proj = view.getProjection().getCode();
|
|
3604
3542
|
const center = new olPoint(view.getCenter()).transform(proj, 'EPSG:4326');
|
|
3605
3543
|
const poi = {
|
|
@@ -3627,18 +3565,20 @@ class PoiButtonComponent {
|
|
|
3627
3565
|
}
|
|
3628
3566
|
zoomOnPoi(id) {
|
|
3629
3567
|
const poi = this.pois.find((p) => p.id === id);
|
|
3630
|
-
|
|
3631
|
-
|
|
3568
|
+
if (!poi)
|
|
3569
|
+
return;
|
|
3570
|
+
const center = olproj.fromLonLat([Number(poi.x), Number(poi.y)], this.map().projectionCode);
|
|
3571
|
+
this.map().ol.getView().animate({
|
|
3632
3572
|
center,
|
|
3633
3573
|
zoom: poi.zoom,
|
|
3634
3574
|
duration: 500,
|
|
3635
3575
|
easing: oleasing.easeOut
|
|
3636
3576
|
});
|
|
3637
3577
|
}
|
|
3638
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3639
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
3578
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PoiButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3579
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: PoiButtonComponent, isStandalone: true, selector: "igo-poi-button", inputs: { map: { classPropertyName: "map", publicName: "map", isSignal: true, isRequired: true, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, providers: [PoiService], ngImport: i0, template: "<mat-select\n panelClass=\"poi-select-panel\"\n class=\"poi-select\"\n [placeholder]=\"'igo.context.poiButton.placeholder' | translate\"\n floatPlaceholder=\"never\"\n [(value)]=\"selected\"\n>\n <mat-select-trigger>\n {{ selected?.title || '' }}\n </mat-select-trigger>\n <mat-option (click)=\"createPoi()\" class=\"poi-option\">\n <div\n class=\"poi-option-row\"\n [matTooltip]=\"'igo.context.poiButton.create' | translate\"\n matTooltipPosition=\"above\"\n >\n <div class=\"poi-option-text\">\n {{ 'igo.context.poiButton.create' | translate }}\n </div>\n <div class=\"poi-option-button\">\n <button\n igoStopPropagation\n mat-icon-button\n color=\"primary\"\n (click)=\"createPoi()\"\n >\n <mat-icon>add_circle</mat-icon>\n </button>\n </div>\n </div>\n </mat-option>\n <mat-divider />\n @for (poi of pois; track poi) {\n <mat-option class=\"poi-option\" [value]=\"poi\" (click)=\"zoomOnPoi(poi.id!)\">\n <div class=\"poi-option-row\">\n <div\n class=\"poi-option-text\"\n [matTooltip]=\"poi.title\"\n matTooltipPosition=\"above\"\n >\n {{ poi.title }}\n </div>\n <div class=\"poi-option-button\">\n <button\n mat-icon-button\n igoStopPropagation\n color=\"warn\"\n (click)=\"deletePoi(poi)\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n </div>\n </mat-option>\n }\n</mat-select>\n", styles: [":host{padding:0 8px;height:100%;display:flex;align-items:center;background-color:var(--mat-sys-surface-bright)}.poi-select{width:175px;height:100%}.poi-option{padding-right:6px;padding-left:6px}.poi-option .poi-option-row{display:flex;align-items:center;width:100%}.poi-option .poi-option-text{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.poi-option .poi-option-button{width:35px;display:flex;align-items:center;justify-content:flex-start}.poi-option ::ng-deep .mat-pseudo-checkbox{display:none}::ng-deep .poi-select .mat-mdc-select-trigger{height:100%;display:flex;align-items:center}::ng-deep .poi-select-panel .mdc-list-item__primary-text{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: IgoLanguageModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "component", type: i2$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i5.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: StopPropagationDirective, selector: "[igoStopPropagation]" }, { kind: "pipe", type: i5$1.TranslatePipe, name: "translate" }] });
|
|
3640
3580
|
}
|
|
3641
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3581
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PoiButtonComponent, decorators: [{
|
|
3642
3582
|
type: Component,
|
|
3643
3583
|
args: [{ selector: 'igo-poi-button', imports: [
|
|
3644
3584
|
IgoLanguageModule,
|
|
@@ -3649,12 +3589,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
|
|
|
3649
3589
|
MatSelectModule,
|
|
3650
3590
|
MatTooltipModule,
|
|
3651
3591
|
StopPropagationDirective
|
|
3652
|
-
], providers: [PoiService], template: "<mat-select\n panelClass=\"poi-select-panel\"\n class=\"poi-select\"\n [placeholder]=\"'igo.context.poiButton.placeholder' | translate\"\n floatPlaceholder=\"never\"\n [(value)]=\"selected\"\n>\n <mat-select-trigger>\n {{ selected?.title || '' }}\n </mat-select-trigger>\n <mat-option (click)=\"createPoi()\" class=\"poi-option\">\n <div\n class=\"poi-option-row\"\n [matTooltip]=\"'igo.context.poiButton.create' | translate\"\n matTooltipPosition=\"above\"\n >\n <div class=\"poi-option-text\">\n {{ 'igo.context.poiButton.create' | translate }}\n </div>\n <div class=\"poi-option-button\">\n <button\n igoStopPropagation\n mat-icon-button\n color=\"primary\"\n (click)=\"createPoi()\"\n >\n <mat-icon>add_circle</mat-icon>\n </button>\n </div>\n </div>\n </mat-option>\n <mat-divider />\n @for (poi of pois; track poi) {\n <mat-option class=\"poi-option\" [value]=\"poi\" (click)=\"zoomOnPoi(poi.id)\">\n <div class=\"poi-option-row\">\n <div\n class=\"poi-option-text\"\n [matTooltip]=\"poi.title\"\n matTooltipPosition=\"above\"\n >\n {{ poi.title }}\n </div>\n <div class=\"poi-option-button\">\n <button\n mat-icon-button\n igoStopPropagation\n color=\"warn\"\n (click)=\"deletePoi(poi)\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n </div>\n </mat-option>\n }\n</mat-select>\n", styles: [":host{padding:0 8px;height:100%;display:flex;align-items:center;background-color:var(--mat-sys-surface-bright)}.poi-select{width:175px;height:100%}.poi-option{padding-right:6px;padding-left:6px}.poi-option .poi-option-row{display:flex;align-items:center;width:100%}.poi-option .poi-option-text{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.poi-option .poi-option-button{width:35px;display:flex;align-items:center;justify-content:flex-start}.poi-option ::ng-deep .mat-pseudo-checkbox{display:none}::ng-deep .poi-select .mat-mdc-select-trigger{height:100%;display:flex;align-items:center}::ng-deep .poi-select-panel .mdc-list-item__primary-text{width:100%}\n"] }]
|
|
3653
|
-
}], propDecorators: { map: [{
|
|
3654
|
-
type: Input
|
|
3655
|
-
}], color: [{
|
|
3656
|
-
type: Input
|
|
3657
|
-
}] } });
|
|
3592
|
+
], providers: [PoiService], template: "<mat-select\n panelClass=\"poi-select-panel\"\n class=\"poi-select\"\n [placeholder]=\"'igo.context.poiButton.placeholder' | translate\"\n floatPlaceholder=\"never\"\n [(value)]=\"selected\"\n>\n <mat-select-trigger>\n {{ selected?.title || '' }}\n </mat-select-trigger>\n <mat-option (click)=\"createPoi()\" class=\"poi-option\">\n <div\n class=\"poi-option-row\"\n [matTooltip]=\"'igo.context.poiButton.create' | translate\"\n matTooltipPosition=\"above\"\n >\n <div class=\"poi-option-text\">\n {{ 'igo.context.poiButton.create' | translate }}\n </div>\n <div class=\"poi-option-button\">\n <button\n igoStopPropagation\n mat-icon-button\n color=\"primary\"\n (click)=\"createPoi()\"\n >\n <mat-icon>add_circle</mat-icon>\n </button>\n </div>\n </div>\n </mat-option>\n <mat-divider />\n @for (poi of pois; track poi) {\n <mat-option class=\"poi-option\" [value]=\"poi\" (click)=\"zoomOnPoi(poi.id!)\">\n <div class=\"poi-option-row\">\n <div\n class=\"poi-option-text\"\n [matTooltip]=\"poi.title\"\n matTooltipPosition=\"above\"\n >\n {{ poi.title }}\n </div>\n <div class=\"poi-option-button\">\n <button\n mat-icon-button\n igoStopPropagation\n color=\"warn\"\n (click)=\"deletePoi(poi)\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n </div>\n </mat-option>\n }\n</mat-select>\n", styles: [":host{padding:0 8px;height:100%;display:flex;align-items:center;background-color:var(--mat-sys-surface-bright)}.poi-select{width:175px;height:100%}.poi-option{padding-right:6px;padding-left:6px}.poi-option .poi-option-row{display:flex;align-items:center;width:100%}.poi-option .poi-option-text{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.poi-option .poi-option-button{width:35px;display:flex;align-items:center;justify-content:flex-start}.poi-option ::ng-deep .mat-pseudo-checkbox{display:none}::ng-deep .poi-select .mat-mdc-select-trigger{height:100%;display:flex;align-items:center}::ng-deep .poi-select-panel .mdc-list-item__primary-text{width:100%}\n"] }]
|
|
3593
|
+
}], propDecorators: { map: [{ type: i0.Input, args: [{ isSignal: true, alias: "map", required: true }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }] } });
|
|
3658
3594
|
|
|
3659
3595
|
function userButtonSlideInOut() {
|
|
3660
3596
|
return trigger('userButtonState', [
|
|
@@ -3679,15 +3615,17 @@ class UserDialogComponent {
|
|
|
3679
3615
|
constructor() {
|
|
3680
3616
|
const decodeToken = this.auth.decodeToken();
|
|
3681
3617
|
this.user = decodeToken?.user;
|
|
3682
|
-
this.exp =
|
|
3618
|
+
this.exp = decodeToken?.exp
|
|
3619
|
+
? new Date(decodeToken.exp * 1000).toLocaleString()
|
|
3620
|
+
: undefined;
|
|
3683
3621
|
}
|
|
3684
3622
|
clearPreferences() {
|
|
3685
3623
|
this.storageService.clear();
|
|
3686
3624
|
}
|
|
3687
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3688
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.
|
|
3625
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: UserDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3626
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.17", type: UserDialogComponent, isStandalone: true, selector: "igo-user-dialog", ngImport: i0, template: "<h1 mat-dialog-title>\n {{ 'igo.context.userButton.infoTitle' | translate }}\n</h1>\n<div mat-dialog-content>\n <p>\n {{ 'igo.context.userButton.dialog.user' | translate }}: {{ user?.sourceId }}\n </p>\n <p>\n {{ 'igo.context.userButton.dialog.email' | translate }}: {{ user?.email }}\n </p>\n <p>{{ 'igo.context.userButton.dialog.expiration' | translate }}: {{ exp }}</p>\n <button mat-stroked-button color=\"primary\" (click)=\"clearPreferences()\">\n {{ 'igo.context.userButton.dialog.clearPreferences' | translate }}\n </button>\n <br />\n</div>\n<div mat-dialog-actions style=\"justify-content: center\">\n <button matButton=\"elevated\" color=\"primary\" (click)=\"dialogRef.close(false)\">\n OK\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i5$1.TranslatePipe, name: "translate" }] });
|
|
3689
3627
|
}
|
|
3690
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3628
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: UserDialogComponent, decorators: [{
|
|
3691
3629
|
type: Component,
|
|
3692
3630
|
args: [{ selector: 'igo-user-dialog', imports: [
|
|
3693
3631
|
MatDialogTitle,
|
|
@@ -3695,27 +3633,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
|
|
|
3695
3633
|
MatButtonModule,
|
|
3696
3634
|
MatDialogActions,
|
|
3697
3635
|
IgoLanguageModule
|
|
3698
|
-
], template: "<h1 mat-dialog-title>\n {{ 'igo.context.userButton.infoTitle' | translate }}\n</h1>\n<div mat-dialog-content>\n <p>\n {{ 'igo.context.userButton.dialog.user' | translate }}: {{ user
|
|
3636
|
+
], template: "<h1 mat-dialog-title>\n {{ 'igo.context.userButton.infoTitle' | translate }}\n</h1>\n<div mat-dialog-content>\n <p>\n {{ 'igo.context.userButton.dialog.user' | translate }}: {{ user?.sourceId }}\n </p>\n <p>\n {{ 'igo.context.userButton.dialog.email' | translate }}: {{ user?.email }}\n </p>\n <p>{{ 'igo.context.userButton.dialog.expiration' | translate }}: {{ exp }}</p>\n <button mat-stroked-button color=\"primary\" (click)=\"clearPreferences()\">\n {{ 'igo.context.userButton.dialog.clearPreferences' | translate }}\n </button>\n <br />\n</div>\n<div mat-dialog-actions style=\"justify-content: center\">\n <button matButton=\"elevated\" color=\"primary\" (click)=\"dialogRef.close(false)\">\n OK\n </button>\n</div>\n" }]
|
|
3699
3637
|
}], ctorParameters: () => [] });
|
|
3700
3638
|
|
|
3701
3639
|
class UserButtonComponent {
|
|
3702
3640
|
dialog = inject(MatDialog);
|
|
3703
3641
|
config = inject(ConfigService);
|
|
3704
3642
|
auth = inject(AuthService);
|
|
3705
|
-
|
|
3706
|
-
|
|
3707
|
-
}
|
|
3708
|
-
set map(value) {
|
|
3709
|
-
this._map = value;
|
|
3710
|
-
}
|
|
3711
|
-
_map;
|
|
3712
|
-
get color() {
|
|
3713
|
-
return this._color;
|
|
3714
|
-
}
|
|
3715
|
-
set color(value) {
|
|
3716
|
-
this._color = value;
|
|
3717
|
-
}
|
|
3718
|
-
_color;
|
|
3643
|
+
map = input.required(...(ngDevMode ? [{ debugName: "map" }] : /* istanbul ignore next */ []));
|
|
3644
|
+
color = input(...(ngDevMode ? [undefined, { debugName: "color" }] : /* istanbul ignore next */ []));
|
|
3719
3645
|
expand = false;
|
|
3720
3646
|
visible = false;
|
|
3721
3647
|
hasApi = false;
|
|
@@ -3738,10 +3664,10 @@ class UserButtonComponent {
|
|
|
3738
3664
|
infoUser() {
|
|
3739
3665
|
this.dialog.open(UserDialogComponent, { disableClose: false });
|
|
3740
3666
|
}
|
|
3741
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3742
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
3667
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: UserButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3668
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: UserButtonComponent, isStandalone: true, selector: "igo-user-button", inputs: { map: { classPropertyName: "map", publicName: "map", isSignal: true, isRequired: true, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (visible) {\n <div class=\"igo-user-button-container\">\n <div\n class=\"igo-user-button-more-container\"\n [@userButtonState]=\"expand ? 'expand' : 'collapse'\"\n >\n @if (hasApi) {\n <igo-poi-button [color]=\"color()\" [map]=\"map()\" />\n }\n <button\n mat-icon-button\n [matTooltip]=\"'igo.context.userButton.infoTitle' | translate\"\n matTooltipPosition=\"above\"\n [color]=\"color()\"\n (click)=\"infoUser()\"\n >\n <mat-icon>info</mat-icon>\n </button>\n <button\n mat-icon-button\n [matTooltip]=\"'igo.context.userButton.logout' | translate\"\n matTooltipPosition=\"above\"\n [color]=\"color()\"\n (click)=\"logout()\"\n >\n <mat-icon>power_settings_new</mat-icon>\n </button>\n </div>\n <button\n mat-icon-button\n [color]=\"auth.authenticated ? color() : 'warn'\"\n (click)=\"accountClick()\"\n >\n <mat-icon>account_box</mat-icon>\n </button>\n </div>\n}\n", styles: [":host button{border-radius:0!important;background-color:var(--mat-sys-surface-bright)}:host button .mat-ripple,:host button .mdc-icon-button__ripple{border-radius:0!important}.igo-user-button-container,.igo-user-button-more-container{display:flex;gap:4px}\n"], dependencies: [{ kind: "component", type: PoiButtonComponent, selector: "igo-poi-button", inputs: ["map", "color"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i5$1.TranslatePipe, name: "translate" }], animations: [userButtonSlideInOut()] });
|
|
3743
3669
|
}
|
|
3744
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3670
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: UserButtonComponent, decorators: [{
|
|
3745
3671
|
type: Component,
|
|
3746
3672
|
args: [{ selector: 'igo-user-button', animations: [userButtonSlideInOut()], imports: [
|
|
3747
3673
|
PoiButtonComponent,
|
|
@@ -3749,12 +3675,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
|
|
|
3749
3675
|
MatTooltipModule,
|
|
3750
3676
|
MatIconModule,
|
|
3751
3677
|
IgoLanguageModule
|
|
3752
|
-
], template: "@if (visible) {\n <div class=\"igo-user-button-container\">\n <div\n class=\"igo-user-button-more-container\"\n [@userButtonState]=\"expand ? 'expand' : 'collapse'\"\n >\n @if (hasApi) {\n <igo-poi-button [color]=\"color\" [map]=\"map\" />\n }\n <button\n mat-icon-button\n [matTooltip]=\"'igo.context.userButton.infoTitle' | translate\"\n matTooltipPosition=\"above\"\n [color]=\"color\"\n (click)=\"infoUser()\"\n >\n <mat-icon>info</mat-icon>\n </button>\n <button\n mat-icon-button\n [matTooltip]=\"'igo.context.userButton.logout' | translate\"\n matTooltipPosition=\"above\"\n [color]=\"color\"\n (click)=\"logout()\"\n >\n <mat-icon>power_settings_new</mat-icon>\n </button>\n </div>\n <button\n mat-icon-button\n [color]=\"auth.authenticated ? color : 'warn'\"\n (click)=\"accountClick()\"\n >\n <mat-icon>account_box</mat-icon>\n </button>\n </div>\n}\n", styles: [":host button{border-radius:0!important;background-color:var(--mat-sys-surface-bright)}:host button .mat-ripple,:host button .mdc-icon-button__ripple{border-radius:0!important}.igo-user-button-container,.igo-user-button-more-container{display:flex;gap:4px}\n"] }]
|
|
3753
|
-
}], ctorParameters: () => [], propDecorators: { map: [{
|
|
3754
|
-
type: Input
|
|
3755
|
-
}], color: [{
|
|
3756
|
-
type: Input
|
|
3757
|
-
}] } });
|
|
3678
|
+
], template: "@if (visible) {\n <div class=\"igo-user-button-container\">\n <div\n class=\"igo-user-button-more-container\"\n [@userButtonState]=\"expand ? 'expand' : 'collapse'\"\n >\n @if (hasApi) {\n <igo-poi-button [color]=\"color()\" [map]=\"map()\" />\n }\n <button\n mat-icon-button\n [matTooltip]=\"'igo.context.userButton.infoTitle' | translate\"\n matTooltipPosition=\"above\"\n [color]=\"color()\"\n (click)=\"infoUser()\"\n >\n <mat-icon>info</mat-icon>\n </button>\n <button\n mat-icon-button\n [matTooltip]=\"'igo.context.userButton.logout' | translate\"\n matTooltipPosition=\"above\"\n [color]=\"color()\"\n (click)=\"logout()\"\n >\n <mat-icon>power_settings_new</mat-icon>\n </button>\n </div>\n <button\n mat-icon-button\n [color]=\"auth.authenticated ? color() : 'warn'\"\n (click)=\"accountClick()\"\n >\n <mat-icon>account_box</mat-icon>\n </button>\n </div>\n}\n", styles: [":host button{border-radius:0!important;background-color:var(--mat-sys-surface-bright)}:host button .mat-ripple,:host button .mdc-icon-button__ripple{border-radius:0!important}.igo-user-button-container,.igo-user-button-more-container{display:flex;gap:4px}\n"] }]
|
|
3679
|
+
}], ctorParameters: () => [], propDecorators: { map: [{ type: i0.Input, args: [{ isSignal: true, alias: "map", required: true }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }] } });
|
|
3758
3680
|
|
|
3759
3681
|
/**
|
|
3760
3682
|
* @deprecated import the components/directives directly or CONTEXT_MAP_BUTTON_DIRECTIVES for the set
|
|
@@ -3765,20 +3687,20 @@ class IgoContextMapButtonModule {
|
|
|
3765
3687
|
ngModule: IgoContextMapButtonModule
|
|
3766
3688
|
};
|
|
3767
3689
|
}
|
|
3768
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3769
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.
|
|
3690
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: IgoContextMapButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
3691
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.17", ngImport: i0, type: IgoContextMapButtonModule, imports: [BookmarkButtonComponent,
|
|
3770
3692
|
BookmarkDialogComponent,
|
|
3771
3693
|
PoiButtonComponent,
|
|
3772
3694
|
UserButtonComponent], exports: [BookmarkButtonComponent,
|
|
3773
3695
|
PoiButtonComponent,
|
|
3774
3696
|
UserButtonComponent,
|
|
3775
3697
|
BookmarkDialogComponent] });
|
|
3776
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.
|
|
3698
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: IgoContextMapButtonModule, providers: [PoiService], imports: [BookmarkButtonComponent,
|
|
3777
3699
|
BookmarkDialogComponent,
|
|
3778
3700
|
PoiButtonComponent,
|
|
3779
3701
|
UserButtonComponent] });
|
|
3780
3702
|
}
|
|
3781
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3703
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: IgoContextMapButtonModule, decorators: [{
|
|
3782
3704
|
type: NgModule,
|
|
3783
3705
|
args: [{
|
|
3784
3706
|
imports: [
|
|
@@ -3804,7 +3726,7 @@ class ShareMapUrlComponent {
|
|
|
3804
3726
|
contextService = inject(ContextService);
|
|
3805
3727
|
cdRef = inject(ChangeDetectorRef);
|
|
3806
3728
|
mapState$$;
|
|
3807
|
-
map = input(
|
|
3729
|
+
map = input.required(...(ngDevMode ? [{ debugName: "map" }] : /* istanbul ignore next */ []));
|
|
3808
3730
|
url;
|
|
3809
3731
|
ngOnInit() {
|
|
3810
3732
|
this.generateUrl();
|
|
@@ -3828,10 +3750,10 @@ class ShareMapUrlComponent {
|
|
|
3828
3750
|
this.messageService.success('igo.context.shareMap.dialog.copyMsg', 'igo.context.shareMap.dialog.copyTitle');
|
|
3829
3751
|
}
|
|
3830
3752
|
}
|
|
3831
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3832
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
3753
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ShareMapUrlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3754
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: ShareMapUrlComponent, isStandalone: true, selector: "igo-share-map-url", inputs: { map: { classPropertyName: "map", publicName: "map", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<div class=\"igo-input-container\">\n <mat-form-field>\n <textarea\n #textArea\n matInput\n readonly\n rows=\"3\"\n [placeholder]=\"'igo.context.shareMap.placeholderLink' | translate\"\n [value]=\"url\"\n ></textarea>\n </mat-form-field>\n\n <div class=\"igo-share-map-url-content\">\n <div class=\"igo-form-button-group\">\n <button matButton=\"elevated\" (click)=\"copyTextToClipboard(textArea)\">\n <mat-icon>content_copy</mat-icon>\n {{ 'igo.context.shareMap.copy' | translate }}\n </button>\n </div>\n\n <div>\n <br />\n <section>\n @if (('igo.context.shareMap.htmlClarifications' | translate) === '') {\n <div>\n @if (('igo.context.shareMap.included' | translate) !== '') {\n <h4>\n {{ 'igo.context.shareMap.included' | translate }}\n </h4>\n }\n <ul>\n @if (('igo.context.shareMap.context' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.context' | translate }}\n </li>\n }\n @if (('igo.context.shareMap.center' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.center' | translate }}\n </li>\n }\n @if (('igo.context.shareMap.zoom' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.zoom' | translate }}\n </li>\n }\n @if (('igo.context.shareMap.addedLayers' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.addedLayers' | translate }}\n </li>\n }\n @if (\n ('igo.context.shareMap.visibleInvisible' | translate) !== ''\n ) {\n <li>\n {{ 'igo.context.shareMap.visibleInvisible' | translate }}\n </li>\n }\n </ul>\n @if (('igo.context.shareMap.excluded' | translate) !== '') {\n <h4>\n {{ 'igo.context.shareMap.excluded' | translate }}\n </h4>\n }\n <ul>\n @if (('igo.context.shareMap.order' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.order' | translate }}\n </li>\n }\n @if (('igo.context.shareMap.opacity' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.opacity' | translate }}\n </li>\n }\n @if (('igo.context.shareMap.filterOgc' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.filterOgc' | translate }}\n </li>\n }\n @if (('igo.context.shareMap.filterTime' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.filterTime' | translate }}\n </li>\n }\n </ul>\n </div>\n }\n @if (('igo.context.shareMap.htmlClarifications' | translate) !== '') {\n <igo-custom-html\n class=\"shareCustomPadding\"\n [html]=\"'igo.context.shareMap.htmlClarifications' | translate\"\n />\n }\n </section>\n </div>\n </div>\n</div>\n", styles: ["mat-form-field{width:100%}.igo-share-map-url-content{padding:16px}.igo-form-button-group{text-align:center}igo-custom-html.shareCustomPadding{padding:0}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "component", type: CustomHtmlComponent, selector: "igo-custom-html", inputs: ["html"] }, { kind: "pipe", type: i5$1.TranslatePipe, name: "translate" }] });
|
|
3833
3755
|
}
|
|
3834
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3756
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ShareMapUrlComponent, decorators: [{
|
|
3835
3757
|
type: Component,
|
|
3836
3758
|
args: [{ selector: 'igo-share-map-url', imports: [
|
|
3837
3759
|
MatFormFieldModule,
|
|
@@ -3841,17 +3763,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
|
|
|
3841
3763
|
IgoLanguageModule,
|
|
3842
3764
|
CustomHtmlComponent
|
|
3843
3765
|
], template: "<div class=\"igo-input-container\">\n <mat-form-field>\n <textarea\n #textArea\n matInput\n readonly\n rows=\"3\"\n [placeholder]=\"'igo.context.shareMap.placeholderLink' | translate\"\n [value]=\"url\"\n ></textarea>\n </mat-form-field>\n\n <div class=\"igo-share-map-url-content\">\n <div class=\"igo-form-button-group\">\n <button matButton=\"elevated\" (click)=\"copyTextToClipboard(textArea)\">\n <mat-icon>content_copy</mat-icon>\n {{ 'igo.context.shareMap.copy' | translate }}\n </button>\n </div>\n\n <div>\n <br />\n <section>\n @if (('igo.context.shareMap.htmlClarifications' | translate) === '') {\n <div>\n @if (('igo.context.shareMap.included' | translate) !== '') {\n <h4>\n {{ 'igo.context.shareMap.included' | translate }}\n </h4>\n }\n <ul>\n @if (('igo.context.shareMap.context' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.context' | translate }}\n </li>\n }\n @if (('igo.context.shareMap.center' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.center' | translate }}\n </li>\n }\n @if (('igo.context.shareMap.zoom' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.zoom' | translate }}\n </li>\n }\n @if (('igo.context.shareMap.addedLayers' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.addedLayers' | translate }}\n </li>\n }\n @if (\n ('igo.context.shareMap.visibleInvisible' | translate) !== ''\n ) {\n <li>\n {{ 'igo.context.shareMap.visibleInvisible' | translate }}\n </li>\n }\n </ul>\n @if (('igo.context.shareMap.excluded' | translate) !== '') {\n <h4>\n {{ 'igo.context.shareMap.excluded' | translate }}\n </h4>\n }\n <ul>\n @if (('igo.context.shareMap.order' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.order' | translate }}\n </li>\n }\n @if (('igo.context.shareMap.opacity' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.opacity' | translate }}\n </li>\n }\n @if (('igo.context.shareMap.filterOgc' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.filterOgc' | translate }}\n </li>\n }\n @if (('igo.context.shareMap.filterTime' | translate) !== '') {\n <li>\n {{ 'igo.context.shareMap.filterTime' | translate }}\n </li>\n }\n </ul>\n </div>\n }\n @if (('igo.context.shareMap.htmlClarifications' | translate) !== '') {\n <igo-custom-html\n class=\"shareCustomPadding\"\n [html]=\"'igo.context.shareMap.htmlClarifications' | translate\"\n />\n }\n </section>\n </div>\n </div>\n</div>\n", styles: ["mat-form-field{width:100%}.igo-share-map-url-content{padding:16px}.igo-form-button-group{text-align:center}igo-custom-html.shareCustomPadding{padding:0}\n"] }]
|
|
3844
|
-
}], propDecorators: { map: [{ type: i0.Input, args: [{ isSignal: true, alias: "map", required:
|
|
3766
|
+
}], propDecorators: { map: [{ type: i0.Input, args: [{ isSignal: true, alias: "map", required: true }] }] } });
|
|
3845
3767
|
|
|
3846
3768
|
class ShareMapComponent {
|
|
3847
|
-
map = input(
|
|
3848
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3849
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.
|
|
3769
|
+
map = input.required(...(ngDevMode ? [{ debugName: "map" }] : /* istanbul ignore next */ []));
|
|
3770
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ShareMapComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3771
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.17", type: ShareMapComponent, isStandalone: true, selector: "igo-share-map", inputs: { map: { classPropertyName: "map", publicName: "map", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<igo-share-map-url [map]=\"map()\" />\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: ShareMapUrlComponent, selector: "igo-share-map-url", inputs: ["map"] }] });
|
|
3850
3772
|
}
|
|
3851
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3773
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ShareMapComponent, decorators: [{
|
|
3852
3774
|
type: Component,
|
|
3853
3775
|
args: [{ selector: 'igo-share-map', imports: [MatTabsModule, ShareMapUrlComponent], template: "<igo-share-map-url [map]=\"map()\" />\n" }]
|
|
3854
|
-
}], propDecorators: { map: [{ type: i0.Input, args: [{ isSignal: true, alias: "map", required:
|
|
3776
|
+
}], propDecorators: { map: [{ type: i0.Input, args: [{ isSignal: true, alias: "map", required: true }] }] } });
|
|
3855
3777
|
|
|
3856
3778
|
const SHARE_MAP_DIRECTIVES = [
|
|
3857
3779
|
ShareMapComponent,
|
|
@@ -3866,11 +3788,11 @@ class IgoShareMapModule {
|
|
|
3866
3788
|
ngModule: IgoShareMapModule
|
|
3867
3789
|
};
|
|
3868
3790
|
}
|
|
3869
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3870
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.
|
|
3871
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.
|
|
3791
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: IgoShareMapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
3792
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.17", ngImport: i0, type: IgoShareMapModule, imports: [ShareMapComponent, ShareMapUrlComponent], exports: [ShareMapComponent, ShareMapUrlComponent] });
|
|
3793
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: IgoShareMapModule, imports: [ShareMapComponent, ShareMapUrlComponent] });
|
|
3872
3794
|
}
|
|
3873
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3795
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: IgoShareMapModule, decorators: [{
|
|
3874
3796
|
type: NgModule,
|
|
3875
3797
|
args: [{
|
|
3876
3798
|
imports: [ShareMapComponent, ShareMapUrlComponent],
|
|
@@ -3881,64 +3803,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
|
|
|
3881
3803
|
class SidenavComponent {
|
|
3882
3804
|
titleService = inject(Title);
|
|
3883
3805
|
format = new GeoJSON();
|
|
3884
|
-
|
|
3885
|
-
|
|
3886
|
-
}
|
|
3887
|
-
|
|
3888
|
-
|
|
3889
|
-
}
|
|
3890
|
-
_map;
|
|
3891
|
-
get opened() {
|
|
3892
|
-
return this._opened;
|
|
3893
|
-
}
|
|
3894
|
-
set opened(value) {
|
|
3895
|
-
this._opened = value;
|
|
3896
|
-
}
|
|
3897
|
-
_opened;
|
|
3898
|
-
get feature() {
|
|
3899
|
-
return this._feature;
|
|
3900
|
-
}
|
|
3901
|
-
set feature(value) {
|
|
3902
|
-
this._feature = value;
|
|
3903
|
-
}
|
|
3904
|
-
_feature;
|
|
3905
|
-
get tool() {
|
|
3906
|
-
return this._tool;
|
|
3907
|
-
}
|
|
3908
|
-
set tool(value) {
|
|
3909
|
-
this._tool = value;
|
|
3910
|
-
}
|
|
3911
|
-
_tool;
|
|
3912
|
-
get media() {
|
|
3913
|
-
return this._media;
|
|
3914
|
-
}
|
|
3915
|
-
set media(value) {
|
|
3916
|
-
this._media = value;
|
|
3917
|
-
}
|
|
3918
|
-
_media;
|
|
3919
|
-
get title() {
|
|
3920
|
-
return this._title;
|
|
3921
|
-
}
|
|
3922
|
-
set title(value) {
|
|
3923
|
-
if (value) {
|
|
3924
|
-
this._title = value;
|
|
3925
|
-
}
|
|
3926
|
-
}
|
|
3927
|
-
_title;
|
|
3806
|
+
map = input.required(...(ngDevMode ? [{ debugName: "map" }] : /* istanbul ignore next */ []));
|
|
3807
|
+
opened = input(false, ...(ngDevMode ? [{ debugName: "opened" }] : /* istanbul ignore next */ []));
|
|
3808
|
+
feature = input.required(...(ngDevMode ? [{ debugName: "feature" }] : /* istanbul ignore next */ []));
|
|
3809
|
+
tool = input(...(ngDevMode ? [undefined, { debugName: "tool" }] : /* istanbul ignore next */ []));
|
|
3810
|
+
media = input(...(ngDevMode ? [undefined, { debugName: "media" }] : /* istanbul ignore next */ []));
|
|
3811
|
+
title = input('', ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
|
|
3928
3812
|
topPanelState = 'initial';
|
|
3813
|
+
_defaultTitle = this.titleService.getTitle();
|
|
3814
|
+
displayTitle = computed(() => this.title() || this._defaultTitle, ...(ngDevMode ? [{ debugName: "displayTitle" }] : /* istanbul ignore next */ []));
|
|
3929
3815
|
get featureTitle() {
|
|
3930
|
-
|
|
3931
|
-
|
|
3932
|
-
constructor() {
|
|
3933
|
-
this._title = this.titleService.getTitle();
|
|
3816
|
+
const feature = this.feature();
|
|
3817
|
+
return feature ? getEntityTitle(feature) : undefined;
|
|
3934
3818
|
}
|
|
3935
3819
|
zoomToFeatureExtent() {
|
|
3936
|
-
|
|
3937
|
-
|
|
3938
|
-
|
|
3939
|
-
|
|
3820
|
+
const feature = this.feature();
|
|
3821
|
+
if (feature?.geometry) {
|
|
3822
|
+
const olFeature = this.format.readFeature(feature, {
|
|
3823
|
+
dataProjection: feature.projection,
|
|
3824
|
+
featureProjection: this.map().viewProjection
|
|
3940
3825
|
});
|
|
3941
|
-
moveToOlFeatures(this.map.viewController, olFeature, FeatureMotion.Zoom);
|
|
3826
|
+
moveToOlFeatures(this.map().viewController, olFeature, FeatureMotion.Zoom);
|
|
3942
3827
|
}
|
|
3943
3828
|
}
|
|
3944
3829
|
toggleTopPanel() {
|
|
@@ -3949,10 +3834,10 @@ class SidenavComponent {
|
|
|
3949
3834
|
this.topPanelState = 'initial';
|
|
3950
3835
|
}
|
|
3951
3836
|
}
|
|
3952
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3953
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
3837
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SidenavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3838
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: SidenavComponent, isStandalone: true, selector: "igo-sidenav", inputs: { map: { classPropertyName: "map", publicName: "map", isSignal: true, isRequired: true, transformFunction: null }, opened: { classPropertyName: "opened", publicName: "opened", isSignal: true, isRequired: false, transformFunction: null }, feature: { classPropertyName: "feature", publicName: "feature", isSignal: true, isRequired: true, transformFunction: null }, tool: { classPropertyName: "tool", publicName: "tool", isSignal: true, isRequired: false, transformFunction: null }, media: { classPropertyName: "media", publicName: "media", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<mat-sidenav #sidenav igoSidenavShim mode=\"side\" [opened]=\"opened()\">\n <div class=\"igo-sidenav-content\">\n <igo-flexible\n #topPanel\n initial=\"50%\"\n initialMobile=\"100%\"\n expanded=\"calc(100% - 58px)\"\n [state]=\"topPanelState\"\n >\n <div class=\"igo-content\">\n <igo-panel\n [title]=\"tool() ? (tool()!.title | translate) : displayTitle()\"\n >\n @if (tool()) {\n <button\n mat-icon-button\n panelLeftButton\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.context.sidenav.goBack' | translate\"\n >\n <mat-icon>arrow_back</mat-icon>\n </button>\n }\n\n @if (tool()) {\n <button\n mat-icon-button\n panelRightButton\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.context.sidenav.mainMenu' | translate\"\n >\n <mat-icon>menu</mat-icon>\n </button>\n }\n </igo-panel>\n </div>\n\n <div igoFlexibleFill class=\"igo-content\">\n @if (feature() && media() !== 'mobile') {\n <igo-panel [title]=\"featureTitle\">\n <button\n mat-icon-button\n panelLeftButton\n class=\"igo-icon-button\"\n (click)=\"toggleTopPanel()\"\n >\n <mat-icon>{{\n ['collapsed', 'initial'].indexOf(topPanel.state) >= 0\n ? 'arrow_downward'\n : 'arrow_upward'\n }}</mat-icon>\n </button>\n @if (feature().geometry) {\n <button\n mat-icon-button\n panelRightButton\n class=\"igo-icon-button\"\n (click)=\"zoomToFeatureExtent()\"\n >\n <mat-icon>zoom_in</mat-icon>\n </button>\n }\n @if (['collapsed', 'initial'].indexOf(topPanel.state) >= 0) {\n <igo-feature-details [feature]=\"feature()!\" />\n }\n </igo-panel>\n }\n </div>\n </igo-flexible>\n </div>\n</mat-sidenav>\n", styles: [":host ::ng-deep .igo-flexible-fill .igo-container,.igo-sidenav-content .igo-flexible-fill .igo-container{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}:host ::ng-deep .igo-flexible-fill .igo-container,.igo-sidenav-content .igo-flexible-fill .igo-container{border-top-width:1px;border-top-style:solid;border-top-color:#0003}mat-sidenav{-moz-box-shadow:2px 0px 2px 0px #dddddd;-webkit-box-shadow:2px 0px 2px 0px #dddddd;-o-box-shadow:2px 0px 2px 0px #dddddd;box-shadow:2px 0 2px #ddd}:host{background-color:#fff}:host ::ng-deep mat-sidenav{z-index:3!important}mat-sidenav{width:400px}@media only screen and (orientation:portrait)and (max-width:599px),only screen and (orientation:landscape)and (max-width:959px){mat-sidenav{width:calc(100% - 45px)}}.igo-sidenav-content{margin-top:50px;height:calc(100% - 50px)}igo-feature-details ::ng-deep table{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i1$3.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: FlexibleComponent, selector: "igo-flexible", inputs: ["initial", "collapsed", "expanded", "initialMobile", "collapsedMobile", "expandedMobile", "direction", "state"] }, { kind: "component", type: PanelComponent, selector: "igo-panel", inputs: ["title", "withHeader", "cursorPointer"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: FeatureDetailsComponent, selector: "igo-feature-details", inputs: ["source", "map", "toolbox", "feature"], outputs: ["routeEvent", "selectFeature", "htmlDisplayEvent"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i5$1.TranslatePipe, name: "translate" }] });
|
|
3954
3839
|
}
|
|
3955
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3840
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SidenavComponent, decorators: [{
|
|
3956
3841
|
type: Component,
|
|
3957
3842
|
args: [{ selector: 'igo-sidenav', imports: [
|
|
3958
3843
|
MatSidenavModule,
|
|
@@ -3963,20 +3848,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
|
|
|
3963
3848
|
MatIconModule,
|
|
3964
3849
|
FeatureDetailsComponent,
|
|
3965
3850
|
IgoLanguageModule
|
|
3966
|
-
], template: "<mat-sidenav #sidenav igoSidenavShim mode=\"side\" [opened]=\"opened\">\n <div class=\"igo-sidenav-content\">\n <igo-flexible\n #topPanel\n initial=\"50%\"\n initialMobile=\"100%\"\n expanded=\"calc(100% - 58px)\"\n [state]=\"topPanelState\"\n >\n <div class=\"igo-content\">\n <igo-panel
|
|
3967
|
-
}],
|
|
3968
|
-
type: Input
|
|
3969
|
-
}], opened: [{
|
|
3970
|
-
type: Input
|
|
3971
|
-
}], feature: [{
|
|
3972
|
-
type: Input
|
|
3973
|
-
}], tool: [{
|
|
3974
|
-
type: Input
|
|
3975
|
-
}], media: [{
|
|
3976
|
-
type: Input
|
|
3977
|
-
}], title: [{
|
|
3978
|
-
type: Input
|
|
3979
|
-
}] } });
|
|
3851
|
+
], template: "<mat-sidenav #sidenav igoSidenavShim mode=\"side\" [opened]=\"opened()\">\n <div class=\"igo-sidenav-content\">\n <igo-flexible\n #topPanel\n initial=\"50%\"\n initialMobile=\"100%\"\n expanded=\"calc(100% - 58px)\"\n [state]=\"topPanelState\"\n >\n <div class=\"igo-content\">\n <igo-panel\n [title]=\"tool() ? (tool()!.title | translate) : displayTitle()\"\n >\n @if (tool()) {\n <button\n mat-icon-button\n panelLeftButton\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.context.sidenav.goBack' | translate\"\n >\n <mat-icon>arrow_back</mat-icon>\n </button>\n }\n\n @if (tool()) {\n <button\n mat-icon-button\n panelRightButton\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.context.sidenav.mainMenu' | translate\"\n >\n <mat-icon>menu</mat-icon>\n </button>\n }\n </igo-panel>\n </div>\n\n <div igoFlexibleFill class=\"igo-content\">\n @if (feature() && media() !== 'mobile') {\n <igo-panel [title]=\"featureTitle\">\n <button\n mat-icon-button\n panelLeftButton\n class=\"igo-icon-button\"\n (click)=\"toggleTopPanel()\"\n >\n <mat-icon>{{\n ['collapsed', 'initial'].indexOf(topPanel.state) >= 0\n ? 'arrow_downward'\n : 'arrow_upward'\n }}</mat-icon>\n </button>\n @if (feature().geometry) {\n <button\n mat-icon-button\n panelRightButton\n class=\"igo-icon-button\"\n (click)=\"zoomToFeatureExtent()\"\n >\n <mat-icon>zoom_in</mat-icon>\n </button>\n }\n @if (['collapsed', 'initial'].indexOf(topPanel.state) >= 0) {\n <igo-feature-details [feature]=\"feature()!\" />\n }\n </igo-panel>\n }\n </div>\n </igo-flexible>\n </div>\n</mat-sidenav>\n", styles: [":host ::ng-deep .igo-flexible-fill .igo-container,.igo-sidenav-content .igo-flexible-fill .igo-container{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}:host ::ng-deep .igo-flexible-fill .igo-container,.igo-sidenav-content .igo-flexible-fill .igo-container{border-top-width:1px;border-top-style:solid;border-top-color:#0003}mat-sidenav{-moz-box-shadow:2px 0px 2px 0px #dddddd;-webkit-box-shadow:2px 0px 2px 0px #dddddd;-o-box-shadow:2px 0px 2px 0px #dddddd;box-shadow:2px 0 2px #ddd}:host{background-color:#fff}:host ::ng-deep mat-sidenav{z-index:3!important}mat-sidenav{width:400px}@media only screen and (orientation:portrait)and (max-width:599px),only screen and (orientation:landscape)and (max-width:959px){mat-sidenav{width:calc(100% - 45px)}}.igo-sidenav-content{margin-top:50px;height:calc(100% - 50px)}igo-feature-details ::ng-deep table{width:100%}\n"] }]
|
|
3852
|
+
}], propDecorators: { map: [{ type: i0.Input, args: [{ isSignal: true, alias: "map", required: true }] }], opened: [{ type: i0.Input, args: [{ isSignal: true, alias: "opened", required: false }] }], feature: [{ type: i0.Input, args: [{ isSignal: true, alias: "feature", required: true }] }], tool: [{ type: i0.Input, args: [{ isSignal: true, alias: "tool", required: false }] }], media: [{ type: i0.Input, args: [{ isSignal: true, alias: "media", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }] } });
|
|
3980
3853
|
|
|
3981
3854
|
/**
|
|
3982
3855
|
* @deprecated import the SidenavComponent directly
|
|
@@ -3987,11 +3860,11 @@ class IgoSidenavModule {
|
|
|
3987
3860
|
ngModule: IgoSidenavModule
|
|
3988
3861
|
};
|
|
3989
3862
|
}
|
|
3990
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3991
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.
|
|
3992
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.
|
|
3863
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: IgoSidenavModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
3864
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.17", ngImport: i0, type: IgoSidenavModule, imports: [SidenavComponent], exports: [SidenavComponent] });
|
|
3865
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: IgoSidenavModule, imports: [SidenavComponent] });
|
|
3993
3866
|
}
|
|
3994
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3867
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: IgoSidenavModule, decorators: [{
|
|
3995
3868
|
type: NgModule,
|
|
3996
3869
|
args: [{
|
|
3997
3870
|
imports: [SidenavComponent],
|
|
@@ -4008,19 +3881,19 @@ class IgoContextModule {
|
|
|
4008
3881
|
ngModule: IgoContextModule
|
|
4009
3882
|
};
|
|
4010
3883
|
}
|
|
4011
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
4012
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.
|
|
3884
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: IgoContextModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
3885
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.17", ngImport: i0, type: IgoContextModule, exports: [IgoContextImportExportModule,
|
|
4013
3886
|
IgoContextManagerModule,
|
|
4014
3887
|
IgoContextMapButtonModule,
|
|
4015
3888
|
IgoShareMapModule,
|
|
4016
3889
|
IgoSidenavModule] });
|
|
4017
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.
|
|
3890
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: IgoContextModule, imports: [IgoContextImportExportModule,
|
|
4018
3891
|
IgoContextManagerModule,
|
|
4019
3892
|
IgoContextMapButtonModule,
|
|
4020
3893
|
IgoShareMapModule,
|
|
4021
3894
|
IgoSidenavModule] });
|
|
4022
3895
|
}
|
|
4023
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3896
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: IgoContextModule, decorators: [{
|
|
4024
3897
|
type: NgModule,
|
|
4025
3898
|
args: [{
|
|
4026
3899
|
declarations: [],
|
|
@@ -4059,5 +3932,5 @@ const CONTEXT_MAP_BUTTON_DIRECTIVES = [
|
|
|
4059
3932
|
* Generated bundle index. Do not edit.
|
|
4060
3933
|
*/
|
|
4061
3934
|
|
|
4062
|
-
export { BookmarkButtonComponent, BookmarkDialogComponent, CONTEXT_MANAGER_DIRECTIVES, CONTEXT_MAP_BUTTON_DIRECTIVES, ContextEditComponent, ContextExportService, ContextFormComponent, ContextImportExportComponent, ContextImportService, ContextItemComponent, ContextListComponent, ContextPermissionsComponent, ContextService, ExportError, ExportInvalidFileError, ExportNothingToExportError, GroupParamsKeys, IgoContextImportExportModule, IgoContextManagerModule, IgoContextMapButtonModule, IgoContextModule, IgoShareMapModule, IgoSidenavModule, ImportError, ImportInvalidFileError, ImportNothingToImportError, ImportSRSError, ImportSizeError, ImportUnreadableFileError, LayerContextDirective, LayerParamsKeys, MapContextDirective, PoiButtonComponent, PoiDialogComponent, PoiService, SHARE_MAP_DIRECTIVES, SHARE_MAP_KEYS_DEFAULT_OPTIONS, Scope, ServiceType, ServiceTypeEnum, ShareMapComponent, ShareMapLegacyParser, ShareMapService, ShareMapUrlComponent, SidenavComponent, TypePermission, UserButtonComponent, UserDialogComponent, addContextToContextList,
|
|
3935
|
+
export { BookmarkButtonComponent, BookmarkDialogComponent, CONTEXT_MANAGER_DIRECTIVES, CONTEXT_MAP_BUTTON_DIRECTIVES, ContextEditComponent, ContextExportService, ContextFormComponent, ContextImportExportComponent, ContextImportService, ContextItemComponent, ContextListComponent, ContextPermissionsComponent, ContextService, ExportError, ExportInvalidFileError, ExportNothingToExportError, GroupParamsKeys, IgoContextImportExportModule, IgoContextManagerModule, IgoContextMapButtonModule, IgoContextModule, IgoShareMapModule, IgoSidenavModule, ImportError, ImportInvalidFileError, ImportNothingToImportError, ImportSRSError, ImportSizeError, ImportUnreadableFileError, LayerContextDirective, LayerParamsKeys, MapContextDirective, PoiButtonComponent, PoiDialogComponent, PoiService, SHARE_MAP_DIRECTIVES, SHARE_MAP_KEYS_DEFAULT_OPTIONS, Scope, ServiceType, ServiceTypeEnum, ShareMapComponent, ShareMapLegacyParser, ShareMapService, ShareMapUrlComponent, SidenavComponent, TypePermission, UserButtonComponent, UserDialogComponent, addContextToContextList, addImportedFeaturesToMap, buildDataSourceOptions, computeLayerTitleFromFile, getFileExtension, getFlattenOptions, getParamValue, handleFileExportError, handleFileExportSuccess, handleFileImportError, handleFileImportSuccess, handleInvalidFileImportError, handleNothingToExportError, handleNothingToImportError, handleSizeFileImportError, handleUnreadbleFileImportError, hasLegacyParams, hasModernShareParams };
|
|
4063
3936
|
//# sourceMappingURL=igo2-context.mjs.map
|