luda 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/assets/javascripts/luda-degradation.js +10 -4
- data/assets/javascripts/luda-degradation.js.map +1 -1
- data/assets/javascripts/luda-degradation.min.js +2 -2
- data/assets/javascripts/luda-degradation.min.js.map +1 -1
- data/assets/javascripts/luda-sprockets.js +2 -0
- data/assets/javascripts/luda.js +4003 -2083
- data/assets/javascripts/luda.js.map +1 -1
- data/assets/javascripts/luda.min.js +2 -2
- data/assets/javascripts/luda.min.js.map +1 -1
- data/assets/javascripts/luda/behaviors/disabled.js +24 -0
- data/assets/javascripts/luda/behaviors/enter.js +24 -33
- data/assets/javascripts/luda/behaviors/focus.js +98 -95
- data/assets/javascripts/luda/behaviors/readonly.js +20 -58
- data/assets/javascripts/luda/behaviors/tabulate.js +42 -62
- data/assets/javascripts/luda/behaviors/toggle.js +98 -144
- data/assets/javascripts/luda/degradation.js +9 -3
- data/assets/javascripts/luda/elements/form-file.js +62 -109
- data/assets/javascripts/luda/elements/form-select.js +101 -208
- data/assets/javascripts/luda/index.js +4 -2
- data/assets/javascripts/luda/kernel/index.js +3095 -0
- data/assets/javascripts/luda/mixins/disable.js +34 -0
- data/assets/javascripts/luda/mixins/resetable.js +46 -0
- data/assets/javascripts/luda/mixins/tabable.js +274 -0
- data/assets/javascripts/luda/mixins/toggleable.js +185 -0
- data/assets/javascripts/luda/patterns/carousel.js +115 -333
- data/assets/javascripts/luda/patterns/dropdown.js +132 -271
- data/assets/javascripts/luda/patterns/form-dropdown.js +59 -104
- data/assets/javascripts/luda/patterns/tab.js +49 -150
- data/assets/stylesheets/luda/default/_banner.sass +1 -1
- data/assets/stylesheets/luda/default/_base.sass +1 -1
- data/assets/stylesheets/luda/default/_functions.sass +1 -1
- data/assets/stylesheets/luda/default/_mixins.sass +12 -12
- data/assets/stylesheets/luda/default/_variables.sass +747 -1
- data/assets/stylesheets/luda/default/behaviors/_disabled.sass +1 -1
- data/assets/stylesheets/luda/default/behaviors/_focus.sass +1 -1
- data/assets/stylesheets/luda/default/behaviors/_readonly.sass +1 -1
- data/assets/stylesheets/luda/default/behaviors/_toggle.sass +1 -1
- data/assets/stylesheets/luda/default/elements/_badge.sass +1 -1
- data/assets/stylesheets/luda/default/elements/_baseline.sass +1 -1
- data/assets/stylesheets/luda/default/elements/_button.sass +1 -1
- data/assets/stylesheets/luda/default/elements/_container.sass +1 -1
- data/assets/stylesheets/luda/default/elements/_grid.sass +1 -1
- data/assets/stylesheets/luda/default/elements/_icon.sass +1 -1
- data/assets/stylesheets/luda/default/elements/_media.sass +1 -1
- data/assets/stylesheets/luda/default/elements/_overlay.sass +1 -1
- data/assets/stylesheets/luda/default/elements/_progress.sass +1 -1
- data/assets/stylesheets/luda/default/elements/_scrollbar.sass +1 -1
- data/assets/stylesheets/luda/default/elements/_table.sass +1 -1
- data/assets/stylesheets/luda/default/elements/_turbolinks-progress-bar.sass +1 -1
- data/assets/stylesheets/luda/default/elements/form/_form-check-radio.sass +1 -1
- data/assets/stylesheets/luda/default/elements/form/_form-element.sass +1 -1
- data/assets/stylesheets/luda/default/elements/form/_form-helper.sass +1 -1
- data/assets/stylesheets/luda/default/elements/form/_form-label.sass +1 -1
- data/assets/stylesheets/luda/default/elements/form/_form-range.sass +1 -1
- data/assets/stylesheets/luda/default/elements/form/_form-row.sass +1 -1
- data/assets/stylesheets/luda/default/elements/typography/_code.sass +1 -1
- data/assets/stylesheets/luda/default/elements/typography/_heading.sass +1 -1
- data/assets/stylesheets/luda/default/elements/typography/_link.sass +1 -1
- data/assets/stylesheets/luda/default/elements/typography/_list.sass +1 -1
- data/assets/stylesheets/luda/default/elements/typography/_mark.sass +1 -1
- data/assets/stylesheets/luda/default/elements/typography/_paragraph.sass +1 -1
- data/assets/stylesheets/luda/default/elements/typography/_quote.sass +1 -1
- data/assets/stylesheets/luda/default/elements/typography/_sub-sup.sass +1 -1
- data/assets/stylesheets/luda/default/elements/typography/_typography.sass +1 -1
- data/assets/stylesheets/luda/default/patterns/_alert.sass +1 -1
- data/assets/stylesheets/luda/default/patterns/_article.sass +1 -1
- data/assets/stylesheets/luda/default/patterns/_avatar.sass +1 -1
- data/assets/stylesheets/luda/default/patterns/_breadcrumb.sass +1 -1
- data/assets/stylesheets/luda/default/patterns/_button-group.sass +1 -1
- data/assets/stylesheets/luda/default/patterns/_button-icon.sass +1 -1
- data/assets/stylesheets/luda/default/patterns/_carousel.sass +1 -1
- data/assets/stylesheets/luda/default/patterns/_dropdown.sass +1 -1
- data/assets/stylesheets/luda/default/patterns/_form-dropdown.sass +1 -1
- data/assets/stylesheets/luda/default/patterns/_form-group.sass +1 -1
- data/assets/stylesheets/luda/default/patterns/_form-icon.sass +1 -1
- data/assets/stylesheets/luda/default/patterns/_modal.sass +1 -1
- data/assets/stylesheets/luda/default/patterns/_navigation.sass +1 -1
- data/assets/stylesheets/luda/default/patterns/_search-bar.sass +1 -1
- data/assets/stylesheets/luda/default/patterns/_tab.sass +1 -1
- data/assets/stylesheets/luda/default/utilities/_alignment.sass +1 -1
- data/assets/stylesheets/luda/default/utilities/_background.sass +1 -1
- data/assets/stylesheets/luda/default/utilities/_border.sass +1 -1
- data/assets/stylesheets/luda/default/utilities/_color.sass +1 -1
- data/assets/stylesheets/luda/default/utilities/_display.sass +1 -1
- data/assets/stylesheets/luda/default/utilities/_flex.sass +1 -1
- data/assets/stylesheets/luda/default/utilities/_float.sass +1 -1
- data/assets/stylesheets/luda/default/utilities/_opacity.sass +1 -1
- data/assets/stylesheets/luda/default/utilities/_overflow.sass +1 -1
- data/assets/stylesheets/luda/default/utilities/_position.sass +1 -1
- data/assets/stylesheets/luda/default/utilities/_shadow.sass +1 -1
- data/assets/stylesheets/luda/default/utilities/_shape.sass +1 -1
- data/assets/stylesheets/luda/default/utilities/_size.sass +1 -1
- data/assets/stylesheets/luda/default/utilities/_spacing.sass +1 -1
- data/assets/stylesheets/luda/default/utilities/_text.sass +1 -1
- data/assets/stylesheets/luda/default/utilities/_visibility.sass +1 -1
- data/assets/stylesheets/luda/default/utilities/_z-index.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/_base.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/_functions.sass +23 -0
- data/assets/stylesheets/luda/kernel/behaviors/_disabled.sass +7 -0
- data/assets/stylesheets/luda/kernel/behaviors/_focus.sass +7 -0
- data/assets/stylesheets/luda/kernel/behaviors/_readonly.sass +7 -0
- data/assets/stylesheets/luda/kernel/behaviors/_toggle.sass +4 -0
- data/assets/stylesheets/luda/{_core → kernel}/elements/_badge.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/elements/_baseline.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/elements/_button.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/elements/_container.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/elements/_grid.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/elements/_icon.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/elements/_media.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/elements/_overlay.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/elements/_progress.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/elements/_scrollbar.sass +7 -1
- data/assets/stylesheets/luda/{_core → kernel}/elements/_table.sass +1 -1
- data/assets/stylesheets/luda/kernel/elements/_turbolinks-progress-bar.sass +5 -0
- data/assets/stylesheets/luda/{_core → kernel}/elements/form/_form-check-radio.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/elements/form/_form-element.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/elements/form/_form-helper.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/elements/form/_form-label.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/elements/form/_form-range.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/elements/form/_form-row.sass +13 -28
- data/assets/stylesheets/luda/{_core → kernel}/elements/typography/_code.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/elements/typography/_heading.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/elements/typography/_link.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/elements/typography/_list.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/elements/typography/_mark.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/elements/typography/_paragraph.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/elements/typography/_quote.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/elements/typography/_sub-sup.sass +1 -1
- data/assets/stylesheets/luda/kernel/elements/typography/_typography.sass +6 -0
- data/assets/stylesheets/luda/{_core → kernel}/mixins/_base.sass +0 -0
- data/assets/stylesheets/luda/{_core → kernel}/mixins/_browser.sass +0 -0
- data/assets/stylesheets/luda/{_core → kernel}/mixins/_button.sass +0 -0
- data/assets/stylesheets/luda/{_core → kernel}/mixins/_disabled.sass +1 -0
- data/assets/stylesheets/luda/{_core → kernel}/mixins/_dropdown.sass +0 -0
- data/assets/stylesheets/luda/{_core → kernel}/mixins/_focus.sass +0 -0
- data/assets/stylesheets/luda/{_core → kernel}/mixins/_form.sass +0 -0
- data/assets/stylesheets/luda/{_core → kernel}/mixins/_install.sass +0 -0
- data/assets/stylesheets/luda/{_core → kernel}/mixins/_media-query.sass +0 -0
- data/assets/stylesheets/luda/{_core → kernel}/mixins/_overlay.sass +0 -0
- data/assets/stylesheets/luda/{_core → kernel}/mixins/_sass-lint-fix.sass +0 -0
- data/assets/stylesheets/luda/{_core → kernel}/mixins/_typography.sass +0 -0
- data/assets/stylesheets/luda/{_core → kernel}/patterns/_alert.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/patterns/_article.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/patterns/_avatar.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/patterns/_breadcrumb.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/patterns/_button-group.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/patterns/_button-icon.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/patterns/_carousel.sass +2 -2
- data/assets/stylesheets/luda/{_core → kernel}/patterns/_dropdown.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/patterns/_form-dropdown.sass +6 -1
- data/assets/stylesheets/luda/{_core → kernel}/patterns/_form-group.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/patterns/_form-icon.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/patterns/_modal.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/patterns/_navigation.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/patterns/_search-bar.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/patterns/_tab.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/utilities/_alignment.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/utilities/_background.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/utilities/_border.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/utilities/_color.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/utilities/_display.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/utilities/_flex.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/utilities/_float.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/utilities/_opacity.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/utilities/_overflow.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/utilities/_position.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/utilities/_shadow.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/utilities/_shape.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/utilities/_size.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/utilities/_spacing.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/utilities/_text.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/utilities/_visibility.sass +1 -1
- data/assets/stylesheets/luda/{_core → kernel}/utilities/_z-index.sass +1 -1
- data/lib/luda/version.rb +1 -1
- metadata +86 -89
- data/assets/javascripts/luda/constants.js +0 -18
- data/assets/javascripts/luda/dom.js +0 -143
- data/assets/javascripts/luda/event.js +0 -201
- data/assets/javascripts/luda/factory.js +0 -334
- data/assets/javascripts/luda/install.js +0 -75
- data/assets/javascripts/luda/static.js +0 -224
- data/assets/javascripts/luda/utilities.js +0 -16
- data/assets/stylesheets/luda/_core/_variables.sass +0 -742
- data/assets/stylesheets/luda/_core/behaviors/_disabled.sass +0 -7
- data/assets/stylesheets/luda/_core/behaviors/_focus.sass +0 -7
- data/assets/stylesheets/luda/_core/behaviors/_readonly.sass +0 -14
- data/assets/stylesheets/luda/_core/behaviors/_toggle.sass +0 -4
- data/assets/stylesheets/luda/_core/elements/_turbolinks-progress-bar.sass +0 -5
- data/assets/stylesheets/luda/_core/elements/typography/_typography.sass +0 -6
@@ -1,201 +0,0 @@
|
|
1
|
-
//= require ./install
|
2
|
-
//= require ./dom
|
3
|
-
(function (global, factory) {
|
4
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('./install.js'), require('./dom.js')) :
|
5
|
-
typeof define === 'function' && define.amd ? define(['./install.js', './dom.js'], factory) :
|
6
|
-
(factory());
|
7
|
-
}(this, (function () { 'use strict';
|
8
|
-
|
9
|
-
var splice = [].splice;
|
10
|
-
|
11
|
-
luda({
|
12
|
-
_SWIPE_DISTANCE: 10,
|
13
|
-
_EVENT_TYPE_PREFIX: 'luda',
|
14
|
-
_SWIPE_LEFT: 'swipeleft',
|
15
|
-
_SWIPE_RIGHT: 'swiperight',
|
16
|
-
_SWIPE_UP: 'swipeup',
|
17
|
-
_SWIPE_DOWN: 'swipedown',
|
18
|
-
_SWIPE_LEFT_OR_UP: 'swipeleft or swipeup',
|
19
|
-
_SWIPE_RIGHT_OR_DOWN: 'swiperight or swipedown',
|
20
|
-
_DOC_READY: 'docready',
|
21
|
-
_FORM_RESET: 'reset',
|
22
|
-
eventPath: function(event) {
|
23
|
-
var path;
|
24
|
-
if (event.composedPath) {
|
25
|
-
return path = event.composedPath();
|
26
|
-
} else if (event.path) {
|
27
|
-
return path = event.path;
|
28
|
-
} else {
|
29
|
-
return path = [event.target].concat(luda.$parents('*', event.target));
|
30
|
-
}
|
31
|
-
},
|
32
|
-
on: function(event, ...selector) {
|
33
|
-
var handler, ref;
|
34
|
-
ref = selector, [...selector] = ref, [handler] = splice.call(selector, -1);
|
35
|
-
switch (event) {
|
36
|
-
case this._DOC_READY:
|
37
|
-
return this._onDocReady(handler);
|
38
|
-
case this._FORM_RESET:
|
39
|
-
return this._onReset(selector[0], handler);
|
40
|
-
case this._SWIPE_LEFT:
|
41
|
-
case this._SWIPE_RIGHT:
|
42
|
-
case this._SWIPE_UP:
|
43
|
-
case this._SWIPE_DOWN:
|
44
|
-
case this._SWIPE_LEFT_OR_UP:
|
45
|
-
case this._SWIPE_RIGHT_OR_DOWN:
|
46
|
-
return this._onSwipe(event, selector[0], handler);
|
47
|
-
default:
|
48
|
-
return this._on(event, selector[0], handler);
|
49
|
-
}
|
50
|
-
},
|
51
|
-
onOpposite: function(event, selector, handler) {
|
52
|
-
var _self;
|
53
|
-
_self = this;
|
54
|
-
return document.addEventListener(event, function(e) {
|
55
|
-
var trigger;
|
56
|
-
trigger = _self.eventPath(e).every(function($element) {
|
57
|
-
return !$element.matches || !$element.matches(selector);
|
58
|
-
});
|
59
|
-
if (trigger) {
|
60
|
-
return handler(e);
|
61
|
-
}
|
62
|
-
});
|
63
|
-
},
|
64
|
-
dispatch: function($target, type, detail, delayMilliseconds, options = {}) {
|
65
|
-
var evt;
|
66
|
-
if (typeof options.bubbles !== 'boolean') {
|
67
|
-
options.bubbles = true;
|
68
|
-
}
|
69
|
-
if (typeof options.cancelable !== 'boolean') {
|
70
|
-
options.cancelable = true;
|
71
|
-
}
|
72
|
-
if (typeof options.composed !== 'boolean') {
|
73
|
-
options.composed = true;
|
74
|
-
}
|
75
|
-
evt = new Event(`${this._EVENT_TYPE_PREFIX}:${type}`, options);
|
76
|
-
evt.detail = detail;
|
77
|
-
if (typeof delayMilliseconds === 'number') {
|
78
|
-
return setTimeout(function() {
|
79
|
-
if ($target) {
|
80
|
-
return $target.dispatchEvent(evt);
|
81
|
-
}
|
82
|
-
}, delayMilliseconds);
|
83
|
-
} else {
|
84
|
-
$target.dispatchEvent(evt);
|
85
|
-
return evt;
|
86
|
-
}
|
87
|
-
},
|
88
|
-
_onDocReady: function(handler) {
|
89
|
-
if (document.readyState === 'loading') {
|
90
|
-
return document.addEventListener('DOMContentLoaded', handler);
|
91
|
-
} else {
|
92
|
-
return handler();
|
93
|
-
}
|
94
|
-
},
|
95
|
-
_onReset: function(selector, handler) {
|
96
|
-
return document.addEventListener('reset', function(e) {
|
97
|
-
if (selector != null) {
|
98
|
-
return luda.$children(selector, e.target).forEach(function($element) {
|
99
|
-
return handler.bind($element)(e);
|
100
|
-
});
|
101
|
-
} else {
|
102
|
-
return handler(e);
|
103
|
-
}
|
104
|
-
});
|
105
|
-
},
|
106
|
-
_onSwipe: function(event, selector, handler) {
|
107
|
-
var $touchStartElement, _self, touchStartE, touchStartX, touchStartY, watch;
|
108
|
-
_self = this;
|
109
|
-
watch = false;
|
110
|
-
$touchStartElement = document;
|
111
|
-
touchStartE = null;
|
112
|
-
touchStartX = 0;
|
113
|
-
touchStartY = 0;
|
114
|
-
document.addEventListener('touchstart', function(e) {
|
115
|
-
if (e.touches.length === 1) {
|
116
|
-
touchStartX = e.touches[0].screenX;
|
117
|
-
touchStartY = e.touches[0].screenY;
|
118
|
-
if (selector != null) {
|
119
|
-
return _self.eventPath(e).some(function($element) {
|
120
|
-
if ($element.matches && $element.matches(selector)) {
|
121
|
-
$touchStartElement = $element;
|
122
|
-
touchStartE = e;
|
123
|
-
watch = true;
|
124
|
-
return true;
|
125
|
-
}
|
126
|
-
});
|
127
|
-
} else {
|
128
|
-
return watch = true;
|
129
|
-
}
|
130
|
-
}
|
131
|
-
});
|
132
|
-
return document.addEventListener('touchmove', function(e) {
|
133
|
-
var eventX, eventXOrY, eventY, touchDistanceX, touchDistanceY;
|
134
|
-
if (watch && e.touches.length === 1) {
|
135
|
-
touchDistanceX = e.touches[0].screenX - touchStartX;
|
136
|
-
touchDistanceY = e.touches[0].screenY - touchStartY;
|
137
|
-
eventX = void 0;
|
138
|
-
eventY = void 0;
|
139
|
-
eventXOrY = void 0;
|
140
|
-
if (Math.abs(touchDistanceX) >= _self._SWIPE_DISTANCE) {
|
141
|
-
if (touchDistanceX > 0) {
|
142
|
-
eventX = _self._SWIPE_RIGHT;
|
143
|
-
} else {
|
144
|
-
eventX = _self._SWIPE_LEFT;
|
145
|
-
}
|
146
|
-
}
|
147
|
-
if (Math.abs(touchDistanceY) >= _self._SWIPE_DISTANCE) {
|
148
|
-
if (touchDistanceY > 0) {
|
149
|
-
eventY = _self._SWIPE_DOWN;
|
150
|
-
} else {
|
151
|
-
eventY = _self._SWIPE_UP;
|
152
|
-
}
|
153
|
-
}
|
154
|
-
if (eventX === _self._SWIPE_LEFT || eventY === _self._SWIPE_UP) {
|
155
|
-
eventXOrY = _self._SWIPE_LEFT_OR_UP;
|
156
|
-
}
|
157
|
-
if (eventX === _self._SWIPE_RIGHT || eventY === _self._SWIPE_DOWN) {
|
158
|
-
eventXOrY = _self._SWIPE_RIGHT_OR_DOWN;
|
159
|
-
}
|
160
|
-
if (((eventX != null) && eventX === event) || ((eventY != null) && eventY === event) || eventXOrY === event) {
|
161
|
-
if (selector != null) {
|
162
|
-
return _self.eventPath(e).some(function($element) {
|
163
|
-
if ($element === $touchStartElement) {
|
164
|
-
watch = false;
|
165
|
-
handler.bind($element)(touchStartE, e);
|
166
|
-
return true;
|
167
|
-
}
|
168
|
-
});
|
169
|
-
} else {
|
170
|
-
watch = false;
|
171
|
-
return handler(touchStartE, e);
|
172
|
-
}
|
173
|
-
}
|
174
|
-
}
|
175
|
-
});
|
176
|
-
},
|
177
|
-
_on: function(event, selector, handler) {
|
178
|
-
var _self;
|
179
|
-
if (selector === window) {
|
180
|
-
return window.addEventListener(event, function(e) {
|
181
|
-
return handler(e);
|
182
|
-
});
|
183
|
-
} else {
|
184
|
-
_self = this;
|
185
|
-
return document.addEventListener(event, function(e) {
|
186
|
-
if (selector != null) {
|
187
|
-
return _self.eventPath(e).some(function($element) {
|
188
|
-
if ($element.matches && $element.matches(selector)) {
|
189
|
-
handler.bind($element)(e);
|
190
|
-
return true;
|
191
|
-
}
|
192
|
-
});
|
193
|
-
} else {
|
194
|
-
return handler(e);
|
195
|
-
}
|
196
|
-
});
|
197
|
-
}
|
198
|
-
}
|
199
|
-
});
|
200
|
-
|
201
|
-
})));
|
@@ -1,334 +0,0 @@
|
|
1
|
-
//= require ./install
|
2
|
-
//= require ./utilities
|
3
|
-
//= require ./dom
|
4
|
-
//= require ./event
|
5
|
-
(function (global, factory) {
|
6
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('./install.js'), require('./utilities.js'), require('./dom.js'), require('./event.js')) :
|
7
|
-
typeof define === 'function' && define.amd ? define(['./install.js', './utilities.js', './dom.js', './event.js'], factory) :
|
8
|
-
(factory());
|
9
|
-
}(this, (function () { 'use strict';
|
10
|
-
|
11
|
-
var Factory;
|
12
|
-
|
13
|
-
luda(Factory = (function() {
|
14
|
-
class Factory {
|
15
|
-
static _ACTIVATE_EVENT_TYPE() {
|
16
|
-
return `${this._SCOPE}:activate`;
|
17
|
-
}
|
18
|
-
|
19
|
-
static _ACTIVATED_EVENT_TYPE() {
|
20
|
-
return `${this._SCOPE}:activated`;
|
21
|
-
}
|
22
|
-
|
23
|
-
static _DEACTIVATE_EVENT_TYPE() {
|
24
|
-
return `${this._SCOPE}:deactivate`;
|
25
|
-
}
|
26
|
-
|
27
|
-
static _DEACTIVATED_EVENT_TYPE() {
|
28
|
-
return `${this._SCOPE}:deactivated`;
|
29
|
-
}
|
30
|
-
|
31
|
-
static _ACTIVATING_MARK_ATTRIBUTE() {
|
32
|
-
return `data-${this._SCOPE}-activating`;
|
33
|
-
}
|
34
|
-
|
35
|
-
static _DEACTIVATING_MARK_ATTRIBUTE() {
|
36
|
-
return `data-${this._SCOPE}-deactivating`;
|
37
|
-
}
|
38
|
-
|
39
|
-
_hasDescendant(descendant) {
|
40
|
-
if (this._children.length && descendant) {
|
41
|
-
if (this._children.includes(descendant)) {
|
42
|
-
return true;
|
43
|
-
}
|
44
|
-
return this._children.some(function(child) {
|
45
|
-
return child._hasDescendant(descendant);
|
46
|
-
});
|
47
|
-
} else {
|
48
|
-
return false;
|
49
|
-
}
|
50
|
-
}
|
51
|
-
|
52
|
-
_observe() {
|
53
|
-
this._observer = new MutationObserver(this._onMutations.bind(this));
|
54
|
-
return this._observer.observe(this._$component, this.constructor._observerConfig);
|
55
|
-
}
|
56
|
-
|
57
|
-
_disconnect() {
|
58
|
-
this._observer.disconnect();
|
59
|
-
return this._observer = null;
|
60
|
-
}
|
61
|
-
|
62
|
-
_activatePrevented($ele, detail) {
|
63
|
-
var activateEvent;
|
64
|
-
activateEvent = luda.dispatch($ele, this.constructor._ACTIVATE_EVENT_TYPE(), detail);
|
65
|
-
return activateEvent.defaultPrevented;
|
66
|
-
}
|
67
|
-
|
68
|
-
_deactivatePrevented($ele, detail) {
|
69
|
-
var deactivateEvent;
|
70
|
-
deactivateEvent = luda.dispatch($ele, this.constructor._DEACTIVATE_EVENT_TYPE(), detail);
|
71
|
-
return deactivateEvent.defaultPrevented;
|
72
|
-
}
|
73
|
-
|
74
|
-
_handleActivateEnd($ele, detail) {
|
75
|
-
var activateDuration;
|
76
|
-
this._setActivatingMark(detail);
|
77
|
-
activateDuration = luda.getTransitionDuration($ele);
|
78
|
-
luda.dispatch($ele, this.constructor._ACTIVATED_EVENT_TYPE(), detail, activateDuration);
|
79
|
-
setTimeout(() => {
|
80
|
-
if (this._$component) {
|
81
|
-
return this._removeActivatingMark();
|
82
|
-
}
|
83
|
-
}, activateDuration);
|
84
|
-
return activateDuration;
|
85
|
-
}
|
86
|
-
|
87
|
-
_handleDeactivateEnd($ele, detail) {
|
88
|
-
var deactivateDuration;
|
89
|
-
this._setDeactivatingMark(detail);
|
90
|
-
deactivateDuration = luda.getTransitionDuration($ele);
|
91
|
-
luda.dispatch($ele, this.constructor._DEACTIVATED_EVENT_TYPE(), detail, deactivateDuration);
|
92
|
-
setTimeout(() => {
|
93
|
-
if (this._$component) {
|
94
|
-
return this._removeDeactivatingMark();
|
95
|
-
}
|
96
|
-
}, deactivateDuration);
|
97
|
-
return deactivateDuration;
|
98
|
-
}
|
99
|
-
|
100
|
-
_handleActivateCancel($ele, detail) {
|
101
|
-
if (this._isActivating()) {
|
102
|
-
luda.dispatch($ele, this.constructor._ACTIVATED_EVENT_TYPE(), detail);
|
103
|
-
return this._removeActivatingMark();
|
104
|
-
}
|
105
|
-
}
|
106
|
-
|
107
|
-
_handleDeactivateCancel($ele, detail) {
|
108
|
-
if (this._isDeactivating()) {
|
109
|
-
luda.dispatch($ele, this.constructor._DEACTIVATED_EVENT_TYPE(), detail);
|
110
|
-
return this._removeDeactivatingMark();
|
111
|
-
}
|
112
|
-
}
|
113
|
-
|
114
|
-
_isActivating() {
|
115
|
-
return this._$component.hasAttribute(this.constructor._ACTIVATING_MARK_ATTRIBUTE());
|
116
|
-
}
|
117
|
-
|
118
|
-
_isDeactivating() {
|
119
|
-
return this._$component.hasAttribute(this.constructor._DEACTIVATING_MARK_ATTRIBUTE());
|
120
|
-
}
|
121
|
-
|
122
|
-
_isTransitioning() {
|
123
|
-
return this._isActivating() || this._isDeactivating();
|
124
|
-
}
|
125
|
-
|
126
|
-
_getActivatingMark() {
|
127
|
-
return this._$component.getAttribute(this.constructor._ACTIVATING_MARK_ATTRIBUTE());
|
128
|
-
}
|
129
|
-
|
130
|
-
_getDeactivatingMark() {
|
131
|
-
return this._$component.getAttribute(this.constructor._DEACTIVATING_MARK_ATTRIBUTE());
|
132
|
-
}
|
133
|
-
|
134
|
-
_removeActivatingMark() {
|
135
|
-
return this._$component.removeAttribute(this.constructor._ACTIVATING_MARK_ATTRIBUTE());
|
136
|
-
}
|
137
|
-
|
138
|
-
_removeDeactivatingMark() {
|
139
|
-
return this._$component.removeAttribute(this.constructor._DEACTIVATING_MARK_ATTRIBUTE());
|
140
|
-
}
|
141
|
-
|
142
|
-
_setActivatingMark(value) {
|
143
|
-
return this._$component.setAttribute(this.constructor._ACTIVATING_MARK_ATTRIBUTE(), value);
|
144
|
-
}
|
145
|
-
|
146
|
-
_setDeactivatingMark(value) {
|
147
|
-
return this._$component.setAttribute(this.constructor._DEACTIVATING_MARK_ATTRIBUTE(), value);
|
148
|
-
}
|
149
|
-
|
150
|
-
static create($component) {
|
151
|
-
var $family, componentIsElementInstance, instance, parent;
|
152
|
-
componentIsElementInstance = $component instanceof Element;
|
153
|
-
if (!componentIsElementInstance) {
|
154
|
-
throw new Error(this._$COMPONENT_INVALID_ERROR);
|
155
|
-
}
|
156
|
-
$family = this._query$family($component);
|
157
|
-
instance = this.query($component);
|
158
|
-
if ($family._$parent) {
|
159
|
-
if (parent = this.query($family._$parent)) {
|
160
|
-
if (!instance) {
|
161
|
-
this._instances.push(instance = this._createInstance($component));
|
162
|
-
}
|
163
|
-
if (instance._parent !== parent) {
|
164
|
-
parent._children.push(instance) && (instance._parent = parent);
|
165
|
-
}
|
166
|
-
$family._$children.forEach(($child) => {
|
167
|
-
return this.create($child);
|
168
|
-
});
|
169
|
-
return instance;
|
170
|
-
} else {
|
171
|
-
this.create($family._$parent);
|
172
|
-
return this.query($component);
|
173
|
-
}
|
174
|
-
} else {
|
175
|
-
if (!instance) {
|
176
|
-
this._instances.push(instance = this._createInstance($component));
|
177
|
-
}
|
178
|
-
$family._$children.forEach(($child) => {
|
179
|
-
return this.create($child);
|
180
|
-
});
|
181
|
-
return instance;
|
182
|
-
}
|
183
|
-
}
|
184
|
-
|
185
|
-
static destroy(instance$component) {
|
186
|
-
var attribute, instance, results, value;
|
187
|
-
instance = this.query(instance$component);
|
188
|
-
if (instance) {
|
189
|
-
if (instance._observer) {
|
190
|
-
instance._disconnect();
|
191
|
-
}
|
192
|
-
if (instance._destroy) {
|
193
|
-
instance._destroy();
|
194
|
-
}
|
195
|
-
while (instance._children.length) {
|
196
|
-
this.destroy(instance._children[0]);
|
197
|
-
}
|
198
|
-
if (instance._parent) {
|
199
|
-
luda.except(instance, instance._parent._children);
|
200
|
-
}
|
201
|
-
luda.except(instance, this._instances);
|
202
|
-
results = [];
|
203
|
-
for (attribute in instance) {
|
204
|
-
value = instance[attribute];
|
205
|
-
results.push(instance[attribute] = null);
|
206
|
-
}
|
207
|
-
return results;
|
208
|
-
}
|
209
|
-
}
|
210
|
-
|
211
|
-
static query(instance$component) {
|
212
|
-
var instance;
|
213
|
-
instance = null;
|
214
|
-
if (instance$component instanceof this && this._instances.includes(instance$component)) {
|
215
|
-
instance = instance$component;
|
216
|
-
} else if (instance$component instanceof Element) {
|
217
|
-
this._instances.some(function(inited) {
|
218
|
-
if (inited._$component === instance$component) {
|
219
|
-
instance = inited;
|
220
|
-
return true;
|
221
|
-
}
|
222
|
-
});
|
223
|
-
}
|
224
|
-
return instance;
|
225
|
-
}
|
226
|
-
|
227
|
-
static _query$family($component) {
|
228
|
-
var _$children, _$parent;
|
229
|
-
_$parent = null;
|
230
|
-
_$children = [];
|
231
|
-
if (this._SELECTOR) {
|
232
|
-
_$parent = luda.$parent(this._SELECTOR, $component);
|
233
|
-
_$children = luda.$unnested(this._SELECTOR, $component, this._SELECTOR);
|
234
|
-
}
|
235
|
-
return {_$parent, _$children};
|
236
|
-
}
|
237
|
-
|
238
|
-
static _createInstance($component) {
|
239
|
-
var instance;
|
240
|
-
instance = new this();
|
241
|
-
instance._$component = $component;
|
242
|
-
instance._parent = null;
|
243
|
-
instance._children = [];
|
244
|
-
instance._observer = null;
|
245
|
-
if (instance._constructor) {
|
246
|
-
instance._constructor();
|
247
|
-
}
|
248
|
-
if (!(instance._observer && instance._onMutations && this._observerConfig)) {
|
249
|
-
instance._observe();
|
250
|
-
}
|
251
|
-
return instance;
|
252
|
-
}
|
253
|
-
|
254
|
-
static _onEleAdded($ele) {
|
255
|
-
return Factory._onEleAddedOrRemoved($ele, 'create');
|
256
|
-
}
|
257
|
-
|
258
|
-
static _onEleRemoved($ele) {
|
259
|
-
return Factory._onEleAddedOrRemoved($ele, 'destroy');
|
260
|
-
}
|
261
|
-
|
262
|
-
static _onEleAddedOrRemoved($ele, action) {
|
263
|
-
return Factory._Observed.forEach(function(Observed) {
|
264
|
-
if ($ele.matches(Observed._SELECTOR)) {
|
265
|
-
return Observed[action]($ele);
|
266
|
-
}
|
267
|
-
return luda.$children(Observed._SELECTOR, $ele).forEach(function($child) {
|
268
|
-
return Observed[action]($child);
|
269
|
-
});
|
270
|
-
});
|
271
|
-
}
|
272
|
-
|
273
|
-
static _observe(classObj) {
|
274
|
-
if (!Factory._observer) {
|
275
|
-
Factory._observer = luda._observeDom(Factory._onEleAdded, Factory._onEleRemoved);
|
276
|
-
}
|
277
|
-
if (!Factory._Observed.includes(classObj)) {
|
278
|
-
return Factory._Observed.push(classObj);
|
279
|
-
}
|
280
|
-
}
|
281
|
-
|
282
|
-
static _install() {
|
283
|
-
var exposed, self;
|
284
|
-
self = this;
|
285
|
-
if (this === Factory) {
|
286
|
-
return this;
|
287
|
-
}
|
288
|
-
if (!(this._SELECTOR || typeof this._SELECTOR !== 'string')) {
|
289
|
-
throw new Error(this._COMPONENT_NO_SELECTOR_ERROR);
|
290
|
-
}
|
291
|
-
if (!this.hasOwnProperty('_instances')) {
|
292
|
-
this._instances = [];
|
293
|
-
}
|
294
|
-
if (typeof this._init === 'function') {
|
295
|
-
exposed = this._init();
|
296
|
-
}
|
297
|
-
luda.on(luda._DOC_READY, function() {
|
298
|
-
luda.$children(self._SELECTOR).forEach(function($component) {
|
299
|
-
return self.create($component);
|
300
|
-
});
|
301
|
-
return Factory._observe(self);
|
302
|
-
});
|
303
|
-
if (exposed) {
|
304
|
-
return exposed;
|
305
|
-
} else {
|
306
|
-
return this;
|
307
|
-
}
|
308
|
-
}
|
309
|
-
|
310
|
-
}
|
311
|
-
Factory._SCOPE = 'Factory';
|
312
|
-
|
313
|
-
Factory._COMPONENT_NO_SELECTOR_ERROR = 'Extended component must has a css selector';
|
314
|
-
|
315
|
-
Factory._$COMPONENT_INVALID_ERROR = '@param $component must be an instance of Element';
|
316
|
-
|
317
|
-
Factory._SELECTOR = '';
|
318
|
-
|
319
|
-
Factory._instances = [];
|
320
|
-
|
321
|
-
Factory._Observed = [];
|
322
|
-
|
323
|
-
Factory._observer = null;
|
324
|
-
|
325
|
-
Factory._observerConfig = {
|
326
|
-
childList: true,
|
327
|
-
subtree: true
|
328
|
-
};
|
329
|
-
|
330
|
-
return Factory;
|
331
|
-
|
332
|
-
}).call(this));
|
333
|
-
|
334
|
-
})));
|