phlexi-form 0.3.0.rc1 → 0.4.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 +10 -8
- data/gemfiles/default.gemfile.lock +34 -32
- data/gemfiles/rails_7.gemfile.lock +16 -18
- data/lib/phlexi/form/base.rb +42 -41
- data/lib/phlexi/form/builder.rb +297 -0
- data/lib/phlexi/form/components/base.rb +3 -3
- data/lib/phlexi/form/components/collection_checkboxes.rb +1 -1
- data/lib/phlexi/form/components/collection_radio_buttons.rb +1 -1
- data/lib/phlexi/form/components/concerns/extracts_input.rb +53 -0
- data/lib/phlexi/form/components/concerns/handles_input.rb +4 -34
- data/lib/phlexi/form/components/concerns/submits_form.rb +8 -0
- data/lib/phlexi/form/components/error.rb +1 -1
- data/lib/phlexi/form/components/file_input.rb +1 -0
- data/lib/phlexi/form/components/hint.rb +1 -1
- data/lib/phlexi/form/components/input.rb +16 -6
- data/lib/phlexi/form/components/input_array.rb +1 -1
- data/lib/phlexi/form/components/select.rb +4 -3
- data/lib/phlexi/form/components/textarea.rb +2 -3
- data/lib/phlexi/form/html.rb +18 -0
- data/lib/phlexi/form/{field_options → options}/autofocus.rb +1 -1
- data/lib/phlexi/form/{field_options → options}/collection.rb +14 -10
- data/lib/phlexi/form/{field_options → options}/disabled.rb +1 -1
- data/lib/phlexi/form/{field_options → options}/errors.rb +18 -14
- data/lib/phlexi/form/options/hints.rb +13 -0
- data/lib/phlexi/form/options/inferred_types.rb +32 -0
- data/lib/phlexi/form/{field_options → options}/length.rb +3 -3
- data/lib/phlexi/form/{field_options → options}/limit.rb +2 -2
- data/lib/phlexi/form/options/max.rb +55 -0
- data/lib/phlexi/form/options/min.rb +55 -0
- data/lib/phlexi/form/{field_options → options}/pattern.rb +2 -2
- data/lib/phlexi/form/{field_options → options}/readonly.rb +1 -1
- data/lib/phlexi/form/{field_options → options}/required.rb +3 -3
- data/lib/phlexi/form/options/step.rb +39 -0
- data/lib/phlexi/form/options/validators.rb +24 -0
- data/lib/phlexi/form/structure/field_collection.rb +12 -27
- data/lib/phlexi/form/structure/namespace.rb +4 -111
- data/lib/phlexi/form/structure/namespace_collection.rb +1 -32
- data/lib/phlexi/form/theme.rb +160 -0
- data/lib/phlexi/form/version.rb +1 -1
- data/lib/phlexi/form.rb +3 -6
- metadata +36 -24
- data/lib/phlexi/form/field_options/associations.rb +0 -21
- data/lib/phlexi/form/field_options/hints.rb +0 -22
- data/lib/phlexi/form/field_options/inferred_types.rb +0 -155
- data/lib/phlexi/form/field_options/labels.rb +0 -28
- data/lib/phlexi/form/field_options/min_max.rb +0 -92
- data/lib/phlexi/form/field_options/multiple.rb +0 -65
- data/lib/phlexi/form/field_options/placeholder.rb +0 -18
- data/lib/phlexi/form/field_options/themes.rb +0 -207
- data/lib/phlexi/form/field_options/validators.rb +0 -48
- data/lib/phlexi/form/structure/dom.rb +0 -62
- data/lib/phlexi/form/structure/field_builder.rb +0 -236
- data/lib/phlexi/form/structure/node.rb +0 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 275c0339b1d6b87503e8acf312fe8fa7f4dddeb2cc8a54840b3adfa66d3b61a6
|
4
|
+
data.tar.gz: b7f6fe52cfb50974dfec86e3c45ffb22a4ea2a0c1a65cb28d947ed325b0f6965
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d55f3d6c19be8cab8fe158085730b81bd199c0c4ec4912209b8ec3273b4d5e312412036f534330da6f357adcdff0bd327686736fcba3a078d60270e904c8da26
|
7
|
+
data.tar.gz: 547e96dc75e481b0a645ff2156a92f6ff9c3629af5658b5612649df713f81c024bc44b91f53e053db35728d0420572fc831bc6786a0b90bb6e3244768d6c343f
|
data/README.md
CHANGED
@@ -159,14 +159,16 @@ Phlexi::Form supports theming through a flexible theming system:
|
|
159
159
|
|
160
160
|
```ruby
|
161
161
|
class ThemedForm < Phlexi::Form::Base
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
162
|
+
class Builder < Builder
|
163
|
+
private
|
164
|
+
|
165
|
+
def default_theme
|
166
|
+
{
|
167
|
+
input: "border rounded px-2 py-1",
|
168
|
+
label: "font-bold text-gray-700",
|
169
|
+
# Add more theme options here
|
170
|
+
}
|
171
|
+
end
|
170
172
|
end
|
171
173
|
end
|
172
174
|
```
|
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ..
|
3
3
|
specs:
|
4
|
-
phlexi-form (0.
|
4
|
+
phlexi-form (0.3.1)
|
5
5
|
activesupport
|
6
6
|
phlex (~> 1.11)
|
7
7
|
zeitwerk
|
@@ -9,32 +9,34 @@ PATH
|
|
9
9
|
GEM
|
10
10
|
remote: https://rubygems.org/
|
11
11
|
specs:
|
12
|
-
actionpack (7.1
|
13
|
-
actionview (= 7.1
|
14
|
-
activesupport (= 7.1
|
12
|
+
actionpack (7.2.1)
|
13
|
+
actionview (= 7.2.1)
|
14
|
+
activesupport (= 7.2.1)
|
15
15
|
nokogiri (>= 1.8.5)
|
16
16
|
racc
|
17
|
-
rack (>= 2.2.4)
|
17
|
+
rack (>= 2.2.4, < 3.2)
|
18
18
|
rack-session (>= 1.0.1)
|
19
19
|
rack-test (>= 0.6.3)
|
20
20
|
rails-dom-testing (~> 2.2)
|
21
21
|
rails-html-sanitizer (~> 1.6)
|
22
|
-
|
23
|
-
|
22
|
+
useragent (~> 0.16)
|
23
|
+
actionview (7.2.1)
|
24
|
+
activesupport (= 7.2.1)
|
24
25
|
builder (~> 3.1)
|
25
26
|
erubi (~> 1.11)
|
26
27
|
rails-dom-testing (~> 2.2)
|
27
28
|
rails-html-sanitizer (~> 1.6)
|
28
|
-
activesupport (7.1
|
29
|
+
activesupport (7.2.1)
|
29
30
|
base64
|
30
31
|
bigdecimal
|
31
|
-
concurrent-ruby (~> 1.0, >= 1.
|
32
|
+
concurrent-ruby (~> 1.0, >= 1.3.1)
|
32
33
|
connection_pool (>= 2.2.5)
|
33
34
|
drb
|
34
35
|
i18n (>= 1.6, < 2)
|
36
|
+
logger (>= 1.4.2)
|
35
37
|
minitest (>= 5.1)
|
36
|
-
|
37
|
-
tzinfo (~> 2.0)
|
38
|
+
securerandom (>= 0.3)
|
39
|
+
tzinfo (~> 2.0, >= 2.0.5)
|
38
40
|
addressable (2.8.7)
|
39
41
|
public_suffix (>= 2.0.2, < 7.0)
|
40
42
|
ansi (1.5.0)
|
@@ -48,7 +50,7 @@ GEM
|
|
48
50
|
builder (3.3.0)
|
49
51
|
bundle-audit (0.1.0)
|
50
52
|
bundler-audit
|
51
|
-
bundler-audit (0.9.
|
53
|
+
bundler-audit (0.9.2)
|
52
54
|
bundler (>= 1.2.0, < 3)
|
53
55
|
thor (~> 1.0)
|
54
56
|
capybara (3.40.0)
|
@@ -64,7 +66,7 @@ GEM
|
|
64
66
|
activesupport (>= 3.0.0)
|
65
67
|
railties (>= 3.0.0)
|
66
68
|
thor (>= 0.14.6)
|
67
|
-
concurrent-ruby (1.3.
|
69
|
+
concurrent-ruby (1.3.4)
|
68
70
|
connection_pool (2.4.1)
|
69
71
|
crass (1.0.6)
|
70
72
|
drb (2.2.1)
|
@@ -78,22 +80,22 @@ GEM
|
|
78
80
|
json (2.7.2)
|
79
81
|
language_server-protocol (3.17.0.3)
|
80
82
|
lint_roller (1.1.0)
|
83
|
+
logger (1.6.1)
|
81
84
|
loofah (2.22.0)
|
82
85
|
crass (~> 1.0.2)
|
83
86
|
nokogiri (>= 1.12.0)
|
84
87
|
matrix (0.4.2)
|
85
88
|
mini_mime (1.1.5)
|
86
|
-
minitest (5.
|
89
|
+
minitest (5.25.1)
|
87
90
|
minitest-reporters (1.7.1)
|
88
91
|
ansi
|
89
92
|
builder
|
90
93
|
minitest (>= 5.0)
|
91
94
|
ruby-progressbar
|
92
|
-
mutex_m (0.2.0)
|
93
95
|
nokogiri (1.16.7-x86_64-darwin)
|
94
96
|
racc (~> 1.4)
|
95
|
-
parallel (1.
|
96
|
-
parser (3.3.
|
97
|
+
parallel (1.26.3)
|
98
|
+
parser (3.3.5.0)
|
97
99
|
ast (~> 2.4.1)
|
98
100
|
racc
|
99
101
|
phlex (1.11.0)
|
@@ -119,10 +121,10 @@ GEM
|
|
119
121
|
rails-html-sanitizer (1.6.0)
|
120
122
|
loofah (~> 2.21)
|
121
123
|
nokogiri (~> 1.14)
|
122
|
-
railties (7.1
|
123
|
-
actionpack (= 7.1
|
124
|
-
activesupport (= 7.1
|
125
|
-
irb
|
124
|
+
railties (7.2.1)
|
125
|
+
actionpack (= 7.2.1)
|
126
|
+
activesupport (= 7.2.1)
|
127
|
+
irb (~> 1.13)
|
126
128
|
rackup (>= 1.0.0)
|
127
129
|
rake (>= 12.2)
|
128
130
|
thor (~> 1.0, >= 1.2.2)
|
@@ -132,31 +134,31 @@ GEM
|
|
132
134
|
rdoc (6.7.0)
|
133
135
|
psych (>= 4.0.0)
|
134
136
|
regexp_parser (2.9.2)
|
135
|
-
reline (0.5.
|
137
|
+
reline (0.5.10)
|
136
138
|
io-console (~> 0.5)
|
137
|
-
rexml (3.3.
|
138
|
-
|
139
|
-
rubocop (1.64.1)
|
139
|
+
rexml (3.3.7)
|
140
|
+
rubocop (1.65.1)
|
140
141
|
json (~> 2.3)
|
141
142
|
language_server-protocol (>= 3.17.0)
|
142
143
|
parallel (~> 1.10)
|
143
144
|
parser (>= 3.3.0.2)
|
144
145
|
rainbow (>= 2.2.2, < 4.0)
|
145
|
-
regexp_parser (>=
|
146
|
+
regexp_parser (>= 2.4, < 3.0)
|
146
147
|
rexml (>= 3.2.5, < 4.0)
|
147
148
|
rubocop-ast (>= 1.31.1, < 2.0)
|
148
149
|
ruby-progressbar (~> 1.7)
|
149
150
|
unicode-display_width (>= 2.4.0, < 3.0)
|
150
|
-
rubocop-ast (1.
|
151
|
+
rubocop-ast (1.32.3)
|
151
152
|
parser (>= 3.3.1.0)
|
152
153
|
rubocop-performance (1.21.1)
|
153
154
|
rubocop (>= 1.48.1, < 2.0)
|
154
155
|
rubocop-ast (>= 1.31.1, < 2.0)
|
155
156
|
ruby-progressbar (1.13.0)
|
156
|
-
|
157
|
+
securerandom (0.3.1)
|
158
|
+
standard (1.40.0)
|
157
159
|
language_server-protocol (~> 3.17.0.2)
|
158
160
|
lint_roller (~> 1.0)
|
159
|
-
rubocop (~> 1.
|
161
|
+
rubocop (~> 1.65.0)
|
160
162
|
standard-custom (~> 1.0.0)
|
161
163
|
standard-performance (~> 1.4)
|
162
164
|
standard-custom (1.0.2)
|
@@ -166,15 +168,15 @@ GEM
|
|
166
168
|
lint_roller (~> 1.1)
|
167
169
|
rubocop-performance (~> 1.21.0)
|
168
170
|
stringio (3.1.1)
|
169
|
-
|
170
|
-
thor (1.3.1)
|
171
|
+
thor (1.3.2)
|
171
172
|
tzinfo (2.0.6)
|
172
173
|
concurrent-ruby (~> 1.0)
|
173
174
|
unicode-display_width (2.5.0)
|
175
|
+
useragent (0.16.10)
|
174
176
|
webrick (1.8.1)
|
175
177
|
xpath (3.2.0)
|
176
178
|
nokogiri (~> 1.8)
|
177
|
-
zeitwerk (2.6.
|
179
|
+
zeitwerk (2.6.18)
|
178
180
|
|
179
181
|
PLATFORMS
|
180
182
|
x86_64-darwin
|
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ..
|
3
3
|
specs:
|
4
|
-
phlexi-form (0.
|
4
|
+
phlexi-form (0.3.1)
|
5
5
|
activesupport
|
6
6
|
phlex (~> 1.11)
|
7
7
|
zeitwerk
|
@@ -96,7 +96,7 @@ GEM
|
|
96
96
|
builder (3.3.0)
|
97
97
|
bundle-audit (0.1.0)
|
98
98
|
bundler-audit
|
99
|
-
bundler-audit (0.9.
|
99
|
+
bundler-audit (0.9.2)
|
100
100
|
bundler (>= 1.2.0, < 3)
|
101
101
|
thor (~> 1.0)
|
102
102
|
capybara (3.40.0)
|
@@ -112,7 +112,7 @@ GEM
|
|
112
112
|
activesupport (>= 3.0.0)
|
113
113
|
railties (>= 3.0.0)
|
114
114
|
thor (>= 0.14.6)
|
115
|
-
concurrent-ruby (1.3.
|
115
|
+
concurrent-ruby (1.3.4)
|
116
116
|
connection_pool (2.4.1)
|
117
117
|
crass (1.0.6)
|
118
118
|
date (3.3.4)
|
@@ -140,14 +140,14 @@ GEM
|
|
140
140
|
marcel (1.0.4)
|
141
141
|
matrix (0.4.2)
|
142
142
|
mini_mime (1.1.5)
|
143
|
-
minitest (5.
|
143
|
+
minitest (5.25.1)
|
144
144
|
minitest-reporters (1.7.1)
|
145
145
|
ansi
|
146
146
|
builder
|
147
147
|
minitest (>= 5.0)
|
148
148
|
ruby-progressbar
|
149
149
|
mutex_m (0.2.0)
|
150
|
-
net-imap (0.4.
|
150
|
+
net-imap (0.4.16)
|
151
151
|
date
|
152
152
|
net-protocol
|
153
153
|
net-pop (0.1.2)
|
@@ -159,8 +159,8 @@ GEM
|
|
159
159
|
nio4r (2.7.3)
|
160
160
|
nokogiri (1.16.7-x86_64-darwin)
|
161
161
|
racc (~> 1.4)
|
162
|
-
parallel (1.
|
163
|
-
parser (3.3.
|
162
|
+
parallel (1.26.3)
|
163
|
+
parser (3.3.5.0)
|
164
164
|
ast (~> 2.4.1)
|
165
165
|
racc
|
166
166
|
phlex (1.11.0)
|
@@ -213,32 +213,31 @@ GEM
|
|
213
213
|
rdoc (6.7.0)
|
214
214
|
psych (>= 4.0.0)
|
215
215
|
regexp_parser (2.9.2)
|
216
|
-
reline (0.5.
|
216
|
+
reline (0.5.10)
|
217
217
|
io-console (~> 0.5)
|
218
|
-
rexml (3.3.
|
219
|
-
|
220
|
-
rubocop (1.64.1)
|
218
|
+
rexml (3.3.7)
|
219
|
+
rubocop (1.65.1)
|
221
220
|
json (~> 2.3)
|
222
221
|
language_server-protocol (>= 3.17.0)
|
223
222
|
parallel (~> 1.10)
|
224
223
|
parser (>= 3.3.0.2)
|
225
224
|
rainbow (>= 2.2.2, < 4.0)
|
226
|
-
regexp_parser (>=
|
225
|
+
regexp_parser (>= 2.4, < 3.0)
|
227
226
|
rexml (>= 3.2.5, < 4.0)
|
228
227
|
rubocop-ast (>= 1.31.1, < 2.0)
|
229
228
|
ruby-progressbar (~> 1.7)
|
230
229
|
unicode-display_width (>= 2.4.0, < 3.0)
|
231
|
-
rubocop-ast (1.
|
230
|
+
rubocop-ast (1.32.3)
|
232
231
|
parser (>= 3.3.1.0)
|
233
232
|
rubocop-performance (1.21.1)
|
234
233
|
rubocop (>= 1.48.1, < 2.0)
|
235
234
|
rubocop-ast (>= 1.31.1, < 2.0)
|
236
235
|
ruby-progressbar (1.13.0)
|
237
236
|
sqlite3 (1.7.3-x86_64-darwin)
|
238
|
-
standard (1.
|
237
|
+
standard (1.40.0)
|
239
238
|
language_server-protocol (~> 3.17.0.2)
|
240
239
|
lint_roller (~> 1.0)
|
241
|
-
rubocop (~> 1.
|
240
|
+
rubocop (~> 1.65.0)
|
242
241
|
standard-custom (~> 1.0.0)
|
243
242
|
standard-performance (~> 1.4)
|
244
243
|
standard-custom (1.0.2)
|
@@ -248,8 +247,7 @@ GEM
|
|
248
247
|
lint_roller (~> 1.1)
|
249
248
|
rubocop-performance (~> 1.21.0)
|
250
249
|
stringio (3.1.1)
|
251
|
-
|
252
|
-
thor (1.3.1)
|
250
|
+
thor (1.3.2)
|
253
251
|
timeout (0.4.1)
|
254
252
|
tzinfo (2.0.6)
|
255
253
|
concurrent-ruby (~> 1.0)
|
@@ -260,7 +258,7 @@ GEM
|
|
260
258
|
websocket-extensions (0.1.5)
|
261
259
|
xpath (3.2.0)
|
262
260
|
nokogiri (~> 1.8)
|
263
|
-
zeitwerk (2.6.
|
261
|
+
zeitwerk (2.6.18)
|
264
262
|
|
265
263
|
PLATFORMS
|
266
264
|
x86_64-darwin
|
data/lib/phlexi/form/base.rb
CHANGED
@@ -10,23 +10,23 @@ module Phlexi
|
|
10
10
|
# A form component for building flexible and customizable forms.
|
11
11
|
#
|
12
12
|
# @example Basic usage
|
13
|
-
# Phlexi::Form
|
13
|
+
# Phlexi::Form(user, action: '/users', method: 'post') do
|
14
14
|
# render field(:name).placeholder("Name").input_tag
|
15
15
|
# render field(:email).placeholder("Email").input_tag
|
16
16
|
# end
|
17
17
|
#
|
18
18
|
# @attr_reader [Symbol] key The form's key, derived from the record or explicitly set
|
19
19
|
# @attr_reader [ActiveModel::Model, nil] object The form's associated object
|
20
|
-
class Base <
|
21
|
-
class Namespace < Structure::Namespace; end
|
20
|
+
class Base < Phlexi::Form::HTML
|
21
|
+
class Namespace < Phlexi::Form::Structure::Namespace; end
|
22
22
|
|
23
|
-
class
|
23
|
+
class Builder < Phlexi::Form::Builder; end
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
25
|
+
def self.inline(*, **, &block)
|
26
|
+
raise ArgumentError, "block is required" unless block
|
27
|
+
|
28
|
+
new(*, **) do |f|
|
29
|
+
f.instance_exec(&block)
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
@@ -47,7 +47,6 @@ module Phlexi
|
|
47
47
|
def initialize(record, action: nil, method: nil, attributes: {}, **options)
|
48
48
|
@form_action = action
|
49
49
|
@form_method = method
|
50
|
-
@form_class = options.delete(:class)
|
51
50
|
@attributes = attributes
|
52
51
|
@namespace_klass = options.delete(:namespace_klass) || default_namespace_klass
|
53
52
|
@builder_klass = options.delete(:builder_klass) || default_builder_klass
|
@@ -61,8 +60,8 @@ module Phlexi
|
|
61
60
|
# Renders the form template.
|
62
61
|
#
|
63
62
|
# @return [void]
|
64
|
-
def view_template
|
65
|
-
form_tag { form_template }
|
63
|
+
def view_template(&)
|
64
|
+
form_tag { form_template(&) }
|
66
65
|
end
|
67
66
|
|
68
67
|
# Executes the form's content block.
|
@@ -70,19 +69,7 @@ module Phlexi
|
|
70
69
|
#
|
71
70
|
# @return [void]
|
72
71
|
def form_template
|
73
|
-
|
74
|
-
end
|
75
|
-
|
76
|
-
# Renders the form tag with its contents.
|
77
|
-
#
|
78
|
-
# @yield The form's content
|
79
|
-
# @return [void]
|
80
|
-
def form_tag(&)
|
81
|
-
form(**form_attributes) do
|
82
|
-
render_hidden_method_field
|
83
|
-
render_authenticity_token if authenticity_token?
|
84
|
-
yield
|
85
|
-
end
|
72
|
+
yield if block_given?
|
86
73
|
end
|
87
74
|
|
88
75
|
def extract_input(params)
|
@@ -110,10 +97,11 @@ module Phlexi
|
|
110
97
|
else
|
111
98
|
@object = record
|
112
99
|
if @key.nil?
|
113
|
-
|
114
|
-
|
100
|
+
@key = if object.respond_to?(:model_name) && object.model_name.respond_to?(:param_key) && object.model_name.param_key.present?
|
101
|
+
object.model_name.param_key
|
102
|
+
else
|
103
|
+
object.class.name.demodulize.underscore
|
115
104
|
end
|
116
|
-
@key = object.model_name.param_key
|
117
105
|
end
|
118
106
|
end
|
119
107
|
@key = @key.to_sym
|
@@ -133,6 +121,25 @@ module Phlexi
|
|
133
121
|
attributes.fetch(:accept_charset) { attributes[:accept_charset] = "UTF-8" }
|
134
122
|
end
|
135
123
|
|
124
|
+
# Retrieves the form's CSS classes.
|
125
|
+
#
|
126
|
+
# @return [String] The form's CSS classes
|
127
|
+
def form_class
|
128
|
+
themed(:base, nil)
|
129
|
+
end
|
130
|
+
|
131
|
+
# Renders the form tag with its contents.
|
132
|
+
#
|
133
|
+
# @yield The form's content
|
134
|
+
# @return [void]
|
135
|
+
def form_tag(&)
|
136
|
+
form(**form_attributes) do
|
137
|
+
render_hidden_method_field
|
138
|
+
render_authenticity_token if has_authenticity_token?
|
139
|
+
yield
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
136
143
|
# Determines the form's action URL.
|
137
144
|
#
|
138
145
|
# @return [String, nil] The form's action URL
|
@@ -156,16 +163,11 @@ module Phlexi
|
|
156
163
|
ActiveSupport::StringInquirer.new(@form_method)
|
157
164
|
end
|
158
165
|
|
159
|
-
# Retrieves the form's CSS classes.
|
160
|
-
#
|
161
|
-
# @return [String] The form's CSS classes
|
162
|
-
attr_reader :form_class
|
163
|
-
|
164
166
|
# Checks if the authenticity token should be included.
|
165
167
|
#
|
166
168
|
# @return [Boolean] True if the authenticity token should be included, false otherwise
|
167
|
-
def
|
168
|
-
defined?(helpers) && options
|
169
|
+
def has_authenticity_token?
|
170
|
+
!form_method.get? && ((defined?(helpers) && helpers) || options[:authenticity_token])
|
169
171
|
end
|
170
172
|
|
171
173
|
# Retrieves the authenticity token.
|
@@ -221,13 +223,12 @@ module Phlexi
|
|
221
223
|
#
|
222
224
|
# @return [Hash] The form attributes
|
223
225
|
def form_attributes
|
224
|
-
{
|
226
|
+
mix({
|
225
227
|
id: @namespace.dom_id,
|
226
|
-
action: form_action,
|
227
|
-
method: standardized_form_method,
|
228
228
|
class: form_class,
|
229
|
-
|
230
|
-
|
229
|
+
action: form_action,
|
230
|
+
method: standardized_form_method
|
231
|
+
}, attributes)
|
231
232
|
end
|
232
233
|
|
233
234
|
# Renders the authenticity token if required.
|
@@ -244,7 +245,7 @@ module Phlexi
|
|
244
245
|
end
|
245
246
|
|
246
247
|
def default_builder_klass
|
247
|
-
self.class::
|
248
|
+
self.class::Builder
|
248
249
|
end
|
249
250
|
end
|
250
251
|
end
|