rails_db 1.5.0 → 1.6.0

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.
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));