ng-voting
v1.2.3
Published
A reusable and customizable voting component for Angular projects
Downloads
19
Maintainers
Readme
NgVoting
ng-voting is a reusable Angular component that can be used to easily implement a voting platform in your app. It is responsive and completely customizable.
Demo
Table of Contents
Installation
npm i ng-votingUsage
- Import the
NgVotingComponentin the module of your choice.
...
import { NgVotingComponent } from 'ng-voting'
@NgModule({
declarations: [
AppComponent
],
imports: [
...,
NgVotingComponent
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }- In
your.component.tsadd some data of typeVoting. can be import likeimport { Voting } from ng-voting - In
your.component.htmladd theng-votingtag and pass you data of typeVotingto[data]as shown below.
your.component.ts
import { Voting } from 'ng-voting';
@Component({
selector: 'your-root',
templateUrl: './your.component.html'
})
export class YourComponent {
data: Voting = {
question: "Do you like ng-voting?",
options: [
{
label: "Yes",
value: "yes",
votesCount: 1,
imageUrl: "optional-image-url",
users: [
...users,
{
name: "John Snow",
image: "assets/profile1.jpg"
},
]
},
{
label: "No",
value: "no",
votesCount: 0,
imageUrl: "optional-image-url"
}
]
}
optionSelected(value: string) {
// You get back the selected option here.
}your.component.html
<ng-voting [data]="data" (selected)="optionSelected($event)"></ng-voting>Voting
export interface Voting {
question: string;
options: Option[];
}
export interface Option {
label: string;
value: string;
votesCount: number;
imageUrl?: string;
users?: { name: string; image?: string }[];
color?: string;
bgColor?: string;
selected?: boolean;
}Customize
- The component can be completely customized, from adding background colors, font sizes to modifying the margins
- Import the
StyleParamslikeimport { StypeParams } from 'ng-voting', and create and object. - Pass the object to
[styleParams]in your html. (usereminstead ofpx)
// In your .ts file, create an object and change these values
// (use `rem` and not `px`)
styleParams: StyleParams = {
borderColor: "#d3d3d3",
margin: "1rem",
hoverColor: "#ebebeb",
scaleColor: "#9797dc",
fontSize: "1.5rem",
topicBackgroundColor: "#ffffff",
optionsBackgroundColor: "#ffffff",
topicFontColor: "black",
optionsFontColor: "black",
};// In your html file, pass that object. <ng-voting [data]="data" [styleParams]="styleParams" (selected)="increaseVoteCount($event)"></ng-voting>API
| API | Type | Description | Default | Required |
| ----------------------- | ------------- | ------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
| [data] | Voting | Voting topic and option and their details | undefined | true |
| [isLoading] | boolean | Show loading state | false | false |
| [showUsers] | boolean | Show the users count on option | true | false |
| [showScale] | boolean | Show the percentage scale of voting | true | false |
| [disable] | boolean | Disable voting | false | false |
| [selectedOptionValue] | boolean | Shows a checkmark of which option was selected by user | "" | false |
| [styleParams] | StyleParams | Customize the Voting component. | borderColor: '#d3d3d3', margin: '1rem', hoverColor: '#ebebeb', scaleColor: '#9797dc', fontSize: '1.5rem', topicBackgroundColor:'#ffffff', optionsBackgroundColor:'#ffffff', topicFontColor: 'black', optionsFontColor: 'black' | false |
| (selected) | string | Emits the selected option value | | |
- Example usage
<ng-voting
[data]="data"
[styleParams]="styleParams"
[showScale]="true"
[showUsers]="true"
[isLoading]="false"
[selectedOptionValue]="''"
[disable]="false"
(selected)="handleVote($event)"></ng-voting>Whats next
- A customization app, where you can try out the component and generate the code for it.
- More reusable components.
