hooch 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 002b7bee6d4c11657c26debfd758de362ce9b194
4
- data.tar.gz: 51d382d86ef88967ff0fd936f7fd875d756da746
3
+ metadata.gz: 075938e121455aeb850d8794770df4c194edb6fe
4
+ data.tar.gz: 690ab05a9d8a2ba37d3fbf3425790b3e36750f3c
5
5
  SHA512:
6
- metadata.gz: 930d09541fec97440ed5aa61397bfb74765f7d33f8b985f0f96ba91ddcfcd2e948e6d7ac01daa0b9d6f86e53918bb174d2942dc07cd6bc4ae5364d5340f2e723
7
- data.tar.gz: 8b540736e14bd6859578b2902906ecb4edda0dd1e25c8bf62ac2c18e9e8c8ef52d758f8fa02ab58f3af65a0b2bc78ca7c8b982d81c4da15fcbefdba5615f8033
6
+ metadata.gz: cce71ebf2f5b2b04213c0ed762360fde8e1f759d1375aaf5c4ad6a0bda28cd931c6b8f2e87d76acf5e45a9bf82f6bb7e34dee14c3dad65cc5f8de139fef33b1e
7
+ data.tar.gz: 800b30b97ee0b5173243c0034ccaa0fc312ffd26009982a34c91cbe73ebdddbd09bbd70fc97641d17ac0a4c205d51fc906cb33229207993542ffe26bb5639662
@@ -563,16 +563,49 @@ var initHooch = function(){
563
563
  init: function(reload_page){
564
564
  window.location.href = reload_page;
565
565
  }
566
+ }),
567
+ FakeSelect: Class.extend({
568
+ init: function($fake_select){
569
+ this.select_display = $fake_select.find('[data-select-display]')
570
+ this.real_select = $fake_select.find('input')
571
+ var fake_select = this
572
+ $fake_select.find('[data-select-value][data-select-name]').each(function(){
573
+ new hooch.FakeOption($(this),fake_select)
574
+ })
575
+ },
576
+ select: function(fake_option){
577
+ this.select_display.html(fake_option.select_name);
578
+ this.real_select.val(fake_option.select_value);
579
+ this.select_display.trigger('click');
580
+ }
581
+ }),
582
+ FakeOption: Class.extend({
583
+ init: function($fake_option,$fake_select){
584
+ this.select_value = $fake_option.data('select-value')
585
+ this.select_name = $fake_option.data('select-name')
586
+ var fake_option = this
587
+ $fake_option.on('click',function(){
588
+ $fake_select.select(fake_option)
589
+ })
590
+ }
566
591
  })
567
592
  };
