geonetwork-ui 2.5.0-dev.5ea8dba3f → 2.5.0-dev.6e4d22b12
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/esm2022/libs/feature/editor/src/index.mjs +2 -1
- package/esm2022/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.mjs +2 -2
- package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +2 -2
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.mjs +2 -2
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +2 -2
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/index.mjs +2 -1
- package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.mjs +1 -1
- package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +24 -5
- package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +8 -6
- package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +6 -3
- package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +37 -2
- package/esm2022/libs/ui/inputs/src/lib/url-input/url-input.component.mjs +2 -7
- package/esm2022/libs/util/data-fetcher/src/lib/utils.mjs +5 -3
- package/esm2022/translations/de.json +1 -1
- package/esm2022/translations/en.json +1 -1
- package/esm2022/translations/fr.json +1 -1
- package/esm2022/translations/it.json +1 -1
- package/fesm2022/geonetwork-ui.mjs +85 -30
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/feature/editor/src/index.d.ts +1 -0
- package/libs/feature/editor/src/index.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts +1 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +4 -1
- package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +3 -2
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
- package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +2 -1
- package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts +16 -1
- package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts +2 -3
- package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts.map +1 -1
- package/libs/util/data-fetcher/src/lib/utils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/libs/feature/editor/src/index.ts +1 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/index.ts +1 -0
- package/src/libs/feature/record/src/lib/data-view/data-view.component.html +24 -13
- package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +23 -4
- package/src/libs/feature/record/src/lib/map-view/map-view.component.html +71 -60
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +4 -2
- package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.html +1 -0
- package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +1 -0
- package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +42 -0
- package/src/libs/ui/inputs/src/lib/url-input/url-input.component.ts +1 -7
- package/src/libs/util/data-fetcher/src/lib/utils.ts +4 -2
- package/translations/de.json +1 -1
- package/translations/en.json +1 -1
- package/translations/fr.json +1 -1
- package/translations/it.json +1 -1
|
@@ -10,4 +10,5 @@ export * from './lib/components/record-form/record-form.component';
|
|
|
10
10
|
export * from './lib/components/wizard/wizard.component';
|
|
11
11
|
export * from './lib/components/wizard-field/wizard-field.component';
|
|
12
12
|
export * from './lib/components/wizard-summarize/wizard-summarize.component';
|
|
13
|
+
export * from './lib/components/record-form/form-field';
|
|
13
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/libs/feature/editor/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,wDAAwD,CAAA;AACtE,cAAc,oDAAoD,CAAA;AAClE,cAAc,0CAA0C,CAAA;AACxD,cAAc,sDAAsD,CAAA;AACpE,cAAc,8DAA8D,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/libs/feature/editor/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,wDAAwD,CAAA;AACtE,cAAc,oDAAoD,CAAA;AAClE,cAAc,0CAA0C,CAAA;AACxD,cAAc,sDAAsD,CAAA;AACpE,cAAc,8DAA8D,CAAA;AAC5E,cAAc,yCAAyC,CAAA"}
|
|
@@ -9,4 +9,5 @@ export * from './form-field-object/form-field-object.component';
|
|
|
9
9
|
export * from './form-field-array/form-field-array.component';
|
|
10
10
|
export * from './form-field-spatial-extent/form-field-spatial-extent.component';
|
|
11
11
|
export * from './form-field.component';
|
|
12
|
+
export * from './form-field-constraints-shortcuts/constraints.utils';
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../src/libs/feature/editor/src/lib/components/record-form/form-field/index.ts"],"names":[],"mappings":"AAAA,cAAc,qDAAqD,CAAA;AACnE,cAAc,mDAAmD,CAAA;AACjE,cAAc,6CAA6C,CAAA;AAC3D,cAAc,qEAAqE,CAAA;AACnF,cAAc,iDAAiD,CAAA;AAC/D,cAAc,6CAA6C,CAAA;AAC3D,cAAc,6CAA6C,CAAA;AAC3D,cAAc,iDAAiD,CAAA;AAC/D,cAAc,+CAA+C,CAAA;AAC7D,cAAc,iEAAiE,CAAA;AAC/E,cAAc,wBAAwB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../src/libs/feature/editor/src/lib/components/record-form/form-field/index.ts"],"names":[],"mappings":"AAAA,cAAc,qDAAqD,CAAA;AACnE,cAAc,mDAAmD,CAAA;AACjE,cAAc,6CAA6C,CAAA;AAC3D,cAAc,qEAAqE,CAAA;AACnF,cAAc,iDAAiD,CAAA;AAC/D,cAAc,6CAA6C,CAAA;AAC3D,cAAc,6CAA6C,CAAA;AAC3D,cAAc,iDAAiD,CAAA;AAC/D,cAAc,+CAA+C,CAAA;AAC7D,cAAc,iEAAiE,CAAA;AAC/E,cAAc,wBAAwB,CAAA;AACtC,cAAc,sDAAsD,CAAA"}
|
|
@@ -7,8 +7,11 @@ export declare class DataViewComponent {
|
|
|
7
7
|
private mdViewFacade;
|
|
8
8
|
mode: 'table' | 'chart';
|
|
9
9
|
displaySource: boolean;
|
|
10
|
+
set exceedsLimit(value: boolean);
|
|
10
11
|
chartConfig$: BehaviorSubject<DatavizConfigurationModel>;
|
|
11
12
|
cacheActive$: import("rxjs").Observable<boolean>;
|
|
13
|
+
hidePreview: boolean;
|
|
14
|
+
excludeWfs$: BehaviorSubject<boolean>;
|
|
12
15
|
compatibleDataLinks$: import("rxjs").Observable<DatasetOnlineResource[]>;
|
|
13
16
|
dropdownChoices$: import("rxjs").Observable<{
|
|
14
17
|
label: string;
|
|
@@ -19,6 +22,6 @@ export declare class DataViewComponent {
|
|
|
19
22
|
setChartConfig(event: DatavizConfigurationModel): void;
|
|
20
23
|
selectLink(linkAsString: string): void;
|
|
21
24
|
static ɵfac: i0.ɵɵFactoryDeclaration<DataViewComponent, never>;
|
|
22
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DataViewComponent, "gn-ui-data-view", never, { "mode": { "alias": "mode"; "required": false; }; "displaySource": { "alias": "displaySource"; "required": false; }; }, { "chartConfig$": "chartConfig$"; }, never, never, true, never>;
|
|
25
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DataViewComponent, "gn-ui-data-view", never, { "mode": { "alias": "mode"; "required": false; }; "displaySource": { "alias": "displaySource"; "required": false; }; "exceedsLimit": { "alias": "exceedsLimit"; "required": false; }; }, { "chartConfig$": "chartConfig$"; }, never, never, true, never>;
|
|
23
26
|
}
|
|
24
27
|
//# sourceMappingURL=data-view.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-view.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/record/src/lib/data-view/data-view.component.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"data-view.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/record/src/lib/data-view/data-view.component.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAqB,MAAM,MAAM,CAAA;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,yBAAyB,EAAE,MAAM,wFAAwF,CAAA;AAClI,OAAO,EAAE,qBAAqB,EAAE,MAAM,2DAA2D,CAAA;;AAUjG,qBAea,iBAAiB;IAqChB,OAAO,CAAC,YAAY;IApCvB,IAAI,EAAE,OAAO,GAAG,OAAO,CAAA;IACvB,aAAa,UAAO;IAC7B,IAAa,YAAY,CAAC,KAAK,EAAE,OAAO,EAEvC;IACS,YAAY,6CAAuD;IAC7E,YAAY,qCAEX;IACD,WAAW,UAAQ;IACnB,WAAW,2BAA6B;IACxC,oBAAoB,qDASnB;IACD,gBAAgB;;;SAYf;IACD,aAAa,yCAAmD;gBAE5C,YAAY,EAAE,YAAY;IAE9C,cAAc,CAAC,KAAK,EAAE,yBAAyB;IAI/C,UAAU,CAAC,YAAY,EAAE,MAAM;yCA3CpB,iBAAiB;2CAAjB,iBAAiB;CA4D7B"}
|
|
@@ -13,10 +13,11 @@ export declare class MapViewComponent implements AfterViewInit {
|
|
|
13
13
|
private mapUtils;
|
|
14
14
|
private dataService;
|
|
15
15
|
private changeRef;
|
|
16
|
-
set
|
|
16
|
+
set exceedsLimit(value: boolean);
|
|
17
17
|
displaySource: boolean;
|
|
18
18
|
mapContainer: MapContainerComponent;
|
|
19
19
|
excludeWfs$: BehaviorSubject<boolean>;
|
|
20
|
+
hidePreview: boolean;
|
|
20
21
|
selection: Feature;
|
|
21
22
|
showLegend: boolean;
|
|
22
23
|
legendExists: boolean;
|
|
@@ -40,6 +41,6 @@ export declare class MapViewComponent implements AfterViewInit {
|
|
|
40
41
|
getLayerFromLink(link: DatasetOnlineResource): Observable<MapContextLayer>;
|
|
41
42
|
selectLinkToDisplay(link: number): void;
|
|
42
43
|
static ɵfac: i0.ɵɵFactoryDeclaration<MapViewComponent, never>;
|
|
43
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<MapViewComponent, "gn-ui-map-view", never, { "
|
|
44
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<MapViewComponent, "gn-ui-map-view", never, { "exceedsLimit": { "alias": "exceedsLimit"; "required": false; }; "displaySource": { "alias": "displaySource"; "required": false; }; }, {}, never, never, true, never>;
|
|
44
45
|
}
|
|
45
46
|
//# sourceMappingURL=map-view.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-view.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/record/src/lib/map-view/map-view.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEb,iBAAiB,EAIlB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AAExE,OAAO,EACL,eAAe,EAGf,UAAU,EAKX,MAAM,MAAM,CAAA;AAUb,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAA;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2DAA2D,CAAA;AACjG,OAAO,EAEL,UAAU,EACV,eAAe,EAChB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAEL,qBAAqB,EAGtB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;;AAmBjC,qBAqBa,gBAAiB,YAAW,aAAa;
|
|
1
|
+
{"version":3,"file":"map-view.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/record/src/lib/map-view/map-view.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEb,iBAAiB,EAIlB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AAExE,OAAO,EACL,eAAe,EAGf,UAAU,EAKX,MAAM,MAAM,CAAA;AAUb,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAA;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2DAA2D,CAAA;AACjG,OAAO,EAEL,UAAU,EACV,eAAe,EAChB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAEL,qBAAqB,EAGtB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;;AAmBjC,qBAqBa,gBAAiB,YAAW,aAAa;IA4GlD,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,SAAS;IA9GnB,IAAa,YAAY,CAAC,KAAK,EAAE,OAAO,EAEvC;IACQ,aAAa,UAAO;IACF,YAAY,EAAE,qBAAqB,CAAA;IAE9D,WAAW,2BAA6B;IACxC,WAAW,UAAQ;IACnB,SAAS,EAAE,OAAO,CAAA;IAClB,UAAU,UAAO;IACjB,YAAY,UAAQ;IAEpB,YAAY;IAIZ,oBAAoB,CAAC,MAAM,EAAE,OAAO;IAOpC,mBAAmB,oBAOlB;IAED,gBAAgB;;;SASf;IACD,kBAAkB,0BAAyB;IAE3C,OAAO,UAAQ;IACf,KAAK,MAAO;IAEZ,aAAa,kBAGiC;IAE9C,cAAc,oBAsBb;IAED,WAAW,EAAE,UAAU,CAAC,UAAU,CAAC,CA4BlC;gBAGS,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,eAAe,EACzB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,iBAAiB;IAGhC,eAAe;IAKrB,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAU7C,cAAc,IAAI,IAAI;IAQtB,gBAAgB,CAAC,IAAI,EAAE,qBAAqB,GAAG,UAAU,CAAC,eAAe,CAAC;IAkC1E,mBAAmB,CAAC,IAAI,EAAE,MAAM;yCA3KrB,gBAAgB;2CAAhB,gBAAgB;CA8K5B"}
|
|
@@ -12,6 +12,7 @@ export declare class FuzzySearchComponent implements OnInit {
|
|
|
12
12
|
private recordsRepository;
|
|
13
13
|
autocomplete: AutocompleteComponent;
|
|
14
14
|
autoFocus: boolean;
|
|
15
|
+
forceTrackPosition: boolean;
|
|
15
16
|
itemSelected: EventEmitter<CatalogRecord>;
|
|
16
17
|
inputSubmitted: EventEmitter<string>;
|
|
17
18
|
searchInputValue$: Observable<{
|
|
@@ -31,6 +32,6 @@ export declare class FuzzySearchComponent implements OnInit {
|
|
|
31
32
|
handleInputSubmission(any: string): void;
|
|
32
33
|
handleInputCleared(): Promise<void>;
|
|
33
34
|
static ɵfac: i0.ɵɵFactoryDeclaration<FuzzySearchComponent, never>;
|
|
34
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FuzzySearchComponent, "gn-ui-fuzzy-search", never, { "autoFocus": { "alias": "autoFocus"; "required": false; }; }, { "itemSelected": "itemSelected"; "inputSubmitted": "inputSubmitted"; }, never, never, false, never>;
|
|
35
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FuzzySearchComponent, "gn-ui-fuzzy-search", never, { "autoFocus": { "alias": "autoFocus"; "required": false; }; "forceTrackPosition": { "alias": "forceTrackPosition"; "required": false; }; }, { "itemSelected": "itemSelected"; "inputSubmitted": "inputSubmitted"; }, never, never, false, never>;
|
|
35
36
|
}
|
|
36
37
|
//# sourceMappingURL=fuzzy-search.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fuzzy-search.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EAEZ,MAAM,EAGP,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAAkB,UAAU,EAAE,MAAM,MAAM,CAAA;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;AACzF,OAAO,EAAE,0BAA0B,EAAE,MAAM,sFAAsF,CAAA;;AAGjI,qBAMa,oBAAqB,YAAW,MAAM;
|
|
1
|
+
{"version":3,"file":"fuzzy-search.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EAEZ,MAAM,EAGP,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAAkB,UAAU,EAAE,MAAM,MAAM,CAAA;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAA;AACzF,OAAO,EAAE,0BAA0B,EAAE,MAAM,sFAAsF,CAAA;;AAGjI,qBAMa,oBAAqB,YAAW,MAAM;IAgB/C,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,iBAAiB;IAjBO,YAAY,EAAE,qBAAqB,CAAA;IAC5D,SAAS,UAAQ;IACjB,kBAAkB,UAAQ;IACzB,YAAY,8BAAoC;IAChD,cAAc,uBAA6B;IACrD,iBAAiB,EAAE,UAAU,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAEhD,aAAa,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,MAAM,CAA2B;IAE3E,kBAAkB,UAAW,MAAM,iCAGO;gBAGhC,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,aAAa,EAC5B,iBAAiB,EAAE,0BAA0B;IAGvD,QAAQ,IAAI,IAAI;IAQhB;;;;;OAKG;IACH,mBAAmB,CAAC,IAAI,EAAE,gBAAgB;IAS1C,qBAAqB,CAAC,GAAG,EAAE,MAAM;IAQ3B,kBAAkB;yCApDb,oBAAoB;2CAApB,oBAAoB;CA4DhC"}
|
|
@@ -14,6 +14,7 @@ export declare class AutocompleteComponent implements OnInit, AfterViewInit, OnD
|
|
|
14
14
|
autoFocus: boolean;
|
|
15
15
|
minCharacterCount?: number;
|
|
16
16
|
allowSubmit: boolean;
|
|
17
|
+
forceTrackPosition: boolean;
|
|
17
18
|
itemSelected: EventEmitter<unknown>;
|
|
18
19
|
inputSubmitted: EventEmitter<string>;
|
|
19
20
|
inputCleared: EventEmitter<void>;
|
|
@@ -28,12 +29,26 @@ export declare class AutocompleteComponent implements OnInit, AfterViewInit, OnD
|
|
|
28
29
|
error: string | null;
|
|
29
30
|
suggestions$: Observable<AutocompleteItem[]>;
|
|
30
31
|
subscription: Subscription;
|
|
32
|
+
private lastPosition;
|
|
33
|
+
private intervalIdPosition;
|
|
31
34
|
displayWithFn: (item: AutocompleteItem) => string;
|
|
32
35
|
displayWithFnInternal: (item?: AutocompleteItem) => string;
|
|
33
36
|
constructor(cdRef: ChangeDetectorRef);
|
|
34
37
|
ngOnChanges(changes: SimpleChanges): void;
|
|
35
38
|
ngOnInit(): void;
|
|
36
39
|
ngAfterViewInit(): void;
|
|
40
|
+
/**
|
|
41
|
+
* !!! This function is used only for web component mode,
|
|
42
|
+
* the autocomplete dropdown may not update its position
|
|
43
|
+
* if the page or container is disabling wind scroll.
|
|
44
|
+
*/
|
|
45
|
+
private trackPosition;
|
|
46
|
+
/**
|
|
47
|
+
* !!! This function is used only for web component mode,
|
|
48
|
+
* the autocomplete dropdown may not update its position
|
|
49
|
+
* if the page or container is disabling wind scroll.
|
|
50
|
+
*/
|
|
51
|
+
startTrackingPosition(): void;
|
|
37
52
|
ngOnDestroy(): void;
|
|
38
53
|
updateInputValue(value: AutocompleteItem): void;
|
|
39
54
|
clear(): void;
|
|
@@ -48,6 +63,6 @@ export declare class AutocompleteComponent implements OnInit, AfterViewInit, OnD
|
|
|
48
63
|
*/
|
|
49
64
|
handleSelection(event: MatAutocompleteSelectedEvent): void;
|
|
50
65
|
static ɵfac: i0.ɵɵFactoryDeclaration<AutocompleteComponent, never>;
|
|
51
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<AutocompleteComponent, "gn-ui-autocomplete", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "action": { "alias": "action"; "required": false; }; "value": { "alias": "value"; "required": false; }; "clearOnSelection": { "alias": "clearOnSelection"; "required": false; }; "preventCompleteOnSelection": { "alias": "preventCompleteOnSelection"; "required": false; }; "autoFocus": { "alias": "autoFocus"; "required": false; }; "minCharacterCount": { "alias": "minCharacterCount"; "required": false; }; "allowSubmit": { "alias": "allowSubmit"; "required": false; }; "displayWithFn": { "alias": "displayWithFn"; "required": false; }; }, { "itemSelected": "itemSelected"; "inputSubmitted": "inputSubmitted"; "inputCleared": "inputCleared"; }, never, never, true, never>;
|
|
66
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AutocompleteComponent, "gn-ui-autocomplete", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "action": { "alias": "action"; "required": false; }; "value": { "alias": "value"; "required": false; }; "clearOnSelection": { "alias": "clearOnSelection"; "required": false; }; "preventCompleteOnSelection": { "alias": "preventCompleteOnSelection"; "required": false; }; "autoFocus": { "alias": "autoFocus"; "required": false; }; "minCharacterCount": { "alias": "minCharacterCount"; "required": false; }; "allowSubmit": { "alias": "allowSubmit"; "required": false; }; "forceTrackPosition": { "alias": "forceTrackPosition"; "required": false; }; "displayWithFn": { "alias": "displayWithFn"; "required": false; }; }, { "itemSelected": "itemSelected"; "inputSubmitted": "inputSubmitted"; "inputCleared": "inputCleared"; }, never, never, true, never>;
|
|
52
67
|
}
|
|
53
68
|
//# sourceMappingURL=autocomplete.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autocomplete.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEb,iBAAiB,EAEjB,UAAU,EACV,YAAY,EAEZ,SAAS,EACT,SAAS,EACT,MAAM,EAEN,aAAa,EAEd,MAAM,eAAe,CAAA;AACtB,OAAO,EAAuB,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACxE,OAAO,EACL,eAAe,EAEf,4BAA4B,EAC5B,sBAAsB,EACvB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAgB,UAAU,EAAM,aAAa,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;;AAwBhF,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAA;AAEtC,qBAyBa,qBACX,YAAW,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"autocomplete.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEb,iBAAiB,EAEjB,UAAU,EACV,YAAY,EAEZ,SAAS,EACT,SAAS,EACT,MAAM,EAEN,aAAa,EAEd,MAAM,eAAe,CAAA;AACtB,OAAO,EAAuB,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACxE,OAAO,EACL,eAAe,EAEf,4BAA4B,EAC5B,sBAAsB,EACvB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAgB,UAAU,EAAM,aAAa,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;;AAwBhF,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAA;AAEtC,qBAyBa,qBACX,YAAW,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS;IAsC1C,OAAO,CAAC,KAAK;IApChB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAA;IACzD,KAAK,CAAC,EAAE,gBAAgB,CAAA;IACxB,gBAAgB,UAAQ;IACxB,0BAA0B,UAAQ;IAClC,SAAS,UAAQ;IACjB,iBAAiB,CAAC,SAAI;IAEtB,WAAW,UAAQ;IACnB,kBAAkB,UAAQ;IACzB,YAAY,wBAAuC;IACnD,cAAc,uBAA6B;IAC3C,YAAY,qBAA2B;IACd,UAAU,EAAE,sBAAsB,CAAA;IACzC,YAAY,EAAE,eAAe,CAAA;IAC/B,QAAQ,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAA;IAEhE,SAAS,EAAE,OAAO,CAAA;IAClB,OAAO,qBAA2B;IAClC,WAAW,UAAO;IAClB,gBAAgB,8CAAqD;IACrE,eAAe,wBAA+B;IAC9C,KAAK,EAAE,MAAM,GAAG,IAAI,CAAO;IAC3B,YAAY,EAAE,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAA;IAC5C,YAAY,eAAqB;IACjC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,kBAAkB,CAAoB;IAErC,aAAa,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,MAAM,CACzC;IAEjB,qBAAqB,UAAW,gBAAgB,YAG/C;gBAEmB,KAAK,EAAE,iBAAiB;IAC5C,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAWzC,QAAQ,IAAI,IAAI;IAwEhB,eAAe,IAAI,IAAI;IAUvB;;;;OAIG;IACH,OAAO,CAAC,aAAa,CAepB;IAED;;;;OAIG;IACH,qBAAqB;IAMrB,WAAW,IAAI,IAAI;IAQnB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB;IASxC,KAAK,IAAI,IAAI;IASb,WAAW,CAAC,GAAG,EAAE,MAAM;IAMvB,iBAAiB;IAIjB;;;;;;OAMG;IACH,eAAe,CAAC,KAAK,EAAE,4BAA4B;yCAjNxC,qBAAqB;2CAArB,qBAAqB;CA+NjC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ChangeDetectorRef, EventEmitter
|
|
1
|
+
import { ChangeDetectorRef, EventEmitter } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class UrlInputComponent
|
|
3
|
+
export declare class UrlInputComponent {
|
|
4
4
|
private cd;
|
|
5
5
|
set value(v: string);
|
|
6
6
|
extraClass: string;
|
|
@@ -14,7 +14,6 @@ export declare class UrlInputComponent implements OnChanges {
|
|
|
14
14
|
uploadClick: EventEmitter<string>;
|
|
15
15
|
inputValue: string;
|
|
16
16
|
constructor(cd: ChangeDetectorRef);
|
|
17
|
-
ngOnChanges(changes: SimpleChanges): void;
|
|
18
17
|
handleInput(event: Event): void;
|
|
19
18
|
handleUpload(element: HTMLInputElement): void;
|
|
20
19
|
isValidUrl(url: string): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url-input.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/inputs/src/lib/url-input/url-input.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EAEjB,YAAY,
|
|
1
|
+
{"version":3,"file":"url-input.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/inputs/src/lib/url-input/url-input.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EAEjB,YAAY,EAKb,MAAM,eAAe,CAAA;;AAUtB,qBAca,iBAAiB;IA0BhB,OAAO,CAAC,EAAE;IAzBtB,IAAa,KAAK,CAAC,CAAC,EAAE,MAAM,EAW3B;IACQ,UAAU,SAAK;IACf,WAAW,SAAa;IACxB,QAAQ,EAAE,OAAO,CAAA;IACjB,kBAAkB,UAAO;IAElC;;OAEG;IACO,WAAW,uBAAoC;IAC/C,WAAW,uBAA6B;IAElD,UAAU,SAAK;gBAEK,EAAE,EAAE,iBAAiB;IAEzC,WAAW,CAAC,KAAK,EAAE,KAAK;IAWxB,YAAY,CAAC,OAAO,EAAE,gBAAgB;IAMtC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;yCA7CrB,iBAAiB;2CAAjB,iBAAiB;CAqD7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/libs/util/data-fetcher/src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,cAAc,EAEd,YAAY,EACZ,aAAa,EAEd,MAAM,SAAS,CAAA;AAMhB,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,aAAa,CAAC,CAsBxB;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAWjE;AAED,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/libs/util/data-fetcher/src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,cAAc,EAEd,YAAY,EACZ,aAAa,EAEd,MAAM,SAAS,CAAA;AAMhB,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,aAAa,CAAC,CAsBxB;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAWjE;AAED,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,MAAM,CAAC,CAgBjB;AACD,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,WAAW,CAAC,CAmBtB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,CAkBxD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI3D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG,QAAQ,CAsB7E;AAqBD;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,QAAQ,EAAE,EACjB,UAAU,UAAQ,GACjB;IACD,KAAK,EAAE,QAAQ,EAAE,CAAA;IACjB,UAAU,EAAE,YAAY,EAAE,CAAA;CAC3B,CA0DA;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,QAAQ,EAAE,GAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAgB3B"}
|
package/package.json
CHANGED
|
@@ -10,3 +10,4 @@ export * from './lib/components/record-form/record-form.component'
|
|
|
10
10
|
export * from './lib/components/wizard/wizard.component'
|
|
11
11
|
export * from './lib/components/wizard-field/wizard-field.component'
|
|
12
12
|
export * from './lib/components/wizard-summarize/wizard-summarize.component'
|
|
13
|
+
export * from './lib/components/record-form/form-field'
|
|
@@ -9,3 +9,4 @@ export * from './form-field-object/form-field-object.component'
|
|
|
9
9
|
export * from './form-field-array/form-field-array.component'
|
|
10
10
|
export * from './form-field-spatial-extent/form-field-spatial-extent.component'
|
|
11
11
|
export * from './form-field.component'
|
|
12
|
+
export * from './form-field-constraints-shortcuts/constraints.utils'
|
|
@@ -8,17 +8,28 @@
|
|
|
8
8
|
[choices]="choices"
|
|
9
9
|
(selectValue)="selectLink($event)"
|
|
10
10
|
></gn-ui-dropdown-selector>
|
|
11
|
-
<
|
|
12
|
-
<gn-ui-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
11
|
+
<ng-container *ngIf="hidePreview; else dataView">
|
|
12
|
+
<gn-ui-popup-alert
|
|
13
|
+
type="warning"
|
|
14
|
+
icon="matErrorOutlineOutline"
|
|
15
|
+
class="block h-12 p-1"
|
|
16
|
+
>
|
|
17
|
+
<span translate>record.feature.limit</span>
|
|
18
|
+
</gn-ui-popup-alert>
|
|
19
|
+
</ng-container>
|
|
20
|
+
<ng-template #dataView>
|
|
21
|
+
<div class="relative h-[460px]">
|
|
22
|
+
<gn-ui-table-view
|
|
23
|
+
*ngIf="mode === 'table'"
|
|
24
|
+
[cacheActive]="cacheActive$ | async"
|
|
25
|
+
[link]="selectedLink$ | async"
|
|
26
|
+
></gn-ui-table-view>
|
|
27
|
+
<gn-ui-chart-view
|
|
28
|
+
*ngIf="mode === 'chart'"
|
|
29
|
+
(chartConfig$)="setChartConfig($event)"
|
|
30
|
+
[cacheActive]="cacheActive$ | async"
|
|
31
|
+
[link]="selectedLink$ | async"
|
|
32
|
+
></gn-ui-chart-view>
|
|
33
|
+
</div>
|
|
34
|
+
</ng-template>
|
|
24
35
|
</div>
|
|
@@ -5,8 +5,8 @@ import {
|
|
|
5
5
|
Output,
|
|
6
6
|
} from '@angular/core'
|
|
7
7
|
import { getLinkLabel, getLinkPriority } from '../../../../../../libs/util/shared/src'
|
|
8
|
-
import { BehaviorSubject, combineLatest } from 'rxjs'
|
|
9
|
-
import { map, tap } from 'rxjs/operators'
|
|
8
|
+
import { BehaviorSubject, combineLatest, of } from 'rxjs'
|
|
9
|
+
import { catchError, finalize, map, switchMap, tap } from 'rxjs/operators'
|
|
10
10
|
import { MdViewFacade } from '../state'
|
|
11
11
|
import { DatavizConfigurationModel } from '../../../../../../libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model'
|
|
12
12
|
import { DatasetOnlineResource } from '../../../../../../libs/common/domain/src/lib/model/record'
|
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
} from '../../../../../../libs/feature/dataviz/src'
|
|
18
18
|
import { CommonModule } from '@angular/common'
|
|
19
19
|
import { TranslateModule } from '@ngx-translate/core'
|
|
20
|
+
import { PopupAlertComponent } from '../../../../../../libs/ui/widgets/src'
|
|
20
21
|
|
|
21
22
|
@Component({
|
|
22
23
|
selector: 'gn-ui-data-view',
|
|
@@ -30,15 +31,21 @@ import { TranslateModule } from '@ngx-translate/core'
|
|
|
30
31
|
TableViewComponent,
|
|
31
32
|
TranslateModule,
|
|
32
33
|
ChartViewComponent,
|
|
34
|
+
PopupAlertComponent,
|
|
33
35
|
],
|
|
34
36
|
})
|
|
35
37
|
export class DataViewComponent {
|
|
36
38
|
@Input() mode: 'table' | 'chart'
|
|
37
39
|
@Input() displaySource = true
|
|
40
|
+
@Input() set exceedsLimit(value: boolean) {
|
|
41
|
+
this.excludeWfs$.next(value)
|
|
42
|
+
}
|
|
38
43
|
@Output() chartConfig$ = new BehaviorSubject<DatavizConfigurationModel>(null)
|
|
39
44
|
cacheActive$ = this.mdViewFacade.isHighUpdateFrequency$.pipe(
|
|
40
45
|
map((highF) => !highF)
|
|
41
46
|
)
|
|
47
|
+
hidePreview = false
|
|
48
|
+
excludeWfs$ = new BehaviorSubject(false)
|
|
42
49
|
compatibleDataLinks$ = combineLatest([
|
|
43
50
|
this.mdViewFacade.dataLinks$,
|
|
44
51
|
this.mdViewFacade.geoDataLinks$,
|
|
@@ -52,7 +59,7 @@ export class DataViewComponent {
|
|
|
52
59
|
dropdownChoices$ = this.compatibleDataLinks$.pipe(
|
|
53
60
|
tap((links) => {
|
|
54
61
|
if (links.indexOf(this.selectedLink$.value) === -1) {
|
|
55
|
-
this.
|
|
62
|
+
this.selectLink(JSON.stringify(links[0]))
|
|
56
63
|
}
|
|
57
64
|
}),
|
|
58
65
|
map((links) =>
|
|
@@ -73,6 +80,18 @@ export class DataViewComponent {
|
|
|
73
80
|
selectLink(linkAsString: string) {
|
|
74
81
|
const link: DatasetOnlineResource = JSON.parse(linkAsString)
|
|
75
82
|
link.url = new URL(link.url)
|
|
76
|
-
this.
|
|
83
|
+
this.excludeWfs$
|
|
84
|
+
.pipe(
|
|
85
|
+
tap((excludeWfs) => {
|
|
86
|
+
this.hidePreview =
|
|
87
|
+
link['accessServiceProtocol'] === 'wfs' &&
|
|
88
|
+
excludeWfs &&
|
|
89
|
+
this.mode === 'chart'
|
|
90
|
+
? true
|
|
91
|
+
: false
|
|
92
|
+
this.selectedLink$.next(link)
|
|
93
|
+
})
|
|
94
|
+
)
|
|
95
|
+
.subscribe()
|
|
77
96
|
}
|
|
78
97
|
}
|
|
@@ -14,80 +14,91 @@
|
|
|
14
14
|
>
|
|
15
15
|
</gn-ui-external-viewer-button>
|
|
16
16
|
</div>
|
|
17
|
-
<
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
[context]="mapContext$ | async"
|
|
23
|
-
(featuresClick)="onMapFeatureSelect($event)"
|
|
24
|
-
></gn-ui-map-container>
|
|
25
|
-
<div
|
|
26
|
-
class="top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56"
|
|
27
|
-
[class.hidden]="!selection"
|
|
17
|
+
<ng-container *ngIf="hidePreview; else mapView">
|
|
18
|
+
<gn-ui-popup-alert
|
|
19
|
+
type="warning"
|
|
20
|
+
icon="matErrorOutlineOutline"
|
|
21
|
+
class="block h-12 p-1"
|
|
28
22
|
>
|
|
29
|
-
<
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
--gn-ui-button-padding: 0px;
|
|
34
|
-
--gn-ui-button-width: 24px;
|
|
35
|
-
--gn-ui-button-height: 24px;
|
|
36
|
-
"
|
|
37
|
-
extraClass="absolute right-[0.5em] ml-[8px] mr-[10px]"
|
|
38
|
-
>
|
|
39
|
-
<ng-icon name="matClose" class="align-middle text-sm"></ng-icon>
|
|
40
|
-
</gn-ui-button>
|
|
41
|
-
<gn-ui-feature-detail [feature]="selection"></gn-ui-feature-detail>
|
|
42
|
-
</div>
|
|
43
|
-
|
|
23
|
+
<span translate>record.feature.limit</span>
|
|
24
|
+
</gn-ui-popup-alert>
|
|
25
|
+
</ng-container>
|
|
26
|
+
<ng-template #mapView>
|
|
44
27
|
<div
|
|
45
|
-
class="
|
|
46
|
-
[ngClass]="{ 'right-[1em]': !selection, 'right-[16em]': selection }"
|
|
47
|
-
[hidden]="!showLegend || !legendExists"
|
|
28
|
+
class="relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden"
|
|
48
29
|
>
|
|
49
|
-
<
|
|
50
|
-
|
|
30
|
+
<gn-ui-map-container
|
|
31
|
+
#mapContainer
|
|
32
|
+
[context]="mapContext$ | async"
|
|
33
|
+
(featuresClick)="onMapFeatureSelect($event)"
|
|
34
|
+
></gn-ui-map-container>
|
|
35
|
+
<div
|
|
36
|
+
class="top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56"
|
|
37
|
+
[class.hidden]="!selection"
|
|
38
|
+
>
|
|
51
39
|
<gn-ui-button
|
|
52
40
|
type="light"
|
|
53
|
-
(buttonClick)="
|
|
41
|
+
(buttonClick)="resetSelection()"
|
|
54
42
|
style="
|
|
55
43
|
--gn-ui-button-padding: 0px;
|
|
56
44
|
--gn-ui-button-width: 24px;
|
|
57
45
|
--gn-ui-button-height: 24px;
|
|
58
46
|
"
|
|
59
|
-
extraClass="ml-[8px] mr-[10px]"
|
|
47
|
+
extraClass="absolute right-[0.5em] ml-[8px] mr-[10px]"
|
|
60
48
|
>
|
|
61
49
|
<ng-icon name="matClose" class="align-middle text-sm"></ng-icon>
|
|
62
50
|
</gn-ui-button>
|
|
51
|
+
<gn-ui-feature-detail [feature]="selection"></gn-ui-feature-detail>
|
|
63
52
|
</div>
|
|
64
|
-
<gn-ui-map-legend
|
|
65
|
-
[context]="mapContext$ | async"
|
|
66
|
-
(legendStatusChange)="onLegendStatusChange($event)"
|
|
67
|
-
></gn-ui-map-legend>
|
|
68
|
-
</div>
|
|
69
53
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
54
|
+
<div
|
|
55
|
+
class="top-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56"
|
|
56
|
+
[ngClass]="{ 'right-[1em]': !selection, 'right-[16em]': selection }"
|
|
57
|
+
[hidden]="!showLegend || !legendExists"
|
|
58
|
+
>
|
|
59
|
+
<div class="flex justify-between items-center mb-2">
|
|
60
|
+
<div class="text-primary font-bold">Legend</div>
|
|
61
|
+
<gn-ui-button
|
|
62
|
+
type="light"
|
|
63
|
+
(buttonClick)="toggleLegend()"
|
|
64
|
+
style="
|
|
65
|
+
--gn-ui-button-padding: 0px;
|
|
66
|
+
--gn-ui-button-width: 24px;
|
|
67
|
+
--gn-ui-button-height: 24px;
|
|
68
|
+
"
|
|
69
|
+
extraClass="ml-[8px] mr-[10px]"
|
|
70
|
+
>
|
|
71
|
+
<ng-icon name="matClose" class="align-middle text-sm"></ng-icon>
|
|
72
|
+
</gn-ui-button>
|
|
73
|
+
</div>
|
|
74
|
+
<gn-ui-map-legend
|
|
75
|
+
[context]="mapContext$ | async"
|
|
76
|
+
(legendStatusChange)="onLegendStatusChange($event)"
|
|
77
|
+
></gn-ui-map-legend>
|
|
78
|
+
</div>
|
|
78
79
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
80
|
+
<gn-ui-button
|
|
81
|
+
*ngIf="!showLegend && legendExists && !selection"
|
|
82
|
+
type="outline"
|
|
83
|
+
(buttonClick)="toggleLegend()"
|
|
84
|
+
extraClass="absolute top-[1em] right-[1em] rounded p-1 text-xs bg-white"
|
|
85
|
+
>
|
|
86
|
+
Legend
|
|
87
|
+
</gn-ui-button>
|
|
88
|
+
|
|
89
|
+
<gn-ui-loading-mask
|
|
90
|
+
*ngIf="loading"
|
|
91
|
+
class="absolute inset-0"
|
|
92
|
+
[message]="'map.loading.data' | translate"
|
|
93
|
+
></gn-ui-loading-mask>
|
|
94
|
+
<gn-ui-popup-alert
|
|
95
|
+
*ngIf="error"
|
|
96
|
+
type="warning"
|
|
97
|
+
icon="matErrorOutlineOutline"
|
|
98
|
+
class="absolute m-2 inset-0"
|
|
99
|
+
>
|
|
100
|
+
<span translate>{{ error }}</span>
|
|
101
|
+
</gn-ui-popup-alert>
|
|
102
|
+
</div>
|
|
103
|
+
</ng-template>
|
|
93
104
|
</div>
|
|
@@ -82,13 +82,14 @@ marker('wfs.feature.limit')
|
|
|
82
82
|
viewProviders: [provideIcons({ matClose })],
|
|
83
83
|
})
|
|
84
84
|
export class MapViewComponent implements AfterViewInit {
|
|
85
|
-
@Input() set
|
|
85
|
+
@Input() set exceedsLimit(value: boolean) {
|
|
86
86
|
this.excludeWfs$.next(value)
|
|
87
87
|
}
|
|
88
88
|
@Input() displaySource = true
|
|
89
89
|
@ViewChild('mapContainer') mapContainer: MapContainerComponent
|
|
90
90
|
|
|
91
91
|
excludeWfs$ = new BehaviorSubject(false)
|
|
92
|
+
hidePreview = false
|
|
92
93
|
selection: Feature
|
|
93
94
|
showLegend = true
|
|
94
95
|
legendExists = false
|
|
@@ -139,9 +140,10 @@ export class MapViewComponent implements AfterViewInit {
|
|
|
139
140
|
return of([])
|
|
140
141
|
}
|
|
141
142
|
if (excludeWfs && link.accessServiceProtocol === 'wfs') {
|
|
142
|
-
this.
|
|
143
|
+
this.hidePreview = true
|
|
143
144
|
return of([])
|
|
144
145
|
}
|
|
146
|
+
this.hidePreview = false
|
|
145
147
|
this.loading = true
|
|
146
148
|
this.error = null
|
|
147
149
|
return this.getLayerFromLink(link).pipe(
|
|
@@ -28,6 +28,7 @@ import { SearchFilters } from '../../../../../../libs/api/metadata-converter/src
|
|
|
28
28
|
export class FuzzySearchComponent implements OnInit {
|
|
29
29
|
@ViewChild(AutocompleteComponent) autocomplete: AutocompleteComponent
|
|
30
30
|
@Input() autoFocus = false
|
|
31
|
+
@Input() forceTrackPosition = false
|
|
31
32
|
@Output() itemSelected = new EventEmitter<CatalogRecord>()
|
|
32
33
|
@Output() inputSubmitted = new EventEmitter<string>()
|
|
33
34
|
searchInputValue$: Observable<{ title: string }>
|
|
@@ -83,6 +83,7 @@ export class AutocompleteComponent
|
|
|
83
83
|
@Input() minCharacterCount? = 3
|
|
84
84
|
// this will show a submit button next to the input; if false, a search icon will appear on the left
|
|
85
85
|
@Input() allowSubmit = false
|
|
86
|
+
@Input() forceTrackPosition = false
|
|
86
87
|
@Output() itemSelected = new EventEmitter<AutocompleteItem>()
|
|
87
88
|
@Output() inputSubmitted = new EventEmitter<string>()
|
|
88
89
|
@Output() inputCleared = new EventEmitter<void>()
|
|
@@ -98,6 +99,8 @@ export class AutocompleteComponent
|
|
|
98
99
|
error: string | null = null
|
|
99
100
|
suggestions$: Observable<AutocompleteItem[]>
|
|
100
101
|
subscription = new Subscription()
|
|
102
|
+
private lastPosition: DOMRect | null = null
|
|
103
|
+
private intervalIdPosition: number | undefined
|
|
101
104
|
|
|
102
105
|
@Input() displayWithFn: (item: AutocompleteItem) => string = (item) =>
|
|
103
106
|
item.toString()
|
|
@@ -197,10 +200,49 @@ export class AutocompleteComponent
|
|
|
197
200
|
this.inputRef.nativeElement.focus()
|
|
198
201
|
this.cdRef.detectChanges()
|
|
199
202
|
}
|
|
203
|
+
|
|
204
|
+
this.startTrackingPosition()
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* !!! This function is used only for web component mode,
|
|
209
|
+
* the autocomplete dropdown may not update its position
|
|
210
|
+
* if the page or container is disabling wind scroll.
|
|
211
|
+
*/
|
|
212
|
+
private trackPosition = () => {
|
|
213
|
+
const dropdownOpened = this.triggerRef && this.triggerRef.panelOpen
|
|
214
|
+
const rect = this.inputRef.nativeElement.getBoundingClientRect()
|
|
215
|
+
|
|
216
|
+
if (
|
|
217
|
+
dropdownOpened &&
|
|
218
|
+
(!this.lastPosition ||
|
|
219
|
+
rect.top !== this.lastPosition.top ||
|
|
220
|
+
rect.left !== this.lastPosition.left)
|
|
221
|
+
) {
|
|
222
|
+
this.triggerRef.updatePosition()
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
this.lastPosition = rect
|
|
226
|
+
requestAnimationFrame(this.trackPosition)
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* !!! This function is used only for web component mode,
|
|
231
|
+
* the autocomplete dropdown may not update its position
|
|
232
|
+
* if the page or container is disabling wind scroll.
|
|
233
|
+
*/
|
|
234
|
+
startTrackingPosition() {
|
|
235
|
+
if (this.forceTrackPosition) {
|
|
236
|
+
requestAnimationFrame(this.trackPosition)
|
|
237
|
+
}
|
|
200
238
|
}
|
|
201
239
|
|
|
202
240
|
ngOnDestroy(): void {
|
|
203
241
|
this.subscription?.unsubscribe()
|
|
242
|
+
|
|
243
|
+
if (this.intervalIdPosition) {
|
|
244
|
+
clearInterval(this.intervalIdPosition)
|
|
245
|
+
}
|
|
204
246
|
}
|
|
205
247
|
|
|
206
248
|
updateInputValue(value: AutocompleteItem) {
|
|
@@ -31,7 +31,7 @@ import { iconoirArrowUp, iconoirLink } from '@ng-icons/iconoir'
|
|
|
31
31
|
],
|
|
32
32
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
33
33
|
})
|
|
34
|
-
export class UrlInputComponent
|
|
34
|
+
export class UrlInputComponent {
|
|
35
35
|
@Input() set value(v: string) {
|
|
36
36
|
// we're making sure to only update the input if the URL representation of it has changed; otherwise we keep it identical
|
|
37
37
|
// to avoid glitches when starting to write a URL and having some characters added/replaced automatically
|
|
@@ -59,12 +59,6 @@ export class UrlInputComponent implements OnChanges {
|
|
|
59
59
|
|
|
60
60
|
constructor(private cd: ChangeDetectorRef) {}
|
|
61
61
|
|
|
62
|
-
ngOnChanges(changes: SimpleChanges) {
|
|
63
|
-
if (changes['value']) {
|
|
64
|
-
this.inputValue = changes['value'].currentValue
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
62
|
handleInput(event: Event) {
|
|
69
63
|
const value = (event.target as HTMLInputElement).value
|
|
70
64
|
this.inputValue = value
|