super 0.20.0 → 0.22.0
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/README.md +36 -48
- data/app/assets/javascripts/super/application.js +1201 -2092
- data/app/assets/stylesheets/super/application.css +54 -6569
- data/app/controllers/super/application_controller.rb +52 -47
- data/app/controllers/super/foundation_controller.rb +30 -0
- data/app/controllers/super/sitewide_controller.rb +36 -0
- data/app/controllers/super/substructure_controller.rb +40 -92
- data/app/controllers/super/view_controller.rb +59 -0
- data/app/views/layouts/super/application.html.erb +3 -3
- data/app/views/super/application/_batch_checkbox.csv.erb +1 -1
- data/app/views/super/application/_batch_checkbox.html.erb +1 -1
- data/app/views/super/application/_collection_header.html.erb +1 -1
- data/app/views/super/application/_csv_button.html.erb +1 -1
- data/app/views/super/application/_display_actions.html.erb +1 -1
- data/app/views/super/application/_display_index.html.erb +8 -2
- data/app/views/super/application/_display_rich_text.html.erb +1 -1
- data/app/views/super/application/_display_show.html.erb +10 -2
- data/app/views/super/application/_filter.html.erb +63 -59
- data/app/views/super/application/_form.html.erb +1 -1
- data/app/views/super/application/_form_fieldset.html.erb +1 -1
- data/app/views/super/application/_form_has_many.html.erb +2 -2
- data/app/views/super/application/_form_has_one.html.erb +1 -1
- data/app/views/super/application/_layout.html.erb +6 -8
- data/app/views/super/application/_link.html.erb +1 -6
- data/app/views/super/application/_member_header.html.erb +1 -1
- data/app/views/super/application/_panel.html.erb +1 -1
- data/app/views/super/application/_query.html.erb +13 -12
- data/app/views/super/application/_site_header.html.erb +2 -2
- data/app/views/super/application/_sort.html.erb +18 -14
- data/app/views/super/application/_sort_expression.html.erb +1 -1
- data/app/views/super/application/_view_chain.html.erb +1 -5
- data/app/views/super/application/edit.html.erb +1 -1
- data/app/views/super/application/index.html.erb +1 -1
- data/app/views/super/application/new.html.erb +1 -1
- data/app/views/super/application/show.html.erb +1 -1
- data/config/locales/en.yml +3 -0
- data/frontend/super-frontend/dist/application.css +54 -6569
- data/frontend/super-frontend/dist/application.js +1201 -2092
- data/lib/super/action_inquirer.rb +28 -8
- data/lib/super/assets.rb +2 -2
- data/lib/super/badge.rb +8 -23
- data/lib/super/cheat.rb +11 -5
- data/lib/super/client_error.rb +4 -0
- data/lib/super/compatibility.rb +4 -0
- data/lib/super/configuration.rb +3 -0
- data/lib/super/display/schema_types.rb +50 -71
- data/lib/super/display.rb +16 -15
- data/lib/super/error.rb +16 -2
- data/lib/super/filter/form_object.rb +2 -2
- data/lib/super/filter/operator.rb +1 -1
- data/lib/super/filter/schema_types.rb +1 -1
- data/lib/super/form/field_transcript.rb +4 -0
- data/lib/super/form/schema_types.rb +2 -2
- data/lib/super/form/strong_params.rb +1 -1
- data/lib/super/form_builder/base_methods.rb +3 -9
- data/lib/super/form_builder/flatpickr_methods.rb +3 -3
- data/lib/super/form_builder.rb +19 -21
- data/{app/helpers → lib}/super/form_builder_helper.rb +13 -2
- data/lib/super/link.rb +15 -6
- data/lib/super/link_builder.rb +4 -4
- data/lib/super/navigation.rb +49 -45
- data/lib/super/partial.rb +0 -12
- data/lib/super/plugin.rb +2 -2
- data/lib/super/query.rb +61 -0
- data/lib/super/{engine.rb → railtie.rb} +8 -1
- data/lib/super/render_helper.rb +31 -0
- data/lib/super/reset.rb +7 -5
- data/lib/super/schema/guesser.rb +5 -5
- data/lib/super/schema.rb +10 -4
- data/lib/super/sort.rb +2 -4
- data/lib/super/useful/deprecations.rb +16 -0
- data/lib/super/useful/enum.rb +1 -1
- data/lib/super/useful/i19.rb +1 -1
- data/lib/super/version.rb +1 -1
- data/lib/super/view_chain.rb +33 -4
- data/lib/super.rb +9 -2
- metadata +11 -49
- data/config/routes.rb +0 -4
- data/lib/super/query/form_object.rb +0 -48
@@ -24,24 +24,44 @@ module Super
|
|
24
24
|
"delete" => %w[destroy],
|
25
25
|
|
26
26
|
"collection" => %w[index new create],
|
27
|
-
"member" => %w[show edit update destroy]
|
27
|
+
"member" => %w[show edit update destroy]
|
28
28
|
}
|
29
29
|
end
|
30
30
|
|
31
31
|
# @return [ActionInquirer]
|
32
|
-
def self.index
|
32
|
+
def self.index!
|
33
|
+
new(default_for_resources, "index")
|
34
|
+
end
|
35
|
+
|
33
36
|
# @return [ActionInquirer]
|
34
|
-
def self.show
|
37
|
+
def self.show!
|
38
|
+
new(default_for_resources, "show")
|
39
|
+
end
|
40
|
+
|
35
41
|
# @return [ActionInquirer]
|
36
|
-
def self.new
|
42
|
+
def self.new!
|
43
|
+
new(default_for_resources, "new")
|
44
|
+
end
|
45
|
+
|
37
46
|
# @return [ActionInquirer]
|
38
|
-
def self.edit
|
47
|
+
def self.edit!
|
48
|
+
new(default_for_resources, "edit")
|
49
|
+
end
|
50
|
+
|
39
51
|
# @return [ActionInquirer]
|
40
|
-
def self.create
|
52
|
+
def self.create!
|
53
|
+
new(default_for_resources, "create")
|
54
|
+
end
|
55
|
+
|
41
56
|
# @return [ActionInquirer]
|
42
|
-
def self.update
|
57
|
+
def self.update!
|
58
|
+
new(default_for_resources, "update")
|
59
|
+
end
|
60
|
+
|
43
61
|
# @return [ActionInquirer]
|
44
|
-
def self.destroy
|
62
|
+
def self.destroy!
|
63
|
+
new(default_for_resources, "destroy")
|
64
|
+
end
|
45
65
|
|
46
66
|
def initialize(categories_and_their_actions, action)
|
47
67
|
@categories = categories_and_their_actions.keys.map(&:to_s)
|
data/lib/super/assets.rb
CHANGED
@@ -16,7 +16,7 @@ module Super
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def self.use_webpacker(assets, grep: nil)
|
19
|
-
assets = [assets] if !assets.
|
19
|
+
assets = [assets] if !assets.is_a?(Array)
|
20
20
|
|
21
21
|
assets.map do |asset|
|
22
22
|
grep_matches = grep && asset === grep
|
@@ -29,7 +29,7 @@ module Super
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def self.use_sprockets(assets, grep: nil)
|
32
|
-
assets = [assets] if !assets.
|
32
|
+
assets = [assets] if !assets.is_a?(Array)
|
33
33
|
|
34
34
|
assets.map do |asset|
|
35
35
|
grep_matches = grep && asset === grep
|
data/lib/super/badge.rb
CHANGED
@@ -9,37 +9,22 @@ module Super
|
|
9
9
|
yellow: "bg-yellow-400 text-black",
|
10
10
|
green: "bg-green-700 text-white",
|
11
11
|
blue: "bg-blue-700 text-white",
|
12
|
-
purple: "bg-purple-800 text-white"
|
12
|
+
purple: "bg-purple-800 text-white"
|
13
13
|
}
|
14
14
|
|
15
|
-
def initialize(text,
|
15
|
+
def initialize(text, style:)
|
16
|
+
if !STYLES.key?(style)
|
17
|
+
raise Super::Error::Initialization, "`style:` must be one of #{STYLES.keys.inspect}"
|
18
|
+
end
|
19
|
+
|
16
20
|
@text = text
|
17
|
-
@
|
21
|
+
@style = style
|
18
22
|
end
|
19
23
|
|
20
24
|
def styles
|
21
25
|
return @styles if instance_variable_defined?(:@styles)
|
22
|
-
@styles =
|
23
|
-
if requested_styles.delete(:reset)
|
24
|
-
[]
|
25
|
-
else
|
26
|
-
COMMON_STYLES
|
27
|
-
end
|
28
|
-
|
29
|
-
if requested_styles.empty?
|
30
|
-
@styles += [STYLES[:light]]
|
31
|
-
else
|
32
|
-
requested_styles.each do |style|
|
33
|
-
@styles +=
|
34
|
-
if STYLES.key?(style)
|
35
|
-
[STYLES[style]]
|
36
|
-
else
|
37
|
-
[style]
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
26
|
|
42
|
-
@styles
|
27
|
+
@styles = COMMON_STYLES + [STYLES.fetch(@style)]
|
43
28
|
end
|
44
29
|
|
45
30
|
def to_s
|
data/lib/super/cheat.rb
CHANGED
@@ -3,13 +3,19 @@
|
|
3
3
|
module Super
|
4
4
|
class Cheat
|
5
5
|
def controller
|
6
|
-
paths = %w[
|
6
|
+
paths = %w[
|
7
|
+
../../app/controllers/super/application_controller.rb
|
8
|
+
../../app/controllers/super/view_controller.rb
|
9
|
+
../../app/controllers/super/sitewide_controller.rb
|
10
|
+
../../app/controllers/super/substructure_controller.rb
|
11
|
+
../../app/controllers/super/foundation_controller.rb
|
12
|
+
]
|
7
13
|
methods =
|
8
14
|
paths
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
15
|
+
.map { |f| File.read(File.expand_path(f, __dir__)) }
|
16
|
+
.flat_map { |content| content.scan(/^\s+(?:helper_method )?def .*$/) }
|
17
|
+
.reject { |method| method =~ /\bdef self\./ }
|
18
|
+
.map { |method| method.strip.sub(/^(?:helper_method )?def /, "#") }
|
13
19
|
|
14
20
|
puts "== Super::ApplicationController"
|
15
21
|
puts methods.join("\n")
|
data/lib/super/client_error.rb
CHANGED
@@ -6,9 +6,13 @@ module Super
|
|
6
6
|
# See also `Super::Error`
|
7
7
|
class ClientError < StandardError
|
8
8
|
class BadRequest < ClientError; end
|
9
|
+
|
9
10
|
class Unauthorized < ClientError; end
|
11
|
+
|
10
12
|
class Forbidden < ClientError; end
|
13
|
+
|
11
14
|
class NotFound < ClientError; end
|
15
|
+
|
12
16
|
class UnprocessableEntity < ClientError; end
|
13
17
|
|
14
18
|
module Handling
|
data/lib/super/compatibility.rb
CHANGED
@@ -34,6 +34,10 @@ module Super
|
|
34
34
|
def method_missing(method_name)
|
35
35
|
Rails.application.routes.url_helpers.public_send(method_name)
|
36
36
|
end
|
37
|
+
|
38
|
+
def respond_to_missing?(*args, **kwargs)
|
39
|
+
Rails.application.routes.url_helpers.respond_to?(*args, **kwargs)
|
40
|
+
end
|
37
41
|
end
|
38
42
|
|
39
43
|
klass.new
|
data/lib/super/configuration.rb
CHANGED
@@ -24,6 +24,9 @@ module Super
|
|
24
24
|
include ActiveSupport::Configurable
|
25
25
|
|
26
26
|
config_accessor(:title) { "Super Admin" }
|
27
|
+
|
28
|
+
# @!attribute [rw] index_records_per_page
|
29
|
+
# @return [Integer]
|
27
30
|
config_accessor(:index_records_per_page) { 100 }
|
28
31
|
config_accessor(:javascripts) do
|
29
32
|
[Super::Assets.auto("super/application")]
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module Super
|
4
4
|
class Display
|
5
5
|
class SchemaTypes
|
6
|
-
TYPES = Useful::Enum.new(:
|
6
|
+
TYPES = Useful::Enum.new(:attribute, :record, :none)
|
7
7
|
|
8
8
|
class Builder
|
9
9
|
extend Useful::Builder
|
@@ -12,40 +12,61 @@ module Super
|
|
12
12
|
@transform_block = block
|
13
13
|
end
|
14
14
|
|
15
|
-
builder def real
|
16
|
-
|
15
|
+
builder def real
|
16
|
+
@real = true
|
17
|
+
end
|
18
|
+
builder def computed
|
19
|
+
@real = false
|
20
|
+
end
|
17
21
|
|
18
|
-
builder def
|
19
|
-
|
20
|
-
|
22
|
+
builder def attribute
|
23
|
+
@type = :attribute
|
24
|
+
end
|
25
|
+
builder def record
|
26
|
+
@type = :record
|
27
|
+
end
|
28
|
+
builder def none
|
29
|
+
@type = :none
|
30
|
+
end
|
21
31
|
|
22
|
-
builder def ignore_nil
|
32
|
+
builder def ignore_nil
|
33
|
+
@ignore_nil = true
|
34
|
+
end
|
35
|
+
|
36
|
+
builder def attribute_name(name) # standard:disable Style/TrivialAccessors
|
37
|
+
@attribute_name = name
|
38
|
+
end
|
23
39
|
|
24
40
|
def build
|
25
41
|
Built.new(
|
26
42
|
real: @real,
|
27
43
|
type: @type,
|
28
44
|
ignore_nil: !!@ignore_nil,
|
45
|
+
attribute_name: @attribute_name,
|
29
46
|
&@transform_block
|
30
47
|
)
|
31
48
|
end
|
32
49
|
end
|
33
50
|
|
34
51
|
class Built
|
35
|
-
def initialize(real:, type:, ignore_nil:, &transform_block)
|
52
|
+
def initialize(real:, type:, ignore_nil:, attribute_name:, &transform_block)
|
36
53
|
@real = real
|
37
54
|
@type = type
|
38
55
|
@ignore_nil = ignore_nil
|
56
|
+
@attribute_name = attribute_name
|
39
57
|
@transform_block = transform_block
|
40
58
|
end
|
41
59
|
|
42
|
-
def real
|
60
|
+
def real?
|
61
|
+
@real
|
62
|
+
end
|
43
63
|
attr_reader :type
|
64
|
+
attr_reader :attribute_name
|
44
65
|
|
45
66
|
def present(attribute_name, value = nil)
|
46
67
|
if @transform_block.nil?
|
47
68
|
if attribute_name
|
48
|
-
raise Error::ArgumentError, "Transformation block is not set for
|
69
|
+
raise Error::ArgumentError, "Transformation block is not set for attribute: #{attribute_name}"
|
49
70
|
else
|
50
71
|
raise Error::ArgumentError, "Transformation block is not set!"
|
51
72
|
end
|
@@ -61,97 +82,55 @@ module Super
|
|
61
82
|
end
|
62
83
|
end
|
63
84
|
|
64
|
-
class Badge
|
65
|
-
extend Useful::Builder
|
66
|
-
|
67
|
-
def initialize(builder)
|
68
|
-
@builder = builder
|
69
|
-
@whens = {}
|
70
|
-
format_for_lookup(&:itself)
|
71
|
-
format_for_display(&:itself)
|
72
|
-
end
|
73
|
-
|
74
|
-
builder_with_block def when(*patterns, &block)
|
75
|
-
patterns.each do |pattern|
|
76
|
-
@whens[pattern] = block
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
builder_with_block def else(&block)
|
81
|
-
@else = block
|
82
|
-
end
|
83
|
-
|
84
|
-
builder_with_block def format_for_lookup(&block)
|
85
|
-
@format_for_lookup = block
|
86
|
-
end
|
87
|
-
|
88
|
-
builder_with_block def format_for_display(&block)
|
89
|
-
@format_for_display = block
|
90
|
-
end
|
91
|
-
|
92
|
-
def build
|
93
|
-
@builder.transform do |value|
|
94
|
-
lookup_value = @format_for_lookup.call(value)
|
95
|
-
block = @whens[lookup_value] || @else
|
96
|
-
Super::Badge.new(
|
97
|
-
@format_for_display.call(value),
|
98
|
-
styles: block&.call
|
99
|
-
)
|
100
|
-
end
|
101
|
-
@builder.build
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
85
|
def initialize(fields:)
|
106
86
|
@actions_called = false
|
107
87
|
@fields = fields
|
108
88
|
end
|
109
89
|
|
110
|
-
def real(type = :
|
90
|
+
def real(type = :attribute, &transform_block)
|
111
91
|
TYPES
|
112
92
|
.case(type)
|
113
|
-
.when(:
|
93
|
+
.when(:attribute) { Builder.new.real.ignore_nil.attribute.transform(&transform_block) }
|
114
94
|
.when(:record) { Builder.new.real.ignore_nil.record.transform(&transform_block) }
|
115
|
-
.when(:none)
|
95
|
+
.when(:none) { Builder.new.real.ignore_nil.none.transform(&transform_block) }
|
116
96
|
.result
|
117
97
|
end
|
118
98
|
|
119
|
-
def computed(type = :
|
99
|
+
def computed(type = :attribute, &transform_block)
|
120
100
|
TYPES
|
121
101
|
.case(type)
|
122
|
-
.when(:
|
102
|
+
.when(:attribute) { Builder.new.computed.ignore_nil.attribute.transform(&transform_block) }
|
123
103
|
.when(:record) { Builder.new.computed.ignore_nil.record.transform(&transform_block) }
|
124
|
-
.when(:none)
|
104
|
+
.when(:none) { Builder.new.computed.ignore_nil.none.transform(&transform_block) }
|
125
105
|
.result
|
126
106
|
end
|
127
107
|
|
128
108
|
def manual(&transform_block)
|
129
|
-
real(:
|
109
|
+
real(:attribute, &transform_block)
|
130
110
|
end
|
131
111
|
|
132
112
|
def batch
|
133
113
|
real do |value|
|
134
|
-
Partial.new("batch_checkbox", locals: {
|
114
|
+
Partial.new("batch_checkbox", locals: {value: value})
|
135
115
|
end
|
136
116
|
end
|
137
117
|
|
138
|
-
def string
|
118
|
+
def string
|
119
|
+
real(&:to_s)
|
120
|
+
end
|
139
121
|
|
140
|
-
def timestamp
|
141
|
-
|
122
|
+
def timestamp
|
123
|
+
real(&:to_s)
|
124
|
+
end
|
142
125
|
|
143
|
-
def
|
144
|
-
|
145
|
-
Partial.new("display_rich_text", locals: { rich_text: value })
|
146
|
-
end
|
126
|
+
def time
|
127
|
+
real { |value| value.strftime("%H:%M:%S") }
|
147
128
|
end
|
148
129
|
|
149
|
-
def
|
150
|
-
|
151
|
-
|
152
|
-
builder.public_send(builder_method)
|
130
|
+
def rich_text
|
131
|
+
computed do |value|
|
132
|
+
Partial.new("display_rich_text", locals: {rich_text: value})
|
153
133
|
end
|
154
|
-
Badge.new(builder)
|
155
134
|
end
|
156
135
|
|
157
136
|
def actions
|
data/lib/super/display.rb
CHANGED
@@ -26,7 +26,9 @@ module Super
|
|
26
26
|
include Schema::Common
|
27
27
|
|
28
28
|
def initialize
|
29
|
-
@fields = Super::Schema::Fields.new
|
29
|
+
@fields = Super::Schema::Fields.new(
|
30
|
+
transform_value_on_set: ->(val) { val.respond_to?(:build) ? val.build : val }
|
31
|
+
)
|
30
32
|
@schema_types = SchemaTypes.new(fields: @fields)
|
31
33
|
|
32
34
|
yield(@fields, @schema_types)
|
@@ -43,7 +45,7 @@ module Super
|
|
43
45
|
|
44
46
|
def to_partial_path
|
45
47
|
if @action_inquirer.nil?
|
46
|
-
raise Super::Error::
|
48
|
+
raise Super::Error::Initialization,
|
47
49
|
"You must call the `#apply` method after instantiating Super::Display"
|
48
50
|
elsif @action_inquirer.index?
|
49
51
|
"display_index"
|
@@ -57,22 +59,21 @@ module Super
|
|
57
59
|
# @private
|
58
60
|
def render_attribute(template:, record:, column:)
|
59
61
|
formatter = @fields[column]
|
60
|
-
formatter = formatter.build if formatter.respond_to?(:build)
|
61
62
|
|
62
63
|
formatted =
|
63
64
|
SchemaTypes::TYPES
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
65
|
+
.case(formatter.type)
|
66
|
+
.when(:record) do
|
67
|
+
formatter.present(column, record)
|
68
|
+
end
|
69
|
+
.when(:attribute) do
|
70
|
+
value = record.public_send(column)
|
71
|
+
formatter.present(column, value)
|
72
|
+
end
|
73
|
+
.when(:none) do
|
74
|
+
formatter.present(column)
|
75
|
+
end
|
76
|
+
.result
|
76
77
|
|
77
78
|
if formatted.respond_to?(:to_partial_path)
|
78
79
|
if formatted.respond_to?(:locals)
|
data/lib/super/error.rb
CHANGED
@@ -7,14 +7,19 @@ module Super
|
|
7
7
|
class Error < StandardError
|
8
8
|
# Error raised when some configuration is not set
|
9
9
|
class UnconfiguredConfiguration < Error; end
|
10
|
+
|
10
11
|
# Error raised when a configuration is set to a invalid value
|
11
12
|
class InvalidConfiguration < Error; end
|
13
|
+
|
12
14
|
# Error raised on problematic plugins, see `Super::Plugin`
|
13
15
|
class InvalidPluginArgument < Error; end
|
16
|
+
|
14
17
|
# Error raised on problematic ActionInquirer settings, see `Super::ActionInquirer`
|
15
18
|
class ActionInquirerError < Error; end
|
19
|
+
|
16
20
|
# Error raised when a `Super::Link` couldn't be found
|
17
21
|
class LinkNotRegistered < Error; end
|
22
|
+
|
18
23
|
# Error raised when rendering if `@view` wasn't set by the controller
|
19
24
|
class NothingToRender < Error
|
20
25
|
def initialize(basename)
|
@@ -24,23 +29,32 @@ module Super
|
|
24
29
|
)
|
25
30
|
end
|
26
31
|
end
|
27
|
-
|
32
|
+
|
33
|
+
# Error raised when something wasn't initialized correctly, and if there isn't
|
28
34
|
# a more specific error
|
29
|
-
class
|
35
|
+
class Initialization < Error; end
|
36
|
+
|
30
37
|
class ArgumentError < Error; end
|
38
|
+
|
31
39
|
class AlreadyRegistered < Error; end
|
40
|
+
|
32
41
|
class AlreadyTranscribed < Error; end
|
42
|
+
|
33
43
|
class NotImplementedError < Error; end
|
44
|
+
|
34
45
|
class IncompleteBuilder < Error; end
|
35
46
|
|
36
47
|
class Enum < Error
|
37
48
|
class ImpossibleValue < Enum; end
|
49
|
+
|
38
50
|
class ArgumentError < Enum; end
|
51
|
+
|
39
52
|
class UndefinedCase < Enum; end
|
40
53
|
end
|
41
54
|
|
42
55
|
class ReorderableHash < Error
|
43
56
|
class DuplicateKey < ReorderableHash; end
|
57
|
+
|
44
58
|
class KeyError < ReorderableHash; end
|
45
59
|
end
|
46
60
|
|
@@ -44,8 +44,8 @@ module Super
|
|
44
44
|
query_parameter_keys = [NULLARY] if query_parameter_keys.empty?
|
45
45
|
@specified_values =
|
46
46
|
query_parameter_keys
|
47
|
-
|
48
|
-
|
47
|
+
.map { |key| [key, @params[key].presence&.strip] }
|
48
|
+
.to_h
|
49
49
|
|
50
50
|
@specified_values.each do |key, value|
|
51
51
|
define_singleton_method(key) { value }
|
@@ -79,7 +79,7 @@ module Super
|
|
79
79
|
end
|
80
80
|
|
81
81
|
if @extras.key?(:reader)
|
82
|
-
|
82
|
+
@extras[:reader].to_s.singularize.humanize
|
83
83
|
end
|
84
84
|
end
|
85
85
|
|
@@ -142,7 +142,7 @@ module Super
|
|
142
142
|
end
|
143
143
|
|
144
144
|
def self.define_schema_type_for(method_name)
|
145
|
-
class_eval(<<~RUBY)
|
145
|
+
class_eval(<<~RUBY, __FILE__, __LINE__ + 1)
|
146
146
|
def #{method_name}(*args, **kwargs)
|
147
147
|
Direct.new(super_builder: true, method_name: :#{method_name}!, args: args, kwargs: kwargs)
|
148
148
|
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module Super
|
4
4
|
class FormBuilder
|
5
5
|
class Wrappers
|
6
|
-
skipped_field_helpers = [:label, :check_box, :radio_button, :fields_for, :fields, :hidden_field
|
6
|
+
skipped_field_helpers = [:label, :check_box, :radio_button, :fields_for, :fields, :hidden_field]
|
7
7
|
(ActionView::Helpers::FormBuilder.field_helpers - skipped_field_helpers).each do |builder_method_name|
|
8
8
|
class_eval(<<~RUBY, __FILE__, __LINE__ + 1)
|
9
9
|
def #{builder_method_name}(attribute, options = {})
|
@@ -30,26 +30,20 @@ module Super
|
|
30
30
|
|
31
31
|
def check_box!(attribute, checked_value: "1", unchecked_value: "0", label_text: nil, label: {}, field: {}, show_errors: true)
|
32
32
|
label[:super] ||= {}
|
33
|
-
label[:super] = {
|
33
|
+
label[:super] = {class: "select-none ml-1"}.merge(label[:super])
|
34
34
|
container do
|
35
35
|
compact_join([
|
36
36
|
"<div>".html_safe,
|
37
37
|
public_send(:check_box, attribute, field, checked_value, unchecked_value),
|
38
38
|
public_send(:label, attribute, label_text, label),
|
39
39
|
"</div>".html_safe,
|
40
|
-
show_errors && inline_errors(attribute)
|
40
|
+
show_errors && inline_errors(attribute)
|
41
41
|
])
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
45
|
::Super::Form::SchemaTypes.define_schema_type_for(:check_box)
|
46
46
|
|
47
|
-
# def file_field(attribute, options = {})
|
48
|
-
# end
|
49
|
-
|
50
|
-
# def file_field!(attribute, label_text: nil, label: {}, field: {}, show_errors: true)
|
51
|
-
# end
|
52
|
-
|
53
47
|
def hidden_field(attribute, options = {})
|
54
48
|
@builder.hidden_field(attribute, options)
|
55
49
|
end
|
@@ -10,7 +10,7 @@ module Super
|
|
10
10
|
data: {
|
11
11
|
controller: "flatpickr",
|
12
12
|
flatpickr_options_value: {
|
13
|
-
dateFormat: "Y-m-d"
|
13
|
+
dateFormat: "Y-m-d"
|
14
14
|
}
|
15
15
|
}
|
16
16
|
)
|
@@ -33,7 +33,7 @@ module Super
|
|
33
33
|
flatpickr_options_value: {
|
34
34
|
enableSeconds: true,
|
35
35
|
enableTime: true,
|
36
|
-
dateFormat: "Z"
|
36
|
+
dateFormat: "Z"
|
37
37
|
}
|
38
38
|
}
|
39
39
|
)
|
@@ -57,7 +57,7 @@ module Super
|
|
57
57
|
enableSeconds: true,
|
58
58
|
enableTime: true,
|
59
59
|
noCalendar: true,
|
60
|
-
dateFormat: "H:i:S"
|
60
|
+
dateFormat: "H:i:S"
|
61
61
|
}
|
62
62
|
}
|
63
63
|
)
|