effective_bootstrap 0.9.12 → 0.9.17
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/effective_bootstrap.js +1 -0
- data/app/assets/javascripts/effective_has_many/initialize.js.coffee +2 -0
- data/app/assets/javascripts/effective_password/initialize.js.coffee +9 -0
- data/app/assets/javascripts/effective_password/input.js +1 -0
- data/app/helpers/effective_bootstrap_helper.rb +30 -0
- data/app/helpers/effective_form_builder_helper.rb +2 -2
- data/app/models/effective/form_inputs/has_many.rb +1 -1
- data/app/models/effective/form_inputs/password_field.rb +16 -2
- data/app/models/effective/form_inputs/text_field.rb +1 -0
- data/lib/effective_bootstrap/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9c76bc463f1c4a4b5c248ac9072bdb2cc971da468cf13292519e80f64d3ec693
|
4
|
+
data.tar.gz: 85349386858572224e4a1127d8afc3dbc98250751282f60e29678833eab0ee86
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 59b788edfb7934ad72a406d79ceab25c813c27343a4cefb0f871bc4fb026110a0646eae6df0fbc663d14168644f91b421a381b326705582c8dfb2f259f3e909d
|
7
|
+
data.tar.gz: 6cc0cbc87baa14e033a480ce895be3c0570c78639a6891017e57cd9cf105027287c5b3ed83990f38024315d76a06f56cf734b7f87a01d4814fa8ff58b1a1b832
|
@@ -18,6 +18,7 @@
|
|
18
18
|
//= require ./effective_has_many/input
|
19
19
|
//= require ./effective_integer/input
|
20
20
|
//= require ./effective_number_text/input
|
21
|
+
//= require ./effective_password/input
|
21
22
|
//= require ./effective_percent/input
|
22
23
|
//= require ./effective_phone/input
|
23
24
|
//= require ./effective_price/input
|
@@ -48,6 +48,8 @@ $(document).on 'click', '[data-effective-form-has-many-remove]', (event) ->
|
|
48
48
|
event.preventDefault()
|
49
49
|
|
50
50
|
$obj = $(event.currentTarget)
|
51
|
+
return unless $obj.data('confirmed') if $obj.data('confirm')
|
52
|
+
|
51
53
|
$hasMany = $obj.closest('.form-has-many')
|
52
54
|
return unless $hasMany.length > 0
|
53
55
|
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# Prevent non-currency buttons from being pressed
|
2
|
+
$(document).on 'click', 'button[data-effective-password]', (event) ->
|
3
|
+
$obj = $(event.currentTarget)
|
4
|
+
$input = $obj.closest('.input-group')
|
5
|
+
|
6
|
+
$input.find('input').attr('type', $obj.data('effective-password'))
|
7
|
+
$input.find('button[data-effective-password]').toggle()
|
8
|
+
|
9
|
+
false
|
@@ -0,0 +1 @@
|
|
1
|
+
//= require ./initialize
|
@@ -18,6 +18,36 @@ module EffectiveBootstrapHelper
|
|
18
18
|
content
|
19
19
|
end
|
20
20
|
|
21
|
+
# https://getbootstrap.com/docs/4.0/components/card/
|
22
|
+
# = card('title do')
|
23
|
+
# %p Stuff
|
24
|
+
# = card('Stuff', header: 'header title')
|
25
|
+
def card(value = nil, opts = {}, &block)
|
26
|
+
raise('expected a block') unless block_given?
|
27
|
+
|
28
|
+
if value.kind_of?(Hash)
|
29
|
+
opts = value; value = nil
|
30
|
+
end
|
31
|
+
|
32
|
+
header = opts.delete(:header)
|
33
|
+
title = opts.delete(:title) || value
|
34
|
+
|
35
|
+
content_tag(:div, merge_class_key(opts, 'card mb-4')) do
|
36
|
+
header = content_tag(:div, header, class: 'card-header') if header.present?
|
37
|
+
|
38
|
+
body = content_tag(:div, class: 'card-body') do
|
39
|
+
if title.present?
|
40
|
+
content_tag(:h5, title, class: 'card-title') + capture(&block)
|
41
|
+
else
|
42
|
+
capture(&block)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
header ? (header + body) : body
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
|
21
51
|
# https://getbootstrap.com/docs/4.0/components/collapse/
|
22
52
|
|
23
53
|
# = collapse('toggle visibility') do
|
@@ -1,8 +1,8 @@
|
|
1
1
|
module EffectiveFormBuilderHelper
|
2
2
|
def effective_form_with(**options, &block)
|
3
3
|
# Compute the default ID
|
4
|
-
subject = Array(options[:
|
5
|
-
class_name = subject.class.name.parameterize.underscore
|
4
|
+
subject = Array(options[:model] || options[:scope]).last
|
5
|
+
class_name = (options[:scope] || subject.class.name.parameterize.underscore)
|
6
6
|
unique_id = options.except(:model).hash.abs
|
7
7
|
|
8
8
|
html_id = if subject.kind_of?(Symbol)
|
@@ -117,7 +117,7 @@ module Effective
|
|
117
117
|
fields
|
118
118
|
end
|
119
119
|
|
120
|
-
remove += link_to_remove(resource) if remove?
|
120
|
+
remove += link_to_remove(resource) if (remove? || resource.new_record?)
|
121
121
|
|
122
122
|
content_tag(:div, render_fields(content, remove), class: 'has-many-fields')
|
123
123
|
end
|
@@ -3,11 +3,25 @@ module Effective
|
|
3
3
|
class PasswordField < Effective::FormInput
|
4
4
|
|
5
5
|
def input_html_options
|
6
|
-
{ class: 'form-control', id: tag_id }
|
6
|
+
{ class: 'form-control effective_password', id: tag_id }
|
7
7
|
end
|
8
8
|
|
9
9
|
def input_group_options
|
10
|
-
{ input_group: { class: 'input-group' },
|
10
|
+
{ input_group: { class: 'input-group' }, append: eyes }
|
11
|
+
end
|
12
|
+
|
13
|
+
def eyes
|
14
|
+
content_tag(:button, icon('eye'),
|
15
|
+
class: 'btn input-group-text',
|
16
|
+
title: 'Show password',
|
17
|
+
'data-effective-password': 'text'
|
18
|
+
) +
|
19
|
+
content_tag(:button, icon('eye-off'),
|
20
|
+
class: 'btn input-group-text',
|
21
|
+
title: 'Hide password',
|
22
|
+
style: 'display: none;',
|
23
|
+
'data-effective-password': 'password'
|
24
|
+
)
|
11
25
|
end
|
12
26
|
|
13
27
|
def feedback_options
|
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.
|
4
|
+
version: 0.9.17
|
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-
|
11
|
+
date: 2021-03-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -440,6 +440,8 @@ files:
|
|
440
440
|
- app/assets/javascripts/effective_integer/input.js
|
441
441
|
- app/assets/javascripts/effective_number_text/initialize.js.coffee
|
442
442
|
- app/assets/javascripts/effective_number_text/input.js
|
443
|
+
- app/assets/javascripts/effective_password/initialize.js.coffee
|
444
|
+
- app/assets/javascripts/effective_password/input.js
|
443
445
|
- app/assets/javascripts/effective_percent/initialize.js.coffee
|
444
446
|
- app/assets/javascripts/effective_percent/input.js
|
445
447
|
- app/assets/javascripts/effective_phone/initialize.js.coffee
|