npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@kinect-pro/wizard-switch

v0.3.1

Published

This is form elements switch for angular 2 projects

Downloads

101

Readme

Angular2 Wizard Switch

This project for Angular 2 (currently supported version 8) is a cool switch for opening and closing HTML elements such as inputs, textarea, links. Demo project here: Live demo example here.

Features

Support user templates

You can generate html templates to inject it in the switch.

Using font awesome icons as text of the control

You can use icon as text of the control or using simple text.

Make control is disabled or enabled

You have change disabled/enabled control by index, disabled all and enabled all actions.

Width management

You can manage item amd switch width.

Custom styles

You can customize class of the controllers or adding your own class.

Custom animation

You can customize the duration, delay and animation type.

Animation events

You can use start or end animation event.

Installation

Dependencies

For the slider to work correctly, the following dependencies are required:

  • "@fortawesome/angular-fontawesome": "^0.5.0"
  • "@fortawesome/fontawesome-svg-core": "^1.2.22"
  • "@fortawesome/free-solid-svg-icons": "^5.10.2"

How to install

With npm

npm install @kinect-pro/wizard-switch

With yarn

yarn add @kinect-pro/wizard-switch

How to setup

Add WizardSwitchModule and BrowserAnimationsModule to need module

app.module
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { WizardSwitchModule } from '@kinect-pro/wizard-switch';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { AppComponent } from './app.component';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    BrowserAnimationsModule,
    Angular2CarouselModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

Add switch component to need component and create template items.

app.component.html
<kp-wizard-switch>
    <input type="text" [kpItemTemplate]="'login'" [control]="'Login'">
    <input type="text" [kpItemTemplate]="'password'" [control]="'Password'">
</kp-wizard-switch>

Development server

Run ng serve for a dev server. Navigate to http://localhost:4200/. The app will automatically reload if you change any of the source files.

Using

Use font awesome icons

More information on using icons can be found here. Add icons to the component and import them to items array as value of the control property.

app.component.ts
import { Component } from '@angular/core';
import { faCoffee } from '@fortawesome/free-solid-svg-icons';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})
export class AppComponent {
  constructor(private service: DisableService) {}
  coffeeIcon = faCoffee;
}
app.component.html
<kp-wizard-switch>
    <input type="text" [kpItemTemplate]="'coffee'" [control]="coffeeIcon">
</kp-wizard-switch>

Set custom styles for controls

Using default styles

Add your styles into ::ng-deep{} in needed component style file.

app.component.scss
::ng-deep {
    .kp-wizard-control {
      span {
        background: green !important;
        color: yellow !important;
      }
    }
}

or you can adding global styles in your main style file.

styles.scss
.kp-wizard-control {
  span {
    background: green !important;
    color: yellow !important;
  }
}

*You must use !important to overwrite existing styles.

Using custom class

Add [controlStyle]="'your-class-name'" to <kp-wizard-switch></kp-wizard-switch>.

app.component.scss
::ng-deep {
    .custom-control {
      span {
        background: green;
        color: yellow;
      }
    }
}
app.component.html
<kp-wizard-switch [controlStyle]="'custom-control'">
    // Your templates here
</kp-wizard-switch>

Set custom animation

  • duration: change animation duration. Must be integer (milliseconds) or string (seconds, for example '1.4s' or milliseconds, for example '1400ms'). Default value is '250ms'.
  • delay: change animation delay. Must be as duration. Default value is 0.
  • easing: change animation easing. Must be 'ease', 'easeIn', 'easeInOut', 'easeOut', 'linear' or valid 'cubic-bezier()'. You can create valid curve in generator here. Default value is 'easeIn'.
app.component.html
<kp-wizard-switch
    [animateOptions]="{duration: '1000ms', delay: '300ms', easing: 'cubic-bezier(.17,.67,.88,.1)'}">
    // Your templates here
</kp-wizard-switch>

Using disable actions

Add ControllService into needed component

app.component.ts
import { Component } from '@angular/core';
import { faCoffee } from '@fortawesome/free-solid-svg-icons';
import { ControllService } from '@kinect-pro/wizard-switch';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})
export class AppComponent {
  constructor(private service: ControllService) {}

  changeDisabled() {
    this.service.disable(3); // Use this for change disabled option by item index
    // this.service.enableAll(); // Use this for enabled all items
    // this.service.disableAll(); // Use this for disabled all items
  }
}
app.component.html

