effective_bootstrap 1.14.6 → 1.14.7

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: 5bc9d86d299ae2bf3ef767a32e66f7f3a6e4f451f16bb7bf5bc6e0a451c467a3
4
- data.tar.gz: dbe37c241ededf99c80c2df269307abc0f048c15771475bb5e412ad3a6b84dba
3
+ metadata.gz: a5dab8378d10d23707e36538dda751cc0a3d8ca0221593f63d1f612b826099d0
4
+ data.tar.gz: 665eae25b98123231859e04b44c88430c68db4e65cf7f0c32328e45b9164ba1f
5
5
  SHA512:
6
- metadata.gz: cb1d95a678fa6d2c7b2b668002ea1f5ab15356a913e9d95ddf8639049cf1ec32e766f02f2ff2fd3292c6e200b362e9d810ce92c5458a356b20df22df2a9675ad
7
- data.tar.gz: 2deee038c41e3619c4479d7b8191260fa16d6b35797eab8455cd73b793cc89cc1a1b3caed9bef85bd39aee503a45d2a59dff674b56f9530d12b23278e877fe70
6
+ metadata.gz: 582d4816ada40d49a88b1920ac3b04bdf206ab6f634d1b4b92a2892fdf2c645c860b6bf5228a80abd944715fb0fa0d163c3929667479bd5eb561c6e11f141156
7
+ data.tar.gz: de7c3e442e442af4d9b2689a224644d6065fbdf6d74a99cdef1293ed093cc8978f2fdbec8932cea5e84a80c7fb5cb40aec53c9bf5f5e7567e0ba94876b7760b8
@@ -1,28 +1,3 @@
1
- $(document).on 'change', '[data-toggle=cards] input[type=radio]', (event) ->
2
- $input = $(event.currentTarget)
3
- return unless $input.is(':checked')
4
-
5
- $card = $input.closest('.card')
6
- return unless $card.length > 0
7
-
8
- $cards = $input.closest('.card-deck').children('.card')
9
- return unless $cards.length > 0
10
-
11
- $cards.removeClass('active').removeClass('border-secondary')
12
- $cards.find('.card-header').removeClass('bg-secondary text-white')
13
-
14
- $card.addClass('active').addClass('border-secondary')
15
- $card.find('.card-header').addClass('bg-secondary text-white')
16
- true
17
-
18
- $(document).on 'click', '[data-toggle=cards] [data-toggle=card]', (event) ->
19
- $card = $(event.currentTarget).closest('.card')
20
- return unless $card.length > 0
21
-
22
- val = $card.find('input:radio').val()
23
- $card.find('input:radio').val([val]).trigger('change')
24
- false
25
-
26
1
  $(document).on 'change', '.effective-radios input', (event) ->
27
2
  $input = $(event.currentTarget)
28
3
  $group = $input.closest('.effective-radios')
