effective_bootstrap 0.9.49 → 0.10.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
  SHA256:
3
- metadata.gz: fb1974ae9373cb7598952c9268026c2e05b0d21e25f3d7022646aca63b8a72ef
4
- data.tar.gz: f1400e0cfd13ddb003a00142c2150e756c565408275e110be183d04d741a1ab7
3
+ metadata.gz: 7ceade458f70f2cd3a3c1d5ad375c1566b0183ddabf337093b9035ea745a7808
4
+ data.tar.gz: 2863661e098dafb3c666ec157f4d0a956878b100b18ca1dda676f0e7b98ec4bb
5
5
  SHA512:
6
- metadata.gz: cdf878720dca75c2ae3633099df420defa12ed38661be78ce4189d337bcda6e19c192c4318a5192ba3f207c9ead8aa72f506669b79bd52a105151f80d61dbad7
7
- data.tar.gz: 8d18535bc868173d7ba3c3876887f9f9f76b022c0771127c3bb6d52338b650b223447d5ea65022dc51d7bc1de1a44b13a6892cf3bf1dbba0f1882671dce2bee6
6
+ metadata.gz: 4771d8f0397d03c4f839a6b6dca9967f5caa019c48a83dd5536fe9537b2a047bdeeb7f932865f6fc09b1e8df6901bbfe557f47fe3283a7c79746849448d28415
7
+ data.tar.gz: 3cfd9be8fc0dbb42f046a2361b00344812dd888723a6f08efdded2ddbf8d3b58e1c53d33bd3f2fe1dbbbfe88b0b8dcb6b9b0b7f7b82f67263abb2cf809f13477
@@ -25,5 +25,6 @@
25
25
  //= require ./effective_price/input
26
26
  //= require ./effective_radio/input
27
27
  //= require ./effective_rich_text_area/input
28
+ //= require ./effective_scale/input
28
29
  //= require ./effective_select/input
29
30
  //= require ./effective_select_or_text/input
@@ -0,0 +1,38 @@
1
+ # Prevent non-numeric buttons from being pressed
2
+ $(document).on 'keydown', "input[type='text'].effective_scale", (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()
7
+
8
+ # Assign the hidden input a value of ScaleX value
9
+ $(document).on 'change keyup', "input[type='text'].effective_scale", (event) ->
10
+ $input = $(event.target)
11
+
12
+ value = $input.val().replace(/,/g, '')
13
+ scale = parseInt($input.data('scale'))
14
+
15
+ unless value == ''
16
+ value = (parseFloat(value || 0.0) * (10.0 ** scale)).toFixed(0)
17
+
18
+ $input.siblings("input[type='hidden']").first().val(value)
19
+
20
+ # Format the value for display as currency (USD)
21
+ $(document).on 'change', "input[type='text'].effective_scale", (event) ->
22
+ $input = $(event.target)
23
+
24
+ value = $input.siblings("input[type='hidden']").first().val()
25
+ scale = parseInt($input.data('scale'))
26
+
27
+ unless value == ''
28
+ value = parseInt(value || 0)
29
+
30
+ if isNaN(value) == false && value != ''
31
+ value = (value / (10.0 ** scale)) if value != 0
32
+
33
+ value = value.toFixed(scale).toString()
34
+ value = value.replace(('.' + '0'.repeat(scale)), '')
35
+ else
36
+ value = ''
37
+
38
+ $input.val(value)
@@ -0,0 +1 @@
1
+ //= require ./initialize
@@ -145,6 +145,10 @@ module Effective
145
145
  Effective::FormInputs::Save.new(name, options, builder: self).to_html { super(name, options) }
146
146
  end
147
147
 
148
+ def scale_field(name, options = {})
149
+ Effective::FormInputs::ScaleField.new(name, options, builder: self).to_html
150
+ end
151
+
148
152
  def select(name, choices = nil, *args)
149
153
  options = args.extract_options!.merge!(collection: choices)
150
154
  Effective::FormInputs::Select.new(name, options, builder: self).to_html
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Effective
4
+ module FormInputs
5
+ class ScaleField < Effective::FormInput
6
+
7
+ def build_input(&block)
8
+ @builder.hidden_field(name, value: scale_to_integer, id: tag_id + '_value_as_integer') +
9
+ @template.text_field_tag(name, scale_to_s, options[:input].merge(id: tag_id, name: nil))
10
+ end
11
+
12
+ def input_html_options
13
+ { class: 'form-control effective_scale', autocomplete: 'off', id: tag_id, 'data-scale': scale }
14
+ end
15
+
16
+ private
17
+
18
+ def scale
19
+ @scale ||= (options.delete(:scale) || 2)
20
+ end
21
+
22
+ def scaled(value)
23
+ "%.#{scale}f" % (value / (10.0 ** scale))
24
+ end
25
+
26
+ def scale_to_integer
27
+ return nil unless value
28
+ value.kind_of?(Integer) ? value : scaled(value)
29
+ end
30
+
31
+ def scale_to_s
32
+ return nil unless value
33
+
34
+ str = (value.kind_of?(Integer) ? scaled(value) : value).to_s
35
+ str.gsub('.' + ('0' * scale), '')
36
+ end
37
+
38
+ end
39
+ end
40
+ end
@@ -1,3 +1,3 @@
1
1
  module EffectiveBootstrap
2
- VERSION = '0.9.49'.freeze
2
+ VERSION = '0.10.0'.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.9.49
4
+ version: 0.10.0
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: 2021-12-10 00:00:00.000000000 Z
11
+ date: 2022-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -473,6 +473,8 @@ files:
473
473
  - app/assets/javascripts/effective_rich_text_area/extensions.js
474
474
  - app/assets/javascripts/effective_rich_text_area/initialize.js
475
475
  - app/assets/javascripts/effective_rich_text_area/input.js
476
+ - app/assets/javascripts/effective_scale/initialize.js.coffee
477
+ - app/assets/javascripts/effective_scale/input.js
476
478
  - app/assets/javascripts/effective_select/initialize.js.coffee
477
479
  - app/assets/javascripts/effective_select/input.js
478
480
  - app/assets/javascripts/effective_select/overrides.js.coffee
@@ -675,6 +677,7 @@ files:
675
677
  - app/models/effective/form_inputs/reset.rb
676
678
  - app/models/effective/form_inputs/rich_text_area.rb
677
679
  - app/models/effective/form_inputs/save.rb
680
+ - app/models/effective/form_inputs/scale_field.rb
678
681
  - app/models/effective/form_inputs/search_field.rb
679
682
  - app/models/effective/form_inputs/select.rb
680
683
  - app/models/effective/form_inputs/select_or_text.rb