luda 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (190) hide show
  1. checksums.yaml +4 -4
  2. data/assets/javascripts/luda-degradation.js +10 -4
  3. data/assets/javascripts/luda-degradation.js.map +1 -1
  4. data/assets/javascripts/luda-degradation.min.js +2 -2
  5. data/assets/javascripts/luda-degradation.min.js.map +1 -1
  6. data/assets/javascripts/luda-sprockets.js +2 -0
  7. data/assets/javascripts/luda.js +4003 -2083
  8. data/assets/javascripts/luda.js.map +1 -1
  9. data/assets/javascripts/luda.min.js +2 -2
  10. data/assets/javascripts/luda.min.js.map +1 -1
  11. data/assets/javascripts/luda/behaviors/disabled.js +24 -0
  12. data/assets/javascripts/luda/behaviors/enter.js +24 -33
  13. data/assets/javascripts/luda/behaviors/focus.js +98 -95
  14. data/assets/javascripts/luda/behaviors/readonly.js +20 -58
  15. data/assets/javascripts/luda/behaviors/tabulate.js +42 -62
  16. data/assets/javascripts/luda/behaviors/toggle.js +98 -144
  17. data/assets/javascripts/luda/degradation.js +9 -3
  18. data/assets/javascripts/luda/elements/form-file.js +62 -109
  19. data/assets/javascripts/luda/elements/form-select.js +101 -208
  20. data/assets/javascripts/luda/index.js +4 -2
  21. data/assets/javascripts/luda/kernel/index.js +3095 -0
  22. data/assets/javascripts/luda/mixins/disable.js +34 -0
  23. data/assets/javascripts/luda/mixins/resetable.js +46 -0
  24. data/assets/javascripts/luda/mixins/tabable.js +274 -0
  25. data/assets/javascripts/luda/mixins/toggleable.js +185 -0
  26. data/assets/javascripts/luda/patterns/carousel.js +115 -333
  27. data/assets/javascripts/luda/patterns/dropdown.js +132 -271
  28. data/assets/javascripts/luda/patterns/form-dropdown.js +59 -104
  29. data/assets/javascripts/luda/patterns/tab.js +49 -150
  30. data/assets/stylesheets/luda/default/_banner.sass +1 -1
  31. data/assets/stylesheets/luda/default/_base.sass +1 -1
  32. data/assets/stylesheets/luda/default/_functions.sass +1 -1
  33. data/assets/stylesheets/luda/default/_mixins.sass +12 -12
  34. data/assets/stylesheets/luda/default/_variables.sass +747 -1
  35. data/assets/stylesheets/luda/default/behaviors/_disabled.sass +1 -1
  36. data/assets/stylesheets/luda/default/behaviors/_focus.sass +1 -1
  37. data/assets/stylesheets/luda/default/behaviors/_readonly.sass +1 -1
  38. data/assets/stylesheets/luda/default/behaviors/_toggle.sass +1 -1
  39. data/assets/stylesheets/luda/default/elements/_badge.sass +1 -1
  40. data/assets/stylesheets/luda/default/elements/_baseline.sass +1 -1
  41. data/assets/stylesheets/luda/default/elements/_button.sass +1 -1
  42. data/assets/stylesheets/luda/default/elements/_container.sass +1 -1
  43. data/assets/stylesheets/luda/default/elements/_grid.sass +1 -1
  44. data/assets/stylesheets/luda/default/elements/_icon.sass +1 -1
  45. data/assets/stylesheets/luda/default/elements/_media.sass +1 -1
  46. data/assets/stylesheets/luda/default/elements/_overlay.sass +1 -1
  47. data/assets/stylesheets/luda/default/elements/_progress.sass +1 -1
  48. data/assets/stylesheets/luda/default/elements/_scrollbar.sass +1 -1
  49. data/assets/stylesheets/luda/default/elements/_table.sass +1 -1
  50. data/assets/stylesheets/luda/default/elements/_turbolinks-progress-bar.sass +1 -1
  51. data/assets/stylesheets/luda/default/elements/form/_form-check-radio.sass +1 -1
  52. data/assets/stylesheets/luda/default/elements/form/_form-element.sass +1 -1
  53. data/assets/stylesheets/luda/default/elements/form/_form-helper.sass +1 -1
  54. data/assets/stylesheets/luda/default/elements/form/_form-label.sass +1 -1
  55. data/assets/stylesheets/luda/default/elements/form/_form-range.sass +1 -1
  56. data/assets/stylesheets/luda/default/elements/form/_form-row.sass +1 -1
  57. data/assets/stylesheets/luda/default/elements/typography/_code.sass +1 -1
  58. data/assets/stylesheets/luda/default/elements/typography/_heading.sass +1 -1
  59. data/assets/stylesheets/luda/default/elements/typography/_link.sass +1 -1
  60. data/assets/stylesheets/luda/default/elements/typography/_list.sass +1 -1
  61. data/assets/stylesheets/luda/default/elements/typography/_mark.sass +1 -1
  62. data/assets/stylesheets/luda/default/elements/typography/_paragraph.sass +1 -1
  63. data/assets/stylesheets/luda/default/elements/typography/_quote.sass +1 -1
  64. data/assets/stylesheets/luda/default/elements/typography/_sub-sup.sass +1 -1
  65. data/assets/stylesheets/luda/default/elements/typography/_typography.sass +1 -1
  66. data/assets/stylesheets/luda/default/patterns/_alert.sass +1 -1
  67. data/assets/stylesheets/luda/default/patterns/_article.sass +1 -1
  68. data/assets/stylesheets/luda/default/patterns/_avatar.sass +1 -1
  69. data/assets/stylesheets/luda/default/patterns/_breadcrumb.sass +1 -1
  70. data/assets/stylesheets/luda/default/patterns/_button-group.sass +1 -1
  71. data/assets/stylesheets/luda/default/patterns/_button-icon.sass +1 -1
  72. data/assets/stylesheets/luda/default/patterns/_carousel.sass +1 -1
  73. data/assets/stylesheets/luda/default/patterns/_dropdown.sass +1 -1
  74. data/assets/stylesheets/luda/default/patterns/_form-dropdown.sass +1 -1
  75. data/assets/stylesheets/luda/default/patterns/_form-group.sass +1 -1
  76. data/assets/stylesheets/luda/default/patterns/_form-icon.sass +1 -1
  77. data/assets/stylesheets/luda/default/patterns/_modal.sass +1 -1
  78. data/assets/stylesheets/luda/default/patterns/_navigation.sass +1 -1
  79. data/assets/stylesheets/luda/default/patterns/_search-bar.sass +1 -1
  80. data/assets/stylesheets/luda/default/patterns/_tab.sass +1 -1
  81. data/assets/stylesheets/luda/default/utilities/_alignment.sass +1 -1
  82. data/assets/stylesheets/luda/default/utilities/_background.sass +1 -1
  83. data/assets/stylesheets/luda/default/utilities/_border.sass +1 -1
  84. data/assets/stylesheets/luda/default/utilities/_color.sass +1 -1
  85. data/assets/stylesheets/luda/default/utilities/_display.sass +1 -1
  86. data/assets/stylesheets/luda/default/utilities/_flex.sass +1 -1
  87. data/assets/stylesheets/luda/default/utilities/_float.sass +1 -1
  88. data/assets/stylesheets/luda/default/utilities/_opacity.sass +1 -1
  89. data/assets/stylesheets/luda/default/utilities/_overflow.sass +1 -1
  90. data/assets/stylesheets/luda/default/utilities/_position.sass +1 -1
  91. data/assets/stylesheets/luda/default/utilities/_shadow.sass +1 -1
  92. data/assets/stylesheets/luda/default/utilities/_shape.sass +1 -1
  93. data/assets/stylesheets/luda/default/utilities/_size.sass +1 -1
  94. data/assets/stylesheets/luda/default/utilities/_spacing.sass +1 -1
  95. data/assets/stylesheets/luda/default/utilities/_text.sass +1 -1
  96. data/assets/stylesheets/luda/default/utilities/_visibility.sass +1 -1
  97. data/assets/stylesheets/luda/default/utilities/_z-index.sass +1 -1
  98. data/assets/stylesheets/luda/{_core → kernel}/_base.sass +1 -1
  99. data/assets/stylesheets/luda/{_core → kernel}/_functions.sass +23 -0
  100. data/assets/stylesheets/luda/kernel/behaviors/_disabled.sass +7 -0
  101. data/assets/stylesheets/luda/kernel/behaviors/_focus.sass +7 -0
  102. data/assets/stylesheets/luda/kernel/behaviors/_readonly.sass +7 -0
  103. data/assets/stylesheets/luda/kernel/behaviors/_toggle.sass +4 -0
  104. data/assets/stylesheets/luda/{_core → kernel}/elements/_badge.sass +1 -1
  105. data/assets/stylesheets/luda/{_core → kernel}/elements/_baseline.sass +1 -1
  106. data/assets/stylesheets/luda/{_core → kernel}/elements/_button.sass +1 -1
  107. data/assets/stylesheets/luda/{_core → kernel}/elements/_container.sass +1 -1
  108. data/assets/stylesheets/luda/{_core → kernel}/elements/_grid.sass +1 -1
  109. data/assets/stylesheets/luda/{_core → kernel}/elements/_icon.sass +1 -1
  110. data/assets/stylesheets/luda/{_core → kernel}/elements/_media.sass +1 -1
  111. data/assets/stylesheets/luda/{_core → kernel}/elements/_overlay.sass +1 -1
  112. data/assets/stylesheets/luda/{_core → kernel}/elements/_progress.sass +1 -1
  113. data/assets/stylesheets/luda/{_core → kernel}/elements/_scrollbar.sass +7 -1
  114. data/assets/stylesheets/luda/{_core → kernel}/elements/_table.sass +1 -1
  115. data/assets/stylesheets/luda/kernel/elements/_turbolinks-progress-bar.sass +5 -0
  116. data/assets/stylesheets/luda/{_core → kernel}/elements/form/_form-check-radio.sass +1 -1
  117. data/assets/stylesheets/luda/{_core → kernel}/elements/form/_form-element.sass +1 -1
  118. data/assets/stylesheets/luda/{_core → kernel}/elements/form/_form-helper.sass +1 -1
  119. data/assets/stylesheets/luda/{_core → kernel}/elements/form/_form-label.sass +1 -1
  120. data/assets/stylesheets/luda/{_core → kernel}/elements/form/_form-range.sass +1 -1
  121. data/assets/stylesheets/luda/{_core → kernel}/elements/form/_form-row.sass +13 -28
  122. data/assets/stylesheets/luda/{_core → kernel}/elements/typography/_code.sass +1 -1
  123. data/assets/stylesheets/luda/{_core → kernel}/elements/typography/_heading.sass +1 -1
  124. data/assets/stylesheets/luda/{_core → kernel}/elements/typography/_link.sass +1 -1
  125. data/assets/stylesheets/luda/{_core → kernel}/elements/typography/_list.sass +1 -1
  126. data/assets/stylesheets/luda/{_core → kernel}/elements/typography/_mark.sass +1 -1
  127. data/assets/stylesheets/luda/{_core → kernel}/elements/typography/_paragraph.sass +1 -1
  128. data/assets/stylesheets/luda/{_core → kernel}/elements/typography/_quote.sass +1 -1
  129. data/assets/stylesheets/luda/{_core → kernel}/elements/typography/_sub-sup.sass +1 -1
  130. data/assets/stylesheets/luda/kernel/elements/typography/_typography.sass +6 -0
  131. data/assets/stylesheets/luda/{_core → kernel}/mixins/_base.sass +0 -0
  132. data/assets/stylesheets/luda/{_core → kernel}/mixins/_browser.sass +0 -0
  133. data/assets/stylesheets/luda/{_core → kernel}/mixins/_button.sass +0 -0
  134. data/assets/stylesheets/luda/{_core → kernel}/mixins/_disabled.sass +1 -0
  135. data/assets/stylesheets/luda/{_core → kernel}/mixins/_dropdown.sass +0 -0
  136. data/assets/stylesheets/luda/{_core → kernel}/mixins/_focus.sass +0 -0
  137. data/assets/stylesheets/luda/{_core → kernel}/mixins/_form.sass +0 -0
  138. data/assets/stylesheets/luda/{_core → kernel}/mixins/_install.sass +0 -0
  139. data/assets/stylesheets/luda/{_core → kernel}/mixins/_media-query.sass +0 -0
  140. data/assets/stylesheets/luda/{_core → kernel}/mixins/_overlay.sass +0 -0
  141. data/assets/stylesheets/luda/{_core → kernel}/mixins/_sass-lint-fix.sass +0 -0
  142. data/assets/stylesheets/luda/{_core → kernel}/mixins/_typography.sass +0 -0
  143. data/assets/stylesheets/luda/{_core → kernel}/patterns/_alert.sass +1 -1
  144. data/assets/stylesheets/luda/{_core → kernel}/patterns/_article.sass +1 -1
  145. data/assets/stylesheets/luda/{_core → kernel}/patterns/_avatar.sass +1 -1
  146. data/assets/stylesheets/luda/{_core → kernel}/patterns/_breadcrumb.sass +1 -1
  147. data/assets/stylesheets/luda/{_core → kernel}/patterns/_button-group.sass +1 -1
  148. data/assets/stylesheets/luda/{_core → kernel}/patterns/_button-icon.sass +1 -1
  149. data/assets/stylesheets/luda/{_core → kernel}/patterns/_carousel.sass +2 -2
  150. data/assets/stylesheets/luda/{_core → kernel}/patterns/_dropdown.sass +1 -1
  151. data/assets/stylesheets/luda/{_core → kernel}/patterns/_form-dropdown.sass +6 -1
  152. data/assets/stylesheets/luda/{_core → kernel}/patterns/_form-group.sass +1 -1
  153. data/assets/stylesheets/luda/{_core → kernel}/patterns/_form-icon.sass +1 -1
  154. data/assets/stylesheets/luda/{_core → kernel}/patterns/_modal.sass +1 -1
  155. data/assets/stylesheets/luda/{_core → kernel}/patterns/_navigation.sass +1 -1
  156. data/assets/stylesheets/luda/{_core → kernel}/patterns/_search-bar.sass +1 -1
  157. data/assets/stylesheets/luda/{_core → kernel}/patterns/_tab.sass +1 -1
  158. data/assets/stylesheets/luda/{_core → kernel}/utilities/_alignment.sass +1 -1
  159. data/assets/stylesheets/luda/{_core → kernel}/utilities/_background.sass +1 -1
  160. data/assets/stylesheets/luda/{_core → kernel}/utilities/_border.sass +1 -1
  161. data/assets/stylesheets/luda/{_core → kernel}/utilities/_color.sass +1 -1
  162. data/assets/stylesheets/luda/{_core → kernel}/utilities/_display.sass +1 -1
  163. data/assets/stylesheets/luda/{_core → kernel}/utilities/_flex.sass +1 -1
  164. data/assets/stylesheets/luda/{_core → kernel}/utilities/_float.sass +1 -1
  165. data/assets/stylesheets/luda/{_core → kernel}/utilities/_opacity.sass +1 -1
  166. data/assets/stylesheets/luda/{_core → kernel}/utilities/_overflow.sass +1 -1
  167. data/assets/stylesheets/luda/{_core → kernel}/utilities/_position.sass +1 -1
  168. data/assets/stylesheets/luda/{_core → kernel}/utilities/_shadow.sass +1 -1
  169. data/assets/stylesheets/luda/{_core → kernel}/utilities/_shape.sass +1 -1
  170. data/assets/stylesheets/luda/{_core → kernel}/utilities/_size.sass +1 -1
  171. data/assets/stylesheets/luda/{_core → kernel}/utilities/_spacing.sass +1 -1
  172. data/assets/stylesheets/luda/{_core → kernel}/utilities/_text.sass +1 -1
  173. data/assets/stylesheets/luda/{_core → kernel}/utilities/_visibility.sass +1 -1
  174. data/assets/stylesheets/luda/{_core → kernel}/utilities/_z-index.sass +1 -1
  175. data/lib/luda/version.rb +1 -1
  176. metadata +86 -89
  177. data/assets/javascripts/luda/constants.js +0 -18
  178. data/assets/javascripts/luda/dom.js +0 -143
  179. data/assets/javascripts/luda/event.js +0 -201
  180. data/assets/javascripts/luda/factory.js +0 -334
  181. data/assets/javascripts/luda/install.js +0 -75
  182. data/assets/javascripts/luda/static.js +0 -224
  183. data/assets/javascripts/luda/utilities.js +0 -16
  184. data/assets/stylesheets/luda/_core/_variables.sass +0 -742
  185. data/assets/stylesheets/luda/_core/behaviors/_disabled.sass +0 -7
  186. data/assets/stylesheets/luda/_core/behaviors/_focus.sass +0 -7
  187. data/assets/stylesheets/luda/_core/behaviors/_readonly.sass +0 -14
  188. data/assets/stylesheets/luda/_core/behaviors/_toggle.sass +0 -4
  189. data/assets/stylesheets/luda/_core/elements/_turbolinks-progress-bar.sass +0 -5
  190. data/assets/stylesheets/luda/_core/elements/typography/_typography.sass +0 -6
