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 +4 -4
- data/app/assets/javascripts/effective_bootstrap/reveal_mail_to.js +12 -0
- data/app/assets/javascripts/effective_bootstrap.js +1 -1
- data/app/assets/stylesheets/effective_bootstrap/forms.scss +4 -0
- data/app/helpers/effective_bootstrap_helper.rb +7 -2
- data/app/models/effective/form_builder.rb +0 -4
- data/app/models/effective/form_input.rb +3 -6
- data/lib/effective_bootstrap/version.rb +1 -1
- metadata +3 -5
- data/app/assets/javascripts/effective_scale/initialize.js.coffee +0 -38
- data/app/assets/javascripts/effective_scale/input.js +0 -1
- data/app/models/effective/form_inputs/scale_field.rb +0 -40
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: ce183f7b5ec8710057b26c596d126df576635f2f056c2b5f691c817aa043d49d
         | 
| 4 | 
            +
              data.tar.gz: 2e4697f95f477939c744e6fd7e7e44426f15975b192fae10c7061baaab384096
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 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 ||= [(" | 
| 184 | 
            -
                  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 | 
            -
                   | 
| 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)
         | 
    
        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. | 
| 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- | 
| 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
         |