effective_bootstrap 0.3.17 → 0.3.18

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: 82d56b3ce9fb868c32b156d3daa37aa908fd1246
4
- data.tar.gz: af4af4ee0bd8457b0b2f445016acb75eb0a83301
3
+ metadata.gz: 4ccfe6cf9b10dafad917ac4e6311f0fb4eec24e8
4
+ data.tar.gz: c8efb6470623663cfba0197533373f9608c8a8f0
5
5
  SHA512:
6
- metadata.gz: 1ef9d83a6eaf3d0c5328539ce0e63bc201820897337279a93da7726d24c098a4a48a8bb6aae9506133e24ba9c801847e22013fea20d3868ec9ac4964562786dc
7
- data.tar.gz: 51a1af53771c0aa27cbe870a47831e781473cc37f581d27e5745cfded86f8d7fc721b8ddcce06b0a12cfcdb6cc08d68c16817b55d71b39d8d4c882c57b0c11b6
6
+ metadata.gz: 4c80e53176e6f7e849d37c4f306119b598f3f5671249717876b9043d4954a84eb9817beae3d61ba3da9e04853ddb6a180b2624c2685354694437741fac4733e7
7
+ data.tar.gz: 9c0d9b638d3c5d643b3cc4a30a33eb144ba2c1ba0ec39560031b003b26e68a85698c9e6717fb0a21b3ae9563cd039b1273d56d5aaf5bd5e432cfc3276290a690
@@ -10,6 +10,7 @@
10
10
  //= require ./effective_checks/input
11
11
  //= require ./effective_editor/input
12
12
  //= require ./effective_file/input
13
+ //= require ./effective_number_text/input
13
14
  //= require ./effective_percent/input
14
15
  //= require ./effective_phone/input
15
16
  //= require ./effective_price/input
@@ -85,14 +85,22 @@ this.EffectiveForm ||= new class
85
85
  @current_submit = $form.find("##{@current_submit.attr('id')}.form-actions")
86
86
 
87
87
  # Process Flash
88
+ flash_status = ''
89
+ flash_message = ''
90
+
88
91
  if @remote_form_flash.length > 0
89
- @flash($form, flash[0], flash[1], true) for flash in @remote_form_flash
90
- @remote_form_flash = ''
91
- else
92
- @flash($form, 'success', '', true)
92
+ flash_status = @remote_form_flash[0][0]
93
+ flash_message = @remote_form_flash[0][1]
94
+
95
+ @flash($form, flash_status, flash_message, true)
96
+
97
+ # Fire off form events
98
+ was_error = ($form.hasClass('with-errors') || flash_status == 'danger' || flash_status == 'error')
99
+
100
+ $form.trigger((if was_error then 'effective-form:error' else 'effective-form:success'), flash_message)
101
+ $form.trigger('effective-form:complete', flash_message, was_error)
93
102
 
94
- $form.trigger(if $form.hasClass('with-errors') then 'effective-form:error' else 'effective-form:success')
95
- $form.trigger('effective-form:complete')
103
+ @remote_form_flash = ''
96
104
  true
97
105
 
98
106
  flash: ($form, status, message, skip_success = false) ->
@@ -0,0 +1,6 @@
1
+ # Prevent non-currency buttons from being pressed
2
+ $(document).on 'keydown', "input[type='text'].effective_number_text", (event) ->
3
+ allowed = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', ',', '.']
4
+
5
+ if event.key && event.key.length == 1 && event.metaKey == false && allowed.indexOf(event.key) == -1
6
+ event.preventDefault()
@@ -0,0 +1 @@
1
+ //= require ./initialize
@@ -13,15 +13,18 @@ $(document).on('click', '[data-effective-select-or-text]', function(event) {
13
13
  $visible = $obj.children('.form-group:visible').first();
14
14
  $hidden = $obj.children('.form-group:not(:visible)').first();
15
15
 
16
- visible_name = $visible.find('input,textarea,select').first().attr('name');
17
- hidden_name = $hidden.find('input,textarea,select').first().attr('name');
16
+ $visible_input = $visible.find('input,textarea,select').first()
17
+ $hidden_input = $hidden.find('input,textarea,select').first()
18
18
 
19
- if(visible_name == hidden_name) { $hidden.find('input,textarea,select').removeAttr('disabled'); }
19
+ required = $visible_input.prop('required') || $hidden_input.prop('required')
20
+
21
+ $hidden_input.prop('required', required)
22
+ $visible_input.removeAttr('required')
20
23
 
21
24
  $visible.fadeOut('fast', function() {
22
- if(visible_name == hidden_name) { $(this).find('input,textarea,select').prop('disabled', true); }
23
- $hidden.fadeIn('fast');
25
+ $hidden.prop('required', required).detach().insertAfter($visible).fadeIn('fast');
24
26
  });
25
27
 
26
28
  return false; // This implicitly calls event.preventDefault() to cancel the action, and prevent the link from going somewhere.
27
29
  });