@@ -1,158 +1,112 @@
1
- //= require ../install
2
- //= require ../dom
3
- //= require ../event
4
- //= require ../static
1
+ //= require ../kernel/index
2
+ //= require ../mixins/toggleable
5
3
  (function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../install.js'), require('../dom.js'), require('../event.js'), require('../static.js')) :
7
- typeof define === 'function' && define.amd ? define(['../install.js', '../dom.js', '../event.js', '../static.js'], factory) :
4
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../kernel/index.js'), require('../mixins/toggleable.js')) :
5
+ typeof define === 'function' && define.amd ? define(['../kernel/index.js', '../mixins/toggleable.js'], factory) :
8
6
  (factory());
9
7
  }(this, (function () { 'use strict';
10
8
 
11
- luda((function() {
12
- var _Class;
13
-
14
- _Class = class extends luda.Static {
15
- static activate(name$target) {
16
- return this._query$targets(name$target).forEach(($target) => {
17
- if ($target.classList.contains(this._ACTIVE_CSS_CLASS)) {
18
- return;
19
- }
20
- if (this._isTransitioning($target)) {
21
- return;
22
- }
23
- if (this._activatePrevented($target)) {
24
- return;
25
- }
26
- $target.classList.add(this._ACTIVE_CSS_CLASS);
27
- this._handleActivateEnd($target);
28
- if (this._shouldAutoDeactivate($target)) {
29
- return this._delayDeactivate($target);
30
- }
31
- });
9
+ luda.component('toggle', '[data-toggle-target]').protect({
10
+ cls: {
11
+ toggleable: {
12
+ active: 'toggle-active'
32
13
  }
33
-
34
- static deactivate(name$target) {
35
- return this._query$targets(name$target).forEach(($target) => {
36
- if (!$target.classList.contains(this._ACTIVE_CSS_CLASS)) {
37
- return;
38
- }
39
- if (this._isTransitioning($target)) {
40
- return;
41
- }
42
- if (this._deactivatePrevented($target)) {
43
- return;
44
- }
45
- $target.classList.remove(this._ACTIVE_CSS_CLASS);
46
- return this._handleDeactivateEnd($target);
47
- });
14
+ },
15
+ data: {
16
+ target: 'data-toggle-target',
17
+ for: 'data-toggle-for',
18
+ auto: 'data-toggle-auto-deactivate',
19
+ toggleable: {
20
+ interruption: 'data-toggle_interruption',
21
+ trigger: 'data-toggleable'
48
22
  }
49
-
50
- static toggle(name$target) {
51
- return this._query$targets(name$target).forEach(($target) => {
52
- if ($target.classList.contains(this._ACTIVE_CSS_CLASS)) {
53
- return this.deactivate($target);
54
- } else {
55
- return this.activate($target);
56
- }
57
- });
23
+ },
24
+ default: {
25
+ autoDuration: 3000
26
+ },
27
+ evt: {
28
+ toggleable: {
29
+ activate: 'luda:toggle:activate',
30
+ activated: 'luda:toggle:activated',
31
+ deactivate: 'luda:toggle:deactivate',
32
+ deactivated: 'luda:toggle:deactivated'
58
33
  }
59
-
60
- static _onElementAdded($ele) {
61
- this._handleActivateCancel($ele);
62
- this._handleDeactivateCancel($ele);
63
- if (this._shouldAutoDeactivate($ele)) {
64
- return this._delayDeactivate($ele);
65
- }
34
+ }
35
+ }).include({
36
+ activate: function() {
37
+ if (!this.toggleableActivate()) {
38
+ return;
66
39
  }
67
-
68
- static _shouldAutoDeactivate($target) {
69
- return $target.hasAttribute(this._AUTO_DEACTIVATE_ATTRIBUTE);
40
+ return this.toggleAutoState();
41
+ },
42
+ deactivate: function() {
43
+ if (!this.toggleableDeactivate()) {
44
+ return;
70
45
  }
71
-
72
- static _delayDeactivate($target) {
73
- var delay;
74
- delay = parseInt($target.getAttribute(this._AUTO_DEACTIVATE_ATTRIBUTE), 10);
75
- if (!delay) {
76
- delay = this._AUTO_DEACTIVATE_DURATION;
77
- }
78
- return setTimeout(() => {
79
- if ($target) {
80
- return this.deactivate($target);
81
- }
82
- }, delay);
46
+ return this.toggleAutoState();
47
+ },
48
+ toggle: function(force) {
49
+ if (!this.toggleableToggle(force)) {
50
+ return;
83
51
  }
84
-
85
- static _query$targets(name$target) {
86
- if (name$target instanceof Element) {
87
- return [name$target];
88
- } else {
89
- return luda.$children(`[${this._TOGGLE_TARGET_ATTRIBUTE}=${name$target}]`);
90
- }
52
+ return this.toggleAutoState();
53
+ }
54
+ }).protect(luda.mixin('toggleable').all()).protect({
55
+ toggleAutoState: function() {
56
+ if (!this.root.hasData(this.data.auto)) {
57
+ return;
91
58
  }
92
-
93
- static _init() {
94
- var clickEventSelector, self;
95
- self = this;
96
- clickEventSelector = `[${this._TOGGLE_FOR_ATTRIBUTE}],[${this._TOGGLE_ATTRIBUTE}]`;
97
- luda.on(luda._DOC_READY, function() {
98
- return luda.$children(self._selector).forEach(function($target) {
99
- if (self._shouldAutoDeactivate($target)) {
100
- return self._delayDeactivate($target);
101
- }
102
- });
103
- });
104
- return luda.on('click', clickEventSelector, function(e) {
105
- var toggleChecked;
106
- toggleChecked = false;
107
- return luda.eventPath(e).some(function($path) {
108
- var $toggle, toggleName;
109
- if ($path instanceof Element) {
110
- if ($path.hasAttribute(self._TOGGLE_ATTRIBUTE) || $path.hasAttribute(self._TOGGLE_FOR_ATTRIBUTE)) {
111
- if (toggleName = $path.getAttribute(self._TOGGLE_FOR_ATTRIBUTE)) {
112
- self.toggle(toggleName);
113
- toggleChecked = true;
114
- }
115
- if ($path.hasAttribute(self._TOGGLE_ATTRIBUTE)) {
116
- if ($path.hasAttribute(self._TOGGLE_TARGET_ATTRIBUTE)) {
117
- $toggle = $path;
118
- } else {
119
- $toggle = luda.$parent(`[${self._TOGGLE_TARGET_ATTRIBUTE}]`, $path);
120
- }
121
- if ($toggle) {
122
- self.toggle($toggle);
123
- return toggleChecked = true;
124
- }
125
- }
126
- } else if ($path.hasAttribute(self._TOGGLE_DISABLED_ATTRIBUTE)) {
127
- return toggleChecked = true;
128
- }
129
- }
130
- });
131
- });
59
+ if (this.toggleableActive()) {
60
+ return this.auto = setTimeout(() => {
61
+ delete this.auto;
62
+ return this.deactivate();
63
+ }, this.root.data(this.data.auto) || this.default.autoDuration);
64
+ } else {
65
+ clearTimeout(this.auto);
66
+ return delete this.auto;
132
67
  }
133
-
134
- };
135
-
136
- _Class._SCOPE = 'toggle';
137
-
138
- _Class._TOGGLE_TARGET_ATTRIBUTE = 'data-toggle-target';
139
-
140
- _Class._TOGGLE_ATTRIBUTE = 'data-toggle';
141
-
142
- _Class._TOGGLE_FOR_ATTRIBUTE = 'data-toggle-for';
143
-
144
- _Class._TOGGLE_DISABLED_ATTRIBUTE = 'data-toggle-disabled';
145
-
146
- _Class._AUTO_DEACTIVATE_ATTRIBUTE = 'data-toggle-auto-deactivate';
147
-
148
- _Class._AUTO_DEACTIVATE_DURATION = 3000;
149
-
150
- _Class._ACTIVE_CSS_CLASS = 'toggle-active';
151
-
152
- _Class._SELECTORS = [`[${_Class._TOGGLE_TARGET_ATTRIBUTE}]`];
153
-
154
- return _Class;
155
-
156
- }).call(this));
68
+ },
69
+ toggleOnEvent: function(e) {
70
+ if (!this.toggleableToggleOnEvent(e)) {
71
+ return;
72
+ }
73
+ return this.toggleAutoState();
74
+ }
75
+ }).help({
76
+ find: function() {
77
+ return this.toggleableFind();
78
+ },
79
+ create: function() {
80
+ this.toggleableCreate();
81
+ return this.toggleAutoState();
82
+ },
83
+ destroy: function() {
84
+ this.toggleableDestroy();
85
+ return 'auto' in this && clearTimeout(this.auto);
86
+ },
87
+ listen: function() {
88
+ var self;
89
+ self = this;
90
+ return [
91
+ ['click',
92
+ this.toggleOnEvent],
93
+ [
94
+ 'click',
95
+ `[${this.data.for}]`,
96
+ function(e) {
97
+ var name;
98
+ name = luda(this).data(self.data.for);
99
+ return self.con.each(function(ins) {
100
+ if (ins.root.data(self.data.target) !== name) {
101
+ return;
102
+ }
103
+ ins.toggleOnEvent(e);
104
+ return true;
105
+ });
106
+ }
107
+ ]
108
+ ];
109
+ }
110
+ });
157
111
 
158
112
  })));
@@ -8,7 +8,7 @@
8
8
 
9
9
  Degradation = {
10
10
  _URL_ATTRIBUTE: 'data-degradation-url',
11
- _HTML: ['<div id="luda-degradation-html" ', 'style="padding:100px 30px;text-align:center">', '<h1>Your Browser Is Too Old!</h1>', '<p>', 'Please visit this site with a modern browser ', '<a target="_blank" href="https://www.google.com/chrome/">', '(Chrome recommended)', '</a>', '.</p>', '</div>'].join(''),
11
+ _HTML: ['<div id="luda-degradation-html" ', 'style="padding:100px 30px;text-align:center">', '<h1>Your Browser is Too Old!</h1>', '<p>', 'Please visit this site with a modern browser ', '<a target="_blank" href="https://www.google.com/chrome/">', '(Chrome is recommended)', '</a>', '.</p>', '</div>'].join(''),
12
12
  _CSS_PROPERTIES: [
13
13
  {
14
14
  display: 'flex',
@@ -21,7 +21,8 @@
21
21
  _JS_PROPERTIES: {
22
22
  es6Class: 'class X {}',
23
23
  es6ArrowFunction: '((x) => x)()',
24
- mutationObserver: 'new MutationObserver(function(){})'
24
+ mutationObserver: 'new MutationObserver(function(){})',
25
+ proxy: 'new Proxy({},{})'
25
26
  },
26
27
  _NOTIFY_MILLSECONDS: 500,
27
28
  check: function() {
@@ -29,7 +30,12 @@
29
30
  this._checkJS(this._JS_PROPERTIES);
30
31
  return this._checkCSS(this._CSS_PROPERTIES);
31
32
  },
32
- _eval: eval,
33
+ _eval: function(script) {
34
+ var geval;
35
+ geval = eval;
36
+ script = '(function(){' + script + '})()';
37
+ return geval(script);
38
+ },
33
39
  _checkEnv: function() {
34
40
  if (typeof document !== 'undefined') {
35
41
  if (typeof window !== 'undefined') {
@@ -1,118 +1,71 @@
1
- //= require ../install
2
- //= require ../dom
3
- //= require ../event
4
- //= require ../factory
1
+ //= require ../kernel/index
2
+ //= require ../mixins/resetable
5
3
  (function (global, factory) {
6
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../install.js'), require('../dom.js'), require('../event.js'), require('../factory.js')) :
7
- typeof define === 'function' && define.amd ? define(['../install.js', '../dom.js', '../event.js', '../factory.js'], factory) :
4
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../kernel/index.js'), require('../mixins/resetable.js')) :
5
+ typeof define === 'function' && define.amd ? define(['../kernel/index.js', '../mixins/resetable.js'], factory) :
8
6
  (factory());
9
7
  }(this, (function () { 'use strict';
10
8
 
11
- luda((function() {
12
- var _Class;
13
-
14
- _Class = class extends luda.Factory {
15
- reset() {
16
- this._$file.value = '';
17
- return this._setSimulatorInitialValue();
18
- }
19
-
20
- _getConfig() {
21
- var _$file, _$simulator;
22
- _$file = luda.$child(this.constructor._FILE_SELECTOR, this._$component);
23
- _$simulator = luda.$child(this.constructor._SIMULATOR_SELECTOR, this._$component);
24
- return {_$file, _$simulator};
25
- }
26
-
27
- _constructor() {
28
- ({_$file: this._$file, _$simulator: this._$simulator} = this._getConfig());
29
- return this._init();
30
- }
31
-
32
- _onMutations() {
33
- return this._constructor();
34
- }
35
-
36
- _insertSimulator() {
37
- this._$simulator = document.createElement('input');
38
- this._$simulator.tabIndex = -1;
39
- return luda.$after(this._$simulator, this._$file);
40
- }
41
-
42
- _setPlaceholderValue() {
43
- if (this._$file.hasAttribute(this.constructor._PLACEHOLDER_ATTRIBUTE)) {
44
- return this._$simulator.placeholder = this._$file.getAttribute(this.constructor._PLACEHOLDER_ATTRIBUTE);
45
- }
46
- }
47
-
48
- _setSimulatorValue() {
49
- var values;
50
- values = [];
51
- Array.from(this._$file.files).map(function(file) {
52
- return values.push(file.name);
53
- });
54
- if (values.length) {
55
- return this._$simulator.value = values.join(this.constructor._VALUE_SPLITOR);
56
- }
57
- return this._setSimulatorInitialValue();
58
- }
59
-
60
- _setSimulatorInitialValue() {
61
- if (this._$file.hasAttribute(this.constructor._VALUE_ATTRIBUTE)) {
62
- return this._$simulator.value = this._$file.getAttribute(this.constructor._VALUE_ATTRIBUTE);
63
- }
9
+ luda.component('fmFile').protect({
10
+ selector: {
11
+ root: '.fm-file',
12
+ file: 'input[type=file]',
13
+ simulator: 'input:not([type=file])'
14
+ },
15
+ splitor: ' '
16
+ }).protect({
17
+ insertSimulator: function() {
18
+ var simulator;
19
+ if (this.simulator.length) {
20
+ return;
64
21
  }
65
-
66
- _init() {
67
- if (this._$file) {
68
- if (!this._$simulator) {
69
- this._insertSimulator();
70
- }
71
- this._setPlaceholderValue();
72
- return this._setSimulatorValue();
73
- }
74
- }
75
-
76
- static reset($file) {
77
- return this.query($file).reset();
22
+ simulator = luda('<input>');
23
+ simulator.els[0].tabIndex = -1;
24
+ return simulator.insertAfter(this.file);
25
+ },
26
+ updatePlaceholder: function() {
27
+ var placeholder;
28
+ if (!(placeholder = this.file.attr('placeholder'))) {
29
+ return;
78
30
  }
79
-
80
- static _init() {
81
- var self;
82
- self = this;
83
- luda.on('change', `${this._SELECTOR} ${this._FILE_SELECTOR}`, function(e) {
84
- return self.query(luda.$parent(self._SELECTOR, this))._setSimulatorValue();
85
- });
86
- return luda.on(luda._FORM_RESET, this._SELECTOR, function(e) {
87
- return setTimeout(() => {
88
- return self.query(this)._setSimulatorValue();
89
- });
90
- });
31
+ return this.simulator.attr('placeholder', placeholder);
32
+ },
33
+ updateValue: function() {
34
+ var value, values;
35
+ values = Array.from(this.file.els[0].files).map(function(f) {
36
+ return f.name;
37
+ });
38
+ value = values.join(this.splitor) || this.file.attr('value') || '';
39
+ return this.simulator.attr('value', value);
40
+ },
41
+ tryReset: function(target, oldVal) {
42
+ if (this.file.attr('value') !== '') {
43
+ return;
91
44
  }
92
-
93
- };
94
-
95
- _Class._SCOPE = 'fmFile';
96
-
97
- _Class._VALUE_SPLITOR = ' ';
98
-
99
- _Class._SELECTOR = '.fm-file';
100
-
101
- _Class._FILE_SELECTOR = 'input[type=file]';
102
-
103
- _Class._SIMULATOR_SELECTOR = 'input:not([type=file])';
104
-
105
- _Class._PLACEHOLDER_ATTRIBUTE = 'placeholder';
106
-
107
- _Class._VALUE_ATTRIBUTE = 'value';
108
-
109
- _Class._observerConfig = {
110
- childList: true,
111
- subtree: true
112
- };
113
-
114
- return _Class;
115
-
116
- }).call(this));
45
+ this.file.els[0].value = '';
46
+ return this.file.attr('value', oldVal);
47
+ }
48
+ }).help({
49
+ find: function() {
50
+ return {
51
+ file: this.selector.file,
52
+ simulator: this.selector.simulator
53
+ };
54
+ },
55
+ watch: function() {
56
+ return {
57
+ attr: [['value', this.selector.file, this.tryReset, this.updateValue]]
58
+ };
59
+ },
60
+ create: function() {
61
+ this.insertSimulator();
62
+ this.updatePlaceholder();
63
+ return this.updateValue();
64
+ },
65
+ listen: function() {
66
+ luda.mixin('resetable').get('listen').call(this, this.updateValue);
67
+ return [['change', this.selector.file, this.updateValue]];
68
+ }
69
+ });
117
70
 
118
71
  })));