UNPKG

ng-devui

Version:

DevUI components based on Angular

122 lines 16.7 kB
import { ComponentFactoryResolver, Injectable } from '@angular/core'; import { OverlayContainerRef } from 'ng-devui/overlay-container'; import { UserGuideCoreService } from './user-guide-core.service'; import { UserGuideUIComponent } from './user-guide-ui.component'; import * as i0 from "@angular/core"; import * as i1 from "ng-devui/overlay-container"; import * as i2 from "./user-guide-core.service"; export class UserGuideService { constructor(componentFactoryResolver, overlayContainerRef, userGuideCoreService) { this.componentFactoryResolver = componentFactoryResolver; this.overlayContainerRef = overlayContainerRef; this.userGuideCoreService = userGuideCoreService; } setSteps(steps) { this.firstOpenShow = localStorage.getItem('devui-user-guide-first-open-show') || 'true'; this.steps = steps; setTimeout(() => { for (let i = 0; i < this.steps.length; i++) { if (this.steps[i]?.defaultStart === true && this.firstOpenShow === 'true') { this.start(i); try { localStorage.setItem('devui-user-guide-first-open-show', 'false'); } catch (error) { console.error(error); } break; } } }, 0); } start(index) { this.userGuideCoreService.setSteps(this.steps[index].detail); if (this.steps[index].onExit) { this.userGuideCoreService.setExitFunction(this.steps[index].onExit); } this.userGuideCoreService.isFinished.subscribe((item) => { this.steps[index].isFinished = item; if (item === true) { if (this.modalRef) { this.modalRef.hostView.destroy(); } } }); this.userGuideCoreService.start(); this.createGuide(index); this.userGuideCoreService.next(); this.currentTutorial = index; try { localStorage.setItem('devui-user-guide-last-tutorial', index.toString()); } catch (error) { console.error(error); } } goStep(index) { let realStep = index; for (let i = 0; i < index; i++) { if (this.steps[this.currentTutorial].detail[i].type === 'interactable' && this.steps[this.currentTutorial].detail[i].eventType === 'clickable') { realStep = i; break; } } this.userGuideCoreService.goStep(realStep); } createGuide(index) { this.modalRef = this.overlayContainerRef.createComponent(this.componentFactoryResolver.resolveComponentFactory(UserGuideUIComponent)); this.modalRef.instance.showDots = this.steps[index]?.showDots; this.modalRef.instance.maxContentWidth = this.steps[index]?.maxContentWidth ? this.steps[index]?.maxContentWidth : 320; this.modalRef.instance.isCover = this.steps[index]?.isCover === undefined ? true : this.steps[index]?.isCover; this.modalRef.instance.extraConfig = this.steps[index]?.extraConfig; this.modalRef.instance.close = () => { if (this.modalRef) { this.modalRef.hostView.destroy(); } }; const panel = document.querySelector('.user-guide-panel'); panel.style.visibility = 'hidden'; } showDot(item) { const dotAttachElement = document.getElementById(item) || document.querySelector(item); const dot = document.createElement('span'); dot.className = 'devui-userguide-dot'; dot.style.cssText = ` width: 6px; height: 6px; border-radius: 100%; position: absolute; top: 0; right: 0; transform: translate(50%,-50%); background: var(--devui-brand); `; dotAttachElement.append(dot); } removeDot() { const dot = document.querySelector('.devui-userguide-dot'); dot.remove(); } updateCurrentStepElement() { this.userGuideCoreService.updateCurrentStepElement(); } getCurrentStep() { return this.userGuideCoreService.getCurrentStep(); } getCurrentDirection() { return this.userGuideCoreService.getCurrentDirection(); } exit() { this.userGuideCoreService.exit(); if (this.modalRef) { this.modalRef.instance.close(); } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserGuideService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i1.OverlayContainerRef }, { token: i2.UserGuideCoreService }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserGuideService }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserGuideService, decorators: [{ type: Injectable }], ctorParameters: () => [{ type: i0.ComponentFactoryResolver }, { type: i1.OverlayContainerRef }, { type: i2.UserGuideCoreService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ndWlkZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZGV2dWkvdXNlci1ndWlkZS91c2VyLWd1aWRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHdCQUF3QixFQUNWLFVBQVUsRUFDekIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7QUFHakUsTUFBTSxPQUFPLGdCQUFnQjtJQU8zQixZQUFvQix3QkFBa0QsRUFDbEQsbUJBQXdDLEVBQ3hDLG9CQUEwQztRQUYxQyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtJQUFJLENBQUM7SUFFbkUsUUFBUSxDQUFDLEtBQUs7UUFDWixJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsa0NBQWtDLENBQUMsSUFBSSxNQUFNLENBQUM7UUFFeEYsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUMzQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLE1BQU0sRUFBRSxDQUFDO29CQUMxRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxD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UUFDM0MsR0FBRyxDQUFDLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQztRQUN0QyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRzs7Ozs7Ozs7O0tBU25CLENBQUM7UUFDRixnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELFNBQVM7UUFDUCxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDM0QsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVELHdCQUF3QjtRQUN0QixJQUFJLENBQUMsb0JBQW9CLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFFRCxtQkFBbUI7UUFDakIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUN6RCxDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNqQyxDQUFDO0lBQ0gsQ0FBQzsrR0FoSVUsZ0JBQWdCO21IQUFoQixnQkFBZ0I7OzRGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIENvbXBvbmVudFJlZiwgSW5qZWN0YWJsZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXlDb250YWluZXJSZWYgfSBmcm9tICduZy1kZXZ1aS9vdmVybGF5LWNvbnRhaW5lcic7XG5pbXBvcnQgeyBVc2VyR3VpZGVDb3JlU2VydmljZSB9IGZyb20gJy4vdXNlci1ndWlkZS1jb3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlckd1aWRlVUlDb21wb25lbnQgfSBmcm9tICcuL3VzZXItZ3VpZGUtdWkuY29tcG9uZW50JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFVzZXJHdWlkZVNlcnZpY2Uge1xuICBwcml2YXRlIHN0ZXBzO1xuICBwcml2YXRlIGN1cnJlbnRUdXRvcmlhbDogbnVtYmVyO1xuICBwcml2YXRlIGZpcnN0T3BlblNob3c6IHN0cmluZztcblxuICBtb2RhbFJlZjogQ29tcG9uZW50UmVmPFVzZXJHdWlkZVVJQ29tcG9uZW50PjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgICAgICAgICBwcml2YXRlIG92ZXJsYXlDb250YWluZXJSZWY6IE92ZXJsYXlDb250YWluZXJSZWYsXG4gICAgICAgICAgICAgIHByaXZhdGUgdXNlckd1aWRlQ29yZVNlcnZpY2U6IFVzZXJHdWlkZUNvcmVTZXJ2aWNlKSB7IH1cblxuICBzZXRTdGVwcyhzdGVwcykge1xuICAgIHRoaXMuZmlyc3RPcGVuU2hvdyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkZXZ1aS11c2VyLWd1aWRlLWZpcnN0LW9wZW4tc2hvdycpIHx8ICd0cnVlJztcblxuICAgIHRoaXMuc3RlcHMgPSBzdGVwcztcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0ZXBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0aGlzLnN0ZXBzW2ldPy5kZWZhdWx0U3RhcnQgPT09IHRydWUgJiYgdGhpcy5maXJzdE9wZW5TaG93ID09PSAndHJ1ZScpIHtcbiAgICAgICAgICB0aGlzLnN0YXJ0KGkpO1xuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdkZXZ1aS11c2VyLWd1aWRlLWZpcnN0LW9wZW4tc2hvdycsICdmYWxzZScpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCAwKTtcbiAgfVxuXG4gIHN0YXJ0KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnVzZXJHdWlkZUNvcmVTZXJ2aWNlLnNldFN0ZXBzKHRoaXMuc3RlcHNbaW5kZXhdLmRldGFpbCk7XG4gICAgaWYgKHRoaXMuc3RlcHNbaW5kZXhdLm9uRXhpdCkge1xuICAgICAgdGhpcy51c2VyR3VpZGVDb3JlU2VydmljZS5zZXRFeGl0RnVuY3Rpb24odGhpcy5zdGVwc1tpbmRleF0ub25FeGl0KTtcbiAgICB9XG4gICAgdGhpcy51c2VyR3VpZGVDb3JlU2VydmljZS5pc0ZpbmlzaGVkLnN1YnNjcmliZSgoaXRlbSkgPT4ge1xuICAgICAgdGhpcy5zdGVwc1tpbmRleF0uaXNGaW5pc2hlZCA9IGl0ZW07XG4gICAgICBpZiAoaXRlbSA9PT0gdHJ1ZSkge1xuICAgICAgICBpZiAodGhpcy5tb2RhbFJlZikge1xuICAgICAgICAgIHRoaXMubW9kYWxSZWYuaG9zdFZpZXcuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy51c2VyR3VpZGVDb3JlU2VydmljZS5zdGFydCgpO1xuICAgIHRoaXMuY3JlYXRlR3VpZGUoaW5kZXgpO1xuXG4gICAgdGhpcy51c2VyR3VpZGVDb3JlU2VydmljZS5uZXh0KCk7XG5cbiAgICB0aGlzLmN1cnJlbnRUdXRvcmlhbCA9IGluZGV4O1xuXG4gICAgdHJ5IHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdkZXZ1aS11c2VyLWd1aWRlLWxhc3QtdHV0b3JpYWwnLCBpbmRleC50b1N0cmluZygpKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgZ29TdGVwKGluZGV4OiBudW1iZXIpIHtcbiAgICBsZXQgcmVhbFN0ZXAgPSBpbmRleDtcbiAgICBmb3IgKGxldCBpID0gMCA7IGkgPCBpbmRleDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5zdGVwc1t0aGlzLmN1cnJlbnRUdXRvcmlhbF0uZGV0YWlsW2ldLnR5cGUgPT09ICdpbnRlcmFjdGFibGUnXG4gICAgICAgICYmIHRoaXMuc3RlcHNbdGhpcy5jdXJyZW50VHV0b3JpYWxdLmRldGFpbFtpXS5ldmVudFR5cGUgPT09ICdjbGlja2FibGUnKSB7XG4gICAgICAgIHJlYWxTdGVwID0gaTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMudXNlckd1aWRlQ29yZVNlcnZpY2UuZ29TdGVwKHJlYWxTdGVwKTtcbiAgfVxuXG4gIGNyZWF0ZUd1aWRlKGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLm1vZGFsUmVmID0gdGhpcy5vdmVybGF5Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChcbiAgICAgIHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFVzZXJHdWlkZVVJQ29tcG9uZW50KVxuICAgICk7XG4gICAgdGhpcy5tb2RhbFJlZi5pbnN0YW5jZS5zaG93RG90cyA9IHRoaXMuc3RlcHNbaW5kZXhdPy5zaG93RG90cztcbiAgICB0aGlzLm1vZGFsUmVmLmluc3RhbmNlLm1heENvbnRlbnRXaWR0aCA9IHRoaXMuc3RlcHNbaW5kZXhdPy5tYXhDb250ZW50V2lkdGggPyB0aGlzLnN0ZXBzW2luZGV4XT8ubWF4Q29udGVudFdpZHRoIDogMzIwO1xuICAgIHRoaXMubW9kYWxSZWYuaW5zdGFuY2UuaXNDb3ZlciA9IHRoaXMuc3RlcHNbaW5kZXhdPy5pc0NvdmVyID09PSB1bmRlZmluZWQgPyB0cnVlOiB0aGlzLnN0ZXBzW2luZGV4XT8uaXNDb3ZlcjtcbiAgICB0aGlzLm1vZGFsUmVmLmluc3RhbmNlLmV4dHJhQ29uZmlnID0gdGhpcy5zdGVwc1tpbmRleF0/LmV4dHJhQ29uZmlnO1xuICAgIHRoaXMubW9kYWxSZWYuaW5zdGFuY2UuY2xvc2UgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5tb2RhbFJlZikge1xuICAgICAgICB0aGlzLm1vZGFsUmVmLmhvc3RWaWV3LmRlc3Ryb3koKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgcGFuZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcudXNlci1ndWlkZS1wYW5lbCcpIGFzIEhUTUxFbGVtZW50O1xuICAgIHBhbmVsLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgfVxuXG4gIHNob3dEb3QoaXRlbTogc3RyaW5nKSB7XG4gICAgY29uc3QgZG90QXR0YWNoRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGl0ZW0pIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoaXRlbSk7XG4gICAgY29uc3QgZG90ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgIGRvdC5jbGFzc05hbWUgPSAnZGV2dWktdXNlcmd1aWRlLWRvdCc7XG4gICAgZG90LnN0eWxlLmNzc1RleHQgPSBgXG4gICAgICB3aWR0aDogNnB4O1xuICAgICAgaGVpZ2h0OiA2cHg7XG4gICAgICBib3JkZXItcmFkaXVzOiAxMDAlO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSg1MCUsLTUwJSk7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kZXZ1aS1icmFuZCk7XG4gICAgYDtcbiAgICBkb3RBdHRhY2hFbGVtZW50LmFwcGVuZChkb3QpO1xuICB9XG5cbiAgcmVtb3ZlRG90KCkge1xuICAgIGNvbnN0IGRvdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5kZXZ1aS11c2VyZ3VpZGUtZG90Jyk7XG4gICAgZG90LnJlbW92ZSgpO1xuICB9XG5cbiAgdXBkYXRlQ3VycmVudFN0ZXBFbGVtZW50KCkge1xuICAgIHRoaXMudXNlckd1aWRlQ29yZVNlcnZpY2UudXBkYXRlQ3VycmVudFN0ZXBFbGVtZW50KCk7XG4gIH1cblxuICBnZXRDdXJyZW50U3RlcCgpIHtcbiAgICByZXR1cm4gdGhpcy51c2VyR3VpZGVDb3JlU2VydmljZS5nZXRDdXJyZW50U3RlcCgpO1xuICB9XG5cbiAgZ2V0Q3VycmVudERpcmVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy51c2VyR3VpZGVDb3JlU2VydmljZS5nZXRDdXJyZW50RGlyZWN0aW9uKCk7XG4gIH1cblxuICBleGl0KCkge1xuICAgIHRoaXMudXNlckd1aWRlQ29yZVNlcnZpY2UuZXhpdCgpO1xuICAgIGlmICh0aGlzLm1vZGFsUmVmKSB7XG4gICAgICB0aGlzLm1vZGFsUmVmLmluc3RhbmNlLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==