effective_bootstrap 0.10.0 → 0.10.4

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: 7ceade458f70f2cd3a3c1d5ad375c1566b0183ddabf337093b9035ea745a7808
4
- data.tar.gz: 2863661e098dafb3c666ec157f4d0a956878b100b18ca1dda676f0e7b98ec4bb
3
+ metadata.gz: ce183f7b5ec8710057b26c596d126df576635f2f056c2b5f691c817aa043d49d
4
+ data.tar.gz: 2e4697f95f477939c744e6fd7e7e44426f15975b192fae10c7061baaab384096
5
5
  SHA512:
6
- metadata.gz: 4771d8f0397d03c4f839a6b6dca9967f5caa019c48a83dd5536fe9537b2a047bdeeb7f932865f6fc09b1e8df6901bbfe557f47fe3283a7c79746849448d28415
7
- data.tar.gz: 3cfd9be8fc0dbb42f046a2361b00344812dd888723a6f08efdded2ddbf8d3b58e1c53d33bd3f2fe1dbbbfe88b0b8dcb6b9b0b7f7b82f67263abb2cf809f13477
6
+ metadata.gz: bf040655168c88bfe628a87182d061147ecc7b82554e268fa9b1ac75cbbf2cdb911326642c730a568d60438762cb71da7fcdc57f2f46622bf40f99d8051d9392
7
+ data.tar.gz: 01ab704d07b028abc72d72311e6ac090bc68de56993c1be93d8b74945d8cccb560275d50ba71fcdfb798834cb99f07ee615f378c262236a284791bdf6f98fc78
@@ -0,0 +1,12 @@
1
+ // reveal_mail_to
2
+ $(document).on('click', '[data-mailto-rot13]', function(event) {
3
+ event.preventDefault();
4
+
5
+ var $link = $(event.currentTarget);
6
+
7
+ var email = $link.data('mailto-rot13').replace(/[a-zA-Z]/g, function(c) {
8
+ return String.fromCharCode((c <= 'Z' ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26);
9
+ });
10
+
11
+ $link.attr('href', 'mailto:' + email).html(email).removeAttr('data-mailto-rot13');
12
+ });
@@ -3,6 +3,7 @@
3
3
  //= require ./effective_bootstrap/form
4
4
  //= require ./effective_bootstrap/logic
5
5
  //= require ./effective_bootstrap/other
6
+ //= require ./effective_bootstrap/reveal_mail_to
6
7
  //= require ./effective_bootstrap/tabs
7
8
 
8
9
  //= require ./effective_datetime/input
@@ -25,6 +26,5 @@
25
26
  //= require ./effective_price/input
26
27
  //= require ./effective_radio/input
27
28
  //= require ./effective_rich_text_area/input
28
- //= require ./effective_scale/input
29
29
  //= require ./effective_select/input
30
30
  //= require ./effective_select_or_text/input
@@ -63,3 +63,7 @@ div.form-group > label + .btn-group { display: block; }
63
63
 
64
64
  .effective-checks.is-invalid .invalid-feedback { display: block; }
65
65
  .effective-checks.is-valid .valid-feedback { display: block; }
66
+
67
+ .invalid-feedback { text-transform: capitalize; }
68
+ .valid-feedback { display: none; }
69
+
@@ -277,9 +277,9 @@ module EffectiveBootstrapHelper
277
277
  def list_group_link_to(label, path, opts = {})
278
278
  # Regular link item
279
279
  opts[:class] = if request.fullpath.include?(path)
280
- [opts[:class], 'list-group-item active'].compact.join(' ')
280
+ [opts[:class], 'list-group-item list-group-item-action active'].compact.join(' ')
281
281
  else
282
- [opts[:class], 'list-group-item'].compact.join(' ')
282
+ [opts[:class], 'list-group-item list-group-item-action'].compact.join(' ')
283
283
  end
284
284
 
285
285
  link_to(label.to_s, path, opts)
@@ -470,6 +470,11 @@ module EffectiveBootstrapHelper
470
470
  # Let Kaminari override this method.
471
471
  alias_method(:paginate, :bootstrap_paginate) unless (respond_to?(:paginate) || defined?(Kaminari))
472
472
 
473
+ def reveal_mail_to(email)
474
+ raise('expected an email') unless email.kind_of?(String) && email.include?('@')
475
+ link_to 'Click to reveal email', '#', 'data-mailto-rot13' => email.tr('A-Za-z', 'N-ZA-Mn-za-m')
476
+ end
477
+
473
478
  # Tabs DSL
474
479
  # Inserts both the tablist and the tabpanel
475
480
 
@@ -145,10 +145,6 @@ 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
-
152
148
  def select(name, choices = nil, *args)
153
149
  options = args.extract_options!.merge!(collection: choices)
154
150
  Effective::FormInputs::Select.new(name, options, builder: self).to_html
@@ -180,13 +180,10 @@ module Effective
180
180
 
181
181
  invalid = object.errors[name].to_sentence.presence if object.respond_to?(:errors)
182
182
  invalid ||= options[:feedback][:invalid].delete(:text).presence
183
- invalid ||= [("can't be blank" if options[:input][:required]), ('must be valid' if validated?(name))].tap(&:compact!).join(' and ').presence
184
- invalid ||= "can't be blank or is invalid"
183
+ invalid ||= [("Can't be blank" if options[:input][:required]), ('must be valid' if validated?(name))].tap(&:compact!).join(' and ').presence
184
+ invalid ||= "Can't be blank or is invalid"
185
185
 
186
- valid = options[:feedback][:valid].delete(:text) || 'Looks good!'
187
-
188
- content_tag(:div, invalid.html_safe, options[:feedback][:invalid]) +
189
- content_tag(:div, valid.html_safe, options[:feedback][:valid])
186
+ content_tag(:div, invalid.html_safe, options[:feedback][:invalid])
190
187
  end
191
188
 
192
189
  def has_error?(name = nil)
@@ -1,3 +1,3 @@
1
1
  module EffectiveBootstrap
2
- VERSION = '0.10.0'.freeze
2
+ VERSION = '0.10.4'.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.10.0
4
+ version: 0.10.4
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: 2022-01-05 00:00:00.000000000 Z
11
+ date: 2022-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -428,6 +428,7 @@ files:
428
428
  - app/assets/javascripts/effective_bootstrap/form.js.coffee
429
429
  - app/assets/javascripts/effective_bootstrap/logic.js.coffee
430
430
  - app/assets/javascripts/effective_bootstrap/other.js.coffee
431
+ - app/assets/javascripts/effective_bootstrap/reveal_mail_to.js
431
432
  - app/assets/javascripts/effective_bootstrap/tabs.js
432
433
  - app/assets/javascripts/effective_bootstrap_editor.js
433
434
  - app/assets/javascripts/effective_checks/initialize.js.coffee
@@ -473,8 +474,6 @@ files:
473
474
  - app/assets/javascripts/effective_rich_text_area/extensions.js
474
475
  - app/assets/javascripts/effective_rich_text_area/initialize.js
475
476
  - 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
478
477
  - app/assets/javascripts/effective_select/initialize.js.coffee
479
478
  - app/assets/javascripts/effective_select/input.js
480
479
  - app/assets/javascripts/effective_select/overrides.js.coffee
@@ -677,7 +676,6 @@ files:
677
676
  - app/models/effective/form_inputs/reset.rb
678
677
  - app/models/effective/form_inputs/rich_text_area.rb
679
678
  - app/models/effective/form_inputs/save.rb
680
- - app/models/effective/form_inputs/scale_field.rb
681
679
  - app/models/effective/form_inputs/search_field.rb
682
680
  - app/models/effective/form_inputs/select.rb
683
681
  - app/models/effective/form_inputs/select_or_text.rb
@@ -1,38 +0,0 @@
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)
@@ -1 +0,0 @@
1
- //= require ./initialize
@@ -1,40 +0,0 @@
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