Angular toggle button switch
npm install ng-toggle-button![npm version][npm-url]
![npm dlm][npm-url]
![Netlify Status][demo-url]
[npm-url]: https://www.npmjs.com/package/ng-toggle-button
[demo-url]: https://ng-toggle-button.netlify.app
This is a toggle switch button component, you can see the demo [here][demo-url] and test it in StackBlitz.
| Angular | ng-toggle-button|
| -------- |:------:|
| >=19.0.0 | v1.9.x |
| >=17.0.0 | v1.7.x |
| >=16.0.0 | v1.6.x |
| >=15.0.0 | v1.5.x |
| >=14.0.0 | v1.4.x |
| >=13.0.0 | v1.3.x |
| >=12.0.0 | v1.2.x |
| >=11.0.0 | v1.1.x |
| >=10.0.0 | v1.0.x |
| >=9.0.0 | v0.2.x |
| v8.x.x | v0.1.x |
```
npm i ng-toggle-button
or
``
yarn add ng-toggle-button
`typescript`
import { NgToggleComponent } from 'ng-toggle-button';
@Component({
selector: 'your-component',
standalone: true,
imports: [
...,
NgToggleComponent,
],
...
})
`typescript`
import { NgToggleModule } from 'ng-toggle-button';
@NgModule({
...
imports: [
...,
NgToggleModule
],
})
Also, you can pass a global configuration for all ng-toggle component in your app
`typescript`
import { NgToggleModule } from 'ng-toggle-button';
@NgModule({
...
imports: [
...,
NgToggleModule.forRoot(config)
],
})
You can edit the configuration globally by injecting NgToggleConfig service usually in the root component.
`ts`
constructor(private config: NgToggleConfig) {
this.config.labels: {
unchecked: 'off',
checked: 'on',
};
this.config.color = 'crimson';
}
Usage in template
`html`
[color]="{
unchecked: '#939da2',
checked: '#f62d51'
}"
>
The config object is described in the table bellow
| Name | Type | Default | Description |
|-------------|--------------------|-------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| value | boolean | false | Initial state of the toggle button |number
| speed | | 300 | Transition time for the animation |boolean
| disabled | | false | Button does not react on mouse events |string
| color | | #0099CC | If String - color of the button when checked toggleConfig
If - colors for the button when checked/unchecked or disabled{checked: '#00FF00', unchecked: '#FF0000', disabled: '#CCCCCC'}
Example: |boolean | Object
| labels | | false | If boolean - shows/hides default labels Object
If - sets custom labels for both states. {checked: 'Foo', unchecked: 'Bar'}
Example: |string | toggleConfig
| switchColor | | #fff | If string - color or background property of the switch when checked toggleConfig
If - colors or background property for the switch when checked/uncheked or disabled {checked: '#25EF02', unchecked: 'silver', disabled: '#fff'}
Example: |number
| width | | 50 | Width of the button |number
| height | | 22 | Height of the button |number
| margin | | 3 | Space between the switch and background border |string
| name | | undefined | Name to attach to the generated input field |number
| fontSize | | 10 | Font size in pixels |string | toggleConfig
| fontColor | | undefined | If string - color when checked toggleConfig
If - colors for labels when checked/uncheked {checked: '#25EF02', unchecked: '#35DB15'}
Example: by default the text color is white.|string \| toggleConfig
| textAlign | | {checked: 'left', unchecked: 'right'} | If string: text-align is applied both checked and unchecked labelstoggleConfig
If : Text align of checked/unchecked labels{checked: 'center', unchecked: 'center'}
Example: |{checked: any, unchecked: any}
| values | | {checked: true, unchecked: false} | Values for checked and unchecked states, by default checked value is true and unchecked value is false {checked: 1, unchecked: 0}
Example: .|
toggleConfig type is described below:
`ts`
toggleConfig = {
checked: string;
unchecked: string;
disabled?: string;
};
| Name | Payload | Description |
| --- | ------ | ------- |
| change | value | Triggered when state of the component changes.
Contains:
value - state of the button |
The toggle is tabbable, and can be triggered using the spacebar - WCAG 2.4.3(A)
Clone this repo and download the dependencies.
Run ng serve for a dev server. Navigate to http://localhost:4200/`.