568
593
  hooch.AjaxExpandable = hooch.Expandable.extend({
569
- expand: function(){
570
- if(!this.ajax_loaded){
571
- this.ajax_loaded = true;
572
- new thin_man.AjaxLinkSubmission(this.$expander);
573
- }
574
- this._super();
594
+ expand: function(){
595
+ if(!this.ajax_loaded){
596
+ this.ajax_loaded = true;
597
+ new thin_man.AjaxLinkSubmission(this.$expander);
575
598
  }
599
+ this._super();
600
+ }
601
+ });
602
+ hooch.SelectActionChanger = hooch.FakeSelect.extend({
603
+ select: function(fake_option){
604
+ var form = this.select_display.parents('form:first');
605
+ form.attr('action', fake_option.select_value);
606
+ this.select_display.html(fake_option.select_name);
607
+ this.select_display.trigger('click');
608
+ }
576
609
  });
577
610
  hooch.FormFieldRevealer = hooch.Revealer.extend({
578
611
  init: function($revealer){
@@ -670,7 +703,7 @@ var initHooch = function(){
670
703
  window.any_time_manager.registerList(
671
704
  ['hover_overflow','hidey_button','submit-proxy','click-proxy','field-filler','revealer',
672
705
  'checkbox-hidden-proxy','prevent-double-submit','prevent-double-link-click', 'tab-group',
673
- 'hover-reveal', 'emptier', 'remover', 'checkbox-proxy'],'hooch');
706
+ 'hover-reveal', 'emptier', 'remover', 'checkbox-proxy', 'fake-select', 'select-action-changer'],'hooch');
674
707
  window.any_time_manager.load();
675
708
  };
676
709
  $(document).ready(function(){
@@ -18,7 +18,7 @@ module.exports = function(config) {
18
18
  'test-main.js',
19
19
  {pattern: 'jquery.js'},
20
20
  {pattern: 'inheritance.js'},
21
- {pattern: 'jasmine-fixture-1.3.1/dist/jasmine-fixture.js'},
21
+ {pattern: 'jasmine-fixture.js'},
22
22
  {pattern: '../app/assets/javascripts/hooch.js'},
23
23
  {pattern: 'spec/**/*Spec.js', included: false}
24
24
  ],
@@ -1,9 +1,6 @@
1
1
  describe("hooch", function() {
2
2
 
3
- beforeEach(function() {
4
- });
5
-
6
- it("empties an element", function() {
3
+ it("Emptier", function() {
7
4
  var emptier_div = affix('[data-emptier="true"][data-target="#my_div"]')
8
5
  var emptier_target = affix('#my_div')
9
6
  emptier_target.html('stuff')
@@ -13,7 +10,7 @@ describe("hooch", function() {
13
10
  expect(emptier_target.html()).not.toMatch('stuff');
14
11
  });
15
12
 
16
- it("removes an element", function(){
13
+ it("Remover", function(){
17
14
  var remover_div = affix('[data-remover="true"][data-target="#my_div"]')
18
15
  var remover_target = affix('#my_div')
19
16
  $('[data-remover]').each(function(){new hooch.Remover($(this))})
@@ -22,60 +19,90 @@ describe("hooch", function() {
22
19
  expect($('#my_div').length).toEqual(0);
23
20
  });
24
21
 
25
- it('expands and collapses an element', function(){
26
- var expander = affix('[data-expander="true"][data-expand-id="my_expander"]')
27
- var expandable = affix('[data-expand-state="collapsed"][data-expand-id="my_expander"]')
28
- $('[data-expand-state]').each(function(){new hooch.Expandable($(this))});
29
- expect($('[data-expand-state]').css('display')).toEqual('none');
30
- $('[data-expander]').click()
31
- expect($('[data-expand-state]').css('display')).not.toEqual('none');
32
- expect($('[data-expander]').css('display')).not.toEqual('none');
33
- $('[data-expander]').click()
34
- expect($('[data-expand-state]').css('display')).toEqual('none');
35
- })
22
+ describe("Expander",function(){
23
+ it('expands and collapses an element', function(){
24
+ var expander = affix('[data-expander="true"][data-expand-id="my_expander"]')
25
+ var expandable = affix('[data-expand-state="collapsed"][data-expand-id="my_expander"]')
26
+ $('[data-expand-state]').each(function(){new hooch.Expandable($(this))});
27
+ expect($('[data-expand-state]').css('display')).toEqual('none');
28
+ $('[data-expander]').click()
29
+ expect($('[data-expand-state]').css('display')).not.toEqual('none');
30
+ expect($('[data-expander]').css('display')).not.toEqual('none');
31
+ $('[data-expander]').click()
32
+ expect($('[data-expand-state]').css('display')).toEqual('none');
33
+ })
36
34
 
37
- it('expands an element with a class and modifies trigger with an expand class', function(){
38
- var expander = affix('[data-expander="true"][data-expand-id="my_expander"][data-expand-class="test-class-trigger"]')
39
- var expandable = affix('[data-expand-state="collapsed"][data-expand-id="my_expander"][data-expand-class="test-class-content"]')
40
- $('[data-expand-state]').each(function(){new hooch.Expandable($(this))});
41
- expect($('[data-expand-state]').hasClass("test-class-content")).toBe(false);
42
- expect($('[data-expander]').hasClass("test-class-trigger")).toBe(false);
43
- $('[data-expander]').click()
44
- expect($('[data-expand-state]').hasClass("test-class-content")).toBe(true);
45
- expect($('[data-expander]').hasClass("test-class-trigger")).toBe(true);
46
- $('[data-expander]').click()
47
- expect($('[data-expand-state]').hasClass("test-class-content")).toBe(false);
48
- expect($('[data-expander]').hasClass("test-class-trigger")).toBe(false);
49
- })
35
+ it('expands an element with a class and modifies trigger with an expand class', function(){
36
+ var expander = affix('[data-expander="true"][data-expand-id="my_expander"][data-expand-class="test-class-trigger"]')
37
+ var expandable = affix('[data-expand-state="collapsed"][data-expand-id="my_expander"][data-expand-class="test-class-content"]')
38
+ $('[data-expand-state]').each(function(){new hooch.Expandable($(this))});
39
+ expect($('[data-expand-state]').hasClass("test-class-content")).toBe(false);
40
+ expect($('[data-expander]').hasClass("test-class-trigger")).toBe(false);
41
+ $('[data-expander]').click()
42
+ expect($('[data-expand-state]').hasClass("test-class-content")).toBe(true);
43
+ expect($('[data-expander]').hasClass("test-class-trigger")).toBe(true);
44
+ $('[data-expander]').click()
45
+ expect($('[data-expand-state]').hasClass("test-class-content")).toBe(false);
46
+ expect($('[data-expander]').hasClass("test-class-trigger")).toBe(false);
47
+ })
50
48
 
51
- it('expands an element with a class and modifies trigger with a collapse class', function(){
52
- var expander = affix('[data-expander="true"][data-expand-id="my_expander"][data-collapse-class="test-class-trigger"]')
53
- var expandable = affix('[data-expand-state="collapsed"][data-expand-id="my_expander"][data-expand-class="test-class-content"]')
54
- $('[data-expand-state]').each(function(){new hooch.Expandable($(this))});
55
- expect($('[data-expand-state]').hasClass("test-class-content")).toBe(false);
56
- expect($('[data-expander]').hasClass("test-class-trigger")).toBe(true);
57
- $('[data-expander]').click()
58
- expect($('[data-expand-state]').hasClass("test-class-content")).toBe(true);
59
- expect($('[data-expander]').hasClass("test-class-trigger")).toBe(false);
60
- $('[data-expander]').click()
61
- expect($('[data-expand-state]').hasClass("test-class-content")).toBe(false);
62
- expect($('[data-expander]').hasClass("test-class-trigger")).toBe(true);
63
- })
49
+ it('expands an element with a class and modifies trigger with a collapse class', function(){
50
+ var expander = affix('[data-expander="true"][data-expand-id="my_expander"][data-collapse-class="test-class-trigger"]')
51
+ var expandable = affix('[data-expand-state="collapsed"][data-expand-id="my_expander"][data-expand-class="test-class-content"]')
52
+ $('[data-expand-state]').each(function(){new hooch.Expandable($(this))});
53
+ expect($('[data-expand-state]').hasClass("test-class-content")).toBe(false);
54
+ expect($('[data-expander]').hasClass("test-class-trigger")).toBe(true);
55
+ $('[data-expander]').click()
56
+ expect($('[data-expand-state]').hasClass("test-class-content")).toBe(true);
57
+ expect($('[data-expander]').hasClass("test-class-trigger")).toBe(false);
58
+ $('[data-expander]').click()
59
+ expect($('[data-expand-state]').hasClass("test-class-content")).toBe(false);
60
+ expect($('[data-expander]').hasClass("test-class-trigger")).toBe(true);
61
+ })
64
62
 
65
- it('expands and collapses an element with separate triggers', function(){
66
- var expander = affix('[data-expander="true"][data-expand-id="my_expander"]')
67
- var collapser = affix('[data-collapser="true"][data-expand-id="my_expander"]')
68
- var expandable = affix('[data-expand-state="collapsed"][data-expand-id="my_expander"]')
69
- $('[data-expand-state]').each(function(){new hooch.Expandable($(this))});
70
- expect($('[data-expand-state]').css('display')).toEqual('none');
71
- $('[data-expander]').click()
72
- expect($('[data-expand-state]').css('display')).not.toEqual('none');
73
- expect($('[data-collapser]').css('display')).not.toEqual('none');
74
- expect($('[data-expander]').css('display')).toEqual('none');
75
- $('[data-collapser]').click()
76
- expect($('[data-expand-state]').css('display')).toEqual('none');
77
- expect($('[data-collapser]').css('display')).toEqual('none');
78
- expect($('[data-expander]').css('display')).not.toEqual('none');
63
+ it('expands and collapses an element with separate triggers', function(){
64
+ var expander = affix('[data-expander="true"][data-expand-id="my_expander"]')
65
+ var collapser = affix('[data-collapser="true"][data-expand-id="my_expander"]')
66
+ var expandable = affix('[data-expand-state="collapsed"][data-expand-id="my_expander"]')
67
+ $('[data-expand-state]').each(function(){new hooch.Expandable($(this))});
68
+ expect($('[data-expand-state]').css('display')).toEqual('none');
69
+ $('[data-expander]').click()
70
+ expect($('[data-expand-state]').css('display')).not.toEqual('none');
71
+ expect($('[data-collapser]').css('display')).not.toEqual('none');
72
+ expect($('[data-expander]').css('display')).toEqual('none');
73
+ $('[data-collapser]').click()
74
+ expect($('[data-expand-state]').css('display')).toEqual('none');
75
+ expect($('[data-collapser]').css('display')).toEqual('none');
76
+ expect($('[data-expander]').css('display')).not.toEqual('none');
77
+ })
78
+ });
79
+ it('FakeSelect', function(){
80
+ var fake_select = affix('[data-fake-select="color"]')
81
+ var fake_display = fake_select.affix('[data-select-display]')
82
+ var fake_option1 = fake_select.affix('[data-select-value="blue"][data-select-name="Blue"]')
83
+ var fake_option2 = fake_select.affix('[data-select-value="green"][data-select-name="Green"]')
84
+ var real_input = fake_select.affix('input[type="hidden"][data-real-select="true"]')
85
+ $('[data-fake-select]').each(function(){new hooch.FakeSelect($(this))})
86
+ $('[data-select-value="blue"]').click();
87
+ expect($('[data-select-display]').html()).toEqual('Blue');
88
+ expect($('input').val()).toEqual('blue');
89
+ $('[data-select-value="green"]').click();
90
+ expect($('[data-select-display]').html()).toEqual('Green');
91
+ expect($('input').val()).toEqual('green');
79
92
  })
80
93
 
94
+ it('SelectActionChanger', function(){
95
+ var form = affix('form')
96
+ var fake_select = form.affix('[data-select-action-changer="search"]')
97
+ var fake_display = fake_select.affix('[data-select-display]')
98
+ var fake_option1 = fake_select.affix('[data-select-value="pretty/url"][data-select-name="Pretty Stuff"]')
99
+ var fake_option2 = fake_select.affix('[data-select-value="strong/url"][data-select-name="Strong Stuff"]')
100
+ $('[data-select-action-changer]').each(function(){new hooch.SelectActionChanger($(this))})
101
+ $('[data-select-value="pretty/url"]').click();
102
+ expect($('[data-select-display]').html()).toEqual('Pretty Stuff');
103
+ expect($('form').prop('action')).toMatch('pretty/url');
104
+ $('[data-select-value="strong/url"]').click();
105
+ expect($('[data-select-display]').html()).toEqual('Strong Stuff');
106
+ expect($('form').prop('action')).toMatch('strong/url');
107
+ })
81
108
  });
@@ -1,3 +1,3 @@
1
1
  module Hooch
2
- VERSION = "0.2.1"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hooch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Draut
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-11 00:00:00.000000000 Z
11
+ date: 2015-09-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -3310,7 +3310,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
3310
3310
  version: '0'
3311
3311
  requirements: []
3312
3312
  rubyforge_project:
3313
- rubygems_version: 2.4.3
3313
+ rubygems_version: 2.4.6
3314
3314
  signing_key:
3315
3315
  specification_version: 4
3316
3316
  summary: Tools for building a browser UI. Get the good stuff.