effective_bootstrap 1.16.1 → 1.16.3

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: ccf7a54e3db3db623fce49bd558b72f39938d3c01bef4b5c06e0250e0b581946
4
- data.tar.gz: 06aadcb37db501af97921a20a558e29a3693d8de08162cc2b621b305a015b36c
3
+ metadata.gz: 7a43d4059d694f254fb05f0cb43f12dc5f3b5fbeb5df8dc7aa7aa21fc8a3bad9
4
+ data.tar.gz: 8967aad36784c29bd334837b2bf9d4683258e7afafd61d509821dd31a860688c
5
5
  SHA512:
6
- metadata.gz: e378b4f94cb4bc226b8ce80a18703e8348f84d023ed61d6d9aecd03191ae7cbeb6ab71b7374553ec91dfa7d623f7a5ecff88a3e114fc302648da1aeec0431864
7
- data.tar.gz: 3ca5c93e2c8207d8460f138036564d228baff8383fc14827df107f1f12e5f7c781ff7624a53338bd16e9978e1f4309a0dbbdb5629970d575ef1c032bbac49929
6
+ metadata.gz: 8dc33e68ff3d7383d22d60971c577490c4fbc9d93f606ec66b7ac45a38cb1fca4ef2ef514525b0b1a0fa974b65d36599791ae14d2f134bd8a5ad0b1ac3ca0670
7
+ data.tar.gz: 383b522a6c0839f578f545f7535aac54682a9640f1c88c3d61d48879a445683047f0a95d373b0b3b74777bed218be622fa5f1a387979d4841f06263fe5630928
@@ -1,3 +1,5 @@
1
+ elementSelector = 'input,textarea,select,button,div.form-has-many'
2
+
1
3
  (this.EffectiveBootstrap || {}).effective_hide_if = ($element, options) ->
2
4
  $affects = $element.closest('form,div.effective-datatables-filters').find("input[name='#{options.name}'],select[name='#{options.name}']")
3
5
 
@@ -11,16 +13,15 @@
11
13
 
12
14
  if matches
13
15
  $element.hide()
14
- $element.find('input,textarea,select,button').prop('disabled', true)
16
+ $element.find(elementSelector).prop('disabled', true)
15
17
  else
16
18
  $element.fadeIn()
17
- $element.find('input,textarea,select,button').removeAttr('disabled')
19
+ $element.find(elementSelector).removeAttr('disabled')
18
20
  $element.find('textarea.effective_article_editor').each (i, editor) -> ArticleEditor('#' + $(editor).attr('id')).enable()
19
21
 
20
22
  # Maybe disable it now
21
23
  if options.needDisable
22
- $element.find('input,textarea,select,button').prop('disabled', true)
23
-
24
+ $element.find(elementSelector).prop('disabled', true)
24
25
 
25
26
  (this.EffectiveBootstrap || {}).effective_show_if = ($element, options) ->
26
27
  $affects = $element.closest('form,div.effective-datatables-filters').find("input[name='#{options.name}'],select[name='#{options.name}'],input[name='#{options.name}[]']")
@@ -39,15 +40,15 @@
39
40
 
40
41
  if matches
41
42
  $element.fadeIn()
42
- $element.find('input,textarea,select,button').removeAttr('disabled')
43
+ $element.find(elementSelector).removeAttr('disabled')
43
44
  $element.find('textarea.effective_article_editor').each (i, editor) -> ArticleEditor('#' + $(editor).attr('id')).enable()
44
45
  else
45
46
  $element.hide()
46
- $element.find('input,textarea,select,button').prop('disabled', true)
47
+ $element.find(elementSelector).prop('disabled', true)
47
48
 
48
49
  # Maybe disable it now
49
50
  if options.needDisable
50
- $element.find('input,textarea,select,button').prop('disabled', true)
51
+ $element.find(elementSelector).prop('disabled', true)
51
52
 
52
53
  (this.EffectiveBootstrap || {}).effective_show_if_any = ($element, options) ->
53
54
  $affects = $element.closest('form,div.effective-datatables-filters').find("input[name='#{options.name}'],select[name='#{options.name}']")
@@ -59,13 +60,13 @@
59
60
 
60
61
  if found
61
62
  $element.fadeIn()
62
- $element.find('input,textarea,select,button').removeAttr('disabled')
63
+ $element.find(elementSelector).removeAttr('disabled')
63
64
  $element.find('textarea.effective_article_editor').each (i, editor) -> ArticleEditor('#' + $(editor).attr('id')).enable()
64
65
 
65
66
  else
66
67
  $element.hide()
67
- $element.find('input,textarea,select,button').prop('disabled', true)
68
+ $element.find(elementSelector).prop('disabled', true)
68
69
 
69
70
  # Maybe disable it now
70
71
  if options.needDisable
71
- $element.find('input,textarea,select,button').prop('disabled', true)
72
+ $element.find(elementSelector).prop('disabled', true)
@@ -29,3 +29,7 @@
29
29
  .effective_date_time_picker_input_group {
30
30
  cursor: pointer;
31
31
  }
