effective_bootstrap 0.9.49 → 0.10.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
  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