Louis authored on25/08/2018 23:51:28
Showing1 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,50 @@
1
+'use strict';
2
+
3
+module.exports = {
4
+  name: 'slider',
5
+  template: require('../../templates/components/slider.tpl'),
6
+  style: require('../../styles/clay/components/slider.scss'),
7
+  manipulator: 'slider',
8
+  defaults: {
9
+    label: '',
10
+    description: '',
11
+    min: 0,
12
+    max: 100,
13
+    step: 1,
14
+    attributes: {}
15
+  },
16
+  initialize: function() {
17
+    var self = this;
18
+
19
+    var $value = self.$element.select('.value');
20
+    var $valuePad = self.$element.select('.value-pad');
21
+    var $slider = self.$manipulatorTarget;
22
+
23
+    /**
24
+     * Sets the value display
25
+     * @return {void}
26
+     */
27
+    function setValueDisplay() {
28
+      var value = self.get().toFixed(self.precision);
29
+      $value.set('value', value);
30
+      $valuePad.set('innerHTML', value);
31
+    }
32
+
33
+    var step = $slider.get('step');
34
+    step = step.toString(10).split('.')[1];
35
+    self.precision = step ? step.length : 0;
36
+
37
+    self.on('change', setValueDisplay);
38
+    $slider.on('|input', setValueDisplay);
39
+    setValueDisplay();
40
+
41
+    $value.on('|input', function() {
42
+      $valuePad.set('innerHTML', this.get('value'));
43
+    });
44
+
45
+    $value.on('|change', function() {
46
+      self.set(this.get('value'));
47
+      setValueDisplay();
48
+    });
49
+  }
50
+};