ng-devui
Version:
DevUI components based on Angular
122 lines • 16.7 kB
JavaScript
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==