hooch 0.14.2 → 0.14.3

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: 85893622697ec0ae1a4ceecc7440d246239b9e0b
4
- data.tar.gz: 86f8236bcaa4d443e7bdc61f25e5c43014915e9c
3
+ metadata.gz: 2924f0bcf7ff855e4749842f37e39af41c1d926e
4
+ data.tar.gz: 75313abc2f94bbc3960fec44fc1bbc2734b0ad7a
5
5
  SHA512:
6
- metadata.gz: 8f44853add02ce1dc6e602d30e17212c2c786c1f28d3acad7f78e8efca192c13a5bfe27f184ce1d34ce0e2c669afbc20bf1e30576d176c3e90c023761f56a4ed
7
- data.tar.gz: a41fbb232b552dc80c57110f4e2fd32cf3b07a8effa4632e11346a202980d68dcb13b0bff6da6dc432ba96aa7b2d95dd53a86347bde709fa39489e5553018a81
6
+ metadata.gz: bac4eb1a8b7bc60bfa9cb45dd5ceca87acca11b54f170b64642737f41775d33969689f599c44854c2cc5b628e96273be3e90e1c5f71ab304205593c896816a30
7
+ data.tar.gz: 910647fd4c0a510d2212236986b3fb37c4ff508181b81dbfe7ecb28458a313ebbbdb8ce89401d36a9796e530ec325f9f879d93b9241fc131b41075195fc8bcc7
@@ -829,7 +829,7 @@ var initHooch = function(){
829
829
  FakeCheckbox: Class.extend({
830
830
  init: function($fake_checkbox){
831
831
  this.$fake_checkbox = $fake_checkbox
832
- this.$form = $($fake_checkbox.data('form-selector'))
832
+ this.$form = this.getForm()
833
833
  this.$field = this.getField()
834
834
  var fake_checkbox = this
835
835
  this.$fake_checkbox.click(function(){ fake_checkbox.change() })
@@ -837,31 +837,86 @@ var initHooch = function(){
837
837
  change: function(){
838
838
  if(this.$fake_checkbox.hasClass('checked')){
839
839
  this.$fake_checkbox.removeClass('checked')
840
- this.removeValue();
840
+ this.removeCheckedFromForm()
841
+ this.removeValue()
841
842
  } else {
842
843
  this.$fake_checkbox.addClass('checked')
843
- this.addValue();
844
+ this.addCheckedToForm()
845
+ this.addValue()
844
846
  }
845
847
  },
846
848
  getField: function(){
847
849
  this.field_name = this.$fake_checkbox.data('field-name')
848
850
  this.value = this.$fake_checkbox.data('field-value')
849
- var field_selector = '[name="' + this.field_name +'"][value="' + this.value + '"]'
851
+ this.field_selector = '[name="' + this.field_name +'"][value="' + this.value + '"]'
850
852
  var $field
851
- if(this.$form.find(field_selector).length > 0){
852
- $field = this.$form.find(field_selector)
853
- this.$fake_checkbox.addClass('checked')
853
+ if(this.$form.find(this.field_selector).length > 0){
854
+ $field = this.$form.find(this.field_selector)
855
+ this.$fake_checkbox.addClass('checked')
856
+ this.addCheckedToForm()
854
857
  } else {
855
858
  $field = $('<input type="hidden" name="' + this.field_name + '" value="' + this.value + '">')
856
859
  }
857
860
  return $field
858
861
  },
862
+ getForm: function(){
863
+ var form_selector = this.$fake_checkbox.data('form-selector')
864
+ var $form = $(form_selector)
865
+ if($form.length == 0){
866
+ console.log("WARNING: hooch.FakeCheckbox could not find the form with the selector '" + form_selector + "'")
867
+ }
868
+ var toggleable_selector = this.$fake_checkbox.data('toggle-form')
869
+ if(toggleable_selector == true || toggleable_selector == 'true'){
870
+ this.$toggle_form = $form
871
+ } else {
872
+ var $toggleable = $(toggleable_selector)
873
+ if($toggleable.length > 0){
874
+ this.$toggle_form = $toggleable
875
+ } else {
876
+ this.$toggle_form = false
877
+ }
878
+ }
879
+ return $form
880
+ },
859
881
  addValue: function(){
860
- console.log(this.$field)
861
882
  this.$form.append(this.$field)
883
+ this.possiblyShowForm()
862
884
  },
863
885
  removeValue: function(){
864
886
  this.$field.detach()
887
+ this.possiblyHideForm()
888
+ },
889
+ possiblyShowForm: function(){
890
+ if(this.$toggle_form && this.$toggle_form.is(':hidden')){
891
+ this.$toggle_form.show()
892
+ }
893
+ },
894
+ possiblyHideForm: function(){
895
+ if(this.$toggle_form && this.$toggle_form.is(':visible') && this.formNoCheckedBoxes()){
896
+ this.$toggle_form.hide()
897
+ }
898
+ },
899
+ addCheckedToForm: function(){
900
+ if(this.$toggle_form){
901
+ var form_checkbox_list = this.$form.data('checked_fake_checkboxes')
902
+ if(form_checkbox_list){
903
+ form_checkbox_list.push(this.field_selector)
904
+ this.$form.data('checked_fake_checkboxes',form_checkbox_list)
905
+ } else {
906
+ this.$form.data('checked_fake_checkboxes',[this.field_selector])
907
+ }
908
+ }
909
+ },
910
+ removeCheckedFromForm: function(){
911
+ if(this.$toggle_form){
912
+ var form_checkbox_list = this.$form.data('checked_fake_checkboxes')
913
+ var fake_checkbox = this
914
+ var new_list = $.grep(form_checkbox_list, function(fs){return fs != fake_checkbox.field_selector})
915
+ this.$form.data('checked_fake_checkboxes',new_list)
916
+ }
917
+ },
918
+ formNoCheckedBoxes: function(){
919
+ return (!this.$form.data('checked_fake_checkboxes') || this.$form.data('checked_fake_checkboxes').length == 0)
865
920
  }
866
921
  }),
867
922
  FakeSelect: Class.extend({
@@ -154,21 +154,23 @@ module Hooch
154
154
  end
155
155
  end
156
156
 
157
- def fake_checkbox_attrs(form_selector, field_name, field_value)
157
+ def fake_checkbox_attrs(form_selector, field_name, field_value, toggle_form: false)
158
158
  ''.tap do |attrs|
159
159
  attrs.concat 'data-fake-checkbox=true'
160
160
  attrs.concat " data-form-selector=#{form_selector}"
161
161
  attrs.concat " data-field-name=\"#{field_name}\""
162
162
  attrs.concat " data-field-value=\"#{field_value}\""
163
+ attrs.concat " data-toggle-form=\"#{toggle_form}\"" if toggle_form
163
164
  end.html_safe
164
165
  end
165
166
 
166
- def fake_checkbox(form_selector, field_name, field_value)
167
+ def fake_checkbox(form_selector, field_name, field_value, toggle_form: false)
167
168
  {}.tap do |params|
168
169
  params['data-fake-checkbox'] = true
169
170
  params['data-form-selector'] = form_selector
170
171
  params['data-field-name'] = field_name
171
172
  params['data-field-value'] = field_value
173
+ params['data-toggle-form'] = toggle_form if toggle_form
172
174
  end
173
175
  end
174
176
 
data/lib/hooch/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Hooch
2
- VERSION = "0.14.2"
2
+ VERSION = "0.14.3"
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.14.2
4
+ version: 0.14.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Draut
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-25 00:00:00.000000000 Z
11
+ date: 2016-10-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails