super 0.17.0 → 0.20.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -4
- data/app/assets/javascripts/super/application.js +1260 -117
- data/app/assets/stylesheets/super/application.css +90711 -90034
- data/app/controllers/super/application_controller.rb +34 -4
- data/app/controllers/super/substructure_controller.rb +125 -29
- data/app/helpers/super/form_builder_helper.rb +4 -4
- data/app/views/layouts/super/application.html.erb +1 -1
- data/app/views/super/application/_batch_button.html.erb +12 -0
- data/app/views/super/application/_batch_checkbox.csv.erb +1 -0
- data/app/views/super/application/_batch_checkbox.html.erb +9 -0
- data/app/views/super/application/_batch_form.html.erb +3 -0
- data/app/views/super/application/_collection_header.html.erb +7 -6
- data/app/views/super/application/_csv_button.html.erb +25 -0
- data/app/views/super/application/_display_actions.html.erb +2 -2
- data/app/views/super/application/_form.html.erb +1 -1
- data/app/views/super/application/_layout.html.erb +13 -14
- data/app/views/super/application/_link.html.erb +8 -0
- data/app/views/super/application/_member_header.html.erb +7 -7
- data/app/views/super/application/_pagination.html.erb +2 -4
- data/app/views/super/application/_site_footer.html.erb +1 -1
- data/app/views/super/application/_site_header.html.erb +4 -4
- data/app/views/super/application/_view_chain.html.erb +5 -0
- data/app/views/super/application/index.csv.erb +14 -0
- data/config/locales/en.yml +15 -1
- data/frontend/super-frontend/dist/application.css +90711 -90034
- data/frontend/super-frontend/dist/application.js +6512 -5379
- data/frontend/super-frontend/dist/package.json +13 -0
- data/lib/generators/super/webpacker/USAGE +1 -7
- data/lib/generators/super/webpacker/templates/pack_super_application.js.tt +2 -0
- data/lib/generators/super/webpacker/webpacker_generator.rb +10 -6
- data/lib/super/action_inquirer.rb +3 -0
- data/lib/super/cheat.rb +1 -0
- data/lib/super/display/schema_types.rb +6 -0
- data/lib/super/display.rb +2 -1
- data/lib/super/engine.rb +5 -0
- data/lib/super/error.rb +11 -0
- data/lib/super/form/schema_types.rb +8 -36
- data/lib/super/form_builder/action_text_methods.rb +16 -0
- data/lib/super/form_builder/base_methods.rb +73 -0
- data/lib/super/form_builder/flatpickr_methods.rb +75 -0
- data/lib/super/form_builder/option_methods.rb +73 -0
- data/lib/super/form_builder.rb +143 -0
- data/lib/super/layout.rb +9 -33
- data/lib/super/link.rb +49 -70
- data/lib/super/link_builder.rb +24 -47
- data/lib/super/packaged_asset.rb +49 -0
- data/lib/super/pagination.rb +2 -1
- data/lib/super/reorderable_hash.rb +88 -0
- data/lib/super/reset.rb +20 -1
- data/lib/super/useful/i19.rb +35 -0
- data/lib/super/version.rb +1 -1
- data/lib/super/view_chain.rb +25 -0
- data/lib/super.rb +9 -1
- metadata +55 -10
- data/lib/generators/super/webpacker/templates/pack_super_application.js.erb.tt +0 -2
- data/lib/super/form/builder.rb +0 -289
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: super
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.20.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Zach Ahn
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -115,7 +115,7 @@ dependencies:
|
|
115
115
|
- !ruby/object:Gem::Version
|
116
116
|
version: '0'
|
117
117
|
- !ruby/object:Gem::Dependency
|
118
|
-
name: pry
|
118
|
+
name: pry-rails
|
119
119
|
requirement: !ruby/object:Gem::Requirement
|
120
120
|
requirements:
|
121
121
|
- - ">="
|
@@ -212,6 +212,34 @@ dependencies:
|
|
212
212
|
- - ">="
|
213
213
|
- !ruby/object:Gem::Version
|
214
214
|
version: '0'
|
215
|
+
- !ruby/object:Gem::Dependency
|
216
|
+
name: rails_anonymous_controller_testing
|
217
|
+
requirement: !ruby/object:Gem::Requirement
|
218
|
+
requirements:
|
219
|
+
- - ">="
|
220
|
+
- !ruby/object:Gem::Version
|
221
|
+
version: '0'
|
222
|
+
type: :development
|
223
|
+
prerelease: false
|
224
|
+
version_requirements: !ruby/object:Gem::Requirement
|
225
|
+
requirements:
|
226
|
+
- - ">="
|
227
|
+
- !ruby/object:Gem::Version
|
228
|
+
version: '0'
|
229
|
+
- !ruby/object:Gem::Dependency
|
230
|
+
name: minitest-bisect
|
231
|
+
requirement: !ruby/object:Gem::Requirement
|
232
|
+
requirements:
|
233
|
+
- - ">="
|
234
|
+
- !ruby/object:Gem::Version
|
235
|
+
version: '0'
|
236
|
+
type: :development
|
237
|
+
prerelease: false
|
238
|
+
version_requirements: !ruby/object:Gem::Requirement
|
239
|
+
requirements:
|
240
|
+
- - ">="
|
241
|
+
- !ruby/object:Gem::Version
|
242
|
+
version: '0'
|
215
243
|
description:
|
216
244
|
email:
|
217
245
|
- engineering@zachahn.com
|
@@ -229,7 +257,12 @@ files:
|
|
229
257
|
- app/controllers/super/substructure_controller.rb
|
230
258
|
- app/helpers/super/form_builder_helper.rb
|
231
259
|
- app/views/layouts/super/application.html.erb
|
260
|
+
- app/views/super/application/_batch_button.html.erb
|
261
|
+
- app/views/super/application/_batch_checkbox.csv.erb
|
262
|
+
- app/views/super/application/_batch_checkbox.html.erb
|
263
|
+
- app/views/super/application/_batch_form.html.erb
|
232
264
|
- app/views/super/application/_collection_header.html.erb
|
265
|
+
- app/views/super/application/_csv_button.html.erb
|
233
266
|
- app/views/super/application/_display_actions.html.erb
|
234
267
|
- app/views/super/application/_display_index.html.erb
|
235
268
|
- app/views/super/application/_display_rich_text.html.erb
|
@@ -243,6 +276,7 @@ files:
|
|
243
276
|
- app/views/super/application/_form_has_many.html.erb
|
244
277
|
- app/views/super/application/_form_has_one.html.erb
|
245
278
|
- app/views/super/application/_layout.html.erb
|
279
|
+
- app/views/super/application/_link.html.erb
|
246
280
|
- app/views/super/application/_member_header.html.erb
|
247
281
|
- app/views/super/application/_pagination.html.erb
|
248
282
|
- app/views/super/application/_panel.html.erb
|
@@ -251,7 +285,9 @@ files:
|
|
251
285
|
- app/views/super/application/_site_header.html.erb
|
252
286
|
- app/views/super/application/_sort.html.erb
|
253
287
|
- app/views/super/application/_sort_expression.html.erb
|
288
|
+
- app/views/super/application/_view_chain.html.erb
|
254
289
|
- app/views/super/application/edit.html.erb
|
290
|
+
- app/views/super/application/index.csv.erb
|
255
291
|
- app/views/super/application/index.html.erb
|
256
292
|
- app/views/super/application/new.html.erb
|
257
293
|
- app/views/super/application/nothing.html.erb
|
@@ -262,6 +298,7 @@ files:
|
|
262
298
|
- config/routes.rb
|
263
299
|
- frontend/super-frontend/dist/application.css
|
264
300
|
- frontend/super-frontend/dist/application.js
|
301
|
+
- frontend/super-frontend/dist/package.json
|
265
302
|
- lib/generators/super/action_text/USAGE
|
266
303
|
- lib/generators/super/action_text/action_text_generator.rb
|
267
304
|
- lib/generators/super/action_text/templates/pack_super_action_text.css
|
@@ -274,7 +311,7 @@ files:
|
|
274
311
|
- lib/generators/super/resource/resource_generator.rb
|
275
312
|
- lib/generators/super/resource/templates/resources_controller.rb.tt
|
276
313
|
- lib/generators/super/webpacker/USAGE
|
277
|
-
- lib/generators/super/webpacker/templates/pack_super_application.js.
|
314
|
+
- lib/generators/super/webpacker/templates/pack_super_application.js.tt
|
278
315
|
- lib/generators/super/webpacker/webpacker_generator.rb
|
279
316
|
- lib/super.rb
|
280
317
|
- lib/super/action_inquirer.rb
|
@@ -295,22 +332,28 @@ files:
|
|
295
332
|
- lib/super/filter/operator.rb
|
296
333
|
- lib/super/filter/schema_types.rb
|
297
334
|
- lib/super/form.rb
|
298
|
-
- lib/super/form/builder.rb
|
299
335
|
- lib/super/form/field_transcript.rb
|
300
336
|
- lib/super/form/guesser.rb
|
301
337
|
- lib/super/form/inline_errors.rb
|
302
338
|
- lib/super/form/schema_types.rb
|
303
339
|
- lib/super/form/strong_params.rb
|
340
|
+
- lib/super/form_builder.rb
|
341
|
+
- lib/super/form_builder/action_text_methods.rb
|
342
|
+
- lib/super/form_builder/base_methods.rb
|
343
|
+
- lib/super/form_builder/flatpickr_methods.rb
|
344
|
+
- lib/super/form_builder/option_methods.rb
|
304
345
|
- lib/super/layout.rb
|
305
346
|
- lib/super/link.rb
|
306
347
|
- lib/super/link_builder.rb
|
307
348
|
- lib/super/navigation.rb
|
349
|
+
- lib/super/packaged_asset.rb
|
308
350
|
- lib/super/pagination.rb
|
309
351
|
- lib/super/panel.rb
|
310
352
|
- lib/super/partial.rb
|
311
353
|
- lib/super/partial/resolving.rb
|
312
354
|
- lib/super/plugin.rb
|
313
355
|
- lib/super/query/form_object.rb
|
356
|
+
- lib/super/reorderable_hash.rb
|
314
357
|
- lib/super/reset.rb
|
315
358
|
- lib/super/schema.rb
|
316
359
|
- lib/super/schema/common.rb
|
@@ -318,18 +361,20 @@ files:
|
|
318
361
|
- lib/super/sort.rb
|
319
362
|
- lib/super/useful/builder.rb
|
320
363
|
- lib/super/useful/enum.rb
|
364
|
+
- lib/super/useful/i19.rb
|
321
365
|
- lib/super/version.rb
|
366
|
+
- lib/super/view_chain.rb
|
322
367
|
- lib/super/view_helper.rb
|
323
368
|
- lib/tasks/super/cheat.rake
|
324
369
|
homepage:
|
325
370
|
licenses:
|
326
371
|
- LGPL-3.0-only
|
327
372
|
metadata:
|
328
|
-
bug_tracker_uri: https://github.com/
|
329
|
-
changelog_uri: https://github.com/
|
373
|
+
bug_tracker_uri: https://github.com/superadministration/super/issues
|
374
|
+
changelog_uri: https://github.com/superadministration/super/blob/main/CHANGELOG.md
|
330
375
|
documentation_uri: https://superadministration.github.io/
|
331
|
-
homepage_uri: https://github.com/
|
332
|
-
source_code_uri: https://github.com/
|
376
|
+
homepage_uri: https://github.com/superadministration/super
|
377
|
+
source_code_uri: https://github.com/superadministration/super
|
333
378
|
post_install_message:
|
334
379
|
rdoc_options: []
|
335
380
|
require_paths:
|
@@ -345,7 +390,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
345
390
|
- !ruby/object:Gem::Version
|
346
391
|
version: '0'
|
347
392
|
requirements: []
|
348
|
-
rubygems_version: 3.
|
393
|
+
rubygems_version: 3.3.4
|
349
394
|
signing_key:
|
350
395
|
specification_version: 4
|
351
396
|
summary: A simple, powerful, zero dependency Rails admin framework
|
data/lib/super/form/builder.rb
DELETED
@@ -1,289 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Super
|
4
|
-
class Form
|
5
|
-
# Example
|
6
|
-
#
|
7
|
-
# ```ruby
|
8
|
-
# super_form_for([:admin, @member]) do |f|
|
9
|
-
# # the long way
|
10
|
-
# f.super.label :name
|
11
|
-
# f.super.text_field :name
|
12
|
-
# f.super.inline_errors :name
|
13
|
-
#
|
14
|
-
# # the short way (slightly different from the long way, for alignment)
|
15
|
-
# f.super.text_field! :position
|
16
|
-
# end
|
17
|
-
# ```
|
18
|
-
#
|
19
|
-
# Refer to the Rails docs:
|
20
|
-
# https://api.rubyonrails.org/classes/ActionView/Helpers/FormBuilder.html
|
21
|
-
class Builder < ActionView::Helpers::FormBuilder
|
22
|
-
FIELD_ERROR_PROC = proc { |html_tag, instance| html_tag }
|
23
|
-
FORM_BUILDER_DEFAULTS = { builder: self }.freeze
|
24
|
-
|
25
|
-
def super(**options)
|
26
|
-
@super_wrappers ||= Wrappers.new(self, @template)
|
27
|
-
end
|
28
|
-
|
29
|
-
class Wrappers
|
30
|
-
def initialize(builder, template)
|
31
|
-
@builder = builder
|
32
|
-
@template = template
|
33
|
-
end
|
34
|
-
|
35
|
-
def inline_errors(attribute)
|
36
|
-
if @builder.object
|
37
|
-
messages = InlineErrors.error_messages(@builder.object, attribute).map do |msg|
|
38
|
-
error_content_tag(msg)
|
39
|
-
end
|
40
|
-
|
41
|
-
@template.safe_join(messages)
|
42
|
-
else
|
43
|
-
error_content_tag(<<~MSG.html_safe)
|
44
|
-
This form doesn't have an object, so something is probably wrong.
|
45
|
-
Maybe <code>accepts_nested_attributes_for</code> isn't set up?
|
46
|
-
MSG
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
def label(attribute, text = nil, options = {}, &block)
|
51
|
-
options, defaults = split_defaults(options, class: "block")
|
52
|
-
options[:class] = join_classes(defaults[:class], options[:class])
|
53
|
-
|
54
|
-
@builder.label(attribute, text, options, &block)
|
55
|
-
end
|
56
|
-
|
57
|
-
def check_box(attribute, options = {}, checked_value = "1", unchecked_value = "0")
|
58
|
-
@builder.check_box(attribute, options, checked_value, unchecked_value)
|
59
|
-
end
|
60
|
-
|
61
|
-
def date_flatpickr(attribute, options = {})
|
62
|
-
options, defaults = split_defaults(
|
63
|
-
options,
|
64
|
-
class: "super-input w-full",
|
65
|
-
data: {
|
66
|
-
controller: "flatpickr",
|
67
|
-
flatpickr_options_value: {
|
68
|
-
dateFormat: "Y-m-d",
|
69
|
-
}
|
70
|
-
}
|
71
|
-
)
|
72
|
-
options[:class] = join_classes(defaults[:class], options[:class])
|
73
|
-
options[:data] = defaults[:data].deep_merge(options[:data] || {})
|
74
|
-
options[:value] = @builder.object.public_send(attribute).presence
|
75
|
-
options[:value] = options[:value].iso8601 if options[:value].respond_to?(:iso8601)
|
76
|
-
|
77
|
-
@builder.text_field(attribute, options)
|
78
|
-
end
|
79
|
-
|
80
|
-
def datetime_flatpickr(attribute, options = {})
|
81
|
-
options, defaults = split_defaults(
|
82
|
-
options,
|
83
|
-
class: "super-input w-full",
|
84
|
-
data: {
|
85
|
-
controller: "flatpickr",
|
86
|
-
flatpickr_options_value: {
|
87
|
-
enableSeconds: true,
|
88
|
-
enableTime: true,
|
89
|
-
dateFormat: "Z",
|
90
|
-
}
|
91
|
-
}
|
92
|
-
)
|
93
|
-
options[:class] = join_classes(defaults[:class], options[:class])
|
94
|
-
options[:data] = defaults[:data].deep_merge(options[:data] || {})
|
95
|
-
options[:value] = @builder.object.public_send(attribute).presence
|
96
|
-
options[:value] = options[:value].iso8601 if options[:value].respond_to?(:iso8601)
|
97
|
-
|
98
|
-
@builder.text_field(attribute, options)
|
99
|
-
end
|
100
|
-
|
101
|
-
def time_flatpickr(attribute, options = {})
|
102
|
-
options, defaults = split_defaults(
|
103
|
-
options,
|
104
|
-
class: "super-input w-full",
|
105
|
-
data: {
|
106
|
-
controller: "flatpickr",
|
107
|
-
flatpickr_options_value: {
|
108
|
-
enableSeconds: true,
|
109
|
-
enableTime: true,
|
110
|
-
noCalendar: true,
|
111
|
-
dateFormat: "H:i:S",
|
112
|
-
}
|
113
|
-
}
|
114
|
-
)
|
115
|
-
options[:class] = join_classes(defaults[:class], options[:class])
|
116
|
-
options[:data] = defaults[:data].deep_merge(options[:data] || {})
|
117
|
-
options[:value] = @builder.object.public_send(attribute).presence
|
118
|
-
options[:value] = options[:value].strftime("%H:%M:%S") if options[:value].respond_to?(:strftime)
|
119
|
-
|
120
|
-
@builder.text_field(attribute, options)
|
121
|
-
end
|
122
|
-
|
123
|
-
def password_field(attribute, options = {})
|
124
|
-
options, defaults = split_defaults(options, class: "super-input w-full")
|
125
|
-
options[:class] = join_classes(defaults[:class], options[:class])
|
126
|
-
|
127
|
-
@builder.password_field(attribute, options)
|
128
|
-
end
|
129
|
-
|
130
|
-
def rich_text_area(attribute, options = {})
|
131
|
-
options, defaults = split_defaults(options, class: "trix-content super-input w-full")
|
132
|
-
options[:class] = join_classes(defaults[:class], options[:class])
|
133
|
-
|
134
|
-
@builder.rich_text_area(attribute, options)
|
135
|
-
end
|
136
|
-
|
137
|
-
def select(attribute, choices, options = {}, html_options = {}, &block)
|
138
|
-
options, defaults = split_defaults(options, include_blank: true)
|
139
|
-
options = defaults.merge(options)
|
140
|
-
html_options, html_defaults = split_defaults(html_options, class: "super-input super-input-select")
|
141
|
-
html_options[:class] = join_classes(html_defaults[:class], html_options[:class])
|
142
|
-
|
143
|
-
@builder.select(attribute, choices, options, html_options, &block)
|
144
|
-
end
|
145
|
-
|
146
|
-
def submit(value = nil, options = {})
|
147
|
-
value, options = nil, value if value.is_a?(Hash)
|
148
|
-
options, defaults = split_defaults(options, class: "super-button")
|
149
|
-
options[:class] = join_classes(defaults[:class], options[:class])
|
150
|
-
|
151
|
-
@builder.submit(value, options)
|
152
|
-
end
|
153
|
-
|
154
|
-
def text_field(attribute, options = {})
|
155
|
-
options, defaults = split_defaults(options, class: "super-input w-full")
|
156
|
-
options[:class] = join_classes(defaults[:class], options[:class])
|
157
|
-
|
158
|
-
@builder.text_field(attribute, options)
|
159
|
-
end
|
160
|
-
|
161
|
-
def container(&block)
|
162
|
-
@template.content_tag(:div, class: "super-field-group", &block)
|
163
|
-
end
|
164
|
-
|
165
|
-
def check_box!(attribute, checked_value: "1", unchecked_value: "0", label_text: nil, label: {}, field: {}, show_errors: true)
|
166
|
-
label[:super] ||= {}
|
167
|
-
label[:super] = { class: "select-none ml-1" }.merge(label[:super])
|
168
|
-
container do
|
169
|
-
compact_join([
|
170
|
-
"<div>".html_safe,
|
171
|
-
public_send(:check_box, attribute, field, checked_value, unchecked_value),
|
172
|
-
public_send(:label, attribute, label_text, label),
|
173
|
-
"</div>".html_safe,
|
174
|
-
show_errors && inline_errors(attribute),
|
175
|
-
])
|
176
|
-
end
|
177
|
-
end
|
178
|
-
|
179
|
-
def date_flatpickr!(attribute, label_text: nil, label: {}, field: {}, show_errors: true)
|
180
|
-
container do
|
181
|
-
compact_join([
|
182
|
-
public_send(:label, attribute, label_text, label),
|
183
|
-
%(<div class="mt-1">).html_safe,
|
184
|
-
public_send(:date_flatpickr, attribute, field),
|
185
|
-
show_errors && inline_errors(attribute),
|
186
|
-
%(</div>).html_safe,
|
187
|
-
])
|
188
|
-
end
|
189
|
-
end
|
190
|
-
|
191
|
-
def datetime_flatpickr!(attribute, label_text: nil, label: {}, field: {}, show_errors: true)
|
192
|
-
container do
|
193
|
-
compact_join([
|
194
|
-
public_send(:label, attribute, label_text, label),
|
195
|
-
%(<div class="mt-1">).html_safe,
|
196
|
-
public_send(:datetime_flatpickr, attribute, field),
|
197
|
-
show_errors && inline_errors(attribute),
|
198
|
-
%(</div>).html_safe,
|
199
|
-
])
|
200
|
-
end
|
201
|
-
end
|
202
|
-
|
203
|
-
def time_flatpickr!(attribute, label_text: nil, label: {}, field: {}, show_errors: true)
|
204
|
-
container do
|
205
|
-
compact_join([
|
206
|
-
public_send(:label, attribute, label_text, label),
|
207
|
-
%(<div class="mt-1">).html_safe,
|
208
|
-
public_send(:time_flatpickr, attribute, field),
|
209
|
-
show_errors && inline_errors(attribute),
|
210
|
-
%(</div>).html_safe,
|
211
|
-
])
|
212
|
-
end
|
213
|
-
end
|
214
|
-
|
215
|
-
def password_field!(attribute, label_text: nil, label: {}, field: {}, show_errors: true)
|
216
|
-
container do
|
217
|
-
compact_join([
|
218
|
-
public_send(:label, attribute, label_text, label),
|
219
|
-
%(<div class="mt-1">).html_safe,
|
220
|
-
public_send(:password_field, attribute, field),
|
221
|
-
show_errors && inline_errors(attribute),
|
222
|
-
%(</div>).html_safe,
|
223
|
-
])
|
224
|
-
end
|
225
|
-
end
|
226
|
-
|
227
|
-
def rich_text_area!(attribute, label_text: nil, label: {}, field: {}, show_errors: true)
|
228
|
-
container do
|
229
|
-
compact_join([
|
230
|
-
public_send(:label, attribute, label_text, label),
|
231
|
-
%(<div class="mt-1">).html_safe,
|
232
|
-
public_send(:rich_text_area, attribute, field),
|
233
|
-
show_errors && inline_errors(attribute),
|
234
|
-
%(</div>).html_safe,
|
235
|
-
])
|
236
|
-
end
|
237
|
-
end
|
238
|
-
|
239
|
-
def select!(attribute, collection, label_text: nil, label: {}, field: {}, show_errors: true)
|
240
|
-
container do
|
241
|
-
compact_join([
|
242
|
-
public_send(:label, attribute, label_text, label),
|
243
|
-
%(<div class="mt-1">).html_safe,
|
244
|
-
public_send(:select, attribute, collection, field),
|
245
|
-
show_errors && inline_errors(attribute),
|
246
|
-
%(</div>).html_safe,
|
247
|
-
])
|
248
|
-
end
|
249
|
-
end
|
250
|
-
|
251
|
-
def text_field!(attribute, label_text: nil, label: {}, field: {}, show_errors: true)
|
252
|
-
container do
|
253
|
-
compact_join([
|
254
|
-
public_send(:label, attribute, label_text, label),
|
255
|
-
%(<div class="mt-1">).html_safe,
|
256
|
-
public_send(:text_field, attribute, field),
|
257
|
-
show_errors && inline_errors(attribute),
|
258
|
-
%(</div>).html_safe,
|
259
|
-
])
|
260
|
-
end
|
261
|
-
end
|
262
|
-
|
263
|
-
private
|
264
|
-
|
265
|
-
def split_defaults(options, **internal_defaults)
|
266
|
-
defaults = options.delete(:super) || {}
|
267
|
-
# prefer options set in `defaults`, since they are user overrides
|
268
|
-
defaults = internal_defaults.merge(defaults)
|
269
|
-
|
270
|
-
[options, defaults]
|
271
|
-
end
|
272
|
-
|
273
|
-
def join_classes(*class_lists)
|
274
|
-
class_lists.flatten.map(&:presence).compact
|
275
|
-
end
|
276
|
-
|
277
|
-
def error_content_tag(content)
|
278
|
-
@template.content_tag(:p, content, class: "text-red-400 text-xs italic pt-1")
|
279
|
-
end
|
280
|
-
|
281
|
-
def compact_join(*parts)
|
282
|
-
@template.safe_join(
|
283
|
-
parts.flatten.map(&:presence).compact
|
284
|
-
)
|
285
|
-
end
|
286
|
-
end
|
287
|
-
end
|
288
|
-
end
|
289
|
-
end
|