@progress/kendo-angular-map 0.1.1 → 0.2.0-dev.202206021322

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.
Files changed (34) hide show
  1. package/bundles/kendo-angular-map.umd.js +1 -1
  2. package/common/has-parent.d.ts +8 -0
  3. package/esm2015/common/has-parent.js +14 -0
  4. package/esm2015/main.js +2 -0
  5. package/esm2015/map.component.js +74 -4
  6. package/esm2015/map.directives.js +14 -4
  7. package/esm2015/map.module.js +16 -10
  8. package/esm2015/package-metadata.js +1 -1
  9. package/esm2015/tooltip/base-tooltip.js +92 -0
  10. package/esm2015/tooltip/body-factory.js +14 -0
  11. package/esm2015/tooltip/bubble-tooltip-template.directive.js +31 -0
  12. package/esm2015/tooltip/marker-tooltip-template.directive.js +30 -0
  13. package/esm2015/tooltip/popup-settings.interface.js +5 -0
  14. package/esm2015/tooltip/shape-tooltip-template.directive.js +30 -0
  15. package/esm2015/tooltip/tooltip-popup.component.js +114 -0
  16. package/esm2015/tooltip/tooltip-template.service.js +16 -0
  17. package/esm2015/tooltip/tooltip.component.js +49 -0
  18. package/esm2015/tooltip.js +9 -0
  19. package/fesm2015/kendo-angular-map.js +419 -13
  20. package/main.d.ts +2 -0
  21. package/map.component.d.ts +22 -3
  22. package/map.directives.d.ts +6 -1
  23. package/map.module.d.ts +16 -10
  24. package/package.json +2 -2
  25. package/tooltip/base-tooltip.d.ts +31 -0
  26. package/tooltip/body-factory.d.ts +9 -0
  27. package/tooltip/bubble-tooltip-template.directive.d.ts +22 -0
  28. package/tooltip/marker-tooltip-template.directive.d.ts +21 -0
  29. package/tooltip/popup-settings.interface.d.ts +18 -0
  30. package/tooltip/shape-tooltip-template.directive.d.ts +21 -0
  31. package/tooltip/tooltip-popup.component.d.ts +37 -0
  32. package/tooltip/tooltip-template.service.d.ts +16 -0
  33. package/tooltip/tooltip.component.d.ts +31 -0
  34. package/tooltip.d.ts +9 -0
