0.9.5 • Published 6 years ago

@tk-ng/onboarding v0.9.5

Weekly downloads
1
License
MIT
Repository
-
Last release
6 years ago

Onboarding with ngrx

Setup

Import module, place component in root app, set steps (OnboardingSetSteps(OnboardingItem[]))

Inputs <onboarding>

propertydefault
auditTime number0
margin number10
navigatorMargin number20
navigator ComponentType<any>OnboardingNavigatorComponent

Custom navigator

Make your custom component and use things like below to navigate:

export class OnboardingNavigatorComponent implements OnInit
{
    onboardingData: Observable<OnboardingNavigatorData>;
    
    
    
    constructor( private store: Store<any> )
    {
    }
    
    ngOnInit()
    {
        this.onboardingData = this.store.pipe( select( getOnboardingNavigatorData ) );
    }
    
    next()
    {
        this.store.dispatch( new OnboardingNext );
    }
    
    prev()
    {
        this.store.dispatch( new OnboardingPrevious );
    }
    
    end()
    {
        this.store.dispatch( new OnboardingEnd );
    }
}

OnboardingItem

propertyreqired
content stringyes
selector stringno
title stringno
link stringno
before Functionno
delay numberno

Actions

  • OnboardingSetSteps ( data: OnboardingItem[] )
  • OnboardingSetCurrent ( value: number )
  • OnboardingUpdatePosition
  • OnboardingStart
  • OnboardingEnd
  • OnboardingNext
  • OnboardingPrevious

Required styles

@import '~@angular/cdk/overlay';
@include cdk-overlay();

.onboarding-overlay
{
    z-index          : 1000; // or other value
    position         : fixed;
    background-color : rgba(0, 0, 0, 0.5);
}

Example

import { Component, OnInit } from '@angular/core';
import { Store } from '@ngrx/store';
import { OnboardingItem, OnboardingSetSteps, OnboardingStart } from '@tk-ng/onboarding';



@Component( {
    selector: 'app-root',
    template: `
        <onboarding></onboarding>
        
        <a routerLink="/a" class="btn btn-link">a</a>
        <a routerLink="/b" class="btn btn-link">b</a>
        <hr>
        <button (click)="start()">start</button>
        <div style="margin: 100px; height: 100px; width: 200px; background: antiquewhite" class="item-1">lorem ipsum</div>
        <div style="margin-top: 150px; margin-right: 50px; padding: 20px; height: 100px; width: 200px; background: antiquewhite" class="item-2">lorem ipsum</div>
        
        <router-outlet></router-outlet>
    `,
} )
export class AppComponent implements OnInit
{
    constructor( private store: Store<any> )
    {}
    
    
    
    start()
    {
        this.store.dispatch( new OnboardingStart );
    }
    
    
    
    ngOnInit()
    {
        const steps: OnboardingItem[] = [
            { selector: '.item-1', title: 'title 1', content: 'lorem ipsum', link: '/a' },
            { selector: '.item-2', content: 'lorem ipsum 2', link: '/b', before: () => {console.log( 'step 2' ); } },
            { content: 'lorem ipsum 3', link: '/b', before: () => {console.log( 'step 3' ); } },
        ];
            
        this.store.dispatch( new OnboardingSetSteps( steps ) );
    }
}
0.9.5

6 years ago

0.9.4

6 years ago

0.9.3

6 years ago

0.9.1

6 years ago

0.9.0

6 years ago

0.8.2

6 years ago

0.8.1

6 years ago

0.8.0

6 years ago

0.7.0

6 years ago

0.6.0

6 years ago

0.5.1

6 years ago

0.5.0

6 years ago

0.4.0

6 years ago

0.3.0

6 years ago

0.2.0

6 years ago

0.1.0

6 years ago