@@ -5,25 +5,34 @@ div.btn-group > .btn.first-button {
5
5
 
6
6
  .effective-radios.is-valid {
7
7
  label { border-color: #28a745; }
8
+ .card { border-color: #28a745; }
8
9
  .valid-feedback { display: block; }
9
10
  }
10
11
 
11
12
  .effective-radios.is-invalid {
12
13
  label { border-color: #dc3545; }
14
+ .card { border-color: #dc3545; }
13
15
  .invalid-feedback { display: block; }
14
16
  }
15
17
 
16
- .effective-radios.card-deck {
17
- .card-header { cursor: pointer; }
18
+ .effective-radios.cards {
19
+ .card {
20
+ cursor: pointer;
21
+ }
18
22
 
19
23
  input[type=radio] { display: none; }
20
24
 
21
- .visible-when-selected { display: none; }
22
- .visible-when-unselected { display: block; }
25
+ input:checked + .card {
26
+ box-shadow: 0 0 1px 1px #0b3b61;
27
+ }
23
28
 
24
- .active {
25
- .visible-when-selected { display: block; }
26
- .visible-when-unselected { display: none; }
29
+ input:checked + .card {
30
+ .show-if-checked { display: inherit; }
31
+ .show-if-unchecked { display: none; }
27
32
  }
28
- }
29
33
 
34
+ input:not(:checked) + .card {
35
+ .show-if-checked { display: none; }
36
+ .show-if-unchecked { display: inherit; }
37
+ }
38
+ }
@@ -6,6 +6,11 @@
6
6
  # cards: true
7
7
  # custom: false
8
8
 
9
+ # For cards, you should pass an html collection like
10
+ # [[card('First Item') {...}, 'first item'], [card('Second Item') {...}, 'second item']]
11
+ # or a collection like
12
+ # [['First Item', 'first'], ['Second Item', 'second']]
13
+
9
14
  module Effective
10
15
  module FormInputs
11
16
  class Radios < CollectionInput
@@ -54,7 +59,7 @@ module Effective
54
59
  [
55
60
  'effective-radios',
56
61
  ('btn-group btn-group-toggle' if buttons?),
57
- ('card-deck' if cards?),
62
+ ('cards card-deck' if cards?),
58
63
  ('no-feedback' unless feedback_options),
59
64
  ('is-invalid' if feedback_options && has_error?(name)),
60
65
  ('is-valid' if feedback_options && has_error? && !has_error?(name))
@@ -110,21 +115,21 @@ module Effective
110
115
  builder.label(opts) { builder.radio_button(id: item_id) + builder.text }
111
116
  elsif cards?
112
117
  opts = item_label_options.merge(for: item_id)
113
- opts[:class] = [opts[:class], ('active border-secondary' if active_item?(builder)), ('first-card' if first_item?) ].compact.join(' ')
118
+ opts[:class] = [opts[:class], ('active' if active_item?(builder)), ('first-card' if first_item?) ].compact.join(' ')
114
119
 
115
- if active_item?(builder)
116
- builder.label(opts) { builder.radio_button(id: item_id) + builder.text.sub('card-header', 'card-header bg-secondary text-white').html_safe }
117
- else
118
- builder.label(opts) { builder.radio_button(id: item_id) + builder.text }
119
- end
120
+ builder.label(opts) { builder.radio_button(id: item_id) + build_item_wrap { builder.text } }
120
121
  else
121
122
  build_item_wrap { builder.radio_button(id: item_id) + builder.label(item_label_options.merge(for: item_id)) }
122
123
  end
123
124
  end
124
125
 
125
126
  def build_item_wrap(&block)
126
- if cards?
127
- content_tag(:div, yield, class: 'card')
127
+ if cards? && options_collection_includes_cards?
128
+ yield # Not required.
129
+ elsif cards?
130
+ content_tag(:div, class: 'card') do
131
+ content_tag(:div, yield, class: ('card-body' if card_body?))
132
+ end
128
133
  elsif custom?
129
134
  content_tag(:div, yield, class: 'custom-control custom-radio ' + (inline? ? 'custom-control-inline' : 'form-group'))
130
135
  else
@@ -136,11 +141,16 @@ module Effective
136
141
  options[:input].except(:inline, :custom, :buttons)
137
142
  end
138
143
 
144
+ def options_collection_includes_cards?
145
+ return @options_collection_includes_cards unless @options_collection_includes_cards.nil?
146
+ @options_collection_includes_cards = options_collection.first(3).any? { |text, _| text.to_s.include?("div class=\"card") }
147
+ end
148
+
139
149
  def item_label_options
140
150
  if buttons?
141
151
  { class: 'btn btn-outline-secondary' }
142
152
  elsif cards?
143
- { class: 'card' }
153
+ { class: 'form-card-label' }
144
154
  elsif custom?
145
155
  { class: 'custom-control-label' }
146
156
  else
@@ -158,6 +168,12 @@ module Effective
158
168
  @cards = (options.delete(:cards) || false)
159
169
  end
160
170
 
171
+ def card_body? # default true
172
+ return @card_body unless @card_body.nil?
173
+ value = options.delete(:card_body)
174
+ @card_body = (value == nil ? true : value)
175
+ end
176
+
161
177
  def button_group_id
162
178
  "#{tag_id}_btn_group"
163
179
  end
@@ -1,3 +1,3 @@
1
1
  module EffectiveBootstrap
2
- VERSION = '1.14.6'.freeze
2
+ VERSION = '1.14.7'.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: 1.14.6
4
+ version: 1.14.7
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: 2023-06-22 00:00:00.000000000 Z
11
+ date: 2023-07-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails