igot-cb-tour-guide 0.0.1-ang-13-17
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/css/guided-tour-base-theme.css +90 -0
- package/css/guided-tour-base-theme.css.map +1 -0
- package/css/guided-tour.component.css +325 -0
- package/css/guided-tour.component.css.map +1 -0
- package/fesm2022/igot-cb-tour-guide.mjs +670 -0
- package/fesm2022/igot-cb-tour-guide.mjs.map +1 -0
- package/igot-cb-tour-guide-0.0.1-ang-13-17.tgz +0 -0
- package/index.d.ts +191 -0
- package/package.json +51 -0
- package/scss/guided-tour-base-theme.scss +144 -0
- package/scss/guided-tour.component.scss +374 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"igot-cb-tour-guide.mjs","sources":["../../../projects/ngx-guided-tour/src/lib/guided-tour.constants.ts","../../../projects/ngx-guided-tour/src/lib/windowref.service.ts","../../../projects/ngx-guided-tour/src/lib/guided-tour.service.ts","../../../projects/ngx-guided-tour/src/lib/guided-tour.component.ts","../../../projects/ngx-guided-tour/src/lib/guided-tour.component.html","../../../projects/ngx-guided-tour/src/lib/guided-tour.module.ts","../../../projects/ngx-guided-tour/src/public_api.ts","../../../projects/ngx-guided-tour/src/igot-cb-tour-guide.ts"],"sourcesContent":["\nexport interface TourStep {\n icon?: string,\n connectorDirection?: string,\n nextBtnClass?: string,\n backBtnClass?: string,\n skipBtnClass?: string,\n containerClass?: string,\n isMobile?: boolean;\n class?: string,\n /** Selector for element that will be highlighted */\n selector?: string;\n /** Tour title text */\n title?: string;\n /** Tour step text */\n content: string;\n /** Where the tour step will appear next to the selected element */\n orientation?: Orientation | OrientationConfiguration[];\n /** Action that happens when the step is opened */\n action?: () => void;\n /** Action that happens when the step is closed */\n closeAction?: () => void;\n /** Skips this step, this is so you do not have create multiple tour configurations based on user settings/configuration */\n skipStep?: boolean;\n /** Adds some padding for things like sticky headers when scrolling to an element */\n scrollAdjustment?: number;\n /** Adds default padding around tour highlighting. Does not need to be true for highlightPadding to work */\n useHighlightPadding?: boolean;\n /** Adds padding around tour highlighting in pixels, this overwrites the default for this step. Is not dependent on useHighlightPadding being true */\n highlightPadding?: number;\n}\n\nexport interface GuidedTour {\n /** Identifier for tour */\n tourId: string;\n /** Use orb to start tour */\n useOrb?: boolean;\n /** Steps fo the tour */\n steps: TourStep[];\n nextCallback?: (currentStep: number, stepObject: object) => void;\n prevCallback?: (currentStep: number, stepObject: object) => void;\n /** Function will be called when tour is skipped */\n skipCallback?: (stepSkippedOn: number) => void;\n /** Function will be called when tour is completed */\n completeCallback?: () => void;\n /** Minimum size of screen in pixels before the tour is run, if the tour is resized below this value the user will be told to resize */\n minimumScreenSize?: number;\n /** Dialog shown if the window width is smaller than the defined minimum screen size. */\n resizeDialog?: {\n /** Resize dialog title text */\n title?: string;\n /** Resize dialog text */\n content: string;\n }\n /**\n * Prevents the tour from advancing by clicking the backdrop.\n * This should only be set if you are completely sure your tour is displaying correctly on all screen sizes otherwise a user can get stuck.\n */\n preventBackdropFromAdvancing?: boolean;\n}\n\nexport interface OrientationConfiguration {\n /** Where the tour step will appear next to the selected element */\n orientationDirection: Orientation;\n /** When this orientation configuration starts in pixels */\n maximumSize?: number;\n}\n\nexport class Orientation {\n public static readonly Bottom = 'bottom';\n public static readonly BottomLeft = 'bottom-left';\n public static readonly BottomRight = 'bottom-right';\n public static readonly Center = 'center';\n public static readonly Left = 'left';\n public static readonly Right = 'right';\n public static readonly Top = 'top';\n public static readonly TopLeft = 'top-left';\n public static readonly TopRight = 'top-right';\n}\n\nexport enum ProgressIndicatorLocation {\n InsideNextButton = 'inside-next-button',\n TopOfTourBlock = 'top-of-tour-block',\n None = 'none',\n Dots = 'dots'\n} \n","import { Inject, Injectable, PLATFORM_ID } from \"@angular/core\";\nimport { isPlatformBrowser } from \"@angular/common\";\n\nfunction getWindow(): any {\n return window;\n}\n\nfunction getMockWindow(): any {\n return {\n innerWidth: 0,\n innerHeight: 0,\n scrollY: 0,\n scrollX: 0,\n pageYOffset: 0,\n pageXOffset: 0,\n scroll: () => {},\n scrollTo: () => {},\n addEventListener: () => {},\n removeEventListener: () => {},\n }\n}\n\n@Injectable()\nexport class WindowRefService {\n private readonly isBrowser: boolean = false;\n\n get nativeWindow(): any {\n if (this.isBrowser) {\n return getWindow();\n } else {\n return getMockWindow();\n }\n }\n\n constructor(@Inject(PLATFORM_ID) platformId) {\n this.isBrowser = isPlatformBrowser(platformId);\n }\n}\n","import { debounceTime } from 'rxjs/operators';\nimport { ErrorHandler, Inject, Injectable, DOCUMENT } from '@angular/core';\nimport { Observable, Subject, fromEvent } from 'rxjs';\nimport { GuidedTour, TourStep, Orientation, OrientationConfiguration } from './guided-tour.constants';\nimport { cloneDeep } from 'lodash';\n\nimport { WindowRefService } from \"./windowref.service\";\n\n@Injectable()\nexport class GuidedTourService {\n public guidedTourCurrentStepStream: Observable<TourStep>;\n public guidedTourOrbShowingStream: Observable<boolean>;\n\n private _guidedTourCurrentStepSubject = new Subject<TourStep>();\n private _guidedTourOrbShowingSubject = new Subject<boolean>();\n private _currentTourStepIndex = 0;\n private _currentTour: GuidedTour = null;\n private _onFirstStep = true;\n private _onLastStep = true;\n private _onResizeMessage = false;\n\n constructor(\n public errorHandler: ErrorHandler,\n private windowRef: WindowRefService,\n @Inject(DOCUMENT) private dom\n ) {\n this.guidedTourCurrentStepStream = this._guidedTourCurrentStepSubject.asObservable();\n this.guidedTourOrbShowingStream = this._guidedTourOrbShowingSubject.asObservable();\n\n fromEvent(this.windowRef.nativeWindow, 'resize').pipe(debounceTime(200)).subscribe(() => {\n if (this._currentTour && this._currentTourStepIndex > -1) {\n if (this._currentTour.minimumScreenSize && this._currentTour.minimumScreenSize >= this.windowRef.nativeWindow.innerWidth) {\n this._onResizeMessage = true;\n const dialog = this._currentTour.resizeDialog || {\n title: 'Please resize',\n content: 'You have resized the tour to a size that is too small to continue. Please resize the browser to a larger size to continue the tour or close the tour.'\n };\n\n this._guidedTourCurrentStepSubject.next(dialog);\n } else {\n this._onResizeMessage = false;\n this._guidedTourCurrentStepSubject.next(this.getPreparedTourStep(this._currentTourStepIndex));\n }\n }\n });\n }\n\n public nextStep(): void {\n if (this._currentTour.steps[this._currentTourStepIndex].closeAction) {\n this._currentTour.steps[this._currentTourStepIndex].closeAction();\n }\n if (this._currentTour.steps[this._currentTourStepIndex + 1]) {\n this._currentTourStepIndex++;\n this._setFirstAndLast();\n if (this._currentTour.steps[this._currentTourStepIndex].action) {\n this._currentTour.steps[this._currentTourStepIndex].action();\n // Usually an action is opening something so we need to give it time to render.\n setTimeout(() => {\n if (this._checkSelectorValidity()) {\n this._guidedTourCurrentStepSubject.next(this.getPreparedTourStep(this._currentTourStepIndex));\n } else {\n this.nextStep();\n }\n });\n } else {\n if (this._checkSelectorValidity()) {\n this._guidedTourCurrentStepSubject.next(this.getPreparedTourStep(this._currentTourStepIndex));\n } else {\n this.nextStep();\n }\n }\n if (this._currentTour.nextCallback) {\n this._currentTour.nextCallback(this._currentTourStepIndex, this._currentTour.steps[this._currentTourStepIndex]);\n }\n } else {\n if (this._currentTour.completeCallback) {\n this._currentTour.completeCallback();\n }\n this.resetTour();\n }\n }\n\n public backStep(): void {\n if (this._currentTour.steps[this._currentTourStepIndex].closeAction) {\n this._currentTour.steps[this._currentTourStepIndex].closeAction();\n }\n if (this._currentTour.steps[this._currentTourStepIndex - 1]) {\n this._currentTourStepIndex--;\n this._setFirstAndLast();\n if (this._currentTour.steps[this._currentTourStepIndex].action) {\n this._currentTour.steps[this._currentTourStepIndex].action();\n setTimeout(() => {\n if (this._checkSelectorValidity()) {\n this._guidedTourCurrentStepSubject.next(this.getPreparedTourStep(this._currentTourStepIndex));\n } else {\n this.backStep();\n }\n });\n } else {\n if (this._checkSelectorValidity()) {\n this._guidedTourCurrentStepSubject.next(this.getPreparedTourStep(this._currentTourStepIndex));\n } else {\n this.backStep();\n }\n }\n if (this._currentTour.nextCallback) {\n this._currentTour.prevCallback(this._currentTourStepIndex, this._currentTour.steps[this._currentTourStepIndex]);\n }\n } else {\n this.resetTour();\n }\n }\n\n public skipTour(): void {\n if (this._currentTour.skipCallback) {\n this._currentTour.skipCallback(this._currentTourStepIndex);\n }\n this.resetTour();\n }\n\n public resetTour(): void {\n this.dom.body.classList.remove('tour-open');\n this._currentTour = null;\n this._currentTourStepIndex = 0;\n this._guidedTourCurrentStepSubject.next(null);\n }\n\n public startTour(tour: GuidedTour): void {\n this._currentTour = cloneDeep(tour);\n this._currentTour.steps = this._currentTour.steps.filter(step => !step.skipStep);\n this._currentTourStepIndex = 0;\n this._setFirstAndLast();\n this._guidedTourOrbShowingSubject.next(this._currentTour.useOrb);\n if (\n this._currentTour.steps.length > 0\n && (!this._currentTour.minimumScreenSize\n || (this.windowRef.nativeWindow.innerWidth >= this._currentTour.minimumScreenSize))\n ) {\n if (!this._currentTour.useOrb) {\n this.dom.body.classList.add('tour-open');\n }\n if (this._currentTour.steps[this._currentTourStepIndex].action) {\n this._currentTour.steps[this._currentTourStepIndex].action();\n }\n if (this._checkSelectorValidity()) {\n this._guidedTourCurrentStepSubject.next(this.getPreparedTourStep(this._currentTourStepIndex));\n } else {\n this.nextStep();\n }\n }\n }\n\n public activateOrb(): void {\n this._guidedTourOrbShowingSubject.next(false);\n this.dom.body.classList.add('tour-open');\n }\n\n private _setFirstAndLast(): void {\n this._onLastStep = (this._currentTour.steps.length - 1) === this._currentTourStepIndex;\n this._onFirstStep = this._currentTourStepIndex === 0;\n }\n\n private _checkSelectorValidity(): boolean {\n if (this._currentTour.steps[this._currentTourStepIndex].selector) {\n const selectedElement = this.dom.querySelector(this._currentTour.steps[this._currentTourStepIndex].selector);\n if (!selectedElement) {\n this.errorHandler.handleError(\n // If error handler is configured this should not block the browser.\n new Error(`Error finding selector ${this._currentTour.steps[this._currentTourStepIndex].selector} on step ${this._currentTourStepIndex + 1} during guided tour: ${this._currentTour.tourId}`)\n );\n return false;\n }\n }\n return true;\n }\n\n public get onLastStep(): boolean {\n return this._onLastStep;\n }\n\n public get onFirstStep(): boolean {\n return this._onFirstStep;\n }\n\n public get onResizeMessage(): boolean {\n return this._onResizeMessage;\n }\n\n public get currentTourStepDisplay(): number {\n return this._currentTourStepIndex + 1;\n }\n\n public get currentTourStepCount(): number {\n return this._currentTour && this._currentTour.steps ? this._currentTour.steps.length : 0;\n }\n\n public get preventBackdropFromAdvancing(): boolean {\n return this._currentTour && this._currentTour.preventBackdropFromAdvancing;\n }\n\n private getPreparedTourStep(index: number): TourStep {\n return this.setTourOrientation(this._currentTour.steps[index]);\n }\n\n private setTourOrientation(step: TourStep): TourStep {\n const convertedStep = cloneDeep(step);\n if (\n convertedStep.orientation\n && !(typeof convertedStep.orientation === 'string')\n && (convertedStep.orientation as OrientationConfiguration[]).length\n ) {\n (convertedStep.orientation as OrientationConfiguration[]).sort((a: OrientationConfiguration, b: OrientationConfiguration) => {\n if (!b.maximumSize) {\n return 1;\n }\n if (!a.maximumSize) {\n return -1;\n }\n return b.maximumSize - a.maximumSize;\n });\n\n let currentOrientation: Orientation = Orientation.Top;\n (convertedStep.orientation as OrientationConfiguration[]).forEach(\n (orientationConfig: OrientationConfiguration) => {\n if (!orientationConfig.maximumSize || this.windowRef.nativeWindow.innerWidth <= orientationConfig.maximumSize) {\n currentOrientation = orientationConfig.orientationDirection;\n }\n }\n );\n\n convertedStep.orientation = currentOrientation;\n }\n return convertedStep;\n }\n}\n","import { AfterViewInit, Component, ElementRef, Input, OnDestroy, ViewChild, ViewEncapsulation, TemplateRef, Inject, DOCUMENT } from '@angular/core';\nimport { fromEvent, Subscription } from 'rxjs';\n\nimport { Orientation, TourStep, ProgressIndicatorLocation } from './guided-tour.constants';\nimport { GuidedTourService } from './guided-tour.service';\nimport { WindowRefService } from \"./windowref.service\";\n\n@Component({\n selector: 'ngx-guided-tour',\n templateUrl: './guided-tour.component.html',\n styleUrls: ['./guided-tour.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: false\n})\nexport class GuidedTourComponent implements AfterViewInit, OnDestroy {\n @Input() public topOfPageAdjustment?= 0;\n @Input() public tourStepWidth?= 300;\n @Input() public minimalTourStepWidth?= 200;\n @Input() public skipText?= 'Skip';\n @Input() public nextText?= 'Next';\n @Input() public doneText?= 'Done';\n @Input() public closeText?= 'Close';\n @Input() public backText?= 'Back';\n @Input() public progressIndicatorLocation?: ProgressIndicatorLocation = ProgressIndicatorLocation.InsideNextButton;\n @Input() public progressIndicator?: TemplateRef<any> = undefined;\n @ViewChild('tourStep', { static: false }) public tourStep: ElementRef;\n public highlightPadding = 4;\n public currentTourStep: TourStep = null;\n public selectedElementRect: DOMRect = null;\n public isOrbShowing = false;\n public progressIndicatorLocations = ProgressIndicatorLocation;\n\n private resizeSubscription: Subscription;\n private scrollSubscription: Subscription;\n\n constructor(\n public guidedTourService: GuidedTourService,\n private windowRef: WindowRefService,\n @Inject(DOCUMENT) private dom: any\n ) { }\n\n private get maxWidthAdjustmentForTourStep(): number {\n return this.tourStepWidth - this.minimalTourStepWidth;\n }\n\n private get widthAdjustmentForScreenBound(): number {\n if (!this.tourStep) {\n return 0;\n }\n let adjustment = 0;\n if (this.calculatedLeftPosition < 0) {\n adjustment = -this.calculatedLeftPosition;\n }\n if (this.calculatedLeftPosition > this.windowRef.nativeWindow.innerWidth - this.tourStepWidth) {\n adjustment = this.calculatedLeftPosition - (this.windowRef.nativeWindow.innerWidth - this.tourStepWidth);\n }\n\n return Math.min(this.maxWidthAdjustmentForTourStep, adjustment);\n }\n\n public get calculatedTourStepWidth() {\n return this.tourStepWidth - this.widthAdjustmentForScreenBound;\n }\n\n public ngAfterViewInit(): void {\n this.guidedTourService.guidedTourCurrentStepStream.subscribe((step: TourStep) => {\n this.currentTourStep = step;\n if (step && step.selector) {\n const selectedElement = this.dom.querySelector(step.selector);\n if (selectedElement) {\n this.scrollToAndSetElement();\n } else {\n this.selectedElementRect = null;\n }\n } else {\n this.selectedElementRect = null;\n }\n });\n\n this.guidedTourService.guidedTourOrbShowingStream.subscribe((value: boolean) => {\n this.isOrbShowing = value;\n });\n\n this.resizeSubscription = fromEvent(this.windowRef.nativeWindow, 'resize').subscribe(() => {\n this.updateStepLocation();\n });\n\n this.scrollSubscription = fromEvent(this.windowRef.nativeWindow, 'scroll').subscribe(() => {\n this.updateStepLocation();\n });\n }\n\n public ngOnDestroy(): void {\n this.resizeSubscription.unsubscribe();\n this.scrollSubscription.unsubscribe();\n }\n\n public scrollToAndSetElement(): void {\n this.updateStepLocation();\n // Allow things to render to scroll to the correct location\n setTimeout(() => {\n if (!this.isOrbShowing && !this.isTourOnScreen()) {\n if (this.selectedElementRect && this.isBottom()) {\n // Scroll so the element is on the top of the screen.\n const topPos = ((this.windowRef.nativeWindow.scrollY + this.selectedElementRect.top) - this.topOfPageAdjustment)\n - (this.currentTourStep.scrollAdjustment ? this.currentTourStep.scrollAdjustment : 0)\n + this.getStepScreenAdjustment();\n try {\n this.windowRef.nativeWindow.scrollTo({\n left: null,\n top: topPos,\n behavior: 'smooth'\n });\n } catch (err) {\n if (err instanceof TypeError) {\n this.windowRef.nativeWindow.scroll(0, topPos);\n } else {\n throw err;\n }\n }\n } else {\n // Scroll so the element is on the bottom of the screen.\n const topPos = (this.windowRef.nativeWindow.scrollY + this.selectedElementRect.top + this.selectedElementRect.height)\n - this.windowRef.nativeWindow.innerHeight\n + (this.currentTourStep.scrollAdjustment ? this.currentTourStep.scrollAdjustment : 0)\n - this.getStepScreenAdjustment();\n try {\n this.windowRef.nativeWindow.scrollTo({\n left: null,\n top: topPos,\n behavior: 'smooth'\n });\n } catch (err) {\n if (err instanceof TypeError) {\n this.windowRef.nativeWindow.scroll(0, topPos);\n } else {\n throw err;\n }\n }\n }\n }\n });\n }\n\n public handleOrb(): void {\n this.guidedTourService.activateOrb();\n if (this.currentTourStep && this.currentTourStep.selector) {\n this.scrollToAndSetElement();\n }\n }\n\n private isTourOnScreen(): boolean {\n return this.tourStep\n && this.elementInViewport(this.dom.querySelector(this.currentTourStep.selector))\n && this.elementInViewport(this.tourStep.nativeElement);\n }\n\n // Modified from https://stackoverflow.com/questions/123999/how-to-tell-if-a-dom-element-is-visible-in-the-current-viewport\n private elementInViewport(element: HTMLElement): boolean {\n let top = element.offsetTop;\n const height = element.offsetHeight;\n\n while (element.offsetParent) {\n element = (element.offsetParent as HTMLElement);\n top += element.offsetTop;\n }\n if (this.isBottom()) {\n return (\n top >= (this.windowRef.nativeWindow.pageYOffset\n + this.topOfPageAdjustment\n + (this.currentTourStep.scrollAdjustment ? this.currentTourStep.scrollAdjustment : 0)\n + this.getStepScreenAdjustment())\n && (top + height) <= (this.windowRef.nativeWindow.pageYOffset + this.windowRef.nativeWindow.innerHeight)\n );\n } else {\n return (\n top >= (this.windowRef.nativeWindow.pageYOffset + this.topOfPageAdjustment - this.getStepScreenAdjustment())\n && (top + height + (this.currentTourStep.scrollAdjustment ? this.currentTourStep.scrollAdjustment : 0)) <= (this.windowRef.nativeWindow.pageYOffset + this.windowRef.nativeWindow.innerHeight)\n );\n }\n }\n\n public backdropClick(event: Event): void {\n if (this.guidedTourService.preventBackdropFromAdvancing) {\n event.stopPropagation();\n } else {\n this.guidedTourService.nextStep();\n }\n }\n\n public updateStepLocation(): void {\n if (this.currentTourStep && this.currentTourStep.selector) {\n const selectedElement = this.dom.querySelector(this.currentTourStep.selector);\n if (selectedElement && typeof selectedElement.getBoundingClientRect === 'function') {\n this.selectedElementRect = (selectedElement.getBoundingClientRect() as DOMRect);\n } else {\n this.selectedElementRect = null;\n }\n } else {\n this.selectedElementRect = null;\n }\n }\n\n private isBottom(): boolean {\n return this.currentTourStep.orientation\n && (this.currentTourStep.orientation === Orientation.Bottom\n || this.currentTourStep.orientation === Orientation.BottomLeft\n || this.currentTourStep.orientation === Orientation.BottomRight);\n }\n\n public get topPosition(): number {\n const paddingAdjustment = this.getHighlightPadding();\n\n if (this.isBottom()) {\n return this.selectedElementRect.top + this.selectedElementRect.height + paddingAdjustment;\n }\n\n return this.selectedElementRect.top - this.getHighlightPadding();\n }\n\n public get orbTopPosition(): number {\n if (this.isBottom()) {\n return this.selectedElementRect.top + this.selectedElementRect.height;\n }\n\n if (\n this.currentTourStep.orientation === Orientation.Right\n || this.currentTourStep.orientation === Orientation.Left\n ) {\n return (this.selectedElementRect.top + (this.selectedElementRect.height / 2));\n }\n\n return this.selectedElementRect.top;\n }\n\n private get calculatedLeftPosition(): number {\n const paddingAdjustment = this.getHighlightPadding();\n\n if (\n this.currentTourStep.orientation === Orientation.TopRight\n || this.currentTourStep.orientation === Orientation.BottomRight\n ) {\n return (this.selectedElementRect.right - this.tourStepWidth);\n }\n\n if (\n this.currentTourStep.orientation === Orientation.TopLeft\n || this.currentTourStep.orientation === Orientation.BottomLeft\n ) {\n return (this.selectedElementRect.left);\n }\n\n if (this.currentTourStep.orientation === Orientation.Left) {\n return this.selectedElementRect.left - this.tourStepWidth - paddingAdjustment;\n }\n\n if (this.currentTourStep.orientation === Orientation.Right) {\n return (this.selectedElementRect.left + this.selectedElementRect.width + paddingAdjustment);\n }\n\n return (this.selectedElementRect.right - (this.selectedElementRect.width / 2) - (this.tourStepWidth / 2));\n }\n\n public get leftPosition(): number {\n if (this.calculatedLeftPosition >= 0) {\n return this.calculatedLeftPosition;\n }\n const adjustment = Math.max(0, -this.calculatedLeftPosition)\n const maxAdjustment = Math.min(this.maxWidthAdjustmentForTourStep, adjustment);\n return this.calculatedLeftPosition + maxAdjustment;\n }\n\n public get orbLeftPosition(): number {\n if (\n this.currentTourStep.orientation === Orientation.TopRight\n || this.currentTourStep.orientation === Orientation.BottomRight\n ) {\n return this.selectedElementRect.right;\n }\n\n if (\n this.currentTourStep.orientation === Orientation.TopLeft\n || this.currentTourStep.orientation === Orientation.BottomLeft\n ) {\n return this.selectedElementRect.left;\n }\n\n if (this.currentTourStep.orientation === Orientation.Left) {\n return this.selectedElementRect.left;\n }\n\n if (this.currentTourStep.orientation === Orientation.Right) {\n return (this.selectedElementRect.left + this.selectedElementRect.width);\n }\n\n return (this.selectedElementRect.right - (this.selectedElementRect.width / 2));\n }\n\n public get transform(): string {\n if (\n !this.currentTourStep.orientation\n || this.currentTourStep.orientation === Orientation.Top\n || this.currentTourStep.orientation === Orientation.TopRight\n || this.currentTourStep.orientation === Orientation.TopLeft\n ) {\n return 'translateY(-100%)';\n }\n return null;\n }\n\n public get orbTransform(): string {\n if (\n !this.currentTourStep.orientation\n || this.currentTourStep.orientation === Orientation.Top\n || this.currentTourStep.orientation === Orientation.Bottom\n || this.currentTourStep.orientation === Orientation.TopLeft\n || this.currentTourStep.orientation === Orientation.BottomLeft\n ) {\n return 'translateY(-50%)';\n }\n\n if (\n this.currentTourStep.orientation === Orientation.TopRight\n || this.currentTourStep.orientation === Orientation.BottomRight\n ) {\n return 'translate(-100%, -50%)';\n }\n\n if (\n this.currentTourStep.orientation === Orientation.Right\n || this.currentTourStep.orientation === Orientation.Left\n ) {\n return 'translate(-50%, -50%)';\n }\n\n return null;\n }\n\n public get overlayTop(): number {\n if (this.selectedElementRect) {\n return this.selectedElementRect.top - this.getHighlightPadding();\n }\n return 0;\n }\n\n public get overlayLeft(): number {\n if (this.selectedElementRect) {\n return this.selectedElementRect.left - this.getHighlightPadding();\n }\n return 0;\n }\n\n public get overlayHeight(): number {\n if (this.selectedElementRect) {\n return this.selectedElementRect.height + (this.getHighlightPadding() * 2);\n }\n return 0;\n }\n\n public get overlayWidth(): number {\n if (this.selectedElementRect) {\n return this.selectedElementRect.width + (this.getHighlightPadding() * 2);\n }\n return 0;\n }\n\n private getHighlightPadding(): number {\n let paddingAdjustment = this.currentTourStep.useHighlightPadding ? this.highlightPadding : 0;\n if (this.currentTourStep.highlightPadding) {\n paddingAdjustment = this.currentTourStep.highlightPadding;\n }\n return paddingAdjustment;\n }\n\n // This calculates a value to add or subtract so the step should not be off screen.\n private getStepScreenAdjustment(): number {\n if (\n this.currentTourStep.orientation === Orientation.Left\n || this.currentTourStep.orientation === Orientation.Right\n ) {\n return 0;\n }\n\n const scrollAdjustment = this.currentTourStep.scrollAdjustment ? this.currentTourStep.scrollAdjustment : 0;\n const tourStepHeight = typeof this.tourStep.nativeElement.getBoundingClientRect === 'function' ? this.tourStep.nativeElement.getBoundingClientRect().height : 0;\n const elementHeight = this.selectedElementRect.height + scrollAdjustment + tourStepHeight;\n\n if ((this.windowRef.nativeWindow.innerHeight - this.topOfPageAdjustment) < elementHeight) {\n return elementHeight - (this.windowRef.nativeWindow.innerHeight - this.topOfPageAdjustment);\n }\n return 0;\n }\n}\n","<div *ngIf=\"currentTourStep && selectedElementRect && isOrbShowing\" (mouseenter)=\"handleOrb()\"\n class=\"tour-orb tour-{{ currentTourStep.orientation }}\" [style.top.px]=\"orbTopPosition\"\n [style.left.px]=\"orbLeftPosition\" [style.transform]=\"orbTransform\">\n <div class=\"tour-orb-ring\"></div>\n</div>\n<div *ngIf=\"currentTourStep && !isOrbShowing\">\n <div class=\"guided-tour-user-input-mask\" (click)=\"backdropClick($event)\"></div>\n <div class=\"\" [attr.class]=\"'guided-tour-spotlight-overlay ' + currentTourStep?.class\" [style.top.px]=\"overlayTop\"\n [style.left.px]=\"overlayLeft\" [style.height.px]=\"overlayHeight\" [style.width.px]=\"overlayWidth\">\n </div>\n</div>\n<div *ngIf=\"currentTourStep && !isOrbShowing\">\n <div #tourStep *ngIf=\"currentTourStep\"\n class=\"tour-step tour-{{ currentTourStep.orientation}} {{currentTourStep?.containerClass}}\" [ngClass]=\"{\n 'page-tour-step': !currentTourStep.selector,\n 'right-panel': currentTourStep.connectorDirection == 'right',\n 'left-panel': currentTourStep.connectorDirection == 'left',\n 'bottom-panel': currentTourStep.connectorDirection == 'bottom',\n 'top-panel': currentTourStep.connectorDirection == 'top'\n }\" [style.top.px]=\"(currentTourStep.selector && selectedElementRect ? topPosition : null)\"\n [style.left.px]=\"(currentTourStep.selector && selectedElementRect ? leftPosition : null)\"\n [style.width.px]=\"(currentTourStep.selector && selectedElementRect ? calculatedTourStepWidth : null)\"\n [style.transform]=\"(currentTourStep.selector && selectedElementRect ? transform : null)\">\n\n <div *ngIf=\"currentTourStep.isMobile && currentTourStep.connectorDirection == 'bottom'\" class=\"tour-buttons tour-button-container\">\n <div class=\"tour-actions-button-container\">\n <button *ngIf=\"!guidedTourService.onFirstStep && !guidedTourService.onResizeMessage\"\n [attr.class]=\"currentTourStep?.backBtnClass + ' back-button'\" (click)=\"guidedTourService.backStep()\">\n {{ backText }}\n </button>\n </div>\n <button *ngIf=\"!guidedTourService.onLastStep && !guidedTourService.onResizeMessage\" class=\"next-button\"\n (click)=\"guidedTourService.nextStep()\">\n {{ nextText }}\n <ng-container *ngIf=\"progressIndicatorLocation === progressIndicatorLocations.InsideNextButton\">\n <ng-container *ngTemplateOutlet=\"progress\"></ng-container>\n </ng-container>\n </button>\n <button *ngIf=\"guidedTourService.onLastStep\" [attr.class]=\"currentTourStep?.nextBtnClass + ' next-button'\"\n (click)=\"guidedTourService.nextStep()\">\n {{ doneText }}\n </button>\n <button *ngIf=\"guidedTourService.onResizeMessage\" class=\"next-button\" (click)=\"guidedTourService.resetTour()\">\n {{ closeText }}\n </button>\n\n </div>\n\n <div *ngIf=\"currentTourStep.selector\" class=\"tour-arrow\"></div>\n <div class=\"tour-block\">\n <div class=\"arrow\" [ngClass]=\"{\n 'right-connector': (currentTourStep.selector && currentTourStep.connectorDirection == 'right'),\n 'left-connector': (currentTourStep.selector && currentTourStep.connectorDirection == 'left'),\n 'bottom-connector': (currentTourStep.selector && currentTourStep.connectorDirection == 'bottom'),\n 'top-connector': (currentTourStep.selector && currentTourStep.connectorDirection == 'top')\n }\">\n <div class=\"circle\"></div>\n <div class=\"circle-start-dot\"></div>\n <div class=\"triangle\"></div>\n </div>\n\n <div *ngIf=\"progressIndicatorLocation === progressIndicatorLocations.TopOfTourBlock\n && !guidedTourService.onResizeMessage\" class=\"tour-progress-indicator\">\n <ng-container *ngTemplateOutlet=\"progress\"></ng-container>\n </div>\n <div class=\"tour-image\" *ngIf=\"currentTourStep.icon && currentTourStep.selector\">\n <mat-icon>{{currentTourStep.icon}}</mat-icon>\n </div>\n <h3 class=\"tour-title\" *ngIf=\"currentTourStep.title && currentTourStep.selector\">\n {{ currentTourStep.title }}\n </h3>\n <h2 class=\"tour-title\" *ngIf=\"currentTourStep.title && !currentTourStep.selector\">\n {{ currentTourStep.title }}\n </h2>\n <div class=\"tour-content\" [innerHTML]=\"currentTourStep.content\"></div>\n <div *ngIf=\"!currentTourStep.isMobile\" class=\"tour-buttons tour-button-container\">\n <!-- <div class=\"tour-skip-container\">\n <button *ngIf=\"!guidedTourService.onResizeMessage\"\n (click)=\"guidedTourService.skipTour()\"\n [attr.class]=\"currentTourStep?.skipBtnClass + ' skip-button link-button'\">\n {{ skipText }}\n </button>\n </div> -->\n <div class=\"tour-actions-button-container\">\n <button *ngIf=\"!guidedTourService.onFirstStep && !guidedTourService.onResizeMessage\"\n [attr.class]=\"currentTourStep?.backBtnClass + ' back-button'\" (click)=\"guidedTourService.backStep()\">\n {{ backText }}\n </button>\n </div>\n <button *ngIf=\"!guidedTourService.onLastStep && !guidedTourService.onResizeMessage\" class=\"next-button\"\n (click)=\"guidedTourService.nextStep()\">\n {{ nextText }}\n <ng-container *ngIf=\"progressIndicatorLocation === progressIndicatorLocations.InsideNextButton\">\n <ng-container *ngTemplateOutlet=\"progress\"></ng-container>\n </ng-container>\n </button>\n <button *ngIf=\"guidedTourService.onLastStep\" [attr.class]=\"currentTourStep?.nextBtnClass + ' next-button'\"\n (click)=\"guidedTourService.nextStep()\">\n {{ doneText }}\n </button>\n <button *ngIf=\"guidedTourService.onResizeMessage\" class=\"next-button\" (click)=\"guidedTourService.resetTour()\">\n {{ closeText }}\n </button>\n\n </div>\n\n\n <div class=\"progress-container\">\n <ng-container *ngIf=\"progressIndicatorLocation === progressIndicatorLocations.Dots\">\n <ng-container *ngTemplateOutlet=\"progress\"></ng-container>\n </ng-container>\n </div>\n\n </div>\n <div *ngIf=\"currentTourStep.isMobile && currentTourStep.connectorDirection != 'bottom'\" class=\"tour-buttons tour-button-container\">\n <div class=\"tour-actions-button-container\">\n <button *ngIf=\"!guidedTourService.onFirstStep && !guidedTourService.onResizeMessage\"\n [attr.class]=\"currentTourStep?.backBtnClass + ' back-button'\" (click)=\"guidedTourService.backStep()\">\n {{ backText }}\n </button>\n </div>\n <button *ngIf=\"!guidedTourService.onLastStep && !guidedTourService.onResizeMessage\" class=\"next-button\"\n (click)=\"guidedTourService.nextStep()\">\n {{ nextText }}\n <ng-container *ngIf=\"progressIndicatorLocation === progressIndicatorLocations.InsideNextButton\">\n <ng-container *ngTemplateOutlet=\"progress\"></ng-container>\n </ng-container>\n </button>\n <button *ngIf=\"guidedTourService.onLastStep\" [attr.class]=\"currentTourStep?.nextBtnClass + ' next-button'\"\n (click)=\"guidedTourService.nextStep()\">\n {{ doneText }}\n </button>\n <button *ngIf=\"guidedTourService.onResizeMessage\" class=\"next-button\" (click)=\"guidedTourService.resetTour()\">\n {{ closeText }}\n </button>\n\n </div>\n </div>\n <ng-template #progress>\n <ng-container *ngTemplateOutlet=\"\n progressIndicator || defaultProgressIndicator; \n context: { currentStepNumber: guidedTourService.currentTourStepDisplay, totalSteps: guidedTourService.currentTourStepCount }\n \"></ng-container>\n </ng-template>\n <ng-template #defaultProgressIndicator let-currentStepNumber=\"currentStepNumber\" let-totalSteps=\"totalSteps\">\n <!-- <ng-container *ngIf=\"progressIndicatorLocation === progressIndicatorLocations.InsideNextButton\"> </ng-container>{{ currentStepNumber }}/{{ totalSteps }} -->\n <ng-container *ngIf=\"progressIndicatorLocation === progressIndicatorLocations.Dots\">\n <div class=\"pagination\">\n <li class=\"nav-dots\">\n <ng-container *ngFor=\"let dot of [].constructor(totalSteps); first as isFirst; index as i\">\n <label [ngClass]=\"(currentStepNumber == (i+1)) ? 'nav-dot-active': ''\" class=\"nav-dot\"\n id=\"img-dot-+{{i}}+{{currentStepNumber}}\"></label>\n </ng-container>\n </li>\n </div>\n </ng-container>\n </ng-template>","import { GuidedTourService } from './guided-tour.service';\nimport { GuidedTourComponent } from './guided-tour.component';\nimport { NgModule, ErrorHandler } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { WindowRefService } from './windowref.service';\nimport { MatIconModule } from '@angular/material/icon';\n\n@NgModule({\n declarations: [GuidedTourComponent],\n imports: [CommonModule, MatIconModule],\n providers: [WindowRefService],\n exports: [GuidedTourComponent]\n})\nexport class GuidedTourModule {\n public static forRoot(): any {\n return {\n ngModule: GuidedTourModule,\n providers: [ErrorHandler, GuidedTourService],\n };\n }\n}\n","/*\n * Public API Surface of ngx-guided-tour\n */\n\nexport * from './lib/guided-tour.module';\nexport * from './lib/guided-tour.component';\nexport * from './lib/guided-tour.service';\nexport * from './lib/guided-tour.constants';\nexport * from './lib/windowref.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
Binary file
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { ErrorHandler, AfterViewInit, OnDestroy, TemplateRef, ElementRef } from '@angular/core';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
import * as i2 from '@angular/common';
|
|
5
|
+
import * as i3 from '@angular/material/icon';
|
|
6
|
+
|
|
7
|
+
interface TourStep {
|
|
8
|
+
icon?: string;
|
|
9
|
+
connectorDirection?: string;
|
|
10
|
+
nextBtnClass?: string;
|
|
11
|
+
backBtnClass?: string;
|
|
12
|
+
skipBtnClass?: string;
|
|
13
|
+
containerClass?: string;
|
|
14
|
+
isMobile?: boolean;
|
|
15
|
+
class?: string;
|
|
16
|
+
/** Selector for element that will be highlighted */
|
|
17
|
+
selector?: string;
|
|
18
|
+
/** Tour title text */
|
|
19
|
+
title?: string;
|
|
20
|
+
/** Tour step text */
|
|
21
|
+
content: string;
|
|
22
|
+
/** Where the tour step will appear next to the selected element */
|
|
23
|
+
orientation?: Orientation | OrientationConfiguration[];
|
|
24
|
+
/** Action that happens when the step is opened */
|
|
25
|
+
action?: () => void;
|
|
26
|
+
/** Action that happens when the step is closed */
|
|
27
|
+
closeAction?: () => void;
|
|
28
|
+
/** Skips this step, this is so you do not have create multiple tour configurations based on user settings/configuration */
|
|
29
|
+
skipStep?: boolean;
|
|
30
|
+
/** Adds some padding for things like sticky headers when scrolling to an element */
|
|
31
|
+
scrollAdjustment?: number;
|
|
32
|
+
/** Adds default padding around tour highlighting. Does not need to be true for highlightPadding to work */
|
|
33
|
+
useHighlightPadding?: boolean;
|
|
34
|
+
/** Adds padding around tour highlighting in pixels, this overwrites the default for this step. Is not dependent on useHighlightPadding being true */
|
|
35
|
+
highlightPadding?: number;
|
|
36
|
+
}
|
|
37
|
+
interface GuidedTour {
|
|
38
|
+
/** Identifier for tour */
|
|
39
|
+
tourId: string;
|
|
40
|
+
/** Use orb to start tour */
|
|
41
|
+
useOrb?: boolean;
|
|
42
|
+
/** Steps fo the tour */
|
|
43
|
+
steps: TourStep[];
|
|
44
|
+
nextCallback?: (currentStep: number, stepObject: object) => void;
|
|
45
|
+
prevCallback?: (currentStep: number, stepObject: object) => void;
|
|
46
|
+
/** Function will be called when tour is skipped */
|
|
47
|
+
skipCallback?: (stepSkippedOn: number) => void;
|
|
48
|
+
/** Function will be called when tour is completed */
|
|
49
|
+
completeCallback?: () => void;
|
|
50
|
+
/** Minimum size of screen in pixels before the tour is run, if the tour is resized below this value the user will be told to resize */
|
|
51
|
+
minimumScreenSize?: number;
|
|
52
|
+
/** Dialog shown if the window width is smaller than the defined minimum screen size. */
|
|
53
|
+
resizeDialog?: {
|
|
54
|
+
/** Resize dialog title text */
|
|
55
|
+
title?: string;
|
|
56
|
+
/** Resize dialog text */
|
|
57
|
+
content: string;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Prevents the tour from advancing by clicking the backdrop.
|
|
61
|
+
* This should only be set if you are completely sure your tour is displaying correctly on all screen sizes otherwise a user can get stuck.
|
|
62
|
+
*/
|
|
63
|
+
preventBackdropFromAdvancing?: boolean;
|
|
64
|
+
}
|
|
65
|
+
interface OrientationConfiguration {
|
|
66
|
+
/** Where the tour step will appear next to the selected element */
|
|
67
|
+
orientationDirection: Orientation;
|
|
68
|
+
/** When this orientation configuration starts in pixels */
|
|
69
|
+
maximumSize?: number;
|
|
70
|
+
}
|
|
71
|
+
declare class Orientation {
|
|
72
|
+
static readonly Bottom = "bottom";
|
|
73
|
+
static readonly BottomLeft = "bottom-left";
|
|
74
|
+
static readonly BottomRight = "bottom-right";
|
|
75
|
+
static readonly Center = "center";
|
|
76
|
+
static readonly Left = "left";
|
|
77
|
+
static readonly Right = "right";
|
|
78
|
+
static readonly Top = "top";
|
|
79
|
+
static readonly TopLeft = "top-left";
|
|
80
|
+
static readonly TopRight = "top-right";
|
|
81
|
+
}
|
|
82
|
+
declare enum ProgressIndicatorLocation {
|
|
83
|
+
InsideNextButton = "inside-next-button",
|
|
84
|
+
TopOfTourBlock = "top-of-tour-block",
|
|
85
|
+
None = "none",
|
|
86
|
+
Dots = "dots"
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
declare class WindowRefService {
|
|
90
|
+
private readonly isBrowser;
|
|
91
|
+
get nativeWindow(): any;
|
|
92
|
+
constructor(platformId: any);
|
|
93
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WindowRefService, never>;
|
|
94
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<WindowRefService>;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
declare class GuidedTourService {
|
|
98
|
+
errorHandler: ErrorHandler;
|
|
99
|
+
private windowRef;
|
|
100
|
+
private dom;
|
|
101
|
+
guidedTourCurrentStepStream: Observable<TourStep>;
|
|
102
|
+
guidedTourOrbShowingStream: Observable<boolean>;
|
|
103
|
+
private _guidedTourCurrentStepSubject;
|
|
104
|
+
private _guidedTourOrbShowingSubject;
|
|
105
|
+
private _currentTourStepIndex;
|
|
106
|
+
private _currentTour;
|
|
107
|
+
private _onFirstStep;
|
|
108
|
+
private _onLastStep;
|
|
109
|
+
private _onResizeMessage;
|
|
110
|
+
constructor(errorHandler: ErrorHandler, windowRef: WindowRefService, dom: any);
|
|
111
|
+
nextStep(): void;
|
|
112
|
+
backStep(): void;
|
|
113
|
+
skipTour(): void;
|
|
114
|
+
resetTour(): void;
|
|
115
|
+
startTour(tour: GuidedTour): void;
|
|
116
|
+
activateOrb(): void;
|
|
117
|
+
private _setFirstAndLast;
|
|
118
|
+
private _checkSelectorValidity;
|
|
119
|
+
get onLastStep(): boolean;
|
|
120
|
+
get onFirstStep(): boolean;
|
|
121
|
+
get onResizeMessage(): boolean;
|
|
122
|
+
get currentTourStepDisplay(): number;
|
|
123
|
+
get currentTourStepCount(): number;
|
|
124
|
+
get preventBackdropFromAdvancing(): boolean;
|
|
125
|
+
private getPreparedTourStep;
|
|
126
|
+
private setTourOrientation;
|
|
127
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<GuidedTourService, never>;
|
|
128
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<GuidedTourService>;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
declare class GuidedTourComponent implements AfterViewInit, OnDestroy {
|
|
132
|
+
guidedTourService: GuidedTourService;
|
|
133
|
+
private windowRef;
|
|
134
|
+
private dom;
|
|
135
|
+
topOfPageAdjustment?: number;
|
|
136
|
+
tourStepWidth?: number;
|
|
137
|
+
minimalTourStepWidth?: number;
|
|
138
|
+
skipText?: string;
|
|
139
|
+
nextText?: string;
|
|
140
|
+
doneText?: string;
|
|
141
|
+
closeText?: string;
|
|
142
|
+
backText?: string;
|
|
143
|
+
progressIndicatorLocation?: ProgressIndicatorLocation;
|
|
144
|
+
progressIndicator?: TemplateRef<any>;
|
|
145
|
+
tourStep: ElementRef;
|
|
146
|
+
highlightPadding: number;
|
|
147
|
+
currentTourStep: TourStep;
|
|
148
|
+
selectedElementRect: DOMRect;
|
|
149
|
+
isOrbShowing: boolean;
|
|
150
|
+
progressIndicatorLocations: typeof ProgressIndicatorLocation;
|
|
151
|
+
private resizeSubscription;
|
|
152
|
+
private scrollSubscription;
|
|
153
|
+
constructor(guidedTourService: GuidedTourService, windowRef: WindowRefService, dom: any);
|
|
154
|
+
private get maxWidthAdjustmentForTourStep();
|
|
155
|
+
private get widthAdjustmentForScreenBound();
|
|
156
|
+
get calculatedTourStepWidth(): number;
|
|
157
|
+
ngAfterViewInit(): void;
|
|
158
|
+
ngOnDestroy(): void;
|
|
159
|
+
scrollToAndSetElement(): void;
|
|
160
|
+
handleOrb(): void;
|
|
161
|
+
private isTourOnScreen;
|
|
162
|
+
private elementInViewport;
|
|
163
|
+
backdropClick(event: Event): void;
|
|
164
|
+
updateStepLocation(): void;
|
|
165
|
+
private isBottom;
|
|
166
|
+
get topPosition(): number;
|
|
167
|
+
get orbTopPosition(): number;
|
|
168
|
+
private get calculatedLeftPosition();
|
|
169
|
+
get leftPosition(): number;
|
|
170
|
+
get orbLeftPosition(): number;
|
|
171
|
+
get transform(): string;
|
|
172
|
+
get orbTransform(): string;
|
|
173
|
+
get overlayTop(): number;
|
|
174
|
+
get overlayLeft(): number;
|
|
175
|
+
get overlayHeight(): number;
|
|
176
|
+
get overlayWidth(): number;
|
|
177
|
+
private getHighlightPadding;
|
|
178
|
+
private getStepScreenAdjustment;
|
|
179
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<GuidedTourComponent, never>;
|
|
180
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<GuidedTourComponent, "ngx-guided-tour", never, { "topOfPageAdjustment": { "alias": "topOfPageAdjustment"; "required": false; }; "tourStepWidth": { "alias": "tourStepWidth"; "required": false; }; "minimalTourStepWidth": { "alias": "minimalTourStepWidth"; "required": false; }; "skipText": { "alias": "skipText"; "required": false; }; "nextText": { "alias": "nextText"; "required": false; }; "doneText": { "alias": "doneText"; "required": false; }; "closeText": { "alias": "closeText"; "required": false; }; "backText": { "alias": "backText"; "required": false; }; "progressIndicatorLocation": { "alias": "progressIndicatorLocation"; "required": false; }; "progressIndicator": { "alias": "progressIndicator"; "required": false; }; }, {}, never, never, false, never>;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
declare class GuidedTourModule {
|
|
184
|
+
static forRoot(): any;
|
|
185
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<GuidedTourModule, never>;
|
|
186
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<GuidedTourModule, [typeof GuidedTourComponent], [typeof i2.CommonModule, typeof i3.MatIconModule], [typeof GuidedTourComponent]>;
|
|
187
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<GuidedTourModule>;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
export { GuidedTourComponent, GuidedTourModule, GuidedTourService, Orientation, ProgressIndicatorLocation, WindowRefService };
|
|
191
|
+
export type { GuidedTour, OrientationConfiguration, TourStep };
|
package/package.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "igot-cb-tour-guide",
|
|
3
|
+
"version": "0.0.1-ang-13-17",
|
|
4
|
+
"description": "Guided tour for your Angular6+ applications.",
|
|
5
|
+
"peerDependencies": {
|
|
6
|
+
"@angular/common": "20.3.16",
|
|
7
|
+
"@angular/core": "20.3.16",
|
|
8
|
+
"bootstrap": "^4.3.1"
|
|
9
|
+
},
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "git+https://github.com/rajeshkumaravel/ngx-cb-tour-guide.git"
|
|
13
|
+
},
|
|
14
|
+
"keywords": [
|
|
15
|
+
"guided",
|
|
16
|
+
"walkthrough",
|
|
17
|
+
"tour",
|
|
18
|
+
"angular",
|
|
19
|
+
"angular6",
|
|
20
|
+
"angular7",
|
|
21
|
+
"SASS",
|
|
22
|
+
"rxjs",
|
|
23
|
+
"customizable",
|
|
24
|
+
"ng",
|
|
25
|
+
"ngx",
|
|
26
|
+
"ng2"
|
|
27
|
+
],
|
|
28
|
+
"author": {
|
|
29
|
+
"name": "lsqlabs"
|
|
30
|
+
},
|
|
31
|
+
"license": "MIT",
|
|
32
|
+
"bugs": {
|
|
33
|
+
"url": "https://github.com/rajeshkumaravel/ngx-cb-tour-guide/issues"
|
|
34
|
+
},
|
|
35
|
+
"homepage": "https://github.com/rajeshkumaravel/ngx-cb-tour-guide#readme",
|
|
36
|
+
"module": "fesm2022/igot-cb-tour-guide.mjs",
|
|
37
|
+
"typings": "index.d.ts",
|
|
38
|
+
"exports": {
|
|
39
|
+
"./package.json": {
|
|
40
|
+
"default": "./package.json"
|
|
41
|
+
},
|
|
42
|
+
".": {
|
|
43
|
+
"types": "./index.d.ts",
|
|
44
|
+
"default": "./fesm2022/igot-cb-tour-guide.mjs"
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"sideEffects": false,
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"tslib": "^2.3.0"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
$tour-zindex: 1081 !default;
|
|
2
|
+
$tour-step-color: #ffffff !default;
|
|
3
|
+
$tour-text-color: #231f1f !default;
|
|
4
|
+
$tour-next-button-color: #007bff !default;
|
|
5
|
+
$tour-next-button-hover: #0069d9 !default;
|
|
6
|
+
$tour-back-button-color: #007bff !default;
|
|
7
|
+
$tour-back-text-color: #ffffff !default;
|
|
8
|
+
$tour-next-text-color: #ffffff !default;
|
|
9
|
+
$tour-next-text-hover: #ffffff !default;
|
|
10
|
+
$tour-skip-link-color: #5e5e5e !default;
|
|
11
|
+
$tour-orb-color: #625aff !default;
|
|
12
|
+
$tour-shadow-color: #4c4c4c !default;
|
|
13
|
+
|
|
14
|
+
body.tour-open {
|
|
15
|
+
overflow: hidden;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
@mixin tour-triangle($direction, $color: currentColor, $size: 1rem) {
|
|
19
|
+
|
|
20
|
+
@if not index(top right bottom left, $direction) {
|
|
21
|
+
@error 'Direction must be either `top`, `right`, `bottom` or `left`.';
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
$opposite-direction: top;
|
|
25
|
+
|
|
26
|
+
@if $direction==top {
|
|
27
|
+
$opposite-direction: bottom;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@if $direction==bottom {
|
|
31
|
+
$opposite-direction: top;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
@if $direction==right {
|
|
35
|
+
$opposite-direction: left;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
@if $direction==left {
|
|
39
|
+
$opposite-direction: right;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
width: 0;
|
|
43
|
+
height: 0;
|
|
44
|
+
content: '';
|
|
45
|
+
z-index: 2;
|
|
46
|
+
border-#{$opposite-direction}: $size solid $color;
|
|
47
|
+
$perpendicular-borders: $size solid transparent;
|
|
48
|
+
@if $direction==top or $direction==bottom {
|
|
49
|
+
border-left: $perpendicular-borders;
|
|
50
|
+
border-right: $perpendicular-borders;
|
|
51
|
+
}
|
|
52
|
+
@else if $direction==right or $direction==left {
|
|
53
|
+
border-bottom: $perpendicular-borders;
|
|
54
|
+
border-top: $perpendicular-borders;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
ngx-guided-tour {
|
|
59
|
+
.guided-tour-user-input-mask {
|
|
60
|
+
z-index: $tour-zindex;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.guided-tour-spotlight-overlay {
|
|
64
|
+
z-index: $tour-zindex + 1;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.tour-orb {
|
|
68
|
+
z-index: $tour-zindex - 2;
|
|
69
|
+
background-color: $tour-orb-color;
|
|
70
|
+
box-shadow: 0 0 0.3rem 0.1rem $tour-orb-color;
|
|
71
|
+
|
|
72
|
+
.tour-orb-ring {
|
|
73
|
+
&::after {
|
|
74
|
+
border: 1rem solid $tour-orb-color;
|
|
75
|
+
box-shadow: 0 0 0.1rem 0.1rem $tour-orb-color;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.tour-step {
|
|
81
|
+
z-index: $tour-zindex + 2;
|
|
82
|
+
|
|
83
|
+
&.tour-bottom, &.tour-bottom-right, &.tour-bottom-left {
|
|
84
|
+
.tour-arrow::before {
|
|
85
|
+
@include tour-triangle(top, $tour-step-color);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
&.tour-top, &.tour-top-right, &.tour-top-left {
|
|
90
|
+
.tour-arrow::before {
|
|
91
|
+
@include tour-triangle(bottom, $tour-step-color);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
&.tour-left {
|
|
96
|
+
.tour-arrow::before {
|
|
97
|
+
@include tour-triangle(right, $tour-step-color);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
&.tour-right {
|
|
102
|
+
.tour-arrow::before {
|
|
103
|
+
@include tour-triangle(left, $tour-step-color);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.tour-block {
|
|
108
|
+
color: $tour-text-color;
|
|
109
|
+
background-color: $tour-step-color;
|
|
110
|
+
box-shadow: 0 0.4rem 0.6rem $tour-shadow-color;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.tour-buttons {
|
|
114
|
+
button.skip-button {
|
|
115
|
+
color: $tour-skip-link-color;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.back-button {
|
|
119
|
+
background-color: $tour-back-button-color;
|
|
120
|
+
color: $tour-back-text-color;
|
|
121
|
+
margin-right: 10px;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.next-button {
|
|
125
|
+
background-color: $tour-next-button-color;
|
|
126
|
+
color: $tour-next-text-color;
|
|
127
|
+
&:hover {
|
|
128
|
+
background-color: $tour-next-button-hover;
|
|
129
|
+
color: $tour-next-text-hover;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
.tour-button-container {
|
|
134
|
+
display: flex;
|
|
135
|
+
flex-direction: row;
|
|
136
|
+
justify-content: space-between;
|
|
137
|
+
align-items: center;
|
|
138
|
+
}
|
|
139
|
+
.tour-image {
|
|
140
|
+
text-align: center;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
}
|