rails_db 1.5.0 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +0 -2
  3. data/Gemfile.lock +51 -58
  4. data/app/assets/javascripts/rails_db/application.js +5 -21
  5. data/app/assets/javascripts/rails_db/{vendor/jquery.js → jquery.js} +0 -0
  6. data/app/assets/javascripts/rails_db/rails-ujs.js +685 -0
  7. data/app/assets/stylesheets/rails_db/{app.scss → app.css} +2 -2
  8. data/lib/rails_db.rb +0 -1
  9. data/lib/rails_db/engine.rb +2 -3
  10. data/lib/rails_db/version.rb +1 -1
  11. data/rails_db.gemspec +0 -2
  12. data/test/dummy/db/rails_db.sqlite3 +0 -0
  13. data/test/dummy/db/schema.rb +52 -47
  14. data/test/standalone/Gemfile +0 -1
  15. data/test/standalone/Gemfile.lock +0 -5
  16. metadata +113 -167
  17. data/app/assets/images/rails_db/down_arrow.gif +0 -0
  18. data/app/assets/images/rails_db/up_arrow.gif +0 -0
  19. data/app/assets/javascripts/rails_db/foundation/foundation.abide.js +0 -426
  20. data/app/assets/javascripts/rails_db/foundation/foundation.accordion.js +0 -125
  21. data/app/assets/javascripts/rails_db/foundation/foundation.alert.js +0 -43
  22. data/app/assets/javascripts/rails_db/foundation/foundation.clearing.js +0 -586
  23. data/app/assets/javascripts/rails_db/foundation/foundation.dropdown.js +0 -468
  24. data/app/assets/javascripts/rails_db/foundation/foundation.equalizer.js +0 -104
  25. data/app/assets/javascripts/rails_db/foundation/foundation.interchange.js +0 -360
  26. data/app/assets/javascripts/rails_db/foundation/foundation.joyride.js +0 -935
  27. data/app/assets/javascripts/rails_db/foundation/foundation.js +0 -732
  28. data/app/assets/javascripts/rails_db/foundation/foundation.magellan.js +0 -214
  29. data/app/assets/javascripts/rails_db/foundation/foundation.offcanvas.js +0 -225
  30. data/app/assets/javascripts/rails_db/foundation/foundation.orbit.js +0 -476
  31. data/app/assets/javascripts/rails_db/foundation/foundation.reveal.js +0 -522
  32. data/app/assets/javascripts/rails_db/foundation/foundation.slider.js +0 -296
  33. data/app/assets/javascripts/rails_db/foundation/foundation.tab.js +0 -247
  34. data/app/assets/javascripts/rails_db/foundation/foundation.tooltip.js +0 -348
  35. data/app/assets/javascripts/rails_db/foundation/foundation.topbar.js +0 -458
  36. data/app/assets/javascripts/rails_db/vendor/fastclick.js +0 -8
  37. data/app/assets/javascripts/rails_db/vendor/jquery.cookie.js +0 -8
  38. data/app/assets/javascripts/rails_db/vendor/modernizr.js +0 -8
  39. data/app/assets/javascripts/rails_db/vendor/placeholder.js +0 -2
  40. data/test/dummy/db/development.sqlite3 +0 -0
  41. data/test/dummy/db/rails_db_dev.sqlite3 +0 -0
