effective_bootstrap 1.16.2 → 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: 87aa66bc159b634a8f2488be80d1e5ef7a394bd0290f4d1ea32c28e7d6a495ab
4
- data.tar.gz: 2499601a659f1ef507e8df40d90a2d674e402d0844765bb2a638882ccf4f1d29
3
+ metadata.gz: 7a43d4059d694f254fb05f0cb43f12dc5f3b5fbeb5df8dc7aa7aa21fc8a3bad9
4
+ data.tar.gz: 8967aad36784c29bd334837b2bf9d4683258e7afafd61d509821dd31a860688c
5
5
  SHA512:
6
- metadata.gz: 4dac5d328b339bd78a72a98ea369d30e608b324ba3b82319e6141b6d7439c1506f3c97c2ea3f6588f3155e21a8db02d8bbf19073333b4b78b52a2cc1873fd39f
7
- data.tar.gz: ff575ae33601920379638cc879d893c1c6c3f07cd220b1ad054a56f2580078951ad00bcc36fffa5b03e6cb4689c1bc0cb1d3f6ca556cff5add02e502299b0dbc
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)
@@ -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
+ }
@@ -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.2'.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.2
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-23 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