30
+
@@ -82,6 +82,10 @@ module Effective
82
82
  Effective::FormInputs::NumberField.new(name, options, builder: self).to_html { super(name, options) }
83
83
  end
84
84
 
85
+ def number_text_field(name, options = {})
86
+ Effective::FormInputs::NumberTextField.new(name, options, builder: self).to_html
87
+ end
88
+
85
89
  def password_field(name, options = {})
86
90
  Effective::FormInputs::PasswordField.new(name, options, builder: self).to_html { super(name, options) }
87
91
  end
@@ -0,0 +1,15 @@
1
+ module Effective
2
+ module FormInputs
3
+ class NumberTextField < Effective::FormInput
4
+
5
+ def build_input(&block)
6
+ @builder.super_text_field(name, options[:input])
7
+ end
8
+
9
+ def input_html_options
10
+ { class: 'form-control effective_number_text', autocomplete: 'off' }
11
+ end
12
+
13
+ end
14
+ end
15
+ end
@@ -7,7 +7,7 @@ module Effective
7
7
  attr_accessor :text_options
8
8
 
9
9
  VISIBLE = {}
10
- HIDDEN_AND_DISABLED = { wrapper: { style: 'display: none;' }, disabled: true }
10
+ HIDDEN = { wrapper: { style: 'display: none;' } }
11
11
 
12
12
  def initialize(name, options, builder:)
13
13
  @name_text = options.delete(:name_text) || raise('Please include a text method name')
@@ -26,8 +26,13 @@ module Effective
26
26
 
27
27
  def to_html(&block)
28
28
  content_tag(:div, class: 'effective-select-or-text') do
29
- @builder.select(name, select_collection, select_options) +
30
- @builder.send(email_field? ? :email_field : :text_field, name_text, text_options) +
29
+ if select?
30
+ @builder.send(email_field? ? :email_field : :text_field, name_text, text_options) +
31
+ @builder.select(name, select_collection, select_options)
32
+ else
33
+ @builder.select(name, select_collection, select_options) +
34
+ @builder.send(email_field? ? :email_field : :text_field, name_text, text_options)
35
+ end +
31
36
  link_to(icon('rotate-ccw'), '#', class: 'effective-select-or-text-switch', title: 'Switch between choice and freeform', 'data-effective-select-or-text': true)
32
37
  end
33
38
  end
@@ -38,7 +43,10 @@ module Effective
38
43
 
39
44
  value = object.send(name)
40
45
 
41
- (value.present? && select_collection.include?(value)) || (value.blank? && object.send(name_text).blank?)
46
+ return true if (value.present? && select_collection.include?(value))
47
+ return true if (value.to_i > 0 && select_collection.find { |obj| obj.respond_to?(:id) && obj.id == value.to_i })
48
+
49
+ return true if value.blank? && object.send(name_text).blank?
42
50
  end
43
51
 
44
52
  def text?
@@ -50,11 +58,11 @@ module Effective
50
58
  end
51
59
 
52
60
  def select_options
53
- @select_options.merge(select? ? VISIBLE : HIDDEN_AND_DISABLED)
61
+ @select_options.merge(select? ? VISIBLE : HIDDEN)
54
62
  end
55
63
 
56
64
  def text_options
57
- @text_options.merge(text? ? VISIBLE : HIDDEN_AND_DISABLED)
65
+ @text_options.merge(text? ? VISIBLE : HIDDEN)
58
66
  end
59
67
 
60
68
  end
@@ -1,3 +1,3 @@
1
1
  module EffectiveBootstrap
2
- VERSION = '0.3.17'.freeze
2
+ VERSION = '0.3.18'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_bootstrap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.17
4
+ version: 0.3.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-03-05 00:00:00.000000000 Z
11
+ date: 2019-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -388,6 +388,8 @@ files:
388
388
  - app/assets/javascripts/effective_editor/quill.js
389
389
  - app/assets/javascripts/effective_file/initialize.js.coffee
390
390
  - app/assets/javascripts/effective_file/input.js
391
+ - app/assets/javascripts/effective_number_text/initialize.js.coffee
392
+ - app/assets/javascripts/effective_number_text/input.js
391
393
  - app/assets/javascripts/effective_percent/initialize.js.coffee
392
394
  - app/assets/javascripts/effective_percent/input.js
393
395
  - app/assets/javascripts/effective_phone/initialize.js.coffee
@@ -448,6 +450,7 @@ files:
448
450
  - app/models/effective/form_inputs/float_field.rb
449
451
  - app/models/effective/form_inputs/form_group.rb
450
452
  - app/models/effective/form_inputs/number_field.rb
453
+ - app/models/effective/form_inputs/number_text_field.rb
451
454
  - app/models/effective/form_inputs/password_field.rb
452
455
  - app/models/effective/form_inputs/percent_field.rb
453
456
  - app/models/effective/form_inputs/phone_field.rb