@@ -1,426 +0,0 @@
1
- ;(function ($, window, document, undefined) {
2
- 'use strict';
3
-
4
- Foundation.libs.abide = {
5
- name : 'abide',
6
-
7
- version : '5.5.3',
8
-
9
- settings : {
10
- live_validate : true, // validate the form as you go
11
- validate_on_blur : true, // validate whenever you focus/blur on an input field
12
- // validate_on: 'tab', // tab (when user tabs between fields), change (input changes), manual (call custom events)
13
-
14
- focus_on_invalid : true, // automatically bring the focus to an invalid input field
15
- error_labels : true, // labels with a for="inputId" will receive an `error` class
16
- error_class : 'error', // labels with a for="inputId" will receive an `error` class
17
- // the amount of time Abide will take before it validates the form (in ms).
18
- // smaller time will result in faster validation
19
- timeout : 1000,
20
- patterns : {
21
- alpha : /^[a-zA-Z]+$/,
22
- alpha_numeric : /^[a-zA-Z0-9]+$/,
23
- integer : /^[-+]?\d+$/,
24
- number : /^[-+]?\d*(?:[\.\,]\d+)?$/,
25
-
26
- // amex, visa, diners
27
- card : /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,
28
- cvv : /^([0-9]){3,4}$/,
29
-
30
- // http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address
31
- email : /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,
32
-
33
- // http://blogs.lse.ac.uk/lti/2008/04/23/a-regular-expression-to-match-any-url/
34
- url: /^(https?|ftp|file|ssh):\/\/([-;:&=\+\$,\w]+@{1})?([-A-Za-z0-9\.]+)+:?(\d+)?((\/[-\+~%\/\.\w]+)?\??([-\+=&;%@\.\w]+)?#?([\w]+)?)?/,
35
- // abc.de
36
- domain : /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/,
37
-
38
- datetime : /^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,
39
- // YYYY-MM-DD
40
- date : /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,
41
- // HH:MM:SS
42
- time : /^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,
43
- dateISO : /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,
44
- // MM/DD/YYYY
45
- month_day_year : /^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/,
46
- // DD/MM/YYYY
47
- day_month_year : /^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/,
48
-
49
- // #FFF or #FFFFFF
50
- color : /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/
51
- },
52
- validators : {
53
- equalTo : function (el, required, parent) {
54
- var from = document.getElementById(el.getAttribute(this.add_namespace('data-equalto'))).value,
55
- to = el.value,
56
- valid = (from === to);
57
-
58
- return valid;
59
- }
60
- }
61
- },
62
-
63
- timer : null,
64
-
65
- init : function (scope, method, options) {
66
- this.bindings(method, options);
67
- },
68
-
69
- events : function (scope) {
70
- var self = this,
71
- form = self.S(scope).attr('novalidate', 'novalidate'),
72
- settings = form.data(this.attr_name(true) + '-init') || {};
73
-
74
- this.invalid_attr = this.add_namespace('data-invalid');
75
-
76
- function validate(originalSelf, e) {
77
- clearTimeout(self.timer);
78
- self.timer = setTimeout(function () {
79
- self.validate([originalSelf], e);
80
- }.bind(originalSelf), settings.timeout);
81
- }
82
-
83
- form
84
- .off('.abide')
85
- .on('submit.fndtn.abide', function (e) {
86
- var is_ajax = /ajax/i.test(self.S(this).attr(self.attr_name()));
87
- return self.validate(self.S(this).find('input, textarea, select').not(":hidden, [data-abide-ignore]").get(), e, is_ajax);
88
- })
89
- .on('validate.fndtn.abide', function (e) {
90
- if (settings.validate_on === 'manual') {
91
- self.validate([e.target], e);
92
- }
93
- })
94
- .on('reset', function (e) {
95
- return self.reset($(this), e);
96
- })
97
- .find('input, textarea, select').not(":hidden, [data-abide-ignore]")
98
- .off('.abide')
99
- .on('blur.fndtn.abide change.fndtn.abide', function (e) {
100
- var id = this.getAttribute('id'),
101
- eqTo = form.find('[data-equalto="'+ id +'"]');
102
- // old settings fallback
103
- // will be deprecated with F6 release
104
- if (settings.validate_on_blur && settings.validate_on_blur === true) {
105
- validate(this, e);
106
- }
107
- // checks if there is an equalTo equivalent related by id
108
- if(typeof eqTo.get(0) !== "undefined" && eqTo.val().length){
109
- validate(eqTo.get(0),e);
110
- }
111
- // new settings combining validate options into one setting
112
- if (settings.validate_on === 'change') {
113
- validate(this, e);
114
- }
115
- })
116
- .on('keydown.fndtn.abide', function (e) {
117
- var id = this.getAttribute('id'),
118
- eqTo = form.find('[data-equalto="'+ id +'"]');
119
- // old settings fallback
120
- // will be deprecated with F6 release
121
- if (settings.live_validate && settings.live_validate === true && e.which != 9) {
122
- validate(this, e);
123
- }
124
- // checks if there is an equalTo equivalent related by id
125
- if(typeof eqTo.get(0) !== "undefined" && eqTo.val().length){
126
- validate(eqTo.get(0),e);
127
- }
128
- // new settings combining validate options into one setting
129
- if (settings.validate_on === 'tab' && e.which === 9) {
130
- validate(this, e);
131
- }
132
- else if (settings.validate_on === 'change') {
133
- validate(this, e);
134
- }
135
- })
136
- .on('focus', function (e) {
137
- if (navigator.userAgent.match(/iPad|iPhone|Android|BlackBerry|Windows Phone|webOS/i)) {
138
- $('html, body').animate({
139
- scrollTop: $(e.target).offset().top
140
- }, 100);
141
- }
142
- });
143
- },
144
-
145
- reset : function (form, e) {
146
- var self = this;
147
- form.removeAttr(self.invalid_attr);
148
-
149
- $('[' + self.invalid_attr + ']', form).removeAttr(self.invalid_attr);
150
- $('.' + self.settings.error_class, form).not('small').removeClass(self.settings.error_class);
151
- $(':input', form).not(':button, :submit, :reset, :hidden, [data-abide-ignore]').val('').removeAttr(self.invalid_attr);
152
- },
153
-
154
- validate : function (els, e, is_ajax) {
155
- var validations = this.parse_patterns(els),
156
- validation_count = validations.length,
157
- form = this.S(els[0]).closest('form'),
158
- submit_event = /submit/.test(e.type);
159
-
160
- // Has to count up to make sure the focus gets applied to the top error
161
- for (var i = 0; i < validation_count; i++) {
162
- if (!validations[i] && (submit_event || is_ajax)) {
163
- if (this.settings.focus_on_invalid) {
164
- els[i].focus();
165
- }
166
- form.trigger('invalid.fndtn.abide');
167
- this.S(els[i]).closest('form').attr(this.invalid_attr, '');
168
- return false;
169
- }
170
- }
171
-
172
- if (submit_event || is_ajax) {
173
- form.trigger('valid.fndtn.abide');
174
- }
175
-
176
- form.removeAttr(this.invalid_attr);
177
-
178
- if (is_ajax) {
179
- return false;
180
- }
181
-
182
- return true;
183
- },
184
-
185
- parse_patterns : function (els) {
186
- var i = els.length,
187
- el_patterns = [];
188
-
189
- while (i--) {
190
- el_patterns.push(this.pattern(els[i]));
191
- }
192
-
193
- return this.check_validation_and_apply_styles(el_patterns);
194
- },
195
-
196
- pattern : function (el) {
197
- var type = el.getAttribute('type'),
198
- required = typeof el.getAttribute('required') === 'string';
199
-
200
- var pattern = el.getAttribute('pattern') || '';
201
-
202
- if (this.settings.patterns.hasOwnProperty(pattern) && pattern.length > 0) {
203
- return [el, this.settings.patterns[pattern], required];
204
- } else if (pattern.length > 0) {
205
- return [el, new RegExp(pattern), required];
206
- }
207
-
208
- if (this.settings.patterns.hasOwnProperty(type)) {
209
- return [el, this.settings.patterns[type], required];
210
- }
211
-
212
- pattern = /.*/;
213
-
214
- return [el, pattern, required];
215
- },
216
-
217
- // TODO: Break this up into smaller methods, getting hard to read.
218
- check_validation_and_apply_styles : function (el_patterns) {
219
- var i = el_patterns.length,
220
- validations = [];
221
- if (i == 0) {
222
- return validations;
223
- }
224
- var form = this.S(el_patterns[0][0]).closest('[data-' + this.attr_name(true) + ']'),
225
- settings = form.data(this.attr_name(true) + '-init') || {};
226
- while (i--) {
227
- var el = el_patterns[i][0],
228
- required = el_patterns[i][2],
229
- value = el.value.trim(),
230
- direct_parent = this.S(el).parent(),
231
- validator = el.getAttribute(this.add_namespace('data-abide-validator')),
232
- is_radio = el.type === 'radio',
233
- is_checkbox = el.type === 'checkbox',
234
- label = this.S('label[for="' + el.getAttribute('id') + '"]'),
235
- valid_length = (required) ? (el.value.length > 0) : true,
236
- el_validations = [];
237
-
238
- var parent, valid;
239
-
240
- // support old way to do equalTo validations
241
- if (el.getAttribute(this.add_namespace('data-equalto'))) { validator = 'equalTo' }
242
-
243
- if (!direct_parent.is('label')) {
244
- parent = direct_parent;
245
- } else {
246
- parent = direct_parent.parent();
247
- }
248
-
249
- if (is_radio && required) {
250
- el_validations.push(this.valid_radio(el, required));
251
- } else if (is_checkbox && required) {
252
- el_validations.push(this.valid_checkbox(el, required));
253
-
254
- } else if (validator) {
255
- // Validate using each of the specified (space-delimited) validators.
256
- var validators = validator.split(' ');
257
- var last_valid = true, all_valid = true;
258
- for (var iv = 0; iv < validators.length; iv++) {
259
- valid = this.settings.validators[validators[iv]].apply(this, [el, required, parent])
260
- el_validations.push(valid);
261
- all_valid = valid && last_valid;
262
- last_valid = valid;
263
- }
264
- if (all_valid) {
265
- this.S(el).removeAttr(this.invalid_attr);
266
- parent.removeClass('error');
267
- if (label.length > 0 && this.settings.error_labels) {
268
- label.removeClass(this.settings.error_class).removeAttr('role');
269
- }
270
- $(el).triggerHandler('valid');
271
- } else {
272
- this.S(el).attr(this.invalid_attr, '');
273
- parent.addClass('error');
274
- if (label.length > 0 && this.settings.error_labels) {
275
- label.addClass(this.settings.error_class).attr('role', 'alert');
276
- }
277
- $(el).triggerHandler('invalid');
278
- }
279
- } else {
280
-
281
- if (el_patterns[i][1].test(value) && valid_length ||
282
- !required && el.value.length < 1 || $(el).attr('disabled')) {
283
- el_validations.push(true);
284
- } else {
285
- el_validations.push(false);
286
- }
287
-
288
- el_validations = [el_validations.every(function (valid) {return valid;})];
289
- if (el_validations[0]) {
290
- this.S(el).removeAttr(this.invalid_attr);
291
- el.setAttribute('aria-invalid', 'false');
292
- el.removeAttribute('aria-describedby');
293
- parent.removeClass(this.settings.error_class);
294
- if (label.length > 0 && this.settings.error_labels) {
295
- label.removeClass(this.settings.error_class).removeAttr('role');
296
- }
297
- $(el).triggerHandler('valid');
298
- } else {
299
- this.S(el).attr(this.invalid_attr, '');
300
- el.setAttribute('aria-invalid', 'true');
301
-
302
- // Try to find the error associated with the input
303
- var errorElem = parent.find('small.' + this.settings.error_class, 'span.' + this.settings.error_class);
304
- var errorID = errorElem.length > 0 ? errorElem[0].id : '';
305
- if (errorID.length > 0) {
306
- el.setAttribute('aria-describedby', errorID);
307
- }
308
-
309
- // el.setAttribute('aria-describedby', $(el).find('.error')[0].id);
310
- parent.addClass(this.settings.error_class);
311
- if (label.length > 0 && this.settings.error_labels) {
312
- label.addClass(this.settings.error_class).attr('role', 'alert');
313
- }
314
- $(el).triggerHandler('invalid');
315
- }
316
- }
317
- validations = validations.concat(el_validations);
318
- }
319
-
320
- return validations;
321
- },
322
-
323
- valid_checkbox : function (el, required) {
324
- var el = this.S(el),
325
- valid = (el.is(':checked') || !required || el.get(0).getAttribute('disabled'));
326
-
327
- if (valid) {
328
- el.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class);
329
- $(el).triggerHandler('valid');
330
- } else {
331
- el.attr(this.invalid_attr, '').parent().addClass(this.settings.error_class);
332
- $(el).triggerHandler('invalid');
333
- }
334
-
335
- return valid;
336
- },
337
-
338
- valid_radio : function (el, required) {
339
- var name = el.getAttribute('name'),
340
- group = this.S(el).closest('[data-' + this.attr_name(true) + ']').find("[name='" + name + "']"),
341
- count = group.length,
342
- valid = false,
343
- disabled = false;
344
-
345
- // Has to count up to make sure the focus gets applied to the top error
346
- for (var i=0; i < count; i++) {
347
- if( group[i].getAttribute('disabled') ){
348
- disabled=true;
349
- valid=true;
350
- } else {
351
- if (group[i].checked){
352
- valid = true;
353
- } else {
354
- if( disabled ){
355
- valid = false;
356
- }
357
- }
358
- }
359
- }
360
-
361
- // Has to count up to make sure the focus gets applied to the top error
362
- for (var i = 0; i < count; i++) {
363
- if (valid) {
364
- this.S(group[i]).removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class);
365
- $(group[i]).triggerHandler('valid');
366
- } else {
367
- this.S(group[i]).attr(this.invalid_attr, '').parent().addClass(this.settings.error_class);
368
- $(group[i]).triggerHandler('invalid');
369
- }
370
- }
371
-
372
- return valid;
373
- },
374
-
375
- valid_equal : function (el, required, parent) {
376
- var from = document.getElementById(el.getAttribute(this.add_namespace('data-equalto'))).value,
377
- to = el.value,
378
- valid = (from === to);
379
-
380
- if (valid) {
381
- this.S(el).removeAttr(this.invalid_attr);
382
- parent.removeClass(this.settings.error_class);
383
- if (label.length > 0 && settings.error_labels) {
384
- label.removeClass(this.settings.error_class);
385
- }
386
- } else {
387
- this.S(el).attr(this.invalid_attr, '');
388
- parent.addClass(this.settings.error_class);
389
- if (label.length > 0 && settings.error_labels) {
390
- label.addClass(this.settings.error_class);
391
- }
392
- }
393
-
394
- return valid;
395
- },
396
-
397
- valid_oneof : function (el, required, parent, doNotValidateOthers) {
398
- var el = this.S(el),
399
- others = this.S('[' + this.add_namespace('data-oneof') + ']'),
400
- valid = others.filter(':checked').length > 0;
401
-
402
- if (valid) {
403
- el.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class);
404
- } else {
405
- el.attr(this.invalid_attr, '').parent().addClass(this.settings.error_class);
406
- }
407
-
408
- if (!doNotValidateOthers) {
409
- var _this = this;
410
- others.each(function () {
411
- _this.valid_oneof.call(_this, this, null, null, true);
412
- });
413
- }
414
-
415
- return valid;
416
- },
417
-
418
- reflow : function(scope, options) {
419
- var self = this,
420
- form = self.S('[' + this.attr_name() + ']').attr('novalidate', 'novalidate');
421
- self.S(form).each(function (idx, el) {
422
- self.events(el);
423
- });
424
- }
425
- };
426
- }(jQuery, window, window.document));
@@ -1,125 +0,0 @@
1
- ;(function ($, window, document, undefined) {
2
- 'use strict';
3
-
4
- Foundation.libs.accordion = {
5
- name : 'accordion',
6
-
7
- version : '5.5.3',
8
-
9
- settings : {
10
- content_class : 'content',
11
- active_class : 'active',
12
- multi_expand : false,
13
- toggleable : true,
14
- callback : function () {}
15
- },
16
-
17
- init : function (scope, method, options) {
18
- this.bindings(method, options);
19
- },
20
-
21
- events : function (instance) {
22
- var self = this;
23
- var S = this.S;
24
- self.create(this.S(instance));
25
-
26
- S(this.scope)
27
- .off('.fndtn.accordion')
28
- .on('click.fndtn.accordion', '[' + this.attr_name() + '] > dd > a, [' + this.attr_name() + '] > li > a', function (e) {
29
- var accordion = S(this).closest('[' + self.attr_name() + ']'),
30
- groupSelector = self.attr_name() + '=' + accordion.attr(self.attr_name()),
31
- settings = accordion.data(self.attr_name(true) + '-init') || self.settings,
32
- target = S('#' + this.href.split('#')[1]),
33
- aunts = $('> dd, > li', accordion),
34
- siblings = aunts.children('.' + settings.content_class),
35
- active_content = siblings.filter('.' + settings.active_class);
36
-
37
- e.preventDefault();
38
-
39
- if (accordion.attr(self.attr_name())) {
40
- siblings = siblings.add('[' + groupSelector + '] dd > ' + '.' + settings.content_class + ', [' + groupSelector + '] li > ' + '.' + settings.content_class);
41
- aunts = aunts.add('[' + groupSelector + '] dd, [' + groupSelector + '] li');
42
- }
43
-
44
- if (settings.toggleable && target.is(active_content)) {
45
- target.parent('dd, li').toggleClass(settings.active_class, false);
46
- target.toggleClass(settings.active_class, false);
47
- S(this).attr('aria-expanded', function(i, attr){
48
- return attr === 'true' ? 'false' : 'true';
49
- });
50
- settings.callback(target);
51
- target.triggerHandler('toggled', [accordion]);
52
- accordion.triggerHandler('toggled', [target]);
53
- return;
54
- }
55
-
56
- if (!settings.multi_expand) {
57
- siblings.removeClass(settings.active_class);
58
- aunts.removeClass(settings.active_class);
59
- aunts.children('a').attr('aria-expanded','false');
60
- }
61
-
62
- target.addClass(settings.active_class).parent().addClass(settings.active_class);
63
- settings.callback(target);
64
- target.triggerHandler('toggled', [accordion]);
65
- accordion.triggerHandler('toggled', [target]);
66
- S(this).attr('aria-expanded','true');
67
- });
68
- },
69
-
70
- create: function($instance) {
71
- var self = this,
72
- accordion = $instance,
73
- aunts = $('> .accordion-navigation', accordion),
74
- settings = accordion.data(self.attr_name(true) + '-init') || self.settings;
75
-
76
- aunts.children('a').attr('aria-expanded','false');
77
- aunts.has('.' + settings.content_class + '.' + settings.active_class).addClass(settings.active_class).children('a').attr('aria-expanded','true');
78
-
79
- if (settings.multi_expand) {
80
- $instance.attr('aria-multiselectable','true');
81
- }
82
- },
83
-
84
- toggle : function(options) {
85
- var options = typeof options !== 'undefined' ? options : {};
86
- var selector = typeof options.selector !== 'undefined' ? options.selector : '';
87
- var toggle_state = typeof options.toggle_state !== 'undefined' ? options.toggle_state : '';
88
- var $accordion = typeof options.$accordion !== 'undefined' ? options.$accordion : this.S(this.scope).closest('[' + this.attr_name() + ']');
89
-
90
- var $items = $accordion.find('> dd' + selector + ', > li' + selector);
91
- if ( $items.length < 1 ) {
92
- if ( window.console ) {
93
- console.error('Selection not found.', selector);
94
- }
95
- return false;
96
- }
97
-
98
- var S = this.S;
99
- var active_class = this.settings.active_class;
100
- $items.each(function() {
101
- var $item = S(this);
102
- var is_active = $item.hasClass(active_class);
103
- if ( ( is_active && toggle_state === 'close' ) || ( !is_active && toggle_state === 'open' ) || toggle_state === '' ) {
104
- $item.find('> a').trigger('click.fndtn.accordion');
105
- }
106
- });
107
- },
108
-
109
- open : function(options) {
110
- var options = typeof options !== 'undefined' ? options : {};
111
- options.toggle_state = 'open';
112
- this.toggle(options);
113
- },
114
-
115
- close : function(options) {
116
- var options = typeof options !== 'undefined' ? options : {};
117
- options.toggle_state = 'close';
118
- this.toggle(options);
119
- },
120
-
121
- off : function () {},
122
-
123
- reflow : function () {}
124
- };
125
- }(jQuery, window, window.document));