@@ -3,10 +3,10 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import * as i0 from '@angular/core';
6
- import { Injectable, SimpleChange, Directive, TemplateRef, Component, ChangeDetectionStrategy, ContentChild, SecurityContext, Input, forwardRef, EventEmitter, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';
6
+ import { Injectable, SimpleChange, Directive, TemplateRef, Component, ChangeDetectionStrategy, ContentChild, SecurityContext, Input, forwardRef, ElementRef, EventEmitter, ViewChild, Output, ContentChildren, Optional, NgModule } from '@angular/core';
7
7
  import { BehaviorSubject, Subject } from 'rxjs';
8
8
  import * as i3 from '@angular/platform-browser';
9
- import * as i4 from '@progress/kendo-angular-common';
9
+ import * as i5 from '@progress/kendo-angular-common';
10
10
  import { isDocumentAvailable, hasObservers, ResizeSensorModule } from '@progress/kendo-angular-common';
11
11
  import * as i3$1 from '@progress/kendo-angular-l10n';
12
12
  import { LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';
@@ -14,7 +14,11 @@ import { InstanceObserver, Map } from '@progress/kendo-charts';
14
14
  export { Extent, Location } from '@progress/kendo-charts';
15
15
  import { validatePackage } from '@progress/kendo-licensing';
16
16
  import { tap } from 'rxjs/operators';
17
+ import * as i1 from '@progress/kendo-angular-popup';
18
+ import { PopupService, POPUP_CONTAINER } from '@progress/kendo-angular-popup';
19
+ import * as i4 from '@angular/common';
17
20
  import { CommonModule } from '@angular/common';
21
+ import { TooltipsModule } from '@progress/kendo-angular-tooltip';
18
22
 
19
23
  /**
20
24
  * @hidden
@@ -349,6 +353,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
349
353
  type: Input
350
354
  }] } });
351
355
 
356
+ /**
357
+ * @hidden
358
+ */
359
+ function hasParent(element, parent) {
360
+ let current = element;
361
+ while (current && current !== parent) {
362
+ current = current.parentNode;
363
+ }
364
+ return current ? true : false;
365
+ }
366
+
352
367
  /**
353
368
  * @hidden
354
369
  */
@@ -674,11 +689,217 @@ const packageMetadata = {
674
689
  name: '@progress/kendo-angular-map',
675
690
  productName: 'Kendo UI for Angular',
676
691
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
677
- publishDate: 1651750442,
692
+ publishDate: 1654176122,
678
693
  version: '',
679
694
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'
680
695
  };
681
696
 
697
+ const CALLOUT_SIZE = 5;
698
+ const POSITION_MODE = 'absolute';
699
+ const COLLISION = { horizontal: "fit", vertical: "fit" };
700
+ /**
701
+ * @hidden
702
+ */
703
+ class BaseTooltip {
704
+ constructor(popupService, localizationService) {
705
+ this.popupService = popupService;
706
+ this.localizationService = localizationService;
707
+ this.animate = true;
708
+ this.style = {
709
+ position: 'relative'
710
+ };
711
+ this.popupRef = null;
712
+ }
713
+ get active() {
714
+ return this.popupRef !== null;
715
+ }
716
+ show(e) {
717
+ const offset = this.position(e.anchor);
718
+ offset.top -= CALLOUT_SIZE;
719
+ if (!this.popupRef) {
720
+ this.popupRef = this.popupService.open(Object.assign({
721
+ offset: offset,
722
+ popupAlign: { vertical: 'bottom', horizontal: 'center' },
723
+ animate: this.animate,
724
+ content: this.templateRef,
725
+ collision: COLLISION,
726
+ positionMode: POSITION_MODE
727
+ }, this.popupSettings));
728
+ if (this.localizationService.rtl) {
729
+ this.popupRef.popupElement.setAttribute('dir', 'rtl');
730
+ }
731
+ this.onInit();
732
+ }
733
+ else {
734
+ const popup = this.popupRef.popup.instance;
735
+ popup.offset = offset;
736
+ }
737
+ }
738
+ hide() {
739
+ if (this.popupRef) {
740
+ this.popupRef.close();
741
+ this.popupRef = null;
742
+ }
743
+ }
744
+ onInit() {
745
+ }
746
+ ngOnDestroy() {
747
+ this.hide();
748
+ }
749
+ position(offset) {
750
+ if (!this.popupSettings || !this.popupSettings.appendTo) {
751
+ return offset;
752
+ }
753
+ const appendTo = this.popupSettings.appendTo.element.nativeElement;
754
+ const bbox = appendTo.getBoundingClientRect();
755
+ const { scrollLeft, scrollTop } = this.scrollOffset(appendTo);
756
+ return {
757
+ left: offset.left - bbox.left - scrollLeft,
758
+ top: offset.top - bbox.top - scrollTop
759
+ };
760
+ }
761
+ scrollOffset(element) {
762
+ if (!element) {
763
+ return null;
764
+ }
765
+ let scrollLeft = element.scrollLeft;
766
+ let scrollTop = element.scrollTop;
767
+ let parent = element.parentElement;
768
+ while (parent) {
769
+ scrollLeft += parent.scrollLeft;
770
+ scrollTop += parent.scrollTop;
771
+ parent = parent.parentElement;
772
+ }
773
+ return { scrollLeft, scrollTop };
774
+ }
775
+ }
776
+ BaseTooltip.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BaseTooltip, deps: [{ token: i1.PopupService }, { token: i3$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });
777
+ BaseTooltip.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: BaseTooltip, ngImport: i0 });
778
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BaseTooltip, decorators: [{
779
+ type: Directive
780
+ }], ctorParameters: function () { return [{ type: i1.PopupService }, { type: i3$1.LocalizationService }]; } });
781
+
782
+ /**
783
+ * @hidden
784
+ */
785
+ function bodyFactory() {
786
+ if (isDocumentAvailable()) {
787
+ return new ElementRef(document.body);
788
+ }
789
+ }
790
+
791
+ /**
792
+ * @hidden
793
+ */
794
+ class TooltipTemplateService {
795
+ }
796
+ TooltipTemplateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TooltipTemplateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
797
+ TooltipTemplateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TooltipTemplateService });
798
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TooltipTemplateService, decorators: [{
799
+ type: Injectable
800
+ }] });
801
+
802
+ /**
803
+ * @hidden
804
+ */
805
+ class TooltipPopupComponent extends BaseTooltip {
806
+ constructor(popupService, templateService, localizationService, ngZone) {
807
+ super(popupService, localizationService);
808
+ this.popupService = popupService;
809
+ this.templateService = templateService;
810
+ this.localizationService = localizationService;
811
+ this.ngZone = ngZone;
812
+ this.tooltipContext = {};
813
+ this.animate = true;
814
+ this.wrapperClass = 'k-tooltip-wrapper';
815
+ this.leave = new EventEmitter();
816
+ this.popupClasses = {};
817
+ }
818
+ show(e) {
819
+ this.tooltipTemplateRef = this.templateService[e.type + 'Template'];
820
+ if (!this.tooltipTemplateRef) {
821
+ return;
822
+ }
823
+ this.popupClasses = Object.assign({
824
+ 'k-tooltip': true,
825
+ 'k-map-tooltip': true,
826
+ [e.className]: Boolean(e.className)
827
+ }, this.classNames);
828
+ this.tooltipContext = e;
829
+ super.show(e);
830
+ }
831
+ containsElement(element) {
832
+ if (this.popupRef) {
833
+ return hasParent(element, this.popupRef.popupElement);
834
+ }
835
+ }
836
+ onInit() {
837
+ this.ngZone.runOutsideAngular(() => {
838
+ this.mouseleaveSubscription = this.popupRef.popupElement.addEventListener('mouseleave', (args) => {
839
+ this.leave.emit(args);
840
+ });
841
+ });
842
+ this.popupRef.popupElement.classList.add(this.wrapperClass);
843
+ }
844
+ hide() {
845
+ if (this.mouseleaveSubscription) {
846
+ this.mouseleaveSubscription();
847
+ this.mouseleaveSubscription = null;
848
+ }
849
+ this.tooltipTemplateRef = null;
850
+ super.hide();
851
+ }
852
+ }
853
+ TooltipPopupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TooltipPopupComponent, deps: [{ token: i1.PopupService }, { token: TooltipTemplateService }, { token: i3$1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
854
+ TooltipPopupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: TooltipPopupComponent, selector: "kendo-map-tooltip-popup", inputs: { animate: "animate", classNames: "classNames", popupSettings: "popupSettings", wrapperClass: "wrapperClass" }, outputs: { leave: "leave" }, providers: [PopupService, {
855
+ provide: POPUP_CONTAINER,
856
+ useFactory: bodyFactory
857
+ }], viewQueries: [{ propertyName: "templateRef", first: true, predicate: ["content"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
858
+ <ng-template #content>
859
+ <div [ngClass]="popupClasses" [ngStyle]="style">
860
+ <div class="k-tooltip-content">
861
+ <ng-template [ngTemplateOutlet]="tooltipTemplateRef"
862
+ [ngTemplateOutletContext]="tooltipContext">
863
+ </ng-template>
864
+ </div>
865
+ </div>
866
+ </ng-template>
867
+ `, isInline: true, directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
868
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TooltipPopupComponent, decorators: [{
869
+ type: Component,
870
+ args: [{
871
+ providers: [PopupService, {
872
+ provide: POPUP_CONTAINER,
873
+ useFactory: bodyFactory
874
+ }],
875
+ selector: 'kendo-map-tooltip-popup',
876
+ template: `
877
+ <ng-template #content>
878
+ <div [ngClass]="popupClasses" [ngStyle]="style">
879
+ <div class="k-tooltip-content">
880
+ <ng-template [ngTemplateOutlet]="tooltipTemplateRef"
881
+ [ngTemplateOutletContext]="tooltipContext">
882
+ </ng-template>
883
+ </div>
884
+ </div>
885
+ </ng-template>
886
+ `
887
+ }]
888
+ }], ctorParameters: function () { return [{ type: i1.PopupService }, { type: TooltipTemplateService }, { type: i3$1.LocalizationService }, { type: i0.NgZone }]; }, propDecorators: { templateRef: [{
889
+ type: ViewChild,
890
+ args: ['content', { static: true }]
891
+ }], animate: [{
892
+ type: Input
893
+ }], classNames: [{
894
+ type: Input
895
+ }], popupSettings: [{
896
+ type: Input
897
+ }], wrapperClass: [{
898
+ type: Input
899
+ }], leave: [{
900
+ type: Output
901
+ }] } });
902
+
682
903
  /**
683
904
  * A sample component
684
905
  */
@@ -803,6 +1024,14 @@ class MapComponent {
803
1024
  validatePackage(packageMetadata);
804
1025
  }
805
1026
  ngAfterViewInit() {
1027
+ if (this.canRender) {
1028
+ this.ngZone.runOutsideAngular(() => {
1029
+ const mapMouseleave = this.renderer.listen(this.surfaceElement.nativeElement, 'mouseleave', this.mapMouseleave.bind(this));
1030
+ this.domSubscriptions = () => {
1031
+ mapMouseleave();
1032
+ };
1033
+ });
1034
+ }
806
1035
  this.setDirection();
807
1036
  this.initConfig();
808
1037
  this.subscriptions = this.localizationService.changes.subscribe(() => this.setDirection());
@@ -823,6 +1052,23 @@ class MapComponent {
823
1052
  store.popupSettings = null;
824
1053
  this.configurationService.push(store);
825
1054
  }
1055
+ ngOnDestroy() {
1056
+ this.destroyed = true;
1057
+ if (this.optionsChange) {
1058
+ this.optionsChange.unsubscribe();
1059
+ }
1060
+ if (this.domSubscriptions) {
1061
+ this.domSubscriptions();
1062
+ this.domSubscriptions = null;
1063
+ }
1064
+ if (this.instance) {
1065
+ this.instance.destroy();
1066
+ this.instance = null;
1067
+ }
1068
+ if (this.subscriptions) {
1069
+ this.subscriptions.unsubscribe();
1070
+ }
1071
+ }
826
1072
  /**
827
1073
  * Detects the size of the container and redraws the Map.
828
1074
  * Resizing is automatic unless you set the `resizeRateLimit` option to `0`.
@@ -924,20 +1170,53 @@ class MapComponent {
924
1170
  get isRTL() {
925
1171
  return Boolean(this.localizationService.rtl);
926
1172
  }
1173
+ onShowTooltip(e) {
1174
+ this.run(() => {
1175
+ this.tooltipInstance.show(e);
1176
+ }, true, true);
1177
+ }
1178
+ onHideTooltip() {
1179
+ this.run(() => {
1180
+ this.tooltipInstance.hide();
1181
+ }, true, true);
1182
+ }
1183
+ /**
1184
+ * @hidden
1185
+ */
1186
+ tooltipMouseleave(e) {
1187
+ const relatedTarget = e.relatedTarget;
1188
+ const chartElement = this.element.nativeElement;
1189
+ if (this.instance && (!relatedTarget || !hasParent(relatedTarget, chartElement))) {
1190
+ this.tooltipInstance.hide();
1191
+ }
1192
+ }
1193
+ /**
1194
+ * @hidden
1195
+ */
1196
+ mapMouseleave(e) {
1197
+ const relatedTarget = e.relatedTarget;
1198
+ const chartElement = this.element.nativeElement;
1199
+ if (this.instance && (!relatedTarget || !(this.tooltipInstance.containsElement(relatedTarget) || hasParent(relatedTarget, chartElement)))) {
1200
+ this.tooltipInstance.hide();
1201
+ }
1202
+ }
927
1203
  }
928
1204
  MapComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MapComponent, deps: [{ token: ConfigurationService }, { token: InstanceEventService }, { token: i0.ElementRef }, { token: i3$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
929
- MapComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: MapComponent, selector: "kendo-map", inputs: { resizeRateLimit: "resizeRateLimit", center: "center", controls: "controls", minZoom: "minZoom", maxZoom: "maxZoom", minSize: "minSize", pannable: "pannable", wraparound: "wraparound", zoom: "zoom", zoomable: "zoomable" }, outputs: { beforeReset: "beforeReset", mapClick: "mapClick", markerActivate: "markerActivate", markerClick: "markerClick", markerCreated: "markerCreated", panEnd: "panEnd", pan: "pan", reset: "reset", shapeClick: "shapeClick", shapeCreated: "shapeCreated", shapeFeatureCreated: "shapeFeatureCreated", shapeMouseEnter: "shapeMouseEnter", shapeMouseLeave: "shapeMouseLeave", zoomStart: "zoomStart", zoomEnd: "zoomEnd" }, providers: [
1205
+ MapComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: MapComponent, selector: "kendo-map", inputs: { resizeRateLimit: "resizeRateLimit", center: "center", controls: "controls", minZoom: "minZoom", maxZoom: "maxZoom", minSize: "minSize", pannable: "pannable", popupSettings: "popupSettings", wraparound: "wraparound", zoom: "zoom", zoomable: "zoomable" }, outputs: { beforeReset: "beforeReset", mapClick: "mapClick", markerActivate: "markerActivate", markerClick: "markerClick", markerCreated: "markerCreated", panEnd: "panEnd", pan: "pan", reset: "reset", shapeClick: "shapeClick", shapeCreated: "shapeCreated", shapeFeatureCreated: "shapeFeatureCreated", shapeMouseEnter: "shapeMouseEnter", shapeMouseLeave: "shapeMouseLeave", zoomStart: "zoomStart", zoomEnd: "zoomEnd" }, providers: [
930
1206
  ConfigurationService,
931
1207
  InstanceEventService,
932
1208
  LocalizationService,
1209
+ TooltipTemplateService,
933
1210
  {
934
1211
  provide: L10N_PREFIX,
935
1212
  useValue: 'kendo.map'
936
1213
  }
937
- ], viewQueries: [{ propertyName: "surfaceElement", first: true, predicate: ["surface"], descendants: true, static: true }], exportAs: ["kendoChart"], usesOnChanges: true, ngImport: i0, template: `
1214
+ ], viewQueries: [{ propertyName: "surfaceElement", first: true, predicate: ["surface"], descendants: true, static: true }, { propertyName: "tooltipInstance", first: true, predicate: TooltipPopupComponent, descendants: true, static: true }], exportAs: ["kendoChart"], usesOnChanges: true, ngImport: i0, template: `
938
1215
  <div #surface></div>
1216
+ <kendo-map-tooltip-popup (leave)="tooltipMouseleave($event)" [popupSettings]="popupSettings">
1217
+ </kendo-map-tooltip-popup>
939
1218
  <kendo-resize-sensor (resize)="onResize()" [rateLimit]="resizeRateLimit"></kendo-resize-sensor>
940
- `, isInline: true, components: [{ type: i4.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1219
+ `, isInline: true, components: [{ type: TooltipPopupComponent, selector: "kendo-map-tooltip-popup", inputs: ["animate", "classNames", "popupSettings", "wrapperClass"], outputs: ["leave"] }, { type: i5.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
941
1220
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MapComponent, decorators: [{
942
1221
  type: Component,
943
1222
  args: [{
@@ -948,6 +1227,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
948
1227
  ConfigurationService,
949
1228
  InstanceEventService,
950
1229
  LocalizationService,
1230
+ TooltipTemplateService,
951
1231
  {
952
1232
  provide: L10N_PREFIX,
953
1233
  useValue: 'kendo.map'
@@ -955,6 +1235,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
955
1235
  ],
956
1236
  template: `
957
1237
  <div #surface></div>
1238
+ <kendo-map-tooltip-popup (leave)="tooltipMouseleave($event)" [popupSettings]="popupSettings">
1239
+ </kendo-map-tooltip-popup>
958
1240
  <kendo-resize-sensor (resize)="onResize()" [rateLimit]="resizeRateLimit"></kendo-resize-sensor>
959
1241
  `
960
1242
  }]
@@ -972,6 +1254,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
972
1254
  type: Input
973
1255
  }], pannable: [{
974
1256
  type: Input
1257
+ }], popupSettings: [{
1258
+ type: Input
975
1259
  }], wraparound: [{
976
1260
  type: Input
977
1261
  }], zoom: [{
@@ -1011,6 +1295,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
1011
1295
  }], surfaceElement: [{
1012
1296
  type: ViewChild,
1013
1297
  args: ['surface', { static: true }]
1298
+ }], tooltipInstance: [{
1299
+ type: ViewChild,
1300
+ args: [TooltipPopupComponent, { static: true }]
1014
1301
  }] } });
1015
1302
 
1016
1303
  /**
@@ -1204,17 +1491,136 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
1204
1491
  type: Input
1205
1492
  }] } });
1206
1493
 
1494
+ /**
1495
+ * A directive that sets a [template]({{ site.data.urls.angular['templatesyntax'] }})
1496
+ * within the `<kendo-map-tooltip>` component for the Map
1497
+ * [Bubble layer tooltip]({% slug bubble_layers_map %}#toc-tooltip).
1498
+ *
1499
+ * The available inputs for the bubble tooltip template are:
1500
+ * * `dataItem: any`&mdash;The original data item used to create the bubble.
1501
+ * * `location: Location`&mdash;The location of the bubble.
1502
+ * * `value: number`&mdash;The value of the bubble.
1503
+ */
1504
+ class BubbleTooltipTemplateDirective {
1505
+ constructor(templateRef) {
1506
+ this.templateRef = templateRef;
1507
+ }
1508
+ }
1509
+ BubbleTooltipTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BubbleTooltipTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
1510
+ BubbleTooltipTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: BubbleTooltipTemplateDirective, selector: "[kendoMapBubbleTooltipTemplate]", ngImport: i0 });
1511
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: BubbleTooltipTemplateDirective, decorators: [{
1512
+ type: Directive,
1513
+ args: [{
1514
+ selector: '[kendoMapBubbleTooltipTemplate]'
1515
+ }]
1516
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{
1517
+ type: Optional
1518
+ }] }]; } });
1519
+
1520
+ /**
1521
+ * A directive that sets a [template]({{ site.data.urls.angular['templatesyntax'] }})
1522
+ * within the `<kendo-map-tooltip>` component for the Map
1523
+ * [Marker layer tooltip]({% slug marker_layers_map %}#toc-tooltip).
1524
+ *
1525
+ * The available inputs for the marker tooltip template are:
1526
+ * * `title: string`&mdash;The marker title.
1527
+ * * `location: Location`&mdash;The marker location.
1528
+ */
1529
+ class MarkerTooltipTemplateDirective {
1530
+ constructor(templateRef) {
1531
+ this.templateRef = templateRef;
1532
+ }
1533
+ }
1534
+ MarkerTooltipTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MarkerTooltipTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
1535
+ MarkerTooltipTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: MarkerTooltipTemplateDirective, selector: "[kendoMapMarkerTooltipTemplate]", ngImport: i0 });
1536
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MarkerTooltipTemplateDirective, decorators: [{
1537
+ type: Directive,
1538
+ args: [{
1539
+ selector: '[kendoMapMarkerTooltipTemplate]'
1540
+ }]
1541
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{
1542
+ type: Optional
1543
+ }] }]; } });
1544
+
1545
+ /**
1546
+ * A directive that sets a [template]({{ site.data.urls.angular['templatesyntax'] }})
1547
+ * within the `<kendo-map-tooltip>` component for the Map
1548
+ * [Shape layer tooltip]({% slug shape_layers_map %}#toc-tooltip).
1549
+ *
1550
+ * The available inputs for the shape tooltip template are:
1551
+ * * `dataItem: any`&mdash;The original data item used to create the shape.
1552
+ * * `location: Location`&mdash;The location of the center of the shape.
1553
+ */
1554
+ class ShapeTooltipTemplateDirective {
1555
+ constructor(templateRef) {
1556
+ this.templateRef = templateRef;
1557
+ }
1558
+ }
1559
+ ShapeTooltipTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ShapeTooltipTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
1560
+ ShapeTooltipTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: ShapeTooltipTemplateDirective, selector: "[kendoMapShapeTooltipTemplate]", ngImport: i0 });
1561
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ShapeTooltipTemplateDirective, decorators: [{
1562
+ type: Directive,
1563
+ args: [{
1564
+ selector: '[kendoMapShapeTooltipTemplate]'
1565
+ }]
1566
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{
1567
+ type: Optional
1568
+ }] }]; } });
1569
+
1570
+ /**
1571
+ * The configuration options of the Marker Layer tooltip.
1572
+ */
1573
+ class TooltipComponent extends SettingsComponent {
1574
+ constructor(configurationService, templateService) {
1575
+ super('tooltip', configurationService);
1576
+ this.configurationService = configurationService;
1577
+ this.templateService = templateService;
1578
+ this.markAsVisible();
1579
+ }
1580
+ ngAfterContentChecked() {
1581
+ var _a, _b, _c;
1582
+ this.templateService.markerTemplate = (_a = this.markerTooltipTemplate) === null || _a === void 0 ? void 0 : _a.templateRef;
1583
+ this.templateService.shapeTemplate = (_b = this.shapeTooltipTemplate) === null || _b === void 0 ? void 0 : _b.templateRef;
1584
+ this.templateService.bubbleTemplate = (_c = this.bubbleTooltipTemplate) === null || _c === void 0 ? void 0 : _c.templateRef;
1585
+ }
1586
+ }
1587
+ TooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TooltipComponent, deps: [{ token: ConfigurationService }, { token: TooltipTemplateService }], target: i0.ɵɵFactoryTarget.Component });
1588
+ TooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: TooltipComponent, selector: "kendo-map-tooltip", inputs: { visible: "visible" }, queries: [{ propertyName: "markerTooltipTemplate", first: true, predicate: MarkerTooltipTemplateDirective, descendants: true }, { propertyName: "shapeTooltipTemplate", first: true, predicate: ShapeTooltipTemplateDirective, descendants: true }, { propertyName: "bubbleTooltipTemplate", first: true, predicate: BubbleTooltipTemplateDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true });
1589
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TooltipComponent, decorators: [{
1590
+ type: Component,
1591
+ args: [{
1592
+ selector: 'kendo-map-tooltip',
1593
+ template: ''
1594
+ }]
1595
+ }], ctorParameters: function () { return [{ type: ConfigurationService }, { type: TooltipTemplateService }]; }, propDecorators: { visible: [{
1596
+ type: Input
1597
+ }], markerTooltipTemplate: [{
1598
+ type: ContentChild,
1599
+ args: [MarkerTooltipTemplateDirective, { static: false }]
1600
+ }], shapeTooltipTemplate: [{
1601
+ type: ContentChild,
1602
+ args: [ShapeTooltipTemplateDirective, { static: false }]
1603
+ }], bubbleTooltipTemplate: [{
1604
+ type: ContentChild,
1605
+ args: [BubbleTooltipTemplateDirective, { static: false }]
1606
+ }] } });
1607
+
1207
1608
  /**
1208
1609
  * @hidden
1209
1610
  */
1210
1611
  const MAP_DIRECTIVES = [
1211
- MapComponent,
1212
- LayersComponent,
1213
1612
  BubbleLayerComponent,
1613
+ BubbleTooltipTemplateDirective,
1614
+ LayersComponent,
1615
+ LayerTooltipComponent,
1616
+ MapComponent,
1214
1617
  MarkerLayerComponent,
1618
+ MarkerTooltipTemplateDirective,
1215
1619
  ShapeLayerComponent,
1620
+ ShapeTooltipTemplateDirective,
1216
1621
  TileLayerComponent,
1217
- LayerTooltipComponent
1622
+ TooltipComponent,
1623
+ TooltipPopupComponent
1218
1624
  ];
1219
1625
 
1220
1626
  /**
@@ -1223,13 +1629,13 @@ const MAP_DIRECTIVES = [
1223
1629
  class MapModule {
1224
1630
  }
1225
1631
  MapModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1226
- MapModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MapModule, declarations: [MapComponent, LayersComponent, BubbleLayerComponent, MarkerLayerComponent, ShapeLayerComponent, TileLayerComponent, LayerTooltipComponent], imports: [CommonModule, ResizeSensorModule], exports: [MapComponent, LayersComponent, BubbleLayerComponent, MarkerLayerComponent, ShapeLayerComponent, TileLayerComponent, LayerTooltipComponent] });
1227
- MapModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MapModule, imports: [[CommonModule, ResizeSensorModule]] });
1632
+ MapModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MapModule, declarations: [BubbleLayerComponent, BubbleTooltipTemplateDirective, LayersComponent, LayerTooltipComponent, MapComponent, MarkerLayerComponent, MarkerTooltipTemplateDirective, ShapeLayerComponent, ShapeTooltipTemplateDirective, TileLayerComponent, TooltipComponent, TooltipPopupComponent], imports: [CommonModule, TooltipsModule, ResizeSensorModule], exports: [BubbleLayerComponent, BubbleTooltipTemplateDirective, LayersComponent, LayerTooltipComponent, MapComponent, MarkerLayerComponent, MarkerTooltipTemplateDirective, ShapeLayerComponent, ShapeTooltipTemplateDirective, TileLayerComponent, TooltipComponent, TooltipPopupComponent] });
1633
+ MapModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MapModule, imports: [[CommonModule, TooltipsModule, ResizeSensorModule]] });
1228
1634
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MapModule, decorators: [{
1229
1635
  type: NgModule,
1230
1636
  args: [{
1231
1637
  declarations: [MAP_DIRECTIVES],
1232
- imports: [CommonModule, ResizeSensorModule],
1638
+ imports: [CommonModule, TooltipsModule, ResizeSensorModule],
1233
1639
  exports: [MAP_DIRECTIVES]
1234
1640
  }]
1235
1641
  }] });
@@ -1238,5 +1644,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
1238
1644
  * Generated bundle index. Do not edit.
1239
1645
  */
1240
1646
 
1241
- export { BeforeResetEvent, BubbleLayerComponent, LayerTooltipComponent, LayersComponent, MapClickEvent, MapComponent, MapModule, MarkerActivateEvent, MarkerClickEvent, MarkerCreatedEvent, MarkerLayerComponent, PanEndEvent, PanEvent, ResetEvent, ShapeClickEvent, ShapeCreatedEvent, ShapeFeatureCreatedEvent, ShapeLayerComponent, ShapeMouseEnterEvent, ShapeMouseLeaveEvent, TileLayerComponent, ZoomEndEvent, ZoomStartEvent };
1647
+ export { BeforeResetEvent, BubbleLayerComponent, BubbleTooltipTemplateDirective, LayerTooltipComponent, LayersComponent, MapClickEvent, MapComponent, MapModule, MarkerActivateEvent, MarkerClickEvent, MarkerCreatedEvent, MarkerLayerComponent, MarkerTooltipTemplateDirective, PanEndEvent, PanEvent, ResetEvent, ShapeClickEvent, ShapeCreatedEvent, ShapeFeatureCreatedEvent, ShapeLayerComponent, ShapeMouseEnterEvent, ShapeMouseLeaveEvent, ShapeTooltipTemplateDirective, TileLayerComponent, TooltipComponent, TooltipPopupComponent, ZoomEndEvent, ZoomStartEvent, bodyFactory };
1242
1648
 
package/main.d.ts CHANGED
@@ -11,4 +11,6 @@ export { TileLayerComponent } from './map/tile-layer.component';
11
11
  export { LayersComponent } from './map/layers.component';
12
12
  export { LayerTooltipComponent } from './map/layer/tooltip.component';
13
13
  export * from './events';
14
+ export * from './tooltip';
15
+ export { bodyFactory } from './tooltip/body-factory';
14
16
  export { MapLayer, MapLayerOptions, MapMarker, BubbleLayerSymbolArgs, BubbleLayerSymbol, MapControls, MapControlsPosition, TileUrlTemplateArgs, Location, Extent } from '@progress/kendo-charts';
@@ -2,19 +2,21 @@
2
2
  * Copyright © 2021 Progress Software Corporation. All rights reserved.
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
- import { AfterViewChecked, AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, NgZone, OnChanges, Renderer2, SimpleChange } from '@angular/core';
5
+ import { AfterViewChecked, AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, NgZone, OnChanges, OnDestroy, Renderer2, SimpleChange } from '@angular/core';
6
6
  import { LocalizationService } from '@progress/kendo-angular-l10n';
7
+ import { PopupSettings } from '@progress/kendo-angular-popup';
7
8
  import { Location, Map, MapControls } from '@progress/kendo-charts';
8
9
  import { Subscription } from 'rxjs';
9
10
  import { ConfigurationService } from './common/configuration.service';
10
11
  import { MapInstanceObserver } from './common/map-instance-observer';
11
12
  import { BeforeResetEvent, MapClickEvent, MarkerActivateEvent, MarkerClickEvent, MarkerCreatedEvent, PanEndEvent, PanEvent, ResetEvent, ShapeClickEvent, ShapeCreatedEvent, ShapeFeatureCreatedEvent, ShapeMouseEnterEvent, ShapeMouseLeaveEvent, ZoomEndEvent, ZoomStartEvent } from './events';
12
13
  import { InstanceEventService } from './events/instance-event.service';
14
+ import { TooltipPopupComponent } from './tooltip/tooltip-popup.component';
13
15
  import * as i0 from "@angular/core";
14
16
  /**
15
17
  * A sample component
16
18
  */
17
- export declare class MapComponent implements AfterViewInit, AfterViewChecked, OnChanges {
19
+ export declare class MapComponent implements AfterViewInit, AfterViewChecked, OnChanges, OnDestroy {
18
20
  configurationService: ConfigurationService;
19
21
  protected instanceEventService: InstanceEventService;
20
22
  protected element: ElementRef;
@@ -77,6 +79,10 @@ export declare class MapComponent implements AfterViewInit, AfterViewChecked, On
77
79
  * @default true
78
80
  */
79
81
  pannable: boolean;
82
+ /**
83
+ * The settings for the tooltip popup.
84
+ */
85
+ popupSettings: PopupSettings;
80
86
  /**
81
87
  * Specifies whether the map should wrap around the east-west edges.
82
88
  *
@@ -174,6 +180,7 @@ export declare class MapComponent implements AfterViewInit, AfterViewChecked, On
174
180
  */
175
181
  zoomEnd: EventEmitter<ZoomEndEvent>;
176
182
  surfaceElement: ElementRef;
183
+ tooltipInstance: TooltipPopupComponent;
177
184
  instance: Map;
178
185
  protected options: any;
179
186
  protected theme: any;
@@ -183,12 +190,14 @@ export declare class MapComponent implements AfterViewInit, AfterViewChecked, On
183
190
  protected rtl: boolean;
184
191
  protected subscriptions: Subscription;
185
192
  protected optionsChange: Subscription;
193
+ protected domSubscriptions: () => void;
186
194
  constructor(configurationService: ConfigurationService, instanceEventService: InstanceEventService, element: ElementRef, localizationService: LocalizationService, changeDetector: ChangeDetectorRef, ngZone: NgZone, renderer: Renderer2);
187
195
  ngAfterViewInit(): void;
188
196
  ngAfterViewChecked(): void;
189
197
  ngOnChanges(changes: {
190
198
  [propertyName: string]: SimpleChange;
191
199
  }): void;
200
+ ngOnDestroy(): void;
192
201
  /**
193
202
  * Detects the size of the container and redraws the Map.
194
203
  * Resizing is automatic unless you set the `resizeRateLimit` option to `0`.
@@ -209,6 +218,16 @@ export declare class MapComponent implements AfterViewInit, AfterViewChecked, On
209
218
  protected detectChanges(): void;
210
219
  protected setDirection(): void;
211
220
  protected get isRTL(): boolean;
221
+ protected onShowTooltip(e: any): void;
222
+ protected onHideTooltip(): void;
223
+ /**
224
+ * @hidden
225
+ */
226
+ tooltipMouseleave(e: any): void;
227
+ /**
228
+ * @hidden
229
+ */
230
+ mapMouseleave(e: any): void;
212
231
  static ɵfac: i0.ɵɵFactoryDeclaration<MapComponent, never>;
213
- static ɵcmp: i0.ɵɵComponentDeclaration<MapComponent, "kendo-map", ["kendoChart"], { "resizeRateLimit": "resizeRateLimit"; "center": "center"; "controls": "controls"; "minZoom": "minZoom"; "maxZoom": "maxZoom"; "minSize": "minSize"; "pannable": "pannable"; "wraparound": "wraparound"; "zoom": "zoom"; "zoomable": "zoomable"; }, { "beforeReset": "beforeReset"; "mapClick": "mapClick"; "markerActivate": "markerActivate"; "markerClick": "markerClick"; "markerCreated": "markerCreated"; "panEnd": "panEnd"; "pan": "pan"; "reset": "reset"; "shapeClick": "shapeClick"; "shapeCreated": "shapeCreated"; "shapeFeatureCreated": "shapeFeatureCreated"; "shapeMouseEnter": "shapeMouseEnter"; "shapeMouseLeave": "shapeMouseLeave"; "zoomStart": "zoomStart"; "zoomEnd": "zoomEnd"; }, never, never>;
232
+ static ɵcmp: i0.ɵɵComponentDeclaration<MapComponent, "kendo-map", ["kendoChart"], { "resizeRateLimit": "resizeRateLimit"; "center": "center"; "controls": "controls"; "minZoom": "minZoom"; "maxZoom": "maxZoom"; "minSize": "minSize"; "pannable": "pannable"; "popupSettings": "popupSettings"; "wraparound": "wraparound"; "zoom": "zoom"; "zoomable": "zoomable"; }, { "beforeReset": "beforeReset"; "mapClick": "mapClick"; "markerActivate": "markerActivate"; "markerClick": "markerClick"; "markerCreated": "markerCreated"; "panEnd": "panEnd"; "pan": "pan"; "reset": "reset"; "shapeClick": "shapeClick"; "shapeCreated": "shapeCreated"; "shapeFeatureCreated": "shapeFeatureCreated"; "shapeMouseEnter": "shapeMouseEnter"; "shapeMouseLeave": "shapeMouseLeave"; "zoomStart": "zoomStart"; "zoomEnd": "zoomEnd"; }, never, never>;
214
233
  }
@@ -9,7 +9,12 @@ import { LayersComponent } from './map/layers.component';
9
9
  import { MarkerLayerComponent } from './map/marker-layer.component';
10
10
  import { ShapeLayerComponent } from './map/shape-layer.component';
11
11
  import { TileLayerComponent } from './map/tile-layer.component';
12
- export { MapComponent, LayersComponent, BubbleLayerComponent, MarkerLayerComponent, ShapeLayerComponent, TileLayerComponent, LayerTooltipComponent };
12
+ import { BubbleTooltipTemplateDirective } from './tooltip/bubble-tooltip-template.directive';
13
+ import { MarkerTooltipTemplateDirective } from './tooltip/marker-tooltip-template.directive';
14
+ import { ShapeTooltipTemplateDirective } from './tooltip/shape-tooltip-template.directive';
15
+ import { TooltipPopupComponent } from './tooltip/tooltip-popup.component';
16
+ import { TooltipComponent } from './tooltip/tooltip.component';
17
+ export { BubbleLayerComponent, BubbleTooltipTemplateDirective, LayersComponent, LayerTooltipComponent, MapComponent, MarkerLayerComponent, MarkerTooltipTemplateDirective, ShapeLayerComponent, ShapeTooltipTemplateDirective, TileLayerComponent, TooltipComponent, TooltipPopupComponent };
13
18
  /**
14
19
  * @hidden
15
20
  */