hooch 0.2.1 → 0.3.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.
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.