UNPKG

@nbalazs/snazzy-info-window

Version:

Fork of [ng-map/snazzy-info-window](https://github.com/ng-maps/ng-maps/tree/main/libs/snazzy-info-window)

1 lines 16.1 kB
{"version":3,"file":"nbalazs-snazzy-info-window.mjs","sources":["../../../../libs/snazzy-info-window/src/lib/snazzy-info-window.component.ts","../../../../libs/snazzy-info-window/src/lib/snazzy-info-window.module.ts","../../../../libs/snazzy-info-window/src/public-api.ts","../../../../libs/snazzy-info-window/src/nbalazs-snazzy-info-window.ts"],"sourcesContent":["import {\n Host,\n SkipSelf,\n OnChanges,\n AfterViewInit,\n EventEmitter,\n Input,\n SimpleChanges,\n ViewContainerRef,\n TemplateRef,\n Output,\n Optional,\n OnDestroy,\n ElementRef,\n Component,\n ViewChild,\n ContentChild,\n} from '@angular/core';\nimport SnazzyInfoWindow from 'snazzy-info-window';\n\nimport {\n NgMapsMarkerComponent,\n MapsApiWrapper,\n MarkerManager,\n MapsAPILoader,\n} from '@ng-maps/core';\n\n@Component({\n selector: 'map-snazzy-info-window',\n template:\n '<div #outerWrapper><div #viewContainer></div></div><ng-content></ng-content>',\n standalone: false,\n})\nexport class NgMapsSnazzyInfoWindowComponent\n implements AfterViewInit, OnDestroy, OnChanges\n{\n /**\n * The latitude and longitude where the info window is anchored.\n * The offset will default to 0px when using this option. Only required/used if you are not using a agm-marker.\n */\n @Input() latitude: number;\n\n /**\n * The longitude where the info window is anchored.\n * The offset will default to 0px when using this option. Only required/used if you are not using a agm-marker.\n */\n @Input() longitude: number;\n\n /**\n * Changes the open status of the snazzy info window.\n */\n @Input() isOpen: boolean = false;\n\n /**\n * Emits when the open status changes.\n */\n @Output() isOpenChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /**\n * Choose where you want the info window to be displayed, relative to the marker.\n */\n @Input() placement: 'top' | 'bottom' | 'left' | 'right' = 'top';\n\n /**\n * The max width in pixels of the info window.\n */\n @Input() maxWidth: number | string = 200;\n\n /**\n * The max height in pixels of the info window.\n */\n @Input() maxHeight: number | string = 200;\n\n /**\n * The color to use for the background of the info window.\n */\n @Input() backgroundColor: string;\n\n /**\n * A custom padding size around the content of the info window.\n */\n @Input() padding: string;\n\n /**\n * A custom border around the info window. Set to false to completely remove the border.\n * The units used for border should be the same as pointer.\n */\n @Input() border: { width: string; color: string } | boolean;\n\n /**\n * A custom CSS border radius property to specify the rounded corners of the info window.\n */\n @Input() borderRadius: string;\n\n /**\n * The font color to use for the content inside the body of the info window.\n */\n @Input() fontColor: string;\n\n /**\n * The font size to use for the content inside the body of the info window.\n */\n @Input() fontSize: string;\n\n /**\n * The height of the pointer from the info window to the marker.\n * Set to false to completely remove the pointer.\n * The units used for pointer should be the same as border.\n */\n @Input() pointer: string | boolean;\n\n /**\n * The CSS properties for the shadow of the info window.\n * Set to false to completely remove the shadow.\n */\n @Input() shadow:\n | boolean\n | {\n h?: string;\n v?: string;\n blur: string;\n spread: string;\n opacity: number;\n color: string;\n };\n\n /**\n * Determines if the info window will open when the marker is clicked.\n * An internal listener is added to the Google Maps click event which calls the open() method.\n */\n @Input() openOnMarkerClick: boolean = true;\n\n /**\n * Determines if the info window will close when the map is clicked. An internal listener is added to the Google Maps click event which calls the close() method.\n * This will not activate on the Google Maps drag event when the user is panning the map.\n */\n @Input() closeOnMapClick: boolean = true;\n\n /**\n * An optional CSS class to assign to the wrapper container of the info window.\n * Can be used for applying custom CSS to the info window.\n */\n @Input() wrapperClass: string;\n\n /**\n * Determines if the info window will close when any other Snazzy Info Window is opened.\n */\n @Input() closeWhenOthersOpen: boolean = false;\n\n /**\n * Determines if the info window will show a close button.\n */\n @Input() showCloseButton: boolean = true;\n\n /**\n * Determines if the info window will be panned into view when opened.\n */\n @Input() panOnOpen: boolean = true;\n\n /**\n * Emits before the info window opens.\n */\n @Output() beforeOpen: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Emits before the info window closes.\n */\n @Output() afterClose: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * @internal\n */\n @ViewChild('outerWrapper', { read: ElementRef, static: true })\n _outerWrapper: ElementRef;\n\n /**\n * @internal\n */\n @ViewChild('viewContainer', { read: ViewContainerRef, static: true })\n _viewContainerRef: ViewContainerRef;\n\n /**\n * @internal\n */\n @ContentChild(TemplateRef, { static: true }) _templateRef: TemplateRef<any>;\n\n protected _nativeSnazzyInfoWindow: any;\n protected _snazzyInfoWindowInitialized: Promise<any> | null = null;\n\n constructor(\n @Optional() @Host() @SkipSelf() private _marker: NgMapsMarkerComponent,\n private _wrapper: MapsApiWrapper,\n private _manager: MarkerManager,\n private _loader: MapsAPILoader,\n ) {}\n\n /**\n * @internal\n */\n ngOnChanges(changes: SimpleChanges) {\n if (this._nativeSnazzyInfoWindow == null) {\n return;\n }\n if ('isOpen' in changes && this.isOpen) {\n this._openInfoWindow();\n } else if ('isOpen' in changes && !this.isOpen) {\n this._closeInfoWindow();\n }\n if (\n ('latitude' in changes || 'longitude' in changes) &&\n this._marker == null\n ) {\n this._updatePosition();\n }\n }\n\n /**\n * @internal\n */\n ngAfterViewInit() {\n this._snazzyInfoWindowInitialized = this.init();\n }\n\n protected async init() {\n const marker =\n this._manager != null\n ? this._manager.getNativeMarker(this._marker)\n : null;\n await this._loader.load();\n const map = await this._wrapper.getNativeMap();\n const options: any = {\n map,\n content: '',\n placement: this.placement,\n maxWidth: this.maxWidth,\n maxHeight: this.maxHeight,\n backgroundColor: this.backgroundColor,\n padding: this.padding,\n border: this.border,\n borderRadius: this.borderRadius,\n fontColor: this.fontColor,\n pointer: this.pointer,\n shadow: this.shadow,\n closeOnMapClick: this.closeOnMapClick,\n openOnMarkerClick: this.openOnMarkerClick,\n closeWhenOthersOpen: this.closeWhenOthersOpen,\n showCloseButton: this.showCloseButton,\n panOnOpen: this.panOnOpen,\n wrapperClass: this.wrapperClass,\n callbacks: {\n beforeOpen: () => {\n this._createViewContent();\n this.beforeOpen.emit();\n },\n afterOpen: () => {\n this.isOpenChange.emit(this.openStatus());\n },\n afterClose: () => {\n this.afterClose.emit();\n this.isOpenChange.emit(this.openStatus());\n },\n },\n };\n if (marker != null) {\n options.marker = marker;\n } else {\n options.position = {\n lat: this.latitude,\n lng: this.longitude,\n };\n }\n this._nativeSnazzyInfoWindow = new SnazzyInfoWindow(options);\n\n if (this.isOpen) {\n this._openInfoWindow();\n }\n }\n\n protected _openInfoWindow() {\n this._snazzyInfoWindowInitialized.then(() => {\n console.log(this._nativeSnazzyInfoWindow);\n this._createViewContent();\n this._nativeSnazzyInfoWindow.open();\n });\n }\n\n protected _closeInfoWindow() {\n this._snazzyInfoWindowInitialized.then(() => {\n this._nativeSnazzyInfoWindow.close();\n });\n }\n\n protected _createViewContent() {\n if (this._viewContainerRef.length === 1) {\n return;\n }\n const evr = this._viewContainerRef.createEmbeddedView(this._templateRef);\n this._nativeSnazzyInfoWindow.setContent(this._outerWrapper.nativeElement);\n // we have to run this in a separate cycle.\n setTimeout(() => {\n evr.detectChanges();\n });\n }\n\n protected _updatePosition() {\n this._nativeSnazzyInfoWindow.setPosition({\n lat: this.latitude,\n lng: this.longitude,\n });\n }\n\n /**\n * Returns true when the Snazzy Info Window is initialized and open.\n */\n openStatus(): boolean {\n return (\n this._nativeSnazzyInfoWindow && this._nativeSnazzyInfoWindow.isOpen()\n );\n }\n\n /**\n * @internal\n */\n ngOnDestroy() {\n if (this._nativeSnazzyInfoWindow) {\n this._nativeSnazzyInfoWindow.destroy();\n }\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { NgMapsSnazzyInfoWindowComponent } from './snazzy-info-window.component';\n\n@NgModule({\n declarations: [NgMapsSnazzyInfoWindowComponent],\n exports: [NgMapsSnazzyInfoWindowComponent],\n})\nexport class NgMapsSnazzyInfoWindowModule {}\n","/*\n * Public API Surface of snazzy-info-window\n */\n\nexport * from './lib/snazzy-info-window.component';\nexport * from './lib/snazzy-info-window.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}