hooch 0.14.2 → 0.14.3

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: 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