active_element 0.0.22 → 0.0.24
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 +4 -4
- data/Gemfile.lock +2 -2
- data/app/assets/javascripts/active_element/form.js +6 -1
- data/app/views/active_element/components/form.html.erb +2 -1
- data/app/views/active_element/components/table/collection.html.erb +7 -0
- data/app/views/layouts/active_element.html.erb +1 -0
- data/example_app/Gemfile.lock +1 -1
- data/lib/active_element/components/collection_table.rb +4 -2
- data/lib/active_element/components/form.rb +2 -2
- data/lib/active_element/components/util/form_field_mapping.rb +4 -3
- data/lib/active_element/components/util/i18n.rb +17 -17
- data/lib/active_element/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d4f5dd5354dc376a1a2179ab3f2d95d64ad1bcdbb12811c3f42419311ae9667a
|
4
|
+
data.tar.gz: 9e27dcd69d2117ff43a10c4319cdfb8567f49b3a746a8d66960b9071b1481b94
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d7c47f04a28e066443c39c559c99be9d5ef90da0d130096ab1e1dd6a100ca5eb10c39d72af509ad6f6843526bdfb2613801578738d4f30d5ee267dbe61f2c2b8
|
7
|
+
data.tar.gz: ec1c2359b328cdc16de9123282106b851a5e9deac0f11764e6d7fd0356c6fbb898e5be653f5432c89f2bc620c10560b8ba7c670b526b3ab073d9a5cd1394fd68
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
active_element (0.0.
|
4
|
+
active_element (0.0.24)
|
5
5
|
bootstrap (~> 5.3.0alpha3)
|
6
6
|
kaminari (~> 1.2)
|
7
7
|
paintbrush (~> 0.1.2)
|
@@ -150,7 +150,7 @@ GEM
|
|
150
150
|
mini_mime (1.1.5)
|
151
151
|
mini_portile2 (2.8.2)
|
152
152
|
minitest (5.18.1)
|
153
|
-
net-imap (0.4.
|
153
|
+
net-imap (0.4.12)
|
154
154
|
date
|
155
155
|
net-protocol
|
156
156
|
net-pop (0.1.2)
|
@@ -1,6 +1,8 @@
|
|
1
1
|
(() => {
|
2
2
|
const cloneElement = (id) => ActiveElement.cloneElement('form', id);
|
3
3
|
|
4
|
+
if (window._active_element_form_loaded) return;
|
5
|
+
|
4
6
|
const initModalButtons = () => {
|
5
7
|
document.querySelectorAll('[data-field-type="form-modal"]').forEach((element) => {
|
6
8
|
const formId = element.dataset.formId;
|
@@ -17,9 +19,10 @@
|
|
17
19
|
|
18
20
|
document.body.append(modal);
|
19
21
|
|
20
|
-
element.addEventListener('click', () => {
|
22
|
+
element.addEventListener('click', (ev) => {
|
21
23
|
wrapper.classList.remove('d-none');
|
22
24
|
bootstrapModal.toggle();
|
25
|
+
ev.stopPropagation();
|
23
26
|
return false;
|
24
27
|
});
|
25
28
|
});
|
@@ -43,4 +46,6 @@
|
|
43
46
|
initModalButtons();
|
44
47
|
initClearFormButtons();
|
45
48
|
});
|
49
|
+
|
50
|
+
window._active_element_secrets_loaded = true;
|
46
51
|
})();
|
@@ -51,3 +51,10 @@
|
|
51
51
|
row_class_mapper: row_class_mapper } %>
|
52
52
|
<% end %>
|
53
53
|
<% end %>
|
54
|
+
|
55
|
+
<% if footer_pagination %>
|
56
|
+
<%=
|
57
|
+
render partial: 'active_element/components/table/pagination',
|
58
|
+
locals: { collection: collection, params: params, page_size: page_size, page_sizes: page_sizes }
|
59
|
+
%>
|
60
|
+
<% end %>
|
@@ -122,6 +122,7 @@
|
|
122
122
|
<%= render_active_element_hook 'active_element/after_content' %>
|
123
123
|
|
124
124
|
<% if !respond_to?(:javascript_importmap_tags) && Rails.application.assets&.find_asset('application.js').present? %>
|
125
|
+
<%= javascript_include_tag 'active_element/active_element', 'data-turbo-track': 'reload', 'data-turbolinks-track': 'reload' %>
|
125
126
|
<%= javascript_include_tag 'application', 'data-turbo-track': 'reload', 'data-turbolinks-track': 'reload' %>
|
126
127
|
<% end %>
|
127
128
|
</body>
|
data/example_app/Gemfile.lock
CHANGED
@@ -15,7 +15,7 @@ module ActiveElement
|
|
15
15
|
# rubocop:disable Metrics/MethodLength
|
16
16
|
def initialize(controller, class_name:, collection:, fields:, params:, model_name: nil, style: nil,
|
17
17
|
show: false, new: false, edit: false, destroy: false, paginate: true, group: nil,
|
18
|
-
group_title: false, nested_for: nil, row_class: nil, title: nil, **_kwargs)
|
18
|
+
group_title: false, nested_for: nil, row_class: nil, title: nil, footer_pagination: nil, **_kwargs)
|
19
19
|
@controller = controller
|
20
20
|
@class_name = class_name
|
21
21
|
@model_name = model_name
|
@@ -34,6 +34,7 @@ module ActiveElement
|
|
34
34
|
@title = title
|
35
35
|
@nested_for = nested_for
|
36
36
|
verify_paginate_and_group
|
37
|
+
@footer_pagination = footer_pagination
|
37
38
|
end
|
38
39
|
# rubocop:enable Metrics/MethodLength
|
39
40
|
|
@@ -60,7 +61,8 @@ module ActiveElement
|
|
60
61
|
page_sizes: [5, 10, 25, 50, 75, 100, 200],
|
61
62
|
page_size: page_size,
|
62
63
|
i18n: i18n,
|
63
|
-
row_class_mapper: row_class_mapper
|
64
|
+
row_class_mapper: row_class_mapper,
|
65
|
+
footer_pagination: @footer_pagination && display_pagination?
|
64
66
|
}
|
65
67
|
end
|
66
68
|
|
@@ -7,7 +7,7 @@ module ActiveElement
|
|
7
7
|
class Form # rubocop:disable Metrics/ClassLength
|
8
8
|
include Translations
|
9
9
|
|
10
|
-
attr_reader :controller
|
10
|
+
attr_reader :controller, :search
|
11
11
|
|
12
12
|
# rubocop:disable Metrics/MethodLength
|
13
13
|
def initialize(controller, fields:, submit:, item:, title: nil, destroy: false, search: false,
|
@@ -142,7 +142,7 @@ module ActiveElement
|
|
142
142
|
private
|
143
143
|
|
144
144
|
attr_reader :fields, :submit, :title, :kwargs, :item, :method, :action,
|
145
|
-
:destroy, :modal, :columns
|
145
|
+
:destroy, :modal, :columns
|
146
146
|
|
147
147
|
def form_field_mapping
|
148
148
|
@form_field_mapping ||= Util::FormFieldMapping.new(
|
@@ -231,9 +231,9 @@ module ActiveElement
|
|
231
231
|
|
232
232
|
def options_with_inferred_translations(field, options)
|
233
233
|
options.reverse_merge({
|
234
|
-
label: i18n.label(field),
|
235
|
-
description: i18n.description(field),
|
236
|
-
placeholder: i18n.placeholder(field)
|
234
|
+
label: i18n.label(field, record: record),
|
235
|
+
description: i18n.description(field, record: record),
|
236
|
+
placeholder: i18n.placeholder(field, record: record)
|
237
237
|
})
|
238
238
|
end
|
239
239
|
|
@@ -267,6 +267,7 @@ module ActiveElement
|
|
267
267
|
end
|
268
268
|
|
269
269
|
def required?(field)
|
270
|
+
return false if search
|
270
271
|
return false if record.blank?
|
271
272
|
return false unless record.class.respond_to?(:validators)
|
272
273
|
|
@@ -15,31 +15,31 @@ module ActiveElement
|
|
15
15
|
@component = component
|
16
16
|
end
|
17
17
|
|
18
|
-
def label(field)
|
19
|
-
return titleize(field) unless model?
|
18
|
+
def label(field, record: nil)
|
19
|
+
return titleize(field) unless model?(record)
|
20
20
|
|
21
|
-
key = "admin.models.#{model_key}.fields.#{field}.label"
|
21
|
+
key = "admin.models.#{model_key(record)}.fields.#{field}.label"
|
22
22
|
::I18n.t(key, default: titleize(field))
|
23
23
|
end
|
24
24
|
|
25
|
-
def description(field)
|
26
|
-
return nil unless model?
|
25
|
+
def description(field, record: nil)
|
26
|
+
return nil unless model?(record)
|
27
27
|
|
28
|
-
key = "admin.models.#{model_key}.fields.#{field}.description"
|
28
|
+
key = "admin.models.#{model_key(record)}.fields.#{field}.description"
|
29
29
|
::I18n.t(key, default: nil)
|
30
30
|
end
|
31
31
|
|
32
|
-
def placeholder(field)
|
33
|
-
return nil unless model?
|
32
|
+
def placeholder(field, record: nil)
|
33
|
+
return nil unless model?(record)
|
34
34
|
|
35
|
-
key = "admin.models.#{model_key}.fields.#{field}.placeholder"
|
35
|
+
key = "admin.models.#{model_key(record)}.fields.#{field}.placeholder"
|
36
36
|
::I18n.t(key, default: nil)
|
37
37
|
end
|
38
38
|
|
39
|
-
def format(field)
|
40
|
-
return nil unless model?
|
39
|
+
def format(field, record: nil)
|
40
|
+
return nil unless model?(record)
|
41
41
|
|
42
|
-
key = "admin.models.#{model_key}.fields.#{field}.format"
|
42
|
+
key = "admin.models.#{model_key(record)}.fields.#{field}.format"
|
43
43
|
::I18n.t(key, default: nil)
|
44
44
|
end
|
45
45
|
|
@@ -47,14 +47,14 @@ module ActiveElement
|
|
47
47
|
|
48
48
|
attr_reader :component
|
49
49
|
|
50
|
-
def model_key
|
51
|
-
@model_key ||= component.model.name.underscore.pluralize
|
50
|
+
def model_key(record = nil)
|
51
|
+
@model_key ||= (record&.class || component.model).name.underscore.pluralize
|
52
52
|
end
|
53
53
|
|
54
|
-
def model?
|
55
|
-
return false if component.model.nil?
|
54
|
+
def model?(record = nil)
|
55
|
+
return false if record.nil? && component.model.nil?
|
56
56
|
|
57
|
-
component.model.is_a?(ActiveModel::Naming)
|
57
|
+
(record&.class || component.model).is_a?(ActiveModel::Naming)
|
58
58
|
end
|
59
59
|
|
60
60
|
def titleize(field)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_element
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.24
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bob Farrell
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-06-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bootstrap
|