@igo2/integration 20.1.0-next.14 → 20.1.0-next.15
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-integration.mjs +46 -41
- package/fesm2022/igo2-integration.mjs.map +1 -1
- package/index.d.ts +4 -5
- package/package.json +4 -4
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, ChangeDetectorRef, model, Input, Component, CUSTOM_ELEMENTS_SCHEMA, NgModule, Injectable, input, ChangeDetectionStrategy, signal, viewChild, HostListener, Directive, ElementRef } from '@angular/core';
|
|
2
|
+
import { inject, ChangeDetectorRef, model, Input, Component, CUSTOM_ELEMENTS_SCHEMA, NgModule, Injectable, input, ChangeDetectionStrategy, signal, viewChild, HostListener, Directive, ElementRef, DestroyRef } from '@angular/core';
|
|
3
3
|
import { __decorate, __metadata } from 'tslib';
|
|
4
4
|
import { HttpClient } from '@angular/common/http';
|
|
5
5
|
import * as i1 from '@angular/material/button';
|
|
@@ -27,7 +27,7 @@ import { take, switchMap, concatAll, map, toArray, skipWhile, takeUntil, tap, de
|
|
|
27
27
|
import { StorageService, StorageScope, StorageServiceEventEnum } from '@igo2/core/storage';
|
|
28
28
|
import { ContextService, ContextEditComponent, ContextListComponent, ContextPermissionsComponent, ShareMapComponent, ContextImportExportComponent } from '@igo2/context';
|
|
29
29
|
import { createExcelWorkBook, addExcelSheetToWorkBook, writeExcelFile, ObjectUtils, uuid, NumberUtils } from '@igo2/utils';
|
|
30
|
-
import { toSignal } from '@angular/core/rxjs-interop';
|
|
30
|
+
import { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
31
31
|
import { MediaService, Media } from '@igo2/core/media';
|
|
32
32
|
import { MessageService, IgoMessageModule } from '@igo2/core/message';
|
|
33
33
|
import { trigger, state, style, transition, animate } from '@angular/animations';
|
|
@@ -135,18 +135,24 @@ let AboutToolComponent = class AboutToolComponent {
|
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
137
|
openGuide(guide) {
|
|
138
|
-
this.loading = true;
|
|
139
138
|
const url = guide
|
|
140
|
-
? this.baseUrlGuide + guide
|
|
141
|
-
: this.baseUrlGuide + this.trainingGuideURLs()[0]
|
|
139
|
+
? this.baseUrlGuide + guide
|
|
140
|
+
: this.baseUrlGuide + this.trainingGuideURLs()[0];
|
|
141
|
+
this.loading = true;
|
|
142
142
|
this.http
|
|
143
143
|
.get(url, {
|
|
144
144
|
responseType: 'blob'
|
|
145
145
|
})
|
|
146
|
-
.subscribe(
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
146
|
+
.subscribe({
|
|
147
|
+
next: (blob) => {
|
|
148
|
+
this.loading = false;
|
|
149
|
+
const blobUrl = URL.createObjectURL(blob);
|
|
150
|
+
window.open(blobUrl, '_blank');
|
|
151
|
+
// To avoid memory leak we need to revoke the object, 60 seconds to handle larger object like video
|
|
152
|
+
setTimeout(() => URL.revokeObjectURL(blobUrl), 60000);
|
|
153
|
+
this.cdRef.markForCheck();
|
|
154
|
+
},
|
|
155
|
+
error: () => (this.loading = false)
|
|
150
156
|
});
|
|
151
157
|
}
|
|
152
158
|
formatFileName(name) {
|
|
@@ -156,7 +162,7 @@ let AboutToolComponent = class AboutToolComponent {
|
|
|
156
162
|
return name;
|
|
157
163
|
}
|
|
158
164
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AboutToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
159
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: AboutToolComponent, isStandalone: true, selector: "igo-about-tool", inputs: { headerHtml: { classPropertyName: "headerHtml", publicName: "headerHtml", isSignal: false, isRequired: false, transformFunction: null }, html: { classPropertyName: "html", publicName: "html", isSignal: false, isRequired: false, transformFunction: null }, discoverTitleInLocale: { classPropertyName: "discoverTitleInLocale", publicName: "discoverTitleInLocale", isSignal: false, isRequired: false, transformFunction: null }, trainingGuideURLs: { classPropertyName: "trainingGuideURLs", publicName: "trainingGuideURLs", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { trainingGuideURLs: "trainingGuideURLsChange" }, ngImport: i0, template: "@if (
|
|
165
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: AboutToolComponent, isStandalone: true, selector: "igo-about-tool", inputs: { headerHtml: { classPropertyName: "headerHtml", publicName: "headerHtml", isSignal: false, isRequired: false, transformFunction: null }, html: { classPropertyName: "html", publicName: "html", isSignal: false, isRequired: false, transformFunction: null }, discoverTitleInLocale: { classPropertyName: "discoverTitleInLocale", publicName: "discoverTitleInLocale", isSignal: false, isRequired: false, transformFunction: null }, trainingGuideURLs: { classPropertyName: "trainingGuideURLs", publicName: "trainingGuideURLs", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { trainingGuideURLs: "trainingGuideURLsChange" }, ngImport: i0, template: "@if (auth.authenticated && trainingGuideURLs()?.length === 1) {\n <button\n class=\"training-guide-button\"\n matButton=\"elevated\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"loading\"\n [matTooltip]=\"'igo.integration.aboutTool.trainingGuideTooltip' | translate\"\n (click)=\"openGuide()\"\n >\n {{ 'igo.integration.aboutTool.trainingGuide' | translate }}\n <mat-icon>description</mat-icon>\n </button>\n}\n\n@if (auth.authenticated && (trainingGuideURLs()?.length ?? 0) > 1) {\n <button\n class=\"training-guide-button\"\n matButton=\"elevated\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"loading\"\n [matTooltip]=\"'igo.integration.aboutTool.trainingGuideTooltip' | translate\"\n [matMenuTriggerFor]=\"menu\"\n >\n {{ 'igo.integration.aboutTool.trainingGuide' | translate }}\n <mat-icon>description</mat-icon>\n </button>\n}\n\n<mat-menu #menu=\"matMenu\">\n @for (guide of trainingGuideURLs(); track guide) {\n <button mat-menu-item (click)=\"openGuide(guide)\">\n {{ formatFileName(guide) }}\n </button>\n }\n</mat-menu>\n\n@if (headerHtml !== '') {\n <igo-custom-html [html]=\"headerHtml | translate\" />\n}\n\n<igo-custom-html [html]=\"html | translate: { version: effectiveVersion }\" />\n", styles: [".training-guide-button{margin:16px 0 0 16px;background-color:#1976d2;color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.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: MatTooltipModule }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4.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: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: CustomHtmlComponent, selector: "igo-custom-html", inputs: ["html"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }] });
|
|
160
166
|
};
|
|
161
167
|
AboutToolComponent = __decorate([
|
|
162
168
|
ToolComponent({
|
|
@@ -175,7 +181,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
175
181
|
MatMenuModule,
|
|
176
182
|
CustomHtmlComponent,
|
|
177
183
|
IgoLanguageModule
|
|
178
|
-
], template: "@if (
|
|
184
|
+
], template: "@if (auth.authenticated && trainingGuideURLs()?.length === 1) {\n <button\n class=\"training-guide-button\"\n matButton=\"elevated\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"loading\"\n [matTooltip]=\"'igo.integration.aboutTool.trainingGuideTooltip' | translate\"\n (click)=\"openGuide()\"\n >\n {{ 'igo.integration.aboutTool.trainingGuide' | translate }}\n <mat-icon>description</mat-icon>\n </button>\n}\n\n@if (auth.authenticated && (trainingGuideURLs()?.length ?? 0) > 1) {\n <button\n class=\"training-guide-button\"\n matButton=\"elevated\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"loading\"\n [matTooltip]=\"'igo.integration.aboutTool.trainingGuideTooltip' | translate\"\n [matMenuTriggerFor]=\"menu\"\n >\n {{ 'igo.integration.aboutTool.trainingGuide' | translate }}\n <mat-icon>description</mat-icon>\n </button>\n}\n\n<mat-menu #menu=\"matMenu\">\n @for (guide of trainingGuideURLs(); track guide) {\n <button mat-menu-item (click)=\"openGuide(guide)\">\n {{ formatFileName(guide) }}\n </button>\n }\n</mat-menu>\n\n@if (headerHtml !== '') {\n <igo-custom-html [html]=\"headerHtml | translate\" />\n}\n\n<igo-custom-html [html]=\"html | translate: { version: effectiveVersion }\" />\n", styles: [".training-guide-button{margin:16px 0 0 16px;background-color:#1976d2;color:#fff}\n"] }]
|
|
179
185
|
}], ctorParameters: () => [], propDecorators: { headerHtml: [{
|
|
180
186
|
type: Input
|
|
181
187
|
}], html: [{
|
|
@@ -4838,8 +4844,8 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
|
|
|
4838
4844
|
isSelectedResultOutOfView$$;
|
|
4839
4845
|
abstractFocusedResult;
|
|
4840
4846
|
abstractSelectedResult;
|
|
4841
|
-
|
|
4842
|
-
debouncedEmpty
|
|
4847
|
+
destroyRef = inject(DestroyRef);
|
|
4848
|
+
debouncedEmpty = signal(true, ...(ngDevMode ? [{ debugName: "debouncedEmpty" }] : []));
|
|
4843
4849
|
/**
|
|
4844
4850
|
* Store holding the search results
|
|
4845
4851
|
* @internal
|
|
@@ -4855,16 +4861,9 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
|
|
|
4855
4861
|
return this.mapState.map;
|
|
4856
4862
|
}
|
|
4857
4863
|
get featureTitle() {
|
|
4858
|
-
return this.feature ? getEntityTitle(this.feature) : undefined;
|
|
4864
|
+
return this.feature() ? getEntityTitle(this.feature()) : undefined;
|
|
4859
4865
|
}
|
|
4860
|
-
|
|
4861
|
-
return this.store.stateView
|
|
4862
|
-
.firstBy$((e) => e.state.focused)
|
|
4863
|
-
.pipe(map((element) => (this.feature = element
|
|
4864
|
-
? element.entity.data
|
|
4865
|
-
: undefined)));
|
|
4866
|
-
}
|
|
4867
|
-
feature;
|
|
4866
|
+
feature = signal(undefined, ...(ngDevMode ? [{ debugName: "feature" }] : []));
|
|
4868
4867
|
term = '';
|
|
4869
4868
|
searchTerm$$;
|
|
4870
4869
|
settingsChange$ = new BehaviorSubject(undefined);
|
|
@@ -4894,10 +4893,10 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
|
|
|
4894
4893
|
searchTerm !== null &&
|
|
4895
4894
|
searchTerm !== '') {
|
|
4896
4895
|
this.term = searchTerm;
|
|
4897
|
-
this.debouncedEmpty
|
|
4896
|
+
this.debouncedEmpty.set(false);
|
|
4898
4897
|
}
|
|
4899
4898
|
else if (searchTerm === '') {
|
|
4900
|
-
this.debouncedEmpty
|
|
4899
|
+
this.debouncedEmpty.set(true);
|
|
4901
4900
|
}
|
|
4902
4901
|
});
|
|
4903
4902
|
for (const res of this.store.stateView.all$().value) {
|
|
@@ -4966,16 +4965,23 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
|
|
|
4966
4965
|
}
|
|
4967
4966
|
});
|
|
4968
4967
|
});
|
|
4969
|
-
this.
|
|
4970
|
-
.pipe(debounceTime(1500))
|
|
4971
|
-
.subscribe((empty) => this.debouncedEmpty
|
|
4968
|
+
this.store.stateView.empty$
|
|
4969
|
+
.pipe(debounceTime(1500), takeUntilDestroyed(this.destroyRef))
|
|
4970
|
+
.subscribe((empty) => this.debouncedEmpty.set(empty));
|
|
4971
|
+
this.store.stateView
|
|
4972
|
+
.firstBy$((e) => e.state.focused)
|
|
4973
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
4974
|
+
.subscribe((element) => {
|
|
4975
|
+
const feature = element ? element.entity.data : undefined;
|
|
4976
|
+
this.feature.set(feature);
|
|
4977
|
+
});
|
|
4972
4978
|
}
|
|
4973
4979
|
monitorResultOutOfView() {
|
|
4974
4980
|
this.isSelectedResultOutOfView$$ = combineLatest([
|
|
4975
4981
|
this.map.viewController.state$,
|
|
4976
4982
|
this.searchState.selectedResult$
|
|
4977
4983
|
])
|
|
4978
|
-
.pipe(debounceTime(100))
|
|
4984
|
+
.pipe(debounceTime(100), takeUntilDestroyed(this.destroyRef))
|
|
4979
4985
|
.subscribe((bunch) => {
|
|
4980
4986
|
const selectedResult = bunch[1];
|
|
4981
4987
|
if (!selectedResult) {
|
|
@@ -5065,9 +5071,6 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
|
|
|
5065
5071
|
if (this.getRoute$$) {
|
|
5066
5072
|
this.getRoute$$.unsubscribe();
|
|
5067
5073
|
}
|
|
5068
|
-
if (this.debouncedEmpty$$) {
|
|
5069
|
-
this.debouncedEmpty$$.unsubscribe();
|
|
5070
|
-
}
|
|
5071
5074
|
}
|
|
5072
5075
|
/**
|
|
5073
5076
|
* Try to add a feature to the map when it's being focused
|
|
@@ -5200,9 +5203,10 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
|
|
|
5200
5203
|
}
|
|
5201
5204
|
}
|
|
5202
5205
|
zoomToFeatureExtent() {
|
|
5203
|
-
|
|
5204
|
-
|
|
5205
|
-
|
|
5206
|
+
const feature = this.feature();
|
|
5207
|
+
if (feature?.geometry) {
|
|
5208
|
+
const localOlFeature = this.format.readFeature(feature, {
|
|
5209
|
+
dataProjection: feature.projection,
|
|
5206
5210
|
featureProjection: this.map.projectionCode
|
|
5207
5211
|
});
|
|
5208
5212
|
moveToOlFeatures(this.map.viewController, localOlFeature, FeatureMotion.Zoom);
|
|
@@ -5250,15 +5254,16 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
|
|
|
5250
5254
|
.all()
|
|
5251
5255
|
.find((e) => e.position === 1);
|
|
5252
5256
|
let coord;
|
|
5253
|
-
|
|
5254
|
-
|
|
5257
|
+
const feature = this.feature();
|
|
5258
|
+
if (feature?.geometry) {
|
|
5259
|
+
if (feature.geometry.type === 'Point') {
|
|
5255
5260
|
coord = [
|
|
5256
|
-
|
|
5257
|
-
|
|
5261
|
+
feature.geometry.coordinates[0],
|
|
5262
|
+
feature.geometry.coordinates[1]
|
|
5258
5263
|
];
|
|
5259
5264
|
}
|
|
5260
5265
|
else {
|
|
5261
|
-
const point = pointOnFeature(
|
|
5266
|
+
const point = pointOnFeature(feature.geometry);
|
|
5262
5267
|
coord = [
|
|
5263
5268
|
point.geometry.coordinates[0],
|
|
5264
5269
|
point.geometry.coordinates[1]
|
|
@@ -5284,7 +5289,7 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
|
|
|
5284
5289
|
}, 250);
|
|
5285
5290
|
}
|
|
5286
5291
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: SearchResultsToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5287
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: SearchResultsToolComponent, isStandalone: true, selector: "igo-search-results-tool", inputs: { showIcons: { classPropertyName: "showIcons", publicName: "showIcons", isSignal: true, isRequired: false, transformFunction: null }, topPanelStateDefault: { classPropertyName: "topPanelStateDefault", publicName: "topPanelStateDefault", isSignal: true, isRequired: false, transformFunction: null }, topPanelState: { classPropertyName: "topPanelState", publicName: "topPanelState", isSignal: false, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if ((!store || store.stateView.empty)
|
|
5292
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: SearchResultsToolComponent, isStandalone: true, selector: "igo-search-results-tool", inputs: { showIcons: { classPropertyName: "showIcons", publicName: "showIcons", isSignal: true, isRequired: false, transformFunction: null }, topPanelStateDefault: { classPropertyName: "topPanelStateDefault", publicName: "topPanelStateDefault", isSignal: true, isRequired: false, transformFunction: null }, topPanelState: { classPropertyName: "topPanelState", publicName: "topPanelState", isSignal: false, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (debouncedEmpty()) {\n @if (!store || store.stateView.empty) {\n <section class=\"search-results-tool-empty\">\n <h4>\n <strong>{{\n 'igo.integration.searchResultsTool.noResults' | translate\n }}</strong>\n </h4>\n <p>\n <strong>{{\n 'igo.integration.searchResultsTool.doSearch' | translate\n }}</strong>\n </p>\n <div\n [innerHTML]=\"\n 'igo.integration.searchResultsTool.examples'\n | translate\n | sanitizeHtml\n \"\n ></div>\n </section>\n }\n} @else {\n @let feature = this.feature();\n <igo-flexible\n #topPanel\n initial=\"100%\"\n initialMobile=\"100%\"\n collapsed=\"calc(100% - 48px)\"\n collapsedMobile=\"calc(100% - 48px)\"\n expanded=\"60%\"\n expandedMobile=\"60%\"\n [state]=\"feature ? topPanelState : 'initial'\"\n >\n <div class=\"igo-content\">\n <igo-search-results\n [store]=\"store\"\n [showIcons]=\"showIcons()\"\n [term]=\"term\"\n [termSplitter]=\"termSplitter\"\n [settingsChange$]=\"settingsChange$\"\n placeholder=\"false\"\n (resultFocus)=\"onResultFocus($event)\"\n (resultSelect)=\"onResultSelect($event)\"\n (resultUnfocus)=\"onResultUnfocus($event)\"\n (resultMouseenter)=\"onResultFocus($event)\"\n (resultMouseleave)=\"onResultUnfocus($event)\"\n (moreResults)=\"onSearch($event)\"\n [map]=\"map\"\n >\n <ng-template #igoSearchItemToolbar let-result=\"result\">\n <igo-search-add-button\n [map]=\"map\"\n [store]=\"store\"\n [stores]=\"stores\"\n [layer]=\"result\"\n [saveSearchResultInLayer]=\"saveSearchResultInLayer\"\n />\n </ng-template>\n </igo-search-results>\n </div>\n <div igoFlexibleFill class=\"igo-content\">\n @if (feature) {\n <igo-panel\n [title]=\"featureTitle\"\n (click)=\"toggleTopPanel($event)\"\n [cursorPointer]=\"true\"\n >\n <button\n mat-icon-button\n panelLeftButton\n class=\"igo-icon-button\"\n (click)=\"toggleTopPanel()\"\n >\n <mat-icon>{{\n (topPanelState$ | async) === 'collapsed'\n ? 'arrow_upward'\n : 'arrow_downward'\n }}</mat-icon>\n </button>\n @if (feature.geometry) {\n <button\n mat-icon-button\n panelRightButton\n class=\"igo-icon-button\"\n [matTooltip]=\"\n ((isSelectedResultOutOfView$ | async)\n ? 'igo.integration.searchResultsTool.zoomOnFeatureTooltipOutOfView'\n : 'igo.integration.searchResultsTool.zoomOnFeatureTooltip'\n ) | translate\n \"\n matTooltipShowDelay=\"500\"\n (click)=\"zoomToFeatureExtent()\"\n >\n <mat-icon\n aria-hidden=\"false\"\n [matBadge]=\"(isSelectedResultOutOfView$ | async) ? '!' : ''\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n [matBadgeHidden]=\"\n (isSelectedResultOutOfView$ | async) === false\n \"\n >zoom_in</mat-icon\n >\n </button>\n }\n <igo-feature-details\n igoFeatureDetailsDirective\n [feature]=\"feature\"\n [map]=\"map\"\n [toolbox]=\"toolState.toolbox\"\n (routingEvent)=\"getRoute()\"\n />\n </igo-panel>\n }\n </div>\n </igo-flexible>\n}\n", styles: [":host{display:flex;flex-direction:column;flex:1;height:100%}.search-results-tool-empty{padding:0 16px}\n"], dependencies: [{ kind: "component", type: FlexibleComponent, selector: "igo-flexible", inputs: ["initial", "collapsed", "expanded", "initialMobile", "collapsedMobile", "expandedMobile", "direction", "state"] }, { kind: "component", type: SearchResultsComponent, selector: "igo-search-results", inputs: ["map", "store", "showIcons", "mode", "withZoomButton", "tabsMode", "term", "settingsChange$", "termSplitter"], outputs: ["resultFocus", "resultUnfocus", "resultSelect", "moreResults", "resultMouseenter", "resultMouseleave"] }, { kind: "component", type: SearchResultAddButtonComponent, selector: "igo-search-add-button", inputs: ["layer", "store", "added", "map", "saveSearchResultInLayer", "stores"], outputs: ["addedChange"] }, { kind: "component", type: PanelComponent, selector: "igo-panel", inputs: ["title", "withHeader", "cursorPointer"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.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.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i4$2.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: FeatureDetailsComponent, selector: "igo-feature-details", inputs: ["source", "map", "toolbox", "feature"], outputs: ["routeEvent", "selectFeature", "htmlDisplayEvent"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }, { kind: "pipe", type: SanitizeHtmlPipe, name: "sanitizeHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
5288
5293
|
};
|
|
5289
5294
|
SearchResultsToolComponent = __decorate([
|
|
5290
5295
|
ToolComponent({
|
|
@@ -5309,7 +5314,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
5309
5314
|
AsyncPipe,
|
|
5310
5315
|
IgoLanguageModule,
|
|
5311
5316
|
SanitizeHtmlPipe
|
|
5312
|
-
], template: "@if ((!store || store.stateView.empty)
|
|
5317
|
+
], template: "@if (debouncedEmpty()) {\n @if (!store || store.stateView.empty) {\n <section class=\"search-results-tool-empty\">\n <h4>\n <strong>{{\n 'igo.integration.searchResultsTool.noResults' | translate\n }}</strong>\n </h4>\n <p>\n <strong>{{\n 'igo.integration.searchResultsTool.doSearch' | translate\n }}</strong>\n </p>\n <div\n [innerHTML]=\"\n 'igo.integration.searchResultsTool.examples'\n | translate\n | sanitizeHtml\n \"\n ></div>\n </section>\n }\n} @else {\n @let feature = this.feature();\n <igo-flexible\n #topPanel\n initial=\"100%\"\n initialMobile=\"100%\"\n collapsed=\"calc(100% - 48px)\"\n collapsedMobile=\"calc(100% - 48px)\"\n expanded=\"60%\"\n expandedMobile=\"60%\"\n [state]=\"feature ? topPanelState : 'initial'\"\n >\n <div class=\"igo-content\">\n <igo-search-results\n [store]=\"store\"\n [showIcons]=\"showIcons()\"\n [term]=\"term\"\n [termSplitter]=\"termSplitter\"\n [settingsChange$]=\"settingsChange$\"\n placeholder=\"false\"\n (resultFocus)=\"onResultFocus($event)\"\n (resultSelect)=\"onResultSelect($event)\"\n (resultUnfocus)=\"onResultUnfocus($event)\"\n (resultMouseenter)=\"onResultFocus($event)\"\n (resultMouseleave)=\"onResultUnfocus($event)\"\n (moreResults)=\"onSearch($event)\"\n [map]=\"map\"\n >\n <ng-template #igoSearchItemToolbar let-result=\"result\">\n <igo-search-add-button\n [map]=\"map\"\n [store]=\"store\"\n [stores]=\"stores\"\n [layer]=\"result\"\n [saveSearchResultInLayer]=\"saveSearchResultInLayer\"\n />\n </ng-template>\n </igo-search-results>\n </div>\n <div igoFlexibleFill class=\"igo-content\">\n @if (feature) {\n <igo-panel\n [title]=\"featureTitle\"\n (click)=\"toggleTopPanel($event)\"\n [cursorPointer]=\"true\"\n >\n <button\n mat-icon-button\n panelLeftButton\n class=\"igo-icon-button\"\n (click)=\"toggleTopPanel()\"\n >\n <mat-icon>{{\n (topPanelState$ | async) === 'collapsed'\n ? 'arrow_upward'\n : 'arrow_downward'\n }}</mat-icon>\n </button>\n @if (feature.geometry) {\n <button\n mat-icon-button\n panelRightButton\n class=\"igo-icon-button\"\n [matTooltip]=\"\n ((isSelectedResultOutOfView$ | async)\n ? 'igo.integration.searchResultsTool.zoomOnFeatureTooltipOutOfView'\n : 'igo.integration.searchResultsTool.zoomOnFeatureTooltip'\n ) | translate\n \"\n matTooltipShowDelay=\"500\"\n (click)=\"zoomToFeatureExtent()\"\n >\n <mat-icon\n aria-hidden=\"false\"\n [matBadge]=\"(isSelectedResultOutOfView$ | async) ? '!' : ''\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n [matBadgeHidden]=\"\n (isSelectedResultOutOfView$ | async) === false\n \"\n >zoom_in</mat-icon\n >\n </button>\n }\n <igo-feature-details\n igoFeatureDetailsDirective\n [feature]=\"feature\"\n [map]=\"map\"\n [toolbox]=\"toolState.toolbox\"\n (routingEvent)=\"getRoute()\"\n />\n </igo-panel>\n }\n </div>\n </igo-flexible>\n}\n", styles: [":host{display:flex;flex-direction:column;flex:1;height:100%}.search-results-tool-empty{padding:0 16px}\n"] }]
|
|
5313
5318
|
}], ctorParameters: () => [], propDecorators: { showIcons: [{ type: i0.Input, args: [{ isSignal: true, alias: "showIcons", required: false }] }], topPanelStateDefault: [{ type: i0.Input, args: [{ isSignal: true, alias: "topPanelStateDefault", required: false }] }], topPanelState: [{
|
|
5314
5319
|
type: Input
|
|
5315
5320
|
}] } });
|