Add [onDisableService]="true" to component. If you need make some items after initializing use [disabled]="true" for kpItemTemplate.

<kp-wizard-switch [onDisableService]="true">
  <input type="text" [kpItemTemplate]="'coffee'" [control]="coffeeIcon" [disabled]="true">
</kp-wizard-switch>
<button (click)="changeDisabled()">Change disable option</button>

Using trigger actions

Add ControllService into needed component

app.component.ts
import { Component } from '@angular/core';
import { ControllService } from '@kinect-pro/wizard-switch';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})
export class AppComponent {
  constructor(private service: ControllService) {}

  triggering() {
    this.service.trigger('login'); // Use this for triggering login control
    // this.service.closeAll(); // Use this for closing all items
    // this.service.openFirst(); // Use this for opening first item
    // this.service.openLast(); // Use this for opening last item
    // this.service.openNext(); // Use this for opening next item
    // this.service.openPrev(); // Use this for opening previous item
  }
}
app.component.html
<kp-wizard-switch>
  <input type="text" placeholder="login" [kpItemTemplate]="'login'" [control]="'Login'">
  <input type="text" placeholder="password" [kpItemTemplate]="'password'" [control]="'Password'">
</kp-wizard-switch>
<button (click)="triggering()">Login trigger</button>

Width management

Items width management

Use [uniformWidth] option to change the display style of the width of the elements. For this, pass the boolean parameter (true or false) to the HTML template.

app.component.html
<kp-wizard-switch [uniformWidth]="false">
    // Your templates here
</kp-wizard-switch>

If you choose true, then all elements will have the same value equal to the width of the longest element. For false option every item will have own width. Default value is true.

Switch width management

Use [autoResponsive] option to change the display style of the width of the switch. For this, pass the boolean parameter (true or false) to the HTML template.

app.component.html
<kp-wizard-switch
    [uniformWidth]="false"
    [autoResponsive]="true">
  // Your templates here
</kp-wizard-switch>

If you choose true, then switch will change width after any animation. For false option width will't change. Default value is false. Use this option, then [uniformWidth]="false".

Using animation events

You can use your handler functions to start or end the animation.

app.component.html
<kp-wizard-switch
    (onStartAnimation)="startAnimationCallback()"
    (onEndAnimation)="endAnimationCallback()">
  // Your templates here
</kp-wizard-switch>
app.component.ts
import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})
export class AppComponent {
  startAnimationCallback() {
    console.log('Start animation');
  }
  
  endAnimationCallback() {
    console.log('End animation');
  }
}

Manage multiple switches in one component

If you have several switches in one component, you can control all at once, or only certain. To do this, you need to specify a name for each switch [name]="'yourUniqName'", and pass them to control methods for controls.

app.component.html
<kp-wizard-switch [name]="'first'>
      <input type="text" placeholder="login" [kpItemTemplate]="'login'" [control]="'Login'">
      <input type="text" placeholder="password" [kpItemTemplate]="'password'" [control]="'Password'">
</kp-wizard-switch>

<kp-wizard-switch [name]="'second'>
      <input type="text" placeholder="login" [kpItemTemplate]="'login'" [control]="'Login'">
      <input type="text" placeholder="password" [kpItemTemplate]="'password'" [control]="'Password'">
</kp-wizard-switch>

<kp-wizard-switch [name]="'third'>
      <input type="text" placeholder="login" [kpItemTemplate]="'login'" [control]="'Login'">
      <input type="text" placeholder="password" [kpItemTemplate]="'password'" [control]="'Password'">
</kp-wizard-switch>

<div>
  <button (click)="changeDisabled()">Disable login</button>
  <button (click)="disableAll()">Disable all</button>
  <button (click)="enableAll()">Enable all</button>
</div>
app.component.ts
import { Component } from '@angular/core';
import { ControllService } from '@kinect-pro/wizard-switch';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})
export class AppComponent {
    constructor(private service: ControlService) { }

    changeDisabled() {
      this.service.disable('login', ['second', 'third']);
    }
  
    disableAll() {
      this.service.disableAll();
    }
  
    enableAll() {
      this.service.enableAll('second');
    }
}

changeDisabled() will act only on the second and third switches. disableAll() will act on the all switches, because switchName option is empty. enableAll() will act only on the second switch.

In the switchName, you can pass either a string with one name or an array of names. If you pass [name]="'notFound'" of a switch that is not in the component, then the control functions WILL NOT WORK

Contact us