@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.
Files changed (2) hide show
  1. package/dist/index.js +40 -39
  2. 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
- // 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
- }
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
- var change = self.onchange;
20
+ let change = self.onchange;
25
21
 
26
22
  // Current self star
27
- var current = null;
23
+ let current = null;
28
24
 
29
25
  /**
30
26
  * Update the number of stars
31
27
  */
32
- var len = function() {
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 (var i = 0; i < self.number; i++) {
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
- var val = function() {
46
+ const val = function() {
51
47
  // Update value
52
48
  if (self.value > 0) {
53
- var t = null;
54
- if (t = self.stars[self.value-1]) {
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 == 'number') {
57
+ if (prop === 'number') {
62
58
  len();
63
- } else if (prop == 'value') {
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
- 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
- }
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
- if (change) {
89
+
90
+ if (typeof(change) === 'function') {
89
91
  change(index+1, s);
90
92
  }
91
93
  }
92
94
 
93
- var template = `<div @loop="self.stars" value="{{self.value}}" @ref="self.component" number="{{self.number}}" name="{{self.name}}" style="cursor: pointer">
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
- var root = lemonade.element(template, self);
100
+ lemonade.setComponents({ Rating: Rating });
98
101
 
99
- root.val = function(v) {
100
- if (typeof(v) === 'undefined') {
101
- return self.value;
102
- } else {
103
- self.value = v;
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
  })));
package/package.json CHANGED
@@ -15,8 +15,8 @@
15
15
  "javascript plugins"
16
16
  ],
17
17
  "dependencies": {
18
- "lemonadejs": "^2.1.12"
18
+ "lemonadejs": "^3.5.1"
19
19
  },
20
20
  "main": "dist/index.js",
21
- "version": "1.0.1"
21
+ "version": "2.0.0"
22
22
  }