effective_bootstrap 0.10.0 → 0.10.4

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