super 0.20.0 → 0.22.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 +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
|
)
|