awesome-vue-star-rating
Version:
A simple, highly customisable star rating component for Vue 2.x without any external libraries
200 lines (181 loc) • 4.55 kB
Markdown
# Awesome Vue Star Rating
Simple and Easy Customisable Awesome Vue Star Rating using Pure Vue application without any external package.
## Installing
```
npm install --save awesome-vue-star-rating
```
## Features
1. Font icon stars — scale without loss of quality
2. Customisable ratings and rating descriptions
3. Customisable results of selected value and description
4. Customisable number of stars
5. Create read-only stars
6. Customisable Colors
## Options
<table>
<thead>
<tr>
<th>Property</th>
<th>Type</th>
<th>Required</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>star</td>
<td>Number</td>
<td>Required.</td>
<td>Default value of Star. Default value is <code>2</code></td>
</tr>
<tr>
<td>maxstars</td>
<td>Number</td>
<td>Required.</td>
<td>Default value is <code>5</code>.</td>
</tr>
<tr>
<td>hasresults</td>
<td>Boolean</td>
<td>Optional.</td>
<td>Displaying the result values. Default value is <code>true</code>.</td>
</tr>
<tr>
<td>hasdescription</td>
<td>Boolean</td>
<td>Optional.</td>
<td>Default value is <code>true</code>.</td>
</tr>
<tr>
<td>ratingdescription</td>
<td>Array</td>
<td>Required.</td>
<td>Displaying the rating values. Ex. <code>[{
text: 'Poor',
class: 'star-poor'
},
{
text: 'Below Average',
class: 'star-belowAverage'
},
{
text: 'Average',
class: 'star-average'
},
{
text: 'Good',
class: 'star-good'
},
{
text: 'Excellent',
class: 'star-excellent'
}]</code></td>
</tr>
<tr>
<td>starsize</td>
<td>String</td>
<td>Optional.</td>
<td>Displaying the size of the stars. Default value is <code>lg</code>. We have list of <code>[xs,lg,1x,2x,3x,4x,5x,6x,7x,8x,9x,10x]</code> other optional values too.</td>
</tr>
<tr>
<td>disabled</td>
<td>Boolean</td>
<td>Optional.</td>
<td>Enable or disable the star selection. Default value is <code>false</code>.</td>
</tr>
</tbody>
</table>
# Usage
Step 1: import AwesomeVueStarRating in our component
```
import AwesomeVueStarRating from 'awesome-vue-star-rating'
export default {
name: 'app',
components: {
AwesomeVueStarRating
}
}
</script>
```
Step 2: Load default values to the component
```
data() {
return {
star: 5, // default star
ratingdescription: [
{
text: 'Poor',
class: 'star-poor'
},
{
text: 'Below Average',
class: 'star-belowAverage'
},
{
text: 'Average',
class: 'star-average'
},
{
text: 'Good',
class: 'star-good'
},
{
text: 'Excellent',
class: 'star-excellent'
}
],
hasresults: true,
hasdescription: true,
starsize: 'lg', //[xs,lg,1x,2x,3x,4x,5x,6x,7x,8x,9x,10x],
maxstars: 5,
disabled: false
}
}
```
Step 3: Place the Rate component inside the template
```
<template>
<div id="app">
<AwesomeVueStarRating :star="this.star" :disabled="this.disabled" :maxstars="this.maxstars" :starsize="this.starsize" :hasresults="this.hasresults" :hasdescription="this.hasdescription" :ratingdescription="this.ratingdescription" />
</div>
</template>
```
Step 4: Customize the star color styles like below
```
<style lang="scss">
.star {
color: red;
}
.star.active {
color: red;
}
.list, .list.disabled {
&:hover {
.star {
color: red ;
}
.star.active {
color: red;
}
}
}
</style>
```
### Compiles and hot-reloads for development
```
npm run serve
```
# Screen Shot
<img width="343" alt="Screenshot 2021-03-15 at 9 56 04 PM" src="https://user-images.githubusercontent.com/3702438/111186769-5aa39700-85d9-11eb-9708-e68fda77524d.png">
<img width="399" alt="Screenshot 2021-04-03 at 3 48 33 PM" src="https://user-images.githubusercontent.com/3702438/113475579-33334200-9494-11eb-84d5-34c7829a0e72.png">
# Demo

## <g-emoji class="g-emoji" alias="tada" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f389.png">🎉 </g-emoji> [Demo Link](https://codesandbox.io/s/reverent-heyrovsky-juycp) <g-emoji class="g-emoji" alias="tada" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f389.png">🎉</g-emoji>
### Compiles and minifies for production
```
npm run build
```
### Run your tests
```
npm run test
```