effective_bootstrap 1.16.1 → 1.16.3

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: 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