xooie 1.0.4 → 1.0.5
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.
- checksums.yaml +7 -0
- data/vendor/assets/javascripts/xooie/addons/base.js +61 -74
- data/vendor/assets/javascripts/xooie/addons/carousel_lentils.js +79 -78
- data/vendor/assets/javascripts/xooie/addons/carousel_pagination.js +140 -137
- data/vendor/assets/javascripts/xooie/addons/dropdown_accordion.js +38 -0
- data/vendor/assets/javascripts/xooie/addons/tab_animation.js +228 -227
- data/vendor/assets/javascripts/xooie/addons/tab_automation.js +150 -0
- data/vendor/assets/javascripts/xooie/base.js +214 -0
- data/vendor/assets/javascripts/xooie/carousel.js +400 -0
- data/vendor/assets/javascripts/xooie/dialog.js +132 -0
- data/vendor/assets/javascripts/xooie/dropdown.js +273 -0
- data/vendor/assets/javascripts/xooie/event_handler.js +14 -16
- data/vendor/assets/javascripts/xooie/helpers.js +45 -35
- data/vendor/assets/javascripts/xooie/shared.js +65 -37
- data/vendor/assets/javascripts/xooie/stylesheet.js +95 -90
- data/vendor/assets/javascripts/xooie/tab.js +125 -0
- data/vendor/assets/javascripts/xooie/widgets/accordion.js +7 -7
- data/vendor/assets/javascripts/xooie/widgets/base.js +73 -97
- data/vendor/assets/javascripts/xooie/widgets/carousel.js +95 -101
- data/vendor/assets/javascripts/xooie/widgets/dialog.js +84 -85
- data/vendor/assets/javascripts/xooie/widgets/dropdown.js +223 -188
- data/vendor/assets/javascripts/xooie/widgets/tab.js +36 -36
- data/vendor/assets/javascripts/xooie/xooie.js +151 -148
- data/vendor/assets/javascripts/xooie.js +169 -0
- metadata +53 -58
@@ -21,8 +21,8 @@
|
|
21
21
|
* specific functionality.
|
22
22
|
**/
|
23
23
|
|
24
|
-
define('xooie/widgets/base', ['jquery', 'xooie/xooie', 'xooie/helpers', 'xooie/shared'
|
25
|
-
|
24
|
+
define('xooie/widgets/base', ['jquery', 'xooie/xooie', 'xooie/helpers', 'xooie/shared'], function ($, $X, helpers, shared) {
|
25
|
+
"use strict";
|
26
26
|
var Widget;
|
27
27
|
|
28
28
|
/**
|
@@ -34,10 +34,12 @@ define('xooie/widgets/base', ['jquery', 'xooie/xooie', 'xooie/helpers', 'xooie/s
|
|
34
34
|
**/
|
35
35
|
|
36
36
|
$.event.special['xooie-init'] = {
|
37
|
-
add: function(handleObj) {
|
38
|
-
var id
|
39
|
-
|
40
|
-
|
37
|
+
add: function (handleObj) {
|
38
|
+
var id, event;
|
39
|
+
|
40
|
+
id = $(this).data('xooieInstance');
|
41
|
+
if (!helpers.isUndefined(id)) {
|
42
|
+
event = $.Event('xooie-init');
|
41
43
|
event.namespace = handleObj.namespace;
|
42
44
|
event.data = handleObj.data;
|
43
45
|
|
@@ -59,7 +61,7 @@ define('xooie/widgets/base', ['jquery', 'xooie/xooie', 'xooie/helpers', 'xooie/s
|
|
59
61
|
*
|
60
62
|
* TODO: Test and document.
|
61
63
|
**/
|
62
|
-
function roleDetails
|
64
|
+
function roleDetails(name) {
|
63
65
|
return {
|
64
66
|
processor: '_process_role_' + name,
|
65
67
|
renderer: '_render_role_' + name,
|
@@ -80,7 +82,7 @@ define('xooie/widgets/base', ['jquery', 'xooie/xooie', 'xooie/helpers', 'xooie/s
|
|
80
82
|
if (helpers.isUndefined(prototype[role.pluralName])) {
|
81
83
|
prototype._definedRoles.push(name);
|
82
84
|
|
83
|
-
prototype[role.pluralName] = function() {
|
85
|
+
prototype[role.pluralName] = function () {
|
84
86
|
return this[role.getter]();
|
85
87
|
};
|
86
88
|
}
|
@@ -93,19 +95,18 @@ define('xooie/widgets/base', ['jquery', 'xooie/xooie', 'xooie/helpers', 'xooie/s
|
|
93
95
|
* Recursively checks for the next available index in [[$X._instanceCache]] using [[$X._instanceIndex]]
|
94
96
|
* as a reference point. Returns the index.
|
95
97
|
**/
|
96
|
-
function cacheInstance
|
97
|
-
if (
|
98
|
+
function cacheInstance(instance) {
|
99
|
+
if (!helpers.isUndefined(instance)) {
|
98
100
|
var index = $X._instanceIndex;
|
99
101
|
|
100
102
|
$X._instanceIndex += 1;
|
101
103
|
|
102
|
-
if (
|
104
|
+
if (helpers.isUndefined($X._instanceCache[index])) {
|
103
105
|
$X._instanceCache[index] = instance;
|
104
106
|
|
105
107
|
return index;
|
106
|
-
} else {
|
107
|
-
return cacheInstance(instance);
|
108
108
|
}
|
109
|
+
return cacheInstance(instance);
|
109
110
|
}
|
110
111
|
}
|
111
112
|
|
@@ -117,29 +118,32 @@ define('xooie/widgets/base', ['jquery', 'xooie/xooie', 'xooie/helpers', 'xooie/s
|
|
117
118
|
* Instantiates a new Xooie widget, or returns an existing widget if it is already associated with the element passed.
|
118
119
|
* Any addons passed into the constructor will be instantiated and added to the [[Xooie.Widget#addons]] collection.
|
119
120
|
**/
|
120
|
-
|
121
|
-
|
121
|
+
|
122
|
+
Widget = shared.create(function (element, addons) {
|
123
|
+
var id, self = this;
|
122
124
|
|
123
125
|
element = $(element);
|
126
|
+
addons = addons || [];
|
124
127
|
|
125
128
|
//set the default options
|
126
129
|
shared.setData(this, element.data());
|
127
130
|
|
128
131
|
//do instance tracking
|
129
132
|
if (element.data('xooieInstance')) {
|
130
|
-
if (
|
133
|
+
if (!helpers.isUndefined($X._instanceCache[element.data('xooieInstance')])) {
|
131
134
|
element.trigger(this.get('refreshEvent'));
|
132
135
|
return $X._instanceCache[element.data('xooieInstance')];
|
133
|
-
} else {
|
134
|
-
this.cleanup();
|
135
136
|
}
|
137
|
+
this.cleanup();
|
136
138
|
}
|
137
139
|
|
138
|
-
element.on(this.get('initEvent') + ' ' + this.get('refreshEvent'), function(){
|
140
|
+
element.on(this.get('initEvent') + ' ' + this.get('refreshEvent'), function () {
|
139
141
|
self._applyRoles();
|
140
142
|
});
|
141
143
|
|
142
|
-
|
144
|
+
id = cacheInstance(this);
|
145
|
+
|
146
|
+
element.attr('data-xooie-instance', id);
|
143
147
|
|
144
148
|
this.set('id', id);
|
145
149
|
|
@@ -147,35 +151,19 @@ define('xooie/widgets/base', ['jquery', 'xooie/xooie', 'xooie/helpers', 'xooie/s
|
|
147
151
|
|
148
152
|
element.addClass(this.get('className'))
|
149
153
|
.addClass(this.get('instanceClass'));
|
154
|
+
}, function (element, addons) {
|
155
|
+
var i, addonAry = [];
|
150
156
|
|
151
|
-
|
152
|
-
var i;
|
153
|
-
|
154
|
-
if (!self._extendCount || self._extendCount <= 0) {
|
155
|
-
|
156
|
-
if (typeof addons !== 'undefined') {
|
157
|
-
for (i = 0; i < addons.length; i+=1) {
|
158
|
-
new addons[i](self);
|
159
|
-
}
|
160
|
-
}
|
161
|
-
|
162
|
-
element.attr('data-xooie-instance', id);
|
157
|
+
element = $(element);
|
163
158
|
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
setTimeout(initCheck, 0);
|
159
|
+
if (!helpers.isUndefined(addons)) {
|
160
|
+
for (i = 0; i < addons.length; i += 1) {
|
161
|
+
addonAry.push(new addons[i](this));
|
168
162
|
}
|
169
|
-
};
|
170
|
-
|
171
|
-
if (this._extendCount > 0) {
|
172
|
-
setTimeout(initCheck, 0);
|
173
|
-
} else {
|
174
|
-
initCheck();
|
175
163
|
}
|
176
164
|
|
177
|
-
|
178
|
-
};
|
165
|
+
this.root().trigger(this.get('initEvent'));
|
166
|
+
});
|
179
167
|
|
180
168
|
/** internal
|
181
169
|
* Xooie.Widget._renderMethods -> Object
|
@@ -190,36 +178,32 @@ define('xooie/widgets/base', ['jquery', 'xooie/xooie', 'xooie/helpers', 'xooie/s
|
|
190
178
|
**/
|
191
179
|
Widget._renderMethods = {
|
192
180
|
//TODO: make this a default template
|
193
|
-
'micro_template': function(template, view) {
|
194
|
-
if (
|
181
|
+
'micro_template': function (template, view) {
|
182
|
+
if (!helpers.isUndefined(template.micro_render)) {
|
195
183
|
return $(template.micro_render(view));
|
196
|
-
} else {
|
197
|
-
return false;
|
198
184
|
}
|
185
|
+
return false;
|
199
186
|
},
|
200
187
|
|
201
|
-
'mustache': function(template, view) {
|
202
|
-
if (
|
188
|
+
'mustache': function (template, view) {
|
189
|
+
if (!helpers.isUndefined(Mustache) && !helpers.isUndefined(Mustache.render)) {
|
203
190
|
return $(Mustache.render(template.html(), view));
|
204
|
-
} else {
|
205
|
-
return false;
|
206
191
|
}
|
192
|
+
return false;
|
207
193
|
},
|
208
194
|
|
209
|
-
'jsrender': function(template, view) {
|
210
|
-
if (
|
195
|
+
'jsrender': function (template, view) {
|
196
|
+
if (!helpers.isUndefined(template.render)) {
|
211
197
|
return $(template.render(view));
|
212
|
-
} else {
|
213
|
-
return false;
|
214
198
|
}
|
199
|
+
return false;
|
215
200
|
},
|
216
201
|
|
217
|
-
'underscore': function(template, view) {
|
218
|
-
if (
|
202
|
+
'underscore': function (template, view) {
|
203
|
+
if (!helpers.isUndefined(_) && !helpers.isUndefined(_.template)) {
|
219
204
|
return $(_.template(template.html())(view).trim());
|
220
|
-
} else {
|
221
|
-
return false;
|
222
205
|
}
|
206
|
+
return false;
|
223
207
|
}
|
224
208
|
};
|
225
209
|
|
@@ -231,7 +215,7 @@ define('xooie/widgets/base', ['jquery', 'xooie/xooie', 'xooie/helpers', 'xooie/s
|
|
231
215
|
*
|
232
216
|
* See [[Xooie.shared.defineWriteOnly]].
|
233
217
|
**/
|
234
|
-
Widget.defineWriteOnly = function(name) {
|
218
|
+
Widget.defineWriteOnly = function (name) {
|
235
219
|
shared.defineWriteOnly(this, name);
|
236
220
|
};
|
237
221
|
|
@@ -242,7 +226,7 @@ define('xooie/widgets/base', ['jquery', 'xooie/xooie', 'xooie/helpers', 'xooie/s
|
|
242
226
|
*
|
243
227
|
* See [[Xooie.shared.defineReadOnly]].
|
244
228
|
**/
|
245
|
-
Widget.defineReadOnly = function(name, defaultValue){
|
229
|
+
Widget.defineReadOnly = function (name, defaultValue) {
|
246
230
|
shared.defineReadOnly(this, name, defaultValue);
|
247
231
|
};
|
248
232
|
|
@@ -254,7 +238,7 @@ define('xooie/widgets/base', ['jquery', 'xooie/xooie', 'xooie/helpers', 'xooie/s
|
|
254
238
|
* A method that defines a property as both readable and writable. In reality it calls both [[Xooie.Widget.defineReadOnly]]
|
255
239
|
* and [[Xooie.Widget.defineWriteOnly]].
|
256
240
|
**/
|
257
|
-
Widget.define = function(name, defaultValue){
|
241
|
+
Widget.define = function (name, defaultValue) {
|
258
242
|
this.defineReadOnly(name, defaultValue);
|
259
243
|
this.defineWriteOnly(name);
|
260
244
|
};
|
@@ -264,13 +248,13 @@ define('xooie/widgets/base', ['jquery', 'xooie/xooie', 'xooie/helpers', 'xooie/s
|
|
264
248
|
*
|
265
249
|
* TODO: This needs tests and documentation
|
266
250
|
**/
|
267
|
-
Widget.defineRole = function(name) {
|
251
|
+
Widget.defineRole = function (name) {
|
268
252
|
var role = roleDetails(name);
|
269
253
|
|
270
254
|
roleDispatcher(name, this.prototype);
|
271
255
|
|
272
256
|
if (!helpers.isFunction(this.prototype[role.getter])) {
|
273
|
-
this.prototype[role.getter] = function() {
|
257
|
+
this.prototype[role.getter] = function () {
|
274
258
|
return this.root().find(role.selector);
|
275
259
|
};
|
276
260
|
}
|
@@ -280,10 +264,10 @@ define('xooie/widgets/base', ['jquery', 'xooie/xooie', 'xooie/helpers', 'xooie/s
|
|
280
264
|
* Xooie.Widget.extend(constr) -> Widget
|
281
265
|
* - constr (Function): The constructor for the new [[Xooie.Widget]] class.
|
282
266
|
*
|
283
|
-
* See [[Xooie.shared.
|
267
|
+
* See [[Xooie.shared.create]].
|
284
268
|
**/
|
285
|
-
Widget.extend = function(constr){
|
286
|
-
return shared.
|
269
|
+
Widget.extend = function (constr, post_constr) {
|
270
|
+
return shared.create(constr, post_constr, this);
|
287
271
|
};
|
288
272
|
|
289
273
|
/**
|
@@ -294,10 +278,11 @@ define('xooie/widgets/base', ['jquery', 'xooie/xooie', 'xooie/helpers', 'xooie/s
|
|
294
278
|
* Creates a new css rule in the Xooie stylesheet. If the rule exists, it will overwrite said rule.
|
295
279
|
**/
|
296
280
|
// TODO: update so that if the rule exists the properties are added to the rule
|
297
|
-
Widget.createStyleRule = function(selector, properties) {
|
298
|
-
if (
|
281
|
+
Widget.createStyleRule = function (selector, properties) {
|
282
|
+
if (!helpers.isUndefined($X._stylesheet.addRule)) {
|
299
283
|
return $X._stylesheet.addRule(selector, properties);
|
300
284
|
}
|
285
|
+
return false;
|
301
286
|
};
|
302
287
|
|
303
288
|
/**
|
@@ -307,12 +292,11 @@ define('xooie/widgets/base', ['jquery', 'xooie/xooie', 'xooie/helpers', 'xooie/s
|
|
307
292
|
* Retrieves the css rule from the Xooie stylesheet using the provided `selector`. If the rule is not
|
308
293
|
* present in [[$X._styleRules]] then the method will check in [[$X._stylesheet]].
|
309
294
|
**/
|
310
|
-
Widget.getStyleRule = function(selector) {
|
295
|
+
Widget.getStyleRule = function (selector) {
|
311
296
|
if ($X._styleRules.hasOwnProperty(selector)) {
|
312
297
|
return $X._styleRules[selector];
|
313
|
-
} else {
|
314
|
-
return $X._stylesheet.getRule(selector);
|
315
298
|
}
|
299
|
+
return $X._stylesheet.getRule(selector);
|
316
300
|
};
|
317
301
|
|
318
302
|
/** internal
|
@@ -329,13 +313,6 @@ define('xooie/widgets/base', ['jquery', 'xooie/xooie', 'xooie/helpers', 'xooie/s
|
|
329
313
|
**/
|
330
314
|
Widget.prototype._definedRoles = [];
|
331
315
|
|
332
|
-
/** internal, read-only
|
333
|
-
* Xooie.Widget#_extendCount -> Integer | null
|
334
|
-
*
|
335
|
-
* Tracks the number of constructors that need to be called.
|
336
|
-
**/
|
337
|
-
Widget.prototype._extendCount = null;
|
338
|
-
|
339
316
|
//PROPERTY DEFINITIONS
|
340
317
|
|
341
318
|
/** internal
|
@@ -474,7 +451,7 @@ define('xooie/widgets/base', ['jquery', 'xooie/xooie', 'xooie/helpers', 'xooie/s
|
|
474
451
|
*
|
475
452
|
* See [[Xooie.shared.get]].
|
476
453
|
**/
|
477
|
-
Widget.prototype.get = function(name) {
|
454
|
+
Widget.prototype.get = function (name) {
|
478
455
|
return shared.get(this, name);
|
479
456
|
};
|
480
457
|
|
@@ -485,7 +462,7 @@ define('xooie/widgets/base', ['jquery', 'xooie/xooie', 'xooie/helpers', 'xooie/s
|
|
485
462
|
*
|
486
463
|
* See [[Xooie.shared.set]].
|
487
464
|
**/
|
488
|
-
Widget.prototype.set = function(name, value) {
|
465
|
+
Widget.prototype.set = function (name, value) {
|
489
466
|
return shared.set(this, name, value);
|
490
467
|
};
|
491
468
|
|
@@ -495,7 +472,7 @@ define('xooie/widgets/base', ['jquery', 'xooie/xooie', 'xooie/helpers', 'xooie/s
|
|
495
472
|
* Removes the `className` and `instanceClass` classes and `data-xooie-instance` attribute from the root element.
|
496
473
|
* Calls [[Xooie.Addon.cleanup]] for each addon. This will permit the instance to be garbage collected.
|
497
474
|
**/
|
498
|
-
Widget.prototype.cleanup = function() {
|
475
|
+
Widget.prototype.cleanup = function () {
|
499
476
|
var name;
|
500
477
|
|
501
478
|
for (name in this.addons()) {
|
@@ -517,15 +494,14 @@ define('xooie/widgets/base', ['jquery', 'xooie/xooie', 'xooie/helpers', 'xooie/s
|
|
517
494
|
* Renders the template with the provided data by calling the method in [[Xooie.Widget.renderMethods]] based on the
|
518
495
|
* template language specified. Returns `$('<span>Error rendering template</span>')` when an error occurs
|
519
496
|
**/
|
520
|
-
Widget.prototype.render = function(template, view) {
|
497
|
+
Widget.prototype.render = function (template, view) {
|
521
498
|
var language = template.data('templateLanguage') || this.templateLanguage(),
|
522
499
|
result = Widget._renderMethods[language](template, view);
|
523
500
|
|
524
501
|
if (result === false) {
|
525
502
|
return $('<span>Error rendering template</span>');
|
526
|
-
} else {
|
527
|
-
return result;
|
528
503
|
}
|
504
|
+
return result;
|
529
505
|
};
|
530
506
|
|
531
507
|
/** internal
|
@@ -536,7 +512,7 @@ define('xooie/widgets/base', ['jquery', 'xooie/xooie', 'xooie/helpers', 'xooie/s
|
|
536
512
|
* Generates an id string to be applied to an element of the specified role. The format of
|
537
513
|
* this id string is `x-[[Xooie.Widget#id]]-{role}-{index}`.
|
538
514
|
**/
|
539
|
-
Widget.prototype._getRoleId = function(role, index) {
|
515
|
+
Widget.prototype._getRoleId = function (role, index) {
|
540
516
|
return 'x-' + this.id() + '-' + role + '-' + index;
|
541
517
|
};
|
542
518
|
|
@@ -545,13 +521,13 @@ define('xooie/widgets/base', ['jquery', 'xooie/xooie', 'xooie/helpers', 'xooie/s
|
|
545
521
|
*
|
546
522
|
* TODO: Test and document.
|
547
523
|
**/
|
548
|
-
Widget.prototype._applyRoles = function() {
|
524
|
+
Widget.prototype._applyRoles = function () {
|
549
525
|
var i, j, role, elements;
|
550
526
|
|
551
|
-
for (i=0; i < this._definedRoles.length; i+=1) {
|
527
|
+
for (i = 0; i < this._definedRoles.length; i += 1) {
|
552
528
|
role = roleDetails(this._definedRoles[i]);
|
553
529
|
elements = this[role.getter]();
|
554
|
-
|
530
|
+
|
555
531
|
if (elements.length === 0 && helpers.isFunction(this[role.renderer])) {
|
556
532
|
elements = this[role.renderer]();
|
557
533
|
}
|
@@ -560,7 +536,7 @@ define('xooie/widgets/base', ['jquery', 'xooie/xooie', 'xooie/helpers', 'xooie/s
|
|
560
536
|
return;
|
561
537
|
}
|
562
538
|
|
563
|
-
for (j=0; j < elements.length; j+=1) {
|
539
|
+
for (j = 0; j < elements.length; j += 1) {
|
564
540
|
$(elements[j]).attr('id', this._getRoleId(this._definedRoles[i], j));
|
565
541
|
}
|
566
542
|
|
@@ -577,8 +553,8 @@ define('xooie/widgets/base', ['jquery', 'xooie/xooie', 'xooie/helpers', 'xooie/s
|
|
577
553
|
* Checks to see if the addons object has been defined. We can't define objects as
|
578
554
|
* 'default' values for properties since the object will be the same for each instance.
|
579
555
|
**/
|
580
|
-
Widget.prototype._process_addons = function(addons){
|
581
|
-
if (
|
556
|
+
Widget.prototype._process_addons = function (addons) {
|
557
|
+
if (helpers.isUndefined(addons)) {
|
582
558
|
addons = this._addons = {};
|
583
559
|
}
|
584
560
|
|
@@ -591,7 +567,7 @@ define('xooie/widgets/base', ['jquery', 'xooie/xooie', 'xooie/helpers', 'xooie/s
|
|
591
567
|
*
|
592
568
|
* Adds the [[Xooie.Widget#namespace]] to the `refreshEvent`
|
593
569
|
**/
|
594
|
-
Widget.prototype._process_refreshEvent = function(refreshEvent){
|
570
|
+
Widget.prototype._process_refreshEvent = function (refreshEvent) {
|
595
571
|
return this.namespace() === '' ? refreshEvent : refreshEvent + '.' + this.namespace();
|
596
572
|
};
|
597
573
|
|
@@ -601,7 +577,7 @@ define('xooie/widgets/base', ['jquery', 'xooie/xooie', 'xooie/helpers', 'xooie/s
|
|
601
577
|
*
|
602
578
|
* Adds the [[Xooie.Widget#namespace]] to the `initEvent`
|
603
579
|
**/
|
604
|
-
Widget.prototype._process_initEvent = function(initEvent){
|
580
|
+
Widget.prototype._process_initEvent = function (initEvent) {
|
605
581
|
return this.namespace() === '' ? initEvent : initEvent + '.' + this.namespace();
|
606
582
|
};
|
607
583
|
|
@@ -611,7 +587,7 @@ define('xooie/widgets/base', ['jquery', 'xooie/xooie', 'xooie/helpers', 'xooie/s
|
|
611
587
|
*
|
612
588
|
* Adds the [[Xooie.Widget#namespace]] to the `className`
|
613
589
|
**/
|
614
|
-
Widget.prototype._process_className = function(className) {
|
590
|
+
Widget.prototype._process_className = function (className) {
|
615
591
|
return this.namespace() === '' ? className : className + '-' + this.namespace();
|
616
592
|
};
|
617
593
|
|
@@ -620,7 +596,7 @@ define('xooie/widgets/base', ['jquery', 'xooie/xooie', 'xooie/helpers', 'xooie/s
|
|
620
596
|
*
|
621
597
|
* Creates an instanceClass string from the [[Xooie.Widget#namespace]] and [[Xooie.Widget#id]].
|
622
598
|
**/
|
623
|
-
Widget.prototype._process_instanceClass = function() {
|
599
|
+
Widget.prototype._process_instanceClass = function () {
|
624
600
|
return this.namespace() === '' ? 'widget-' + this.id() : this.namespace() + '-' + this.id();
|
625
601
|
};
|
626
602
|
|