@lemonadejs/rating 1.0.1 → 2.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 +40 -39
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,35 +1,31 @@
|
|
|
1
|
+
if (!lemonade && typeof (require) === 'function') {
|
|
2
|
+
var lemonade = require('lemonadejs');
|
|
3
|
+
}
|
|
4
|
+
|
|
1
5
|
;(function (global, factory) {
|
|
2
6
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
|
3
7
|
typeof define === 'function' && define.amd ? define(factory) :
|
|
4
8
|
global.Rating = factory();
|
|
5
9
|
}(this, (function () {
|
|
6
10
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
if (typeof(require) === 'function') {
|
|
10
|
-
var lemonade = require('lemonadejs');
|
|
11
|
-
} else if (window.lemonade) {
|
|
12
|
-
var lemonade = window.lemonade;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
11
|
+
const Rating = function() {
|
|
12
|
+
let self = this;
|
|
15
13
|
|
|
16
|
-
return function() {
|
|
17
|
-
var self = this;
|
|
18
14
|
if (! self.number) {
|
|
19
15
|
self.number = 5;
|
|
20
16
|
}
|
|
21
17
|
self.stars = [];
|
|
22
18
|
|
|
23
19
|
// Event
|
|
24
|
-
|
|
20
|
+
let change = self.onchange;
|
|
25
21
|
|
|
26
22
|
// Current self star
|
|
27
|
-
|
|
23
|
+
let current = null;
|
|
28
24
|
|
|
29
25
|
/**
|
|
30
26
|
* Update the number of stars
|
|
31
27
|
*/
|
|
32
|
-
|
|
28
|
+
const len = function() {
|
|
33
29
|
// Remove stars
|
|
34
30
|
if (self.number < self.stars.length) {
|
|
35
31
|
self.stars.splice(self.number, self.stars.length);
|
|
@@ -38,7 +34,7 @@
|
|
|
38
34
|
}
|
|
39
35
|
}
|
|
40
36
|
// Add missing stars
|
|
41
|
-
for (
|
|
37
|
+
for (let i = 0; i < self.number; i++) {
|
|
42
38
|
if (! self.stars[i]) {
|
|
43
39
|
self.stars[i] = {};
|
|
44
40
|
}
|
|
@@ -47,25 +43,34 @@
|
|
|
47
43
|
self.refresh('stars');
|
|
48
44
|
}
|
|
49
45
|
|
|
50
|
-
|
|
46
|
+
const val = function() {
|
|
51
47
|
// Update value
|
|
52
48
|
if (self.value > 0) {
|
|
53
|
-
|
|
54
|
-
if (t
|
|
49
|
+
let t = self.stars[self.value-1];
|
|
50
|
+
if (t) {
|
|
55
51
|
self.click(t);
|
|
56
52
|
}
|
|
57
53
|
}
|
|
58
54
|
}
|
|
59
55
|
|
|
60
56
|
self.onchange = function(prop) {
|
|
61
|
-
if (prop
|
|
57
|
+
if (prop === 'number') {
|
|
62
58
|
len();
|
|
63
|
-
} else if (prop
|
|
59
|
+
} else if (prop === 'value') {
|
|
64
60
|
val();
|
|
65
61
|
}
|
|
66
62
|
}
|
|
67
63
|
|
|
68
64
|
self.onload = function() {
|
|
65
|
+
// Bind global method to be compatible with LemonadeJS forms
|
|
66
|
+
self.el.val = function(v) {
|
|
67
|
+
if (typeof(v) === 'undefined') {
|
|
68
|
+
return self.value;
|
|
69
|
+
} else {
|
|
70
|
+
self.value = v;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
69
74
|
len();
|
|
70
75
|
val();
|
|
71
76
|
}
|
|
@@ -74,37 +79,33 @@
|
|
|
74
79
|
if (! s.selected) {
|
|
75
80
|
current = null;
|
|
76
81
|
}
|
|
77
|
-
|
|
78
|
-
for (
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
} else {
|
|
83
|
-
self.stars[i].selected = 0;
|
|
84
|
-
self.stars[i].el.style.color = '';
|
|
85
|
-
}
|
|
82
|
+
let index = self.stars.indexOf(s);
|
|
83
|
+
for (let i = 0; i < self.number; i++) {
|
|
84
|
+
let selected = i <= index && s !== current ? 1 : 0;
|
|
85
|
+
self.stars[i].selected = selected;
|
|
86
|
+
self.stars[i].el.style.color = selected ? 'red' : '';
|
|
86
87
|
}
|
|
87
88
|
current = s;
|
|
88
|
-
|
|
89
|
+
|
|
90
|
+
if (typeof(change) === 'function') {
|
|
89
91
|
change(index+1, s);
|
|
90
92
|
}
|
|
91
93
|
}
|
|
92
94
|
|
|
93
|
-
|
|
95
|
+
return `<div value="{{self.value}}" number="{{self.number}}" name="{{self.name}}" style="cursor: pointer" :loop="self.stars" :ref="self.component">
|
|
94
96
|
<i class="material-icons" onclick="self.parent.click(self)">{{self.selected?'star':'star_outline'}}</i>
|
|
95
97
|
</div>`;
|
|
98
|
+
}
|
|
96
99
|
|
|
97
|
-
|
|
100
|
+
lemonade.setComponents({ Rating: Rating });
|
|
98
101
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
102
|
+
return function (root, options) {
|
|
103
|
+
if (typeof (root) === 'object') {
|
|
104
|
+
lemonade.render(Rating, root, options)
|
|
105
|
+
return options;
|
|
106
|
+
} else {
|
|
107
|
+
return Rating.call(this, root)
|
|
105
108
|
}
|
|
106
|
-
|
|
107
|
-
return root;
|
|
108
109
|
}
|
|
109
110
|
|
|
110
111
|
})));
|