ngx-ui-tour-md-menu
Version:
UI tour library for Angular 12+
1 lines • 26.3 kB
Source Map (JSON)
{"version":3,"file":"ngx-ui-tour-md-menu.mjs","sources":["../../../libs/ngx-ui-tour-md-menu/src/lib/tour-anchor-opener.component.ts","../../../libs/ngx-ui-tour-md-menu/src/lib/tour-step-template.service.ts","../../../libs/ngx-ui-tour-md-menu/src/lib/ngx-md-menu-tour.service.ts","../../../libs/ngx-ui-tour-md-menu/src/lib/tour-anchor.directive.ts","../../../libs/ngx-ui-tour-md-menu/src/lib/tour-step-template/tour-default-step-template/tour-default-step-template.component.ts","../../../libs/ngx-ui-tour-md-menu/src/lib/tour-step-template/tour-default-step-template/tour-default-step-template.component.html","../../../libs/ngx-ui-tour-md-menu/src/lib/tour-step-template/tour-step-template.component.ts","../../../libs/ngx-ui-tour-md-menu/src/lib/tour-step-template/tour-step-template.component.html","../../../libs/ngx-ui-tour-md-menu/src/lib/tour-proxy-anchor.component.ts","../../../libs/ngx-ui-tour-md-menu/src/lib/md-menu.module.ts","../../../libs/ngx-ui-tour-md-menu/src/ngx-ui-tour-md-menu.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, ViewChild} from '@angular/core';\r\nimport {MatMenuModule, MatMenuTrigger} from '@angular/material/menu';\r\n\r\n@Component({\r\n selector: 'tour-anchor-opener',\r\n styles: [\r\n `\r\n :host {\r\n display: none;\r\n }\r\n `\r\n ],\r\n template: `\r\n <span [matMenuTriggerFor]=\"\" [matMenuTriggerRestoreFocus]=\"false\"></span>\r\n `,\r\n imports: [\r\n MatMenuModule\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class TourAnchorOpenerComponent {\r\n\r\n @ViewChild(MatMenuTrigger, {static: true})\r\n public trigger: MatMenuTrigger;\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport type {TourStepTemplateComponent} from './tour-step-template/tour-step-template.component';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TourStepTemplateService {\r\n public templateComponent: TourStepTemplateComponent;\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {TourService} from 'ngx-ui-tour-core';\r\nimport type {IMdStepOption} from './step-option.interface';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NgxmTourService<T extends IMdStepOption = IMdStepOption> extends TourService<T> {\r\n\r\n public override initialize(steps: T[], stepDefaults?: T) {\r\n const userDefaults = this.getDefaults();\r\n\r\n stepDefaults ??= {} as T;\r\n stepDefaults.showArrow ??= userDefaults?.showArrow ?? true;\r\n\r\n super.initialize(steps, stepDefaults);\r\n }\r\n\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n inject,\r\n Input,\r\n type OnDestroy,\r\n type OnInit,\r\n signal,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport type {TourAnchorDirective} from 'ngx-ui-tour-core';\r\nimport {TourState} from 'ngx-ui-tour-core';\r\nimport type {Subscription} from 'rxjs';\r\nimport {first} from 'rxjs';\r\n\r\nimport {TourAnchorOpenerComponent} from './tour-anchor-opener.component';\r\nimport {TourStepTemplateService} from './tour-step-template.service';\r\nimport {NgxmTourService} from './ngx-md-menu-tour.service';\r\nimport type {IMdStepOption} from './step-option.interface';\r\nimport type {MatMenu, MatMenuPanel} from '@angular/material/menu';\r\nimport type {\r\n FlexibleConnectedPositionStrategy,\r\n HorizontalConnectionPos,\r\n VerticalConnectionPos\r\n} from '@angular/cdk/overlay';\r\nimport type {FocusKeyManager} from '@angular/cdk/a11y';\r\n\r\ninterface CustomMenuTrigger {\r\n _element: ElementRef<HTMLElement>;\r\n _parentMaterialMenu: MatMenu;\r\n _setPosition: (menu: MatMenuPanel, positionStrategy: FlexibleConnectedPositionStrategy) => void;\r\n}\r\n\r\n@Directive({\r\n selector: '[tourAnchor]',\r\n host: {\r\n '[class.touranchor--is-active]': 'isActive()'\r\n }\r\n})\r\nexport class TourAnchorMatMenuDirective implements OnInit, OnDestroy, TourAnchorDirective {\r\n\r\n @Input()\r\n public tourAnchor: string;\r\n\r\n public opener: TourAnchorOpenerComponent;\r\n public menuCloseSubscription: Subscription;\r\n\r\n public isActive = signal(false);\r\n public readonly element = inject(ElementRef);\r\n private readonly viewContainer = inject(ViewContainerRef);\r\n private readonly tourService = inject(NgxmTourService);\r\n private readonly tourStepTemplate = inject(TourStepTemplateService);\r\n\r\n ngOnInit(): void {\r\n this.tourService.register(this.tourAnchor, this);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.tourService.unregister(this.tourAnchor);\r\n }\r\n\r\n private createOpener() {\r\n this.opener = this.viewContainer.createComponent(TourAnchorOpenerComponent).instance;\r\n }\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n showTourStep(step: IMdStepOption): void {\r\n this.isActive.set(true);\r\n this.tourStepTemplate.templateComponent.step = step;\r\n\r\n if (!this.opener) {\r\n this.createOpener();\r\n }\r\n\r\n const trigger = this.opener.trigger,\r\n customTrigger = trigger as unknown as CustomMenuTrigger;\r\n customTrigger._element = this.element;\r\n // Fixes tour step closing when hovering over mat-menu item, issue #123\r\n customTrigger._parentMaterialMenu = null;\r\n // Overrides position setting to support opening to the sides\r\n customTrigger._setPosition = (menu, positionStrategy) => this.setPosition(menu, positionStrategy, step);\r\n\r\n const menu = this.tourStepTemplate.templateComponent.tourStep;\r\n trigger.menu = menu;\r\n menu.xPosition = step.placement?.xPosition || 'after';\r\n menu.yPosition = step.placement?.yPosition || 'below';\r\n menu.hasBackdrop = !!step.closeOnOutsideClick;\r\n\r\n // Prevent tab key closing the menu. Issue #189\r\n (menu as unknown as {_keyManager: FocusKeyManager<unknown>})._keyManager.tabOut.complete();\r\n\r\n const popoverClass = step.popoverClass ?? '',\r\n arrow = step.showArrow ? 'arrow' : '',\r\n horizontal = step.placement?.horizontal ? 'horizontal' : '';\r\n\r\n menu.panelClass = `tour-step ${popoverClass} ${arrow} ${horizontal}`;\r\n trigger.openMenu();\r\n\r\n if (this.menuCloseSubscription) {\r\n this.menuCloseSubscription.unsubscribe();\r\n }\r\n this.menuCloseSubscription = trigger.menuClosed\r\n .pipe(first())\r\n .subscribe(() => {\r\n if (this.tourService.getStatus() !== TourState.OFF) {\r\n this.tourService.end();\r\n }\r\n });\r\n }\r\n\r\n private setPosition(menu: MatMenuPanel, positionStrategy: FlexibleConnectedPositionStrategy, step: IMdStepOption) {\r\n let [originX, originFallbackX]: HorizontalConnectionPos[] =\r\n menu.xPosition === 'before' ? ['end', 'start'] : ['start', 'end'];\r\n\r\n const [overlayY, overlayFallbackY]: VerticalConnectionPos[] =\r\n menu.yPosition === 'above' ? ['bottom', 'top'] : ['top', 'bottom'];\r\n\r\n let [originY, originFallbackY] = [overlayY, overlayFallbackY];\r\n let [overlayX, overlayFallbackX] = [originX, originFallbackX];\r\n const isHorizontal = step.placement?.horizontal;\r\n\r\n if (isHorizontal) {\r\n overlayFallbackX = originX = menu.xPosition === 'before' ? 'start' : 'end';\r\n originFallbackX = overlayX = originX === 'end' ? 'start' : 'end';\r\n } else if (!menu.overlapTrigger) {\r\n originY = overlayY === 'top' ? 'bottom' : 'top';\r\n originFallbackY = overlayFallbackY === 'top' ? 'bottom' : 'top';\r\n }\r\n\r\n const offset = step.backdropConfig?.offset ?? 0,\r\n offsetX = isHorizontal ? offset : -offset,\r\n offsetY = isHorizontal ? -offset : offset;\r\n\r\n const original = {originX, originY, overlayX, overlayY, offsetX, offsetY};\r\n const flipX = {\r\n originX: originFallbackX, originY, overlayX: overlayFallbackX, overlayY,\r\n offsetX: -offsetX, offsetY\r\n };\r\n const flipY = {\r\n originX, originY: originFallbackY, overlayX, overlayY: overlayFallbackY, offsetX, offsetY: -offsetY\r\n };\r\n const flipXY = {\r\n originX: originFallbackX, originY: originFallbackY, overlayX: overlayFallbackX, overlayY: overlayFallbackY,\r\n offsetX: -offsetX, offsetY: -offsetY\r\n };\r\n\r\n positionStrategy.withPositions(isHorizontal ? [original, flipX] : [original, flipY, flipXY]);\r\n }\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n public hideTourStep(): void {\r\n this.isActive.set(false);\r\n if (this.menuCloseSubscription) {\r\n this.menuCloseSubscription.unsubscribe();\r\n }\r\n this.opener.trigger.closeMenu();\r\n }\r\n\r\n}\r\n","import {ChangeDetectionStrategy, Component, inject, input} from '@angular/core';\r\nimport type {IMdStepOption} from '../../step-option.interface';\r\nimport {NgxmTourService} from '../../ngx-md-menu-tour.service';\r\nimport {MatButtonModule} from '@angular/material/button';\r\nimport {MatCardModule} from '@angular/material/card';\r\nimport {MatIcon} from '@angular/material/icon';\r\n\r\n@Component({\r\n selector: 'tour-default-step-template',\r\n imports: [\r\n MatButtonModule,\r\n MatCardModule,\r\n MatIcon\r\n ],\r\n templateUrl: './tour-default-step-template.component.html',\r\n styleUrl: './tour-default-step-template.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class TourDefaultStepTemplateComponent {\r\n\r\n readonly step = input.required<IMdStepOption>();\r\n protected tourService = inject(NgxmTourService);\r\n\r\n}\r\n","@let step = this.step();\r\n\r\n<mat-card\r\n (click)=\"$event.stopPropagation()\"\r\n [style.width]=\"step.stepDimensions?.width\"\r\n [style.min-width]=\"step.stepDimensions?.minWidth\"\r\n [style.max-width]=\"step.stepDimensions?.maxWidth\"\r\n>\r\n <mat-card-header>\r\n <div class=\"header-group\">\r\n <mat-card-title>\r\n {{ step.title }}\r\n </mat-card-title>\r\n <button\r\n mat-icon-button\r\n (click)=\"tourService.end()\"\r\n class=\"close\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </mat-card-header>\r\n\r\n <mat-card-content\r\n class=\"mat-body\"\r\n [innerHTML]=\"step.content\"\r\n ></mat-card-content>\r\n\r\n <mat-card-actions\r\n [class.no-progress]=\"!step.showProgress\"\r\n >\r\n <button\r\n mat-button\r\n class=\"prev\"\r\n [disabled]=\"!tourService.hasPrev(step)\"\r\n (click)=\"tourService.prev()\"\r\n >\r\n <mat-icon>chevron_left</mat-icon>\r\n {{ step.prevBtnTitle }}\r\n </button>\r\n @if (step.showProgress) {\r\n <div class=\"progress\">{{ tourService.steps.indexOf(step) + 1 }} / {{ tourService.steps.length }}</div>\r\n }\r\n @if (tourService.hasNext(step) && !step.nextOnAnchorClick) {\r\n <button\r\n class=\"next\"\r\n (click)=\"tourService.next()\"\r\n mat-button\r\n >\r\n {{ step.nextBtnTitle }}\r\n <mat-icon iconPositionEnd>chevron_right</mat-icon>\r\n </button>\r\n }\r\n @if (!tourService.hasNext(step)) {\r\n <button\r\n mat-button\r\n (click)=\"tourService.end()\"\r\n >\r\n {{ step.endBtnTitle }}\r\n </button>\r\n }\r\n </mat-card-actions>\r\n</mat-card>\r\n","import {\r\n type AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChild,\r\n inject,\r\n Input,\r\n TemplateRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {TourHotkeyListenerComponent} from 'ngx-ui-tour-core';\r\nimport {MatMenu} from '@angular/material/menu';\r\nimport type {IMdStepOption} from '../step-option.interface';\r\nimport {TourStepTemplateService} from '../tour-step-template.service';\r\nimport {NgxmTourService} from '../ngx-md-menu-tour.service';\r\nimport {NgTemplateOutlet} from '@angular/common';\r\nimport {TourDefaultStepTemplateComponent} from './tour-default-step-template/tour-default-step-template.component';\r\n\r\n@Component({\r\n selector: 'tour-step-template',\r\n templateUrl: './tour-step-template.component.html',\r\n styleUrls: ['./tour-step-template.component.scss'],\r\n imports: [\r\n MatMenu,\r\n NgTemplateOutlet,\r\n TourDefaultStepTemplateComponent\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class TourStepTemplateComponent extends TourHotkeyListenerComponent implements AfterViewInit {\r\n\r\n @ViewChild(MatMenu)\r\n public tourStep: MatMenu;\r\n\r\n @Input()\r\n public stepTemplate: TemplateRef<{ step: IMdStepOption }>;\r\n\r\n @ContentChild(TemplateRef)\r\n public stepTemplateContent: TemplateRef<{ step: IMdStepOption }>;\r\n\r\n public step: IMdStepOption = {};\r\n\r\n protected override tourService = inject(NgxmTourService);\r\n private tourStepTemplateService = inject(TourStepTemplateService);\r\n\r\n public ngAfterViewInit(): void {\r\n this.tourStepTemplateService.templateComponent = this;\r\n }\r\n\r\n}\r\n","<mat-menu [overlapTrigger]=\"false\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n stepTemplate || stepTemplateContent || defaultTemplate;\r\n context: { step: step }\r\n \"\r\n ></ng-container>\r\n</mat-menu>\r\n\r\n<ng-template #defaultTemplate let-step=\"step\">\r\n <tour-default-step-template\r\n [step]=\"step\"\r\n />\r\n</ng-template>\r\n","import {BaseTourProxyAnchor} from 'ngx-ui-tour-core';\r\nimport {ChangeDetectionStrategy, Component, inject, Input} from '@angular/core';\r\nimport {TourAnchorMatMenuDirective} from './tour-anchor.directive';\r\n\r\n@Component({\r\n selector: 'tour-proxy-anchor',\r\n template: ``,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [],\r\n hostDirectives: [{\r\n directive: TourAnchorMatMenuDirective,\r\n inputs: ['tourAnchor: anchorId']\r\n }]\r\n})\r\nexport class TourProxyAnchorComponent extends BaseTourProxyAnchor {\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n protected override readonly anchorDirective = inject(TourAnchorMatMenuDirective, {\r\n host: true\r\n });\r\n\r\n @Input({required: true})\r\n public override anchorEl: string | HTMLElement;\r\n\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport {TourAnchorMatMenuDirective} from './tour-anchor.directive';\r\nimport {TourStepTemplateComponent} from './tour-step-template/tour-step-template.component';\r\nimport {TourProxyAnchorComponent} from './tour-proxy-anchor.component';\r\n\r\nconst COMPONENTS = [TourAnchorMatMenuDirective, TourStepTemplateComponent, TourProxyAnchorComponent];\r\n\r\n@NgModule({\r\n imports: COMPONENTS,\r\n exports: COMPONENTS\r\n})\r\nexport class TourMatMenuModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1"],"mappings":"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"}