@lemonadejs/rating 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +110 -0
- package/dist/index.min.js +1 -0
- package/package.json +22 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
;(function (global, factory) {
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
|
3
|
+
typeof define === 'function' && define.amd ? define(factory) :
|
|
4
|
+
global.Rating = factory();
|
|
5
|
+
}(this, (function () {
|
|
6
|
+
|
|
7
|
+
// Load LemonadeJS
|
|
8
|
+
if (typeof(lemonade) == 'undefined') {
|
|
9
|
+
if (typeof(require) === 'function') {
|
|
10
|
+
var lemonade = require('lemonadejs');
|
|
11
|
+
} else if (window.lemonade) {
|
|
12
|
+
var lemonade = window.lemonade;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return function() {
|
|
17
|
+
var self = this;
|
|
18
|
+
if (! self.number) {
|
|
19
|
+
self.number = 5;
|
|
20
|
+
}
|
|
21
|
+
self.stars = [];
|
|
22
|
+
|
|
23
|
+
// Event
|
|
24
|
+
var change = self.onchange;
|
|
25
|
+
|
|
26
|
+
// Current self star
|
|
27
|
+
var current = null;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Update the number of stars
|
|
31
|
+
*/
|
|
32
|
+
var len = function() {
|
|
33
|
+
// Remove stars
|
|
34
|
+
if (self.number < self.stars.length) {
|
|
35
|
+
self.stars.splice(self.number, self.stars.length);
|
|
36
|
+
if (self.value > self.number) {
|
|
37
|
+
self.value = self.number;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
// Add missing stars
|
|
41
|
+
for (var i = 0; i < self.number; i++) {
|
|
42
|
+
if (! self.stars[i]) {
|
|
43
|
+
self.stars[i] = {};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// Refresh
|
|
47
|
+
self.refresh('stars');
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
var val = function() {
|
|
51
|
+
// Update value
|
|
52
|
+
if (self.value > 0) {
|
|
53
|
+
var t = null;
|
|
54
|
+
if (t = self.stars[self.value-1]) {
|
|
55
|
+
self.click(t);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
self.onchange = function(prop) {
|
|
61
|
+
if (prop == 'number') {
|
|
62
|
+
len();
|
|
63
|
+
} else if (prop == 'value') {
|
|
64
|
+
val();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
self.onload = function() {
|
|
69
|
+
len();
|
|
70
|
+
val();
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
self.click = function(s) {
|
|
74
|
+
if (! s.selected) {
|
|
75
|
+
current = null;
|
|
76
|
+
}
|
|
77
|
+
var index = self.stars.indexOf(s);
|
|
78
|
+
for (var i = 0; i < self.number; i++) {
|
|
79
|
+
if (i <= index && s !== current) {
|
|
80
|
+
self.stars[i].selected = 1;
|
|
81
|
+
self.stars[i].el.style.color = 'red';
|
|
82
|
+
} else {
|
|
83
|
+
self.stars[i].selected = 0;
|
|
84
|
+
self.stars[i].el.style.color = '';
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
current = s;
|
|
88
|
+
if (change) {
|
|
89
|
+
change(index+1, s);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
var template = `<div @loop="self.stars" value="{{self.value}}" @ref="self.component" number="{{self.number}}" name="{{self.name}}" style="cursor: pointer">
|
|
94
|
+
<i class="material-icons" onclick="self.parent.click(self)">{{self.selected?'star':'star_outline'}}</i>
|
|
95
|
+
</div>`;
|
|
96
|
+
|
|
97
|
+
var root = lemonade.element(template, self);
|
|
98
|
+
|
|
99
|
+
root.val = function(v) {
|
|
100
|
+
if (typeof(v) === 'undefined') {
|
|
101
|
+
return self.value;
|
|
102
|
+
} else {
|
|
103
|
+
self.value = v;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
return root;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
})));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(function(g,a){"object"===typeof exports&&"undefined"!==typeof module?module.exports=a():"function"===typeof define&&define.amd?define(a):g.List=a()})(this,function(){return function(g){var a=this,f=a.result=a.data;a.onchange=function(b){if("data"===b||"input"==b)h(a.input);else if("page"==b){if((b=parseInt(a.pagination))&&f.length>b){var c=b*a.page,d=b*a.page+b;f.length<d&&(d=f.length)}else c=0,d=f.length;for(b=[];c<d;c++)b.push(f[c]);a.result=b;b=[];if(0<a.pagination&&(d=Math.ceil(f.length/a.pagination),1<d)){if(6>a.page){var e=0;c=10>d?d:10}else 5>d-a.page?(e=d-9,c=d,0>e&&(e=0)):(e=parseInt(a.page)-4,c=parseInt(a.page)+5);for(0<e&&b.push({title:0,value:"\u00c2\u00ab"});e<c;e++)b.push({title:e,value:e+1,selected:a.page==e});c<d&&b.push({title:c+e,value:"\u00c2\u00bb"});a.pages=b}}};a.onload=function(){0<a.pagination&&(a.page=0)};var h=function(b){f=a.result=a.data.filter(function(c){a:{for(var d in c)if(0<=(""+c[d]).toLowerCase().search(b)){c=!0;break a}c=!1}return c});a.page=0};return lemonade.element('\n <>\n <div class="list-header" data="{{self.data}}">\n <input type=\'text\' @bind="self.input" search="{{self.search}}"/><ul page="{{self.page}}"><Pagination @loop="self.pages"/></ul></div><div class="list-content"><Item @loop="self.result"/></div></>',a,{Item:function(){return lemonade.element(g,this)},Pagination:function(){return lemonade.element('<li onclick="self.parent.page = this.title;" title="{{self.title}}" selected="{{self.selected}}">{{self.value}}</li>',this)}})}});
|
package/package.json
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@lemonadejs/rating",
|
|
3
|
+
"title": "LemonadeJS star rating javascript plugin",
|
|
4
|
+
"description": "LemonadeJS star rating plugin",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Contact <contact@lemonadejs.net>",
|
|
7
|
+
"url": "https://lemonadejs.net"
|
|
8
|
+
},
|
|
9
|
+
"keywords": [
|
|
10
|
+
"javascript star rating",
|
|
11
|
+
"javascript rating",
|
|
12
|
+
"lemonadejs plugins",
|
|
13
|
+
"js",
|
|
14
|
+
"library",
|
|
15
|
+
"javascript plugins"
|
|
16
|
+
],
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"lemonadejs": "^2.1.12"
|
|
19
|
+
},
|
|
20
|
+
"main": "dist/index.js",
|
|
21
|
+
"version": "1.0.0"
|
|
22
|
+
}
|