32
+
33
+ .effective_date_time_picker_input_group:has(input:disabled) {
34
+ color: red;
35
+ }
@@ -34,3 +34,8 @@
34
34
  margin-top: 0;
35
35
  .eb-icon { height: 1.0rem; width: 1.0rem; margin-bottom: 2px; }
36
36
  }
37
+
38
+ .form-has-many[disabled] {
39
+ .has-many-links { display: none; }
40
+ .has-many-remove { display: none; }
41
+ }
@@ -17,7 +17,10 @@ module Effective
17
17
  end
18
18
 
19
19
  def input_group_options
20
- { input_group: { class: 'input-group effective_date_time_picker_input_group' }, prepend: content_tag(:span, icon('calendar'), class: 'input-group-text') }
20
+ {
21
+ input_group: { class: 'input-group effective_date_time_picker_input_group' },
22
+ prepend: (content_tag(:span, icon('calendar'), class: 'input-group-text') unless disabled?)
23
+ }
21
24
  end
22
25
 
23
26
  def datetime_to_s # ruby
@@ -161,7 +161,7 @@ module Effective
161
161
  end
162
162
 
163
163
  def build_purge
164
- return ''.html_safe unless purge?
164
+ return ''.html_safe unless purge? && !disabled?
165
165
 
166
166
  label = (multiple? ? 'Delete existing files on save' : 'Delete existing file on save')
167
167
  @builder.check_box('_purge', multiple: true, label: label, id: "#{tag_id}_purge", checked_value: name)
@@ -125,21 +125,21 @@ module Effective
125
125
 
126
126
  def has_many_links_for(block)
127
127
  return BLANK unless add? || reorder?
128
- return BLANK if disabled?
128
+ # We can't return BLANK when disabled? here or it breaks f.show_if
129
129
 
130
130
  content_tag(:div, class: 'has-many-links mt-2') do
131
131
  [*(link_to_add(block) if add?), *(link_to_reorder(block) if reorder?)].join(' ').html_safe
132
132
  end
133
133
  end
134
134
 
135
- def render_resource(resource, block)
135
+ def render_resource(resource, block, skip_disabled: nil)
136
136
  remove = BLANK
137
137
  reorder = BLANK
138
138
  insert = BLANK
139
139
  can_remove = (can_remove_method.blank? || !!resource.send(can_remove_method))
140
140
 
141
141
  content = @builder.fields_for(name, resource) do |form|
142
- form.disabled = disabled?
142
+ form.disabled = disabled? unless skip_disabled
143
143
 
144
144
  fields = block.call(form)
145
145
 
@@ -149,11 +149,11 @@ module Effective
149
149
  fields
150
150
  end
151
151
 
152
- if remove? && !disabled?
152
+ if remove?
153
153
  remove += (can_remove || resource.new_record?) ? link_to_remove(resource) : disabled_link_to_remove(resource)
154
154
  end
155
155
 
156
- if insert? && !disabled?
156
+ if insert?
157
157
  insert = render_insert() if add? && reorder?
158
158
  end
159
159
 
@@ -188,14 +188,18 @@ module Effective
188
188
  content_tag(:div, link_to_insert(), class: 'has-many-actions')
189
189
  end
190
190
 
191
- def render_template(block)
191
+ def render_template(block, skip_disabled: nil)
192
192
  resource = build_resource()
193
- index = collection.length
193
+ length = collection.length
194
194
 
195
- html = render_resource(resource, block)
195
+ html = render_resource(resource, block, skip_disabled: skip_disabled)
196
196
 
197
- unless html.include?("#{name}_attributes][#{index}]")
198
- raise('unexpected index. unable to render resource template.')
197
+ # Guess the index
198
+ index = length if html.include?("#{name}_attributes][#{length}]")
199
+ index ||= html.match(/#{name}_attributes\]\[(\d+)\]/).try(:[], 1).try(:to_i)
200
+
201
+ if index.blank?
202
+ raise('unknown index. unable to render resource template.')
199
203
  end
200
204
 
201
205
  html.gsub!("#{name}_attributes][#{index}]", "#{name}_attributes][HASMANYINDEX]")
@@ -212,7 +216,7 @@ module Effective
212
216
  title: 'Add Another',
213
217
  data: {
214
218
  'effective-form-has-many-add': true,
215
- 'effective-form-has-many-template': render_template(block)
219
+ 'effective-form-has-many-template': render_template(block, skip_disabled: true)
216
220
  }
217
221
  )
218
222
  end
@@ -1,3 +1,3 @@
1
1
  module EffectiveBootstrap
2
- VERSION = '1.16.1'.freeze
2
+ VERSION = '1.16.3'.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.16.1
4
+ version: 1.16.3
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-10-03 00:00:00.000000000 Z
11
+ date: 2023-10-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails