@igo2/common
Version:
1 lines • 10.8 kB
Source Map (JSON)
{"version":3,"file":"igo2-common-context-menu.mjs","sources":["../../../packages/common/context-menu/src/context-menu.directive.ts","../../../packages/common/context-menu/src/long-press.directive.ts","../../../packages/common/context-menu/src/context-menu.module.ts","../../../packages/common/context-menu/src/public_api.ts","../../../packages/common/context-menu/src/igo2-common-context-menu.ts"],"sourcesContent":["import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n ViewContainerRef\n} from '@angular/core';\nimport type { TemplateRef } from '@angular/core';\n\nimport { Subscription, fromEvent } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\n\n@Directive({\n selector: '[igoContextMenu]',\n standalone: true\n})\nexport class ContextMenuDirective {\n private overlayRef: OverlayRef | null;\n private sub: Subscription;\n\n @Input('igoContextMenu') menuContext: TemplateRef<any>;\n @Output() menuPosition = new EventEmitter<{ x: number; y: number }>();\n\n constructor(\n public overlay: Overlay,\n public viewContainerRef: ViewContainerRef,\n private elementRef: ElementRef\n ) {}\n\n @HostListener('longpress', ['$event'])\n @HostListener('contextmenu', ['$event'])\n public onContextMenu(e: MouseEvent | TouchEvent): void {\n let x;\n let y;\n if (e instanceof MouseEvent) {\n x = e.x;\n y = e.y;\n } else if (e instanceof TouchEvent) {\n x = e.touches[0].pageX;\n y = e.touches[0].pageY;\n }\n if (!x || !y) {\n return;\n }\n\n this.close();\n e.preventDefault();\n this.menuPosition.emit({ x, y });\n this.overlayRef = null;\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo({ x, y })\n .withPositions([\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n }\n ]);\n this.overlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.close()\n });\n this.overlayRef.attach(\n new TemplatePortal(this.menuContext, this.viewContainerRef, {\n $implicit: undefined\n })\n );\n\n this.sub = fromEvent<MouseEvent>(document, 'click')\n .pipe(\n filter((event) => {\n const clickTarget = event.target as HTMLElement;\n this.close();\n return (\n !!this.overlayRef &&\n !this.overlayRef.overlayElement.contains(clickTarget)\n );\n }),\n take(1)\n )\n .subscribe(() => this.close());\n\n this.sub = fromEvent<MouseEvent>(document, 'contextmenu')\n .pipe(\n filter((event) => {\n const clickTarget = event.target as HTMLElement;\n if (\n clickTarget &&\n !this.elementRef.nativeElement.contains(clickTarget) &&\n !this.overlayRef.overlayElement.contains(clickTarget)\n ) {\n return true;\n } else {\n event.preventDefault();\n }\n }),\n take(1)\n )\n .subscribe(() => this.close());\n }\n\n close() {\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n if (this.sub) {\n this.sub.unsubscribe();\n }\n }\n}\n","import {\n Directive,\n EventEmitter,\n HostListener,\n Input,\n Output\n} from '@angular/core';\n\n/**\n * IgoLongPress trigger longpress event after a define duration.\n * This directive exist to patch the unavailable contextmenu event on iOS.\n * @param touchDuration touch duration in ms, default value is 400ms\n * @param iOSOnly define if longpress is triggered only for iOS, default value = true\n */\n@Directive({\n selector: '[igoLongPress]',\n standalone: true\n})\nexport class LongPressDirective {\n private touchTimeout: any;\n @Input() touchDuration = 400;\n @Input() onlyIOS = true;\n @Output() longpress = new EventEmitter();\n\n @HostListener('touchstart', ['$event'])\n public touchstart(e: TouchEvent) {\n if (e.touches.length > 1) {\n this.touchEnd();\n return;\n }\n this.touchTimeout = setTimeout(() => {\n this.longpress.emit(e);\n }, this.touchDuration);\n }\n @HostListener('touchmove')\n @HostListener('touchcancel')\n @HostListener('touchend')\n public touchend() {\n this.touchEnd();\n }\n\n private touchEnd() {\n clearTimeout(this.touchTimeout);\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { ContextMenuDirective } from './context-menu.directive';\nimport { LongPressDirective } from './long-press.directive';\n\n/**\n * @deprecated import the components/directives directly or CONTEXT_MENU_DIRECTIVES for the set\n */\n@NgModule({\n imports: [ContextMenuDirective, LongPressDirective],\n exports: [ContextMenuDirective, LongPressDirective]\n})\nexport class IgoContextMenuModule {\n static forRoot(): ModuleWithProviders<IgoContextMenuModule> {\n return {\n ngModule: IgoContextMenuModule,\n providers: []\n };\n }\n}\n","import { ContextMenuDirective } from './context-menu.directive';\nimport { LongPressDirective } from './long-press.directive';\n\nexport * from './context-menu.module';\nexport * from './context-menu.directive';\nexport * from './long-press.directive';\n\nexport const CONTEXT_MENU_DIRECTIVES = [\n ContextMenuDirective,\n LongPressDirective\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}