playbook_ui 8.3.0.pre.alpha1 → 9.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +1 -18
- data/app/pb_kits/playbook/pb_avatar/_avatar.scss +0 -3
- data/app/pb_kits/playbook/pb_date_picker/_date_picker.scss +7 -0
- data/app/pb_kits/playbook/pb_form/docs/_description.md +2 -6
- data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +1 -1
- data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +1 -4
- data/app/pb_kits/playbook/pb_form/docs/example.yml +2 -4
- data/app/pb_kits/playbook/pb_form/form.rb +14 -20
- data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.scss +18 -55
- data/app/pb_kits/playbook/pb_select/_select.scss +2 -1
- data/app/pb_kits/playbook/pb_text_input/_text_input.scss +3 -16
- data/app/pb_kits/playbook/pb_textarea/_textarea.scss +2 -8
- data/app/pb_kits/playbook/pb_textarea/_textarea_mixin.scss +9 -4
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.scss +6 -18
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async_users.jsx +1 -0
- data/app/pb_kits/playbook/tokens/_colors.scss +1 -1
- data/lib/playbook.rb +4 -1
- data/lib/playbook/forms.rb +3 -0
- data/lib/playbook/forms/builder.rb +31 -0
- data/{app/pb_kits/playbook/pb_form/form_builder → lib/playbook/forms/builder}/action_area.rb +2 -2
- data/lib/playbook/forms/builder/checkbox_field.rb +32 -0
- data/lib/playbook/forms/builder/collection_select_field.rb +19 -0
- data/lib/playbook/forms/builder/date_picker_field.rb +37 -0
- data/{app/pb_kits/playbook/pb_form/form_builder → lib/playbook/forms/builder}/form_field_builder.rb +2 -2
- data/lib/playbook/forms/builder/select_field.rb +19 -0
- data/lib/playbook/forms/builder/typeahead_field.rb +12 -0
- data/lib/playbook/pb_forms_helper.rb +41 -0
- data/lib/playbook/pb_kit_helper.rb +2 -0
- data/lib/playbook/props/base.rb +1 -1
- data/lib/playbook/version.rb +1 -1
- metadata +22 -33
- data/app/pb_kits/playbook/pb_form/docs/_form_simple_form.html.erb +0 -60
- data/app/pb_kits/playbook/pb_form/docs/_form_simple_form_validate.html.erb +0 -61
- data/app/pb_kits/playbook/pb_form/docs/_form_simple_form_validate.md +0 -1
- data/app/pb_kits/playbook/pb_form/form_builder.rb +0 -31
- data/app/pb_kits/playbook/pb_form/form_builder/checkbox_field.rb +0 -34
- data/app/pb_kits/playbook/pb_form/form_builder/collection_select_field.rb +0 -21
- data/app/pb_kits/playbook/pb_form/form_builder/date_picker_field.rb +0 -39
- data/app/pb_kits/playbook/pb_form/form_builder/select_field.rb +0 -21
- data/app/pb_kits/playbook/pb_form/form_builder/typeahead_field.rb +0 -14
- data/app/pb_kits/playbook/pb_form/form_with.html.erb +0 -11
- data/app/pb_kits/playbook/pb_form/form_with.rb +0 -41
- data/app/pb_kits/playbook/pb_form/simple_form.html.erb +0 -11
- data/app/pb_kits/playbook/pb_form/simple_form.rb +0 -67
data/lib/playbook/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: playbook_ui
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 9.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Power UX
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2021-
|
12
|
+
date: 2021-04-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: actionpack
|
@@ -302,39 +302,33 @@ dependencies:
|
|
302
302
|
- !ruby/object:Gem::Version
|
303
303
|
version: 3.8.0
|
304
304
|
- !ruby/object:Gem::Dependency
|
305
|
-
name:
|
305
|
+
name: rspec-html-matchers
|
306
306
|
requirement: !ruby/object:Gem::Requirement
|
307
307
|
requirements:
|
308
308
|
- - '='
|
309
309
|
- !ruby/object:Gem::Version
|
310
|
-
version: 0.
|
310
|
+
version: 0.9.1
|
311
311
|
type: :development
|
312
312
|
prerelease: false
|
313
313
|
version_requirements: !ruby/object:Gem::Requirement
|
314
314
|
requirements:
|
315
315
|
- - '='
|
316
316
|
- !ruby/object:Gem::Version
|
317
|
-
version: 0.
|
317
|
+
version: 0.9.1
|
318
318
|
- !ruby/object:Gem::Dependency
|
319
|
-
name:
|
319
|
+
name: rubocop
|
320
320
|
requirement: !ruby/object:Gem::Requirement
|
321
321
|
requirements:
|
322
|
-
- -
|
323
|
-
- !ruby/object:Gem::Version
|
324
|
-
version: 5.0.1
|
325
|
-
- - "<"
|
322
|
+
- - '='
|
326
323
|
- !ruby/object:Gem::Version
|
327
|
-
version:
|
324
|
+
version: 0.81.0
|
328
325
|
type: :development
|
329
326
|
prerelease: false
|
330
327
|
version_requirements: !ruby/object:Gem::Requirement
|
331
328
|
requirements:
|
332
|
-
- -
|
333
|
-
- !ruby/object:Gem::Version
|
334
|
-
version: 5.0.1
|
335
|
-
- - "<"
|
329
|
+
- - '='
|
336
330
|
- !ruby/object:Gem::Version
|
337
|
-
version:
|
331
|
+
version: 0.81.0
|
338
332
|
- !ruby/object:Gem::Dependency
|
339
333
|
name: spring
|
340
334
|
requirement: !ruby/object:Gem::Requirement
|
@@ -999,24 +993,9 @@ files:
|
|
999
993
|
- app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb
|
1000
994
|
- app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb
|
1001
995
|
- app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.md
|
1002
|
-
- app/pb_kits/playbook/pb_form/docs/_form_simple_form.html.erb
|
1003
|
-
- app/pb_kits/playbook/pb_form/docs/_form_simple_form_validate.html.erb
|
1004
|
-
- app/pb_kits/playbook/pb_form/docs/_form_simple_form_validate.md
|
1005
996
|
- app/pb_kits/playbook/pb_form/docs/example.yml
|
1006
997
|
- app/pb_kits/playbook/pb_form/form.rb
|
1007
|
-
- app/pb_kits/playbook/pb_form/form_builder.rb
|
1008
|
-
- app/pb_kits/playbook/pb_form/form_builder/action_area.rb
|
1009
|
-
- app/pb_kits/playbook/pb_form/form_builder/checkbox_field.rb
|
1010
|
-
- app/pb_kits/playbook/pb_form/form_builder/collection_select_field.rb
|
1011
|
-
- app/pb_kits/playbook/pb_form/form_builder/date_picker_field.rb
|
1012
|
-
- app/pb_kits/playbook/pb_form/form_builder/form_field_builder.rb
|
1013
|
-
- app/pb_kits/playbook/pb_form/form_builder/select_field.rb
|
1014
|
-
- app/pb_kits/playbook/pb_form/form_builder/typeahead_field.rb
|
1015
|
-
- app/pb_kits/playbook/pb_form/form_with.html.erb
|
1016
|
-
- app/pb_kits/playbook/pb_form/form_with.rb
|
1017
998
|
- app/pb_kits/playbook/pb_form/pb_form_validation.js
|
1018
|
-
- app/pb_kits/playbook/pb_form/simple_form.html.erb
|
1019
|
-
- app/pb_kits/playbook/pb_form/simple_form.rb
|
1020
999
|
- app/pb_kits/playbook/pb_form_group/_form_group.jsx
|
1021
1000
|
- app/pb_kits/playbook/pb_form_group/_form_group.scss
|
1022
1001
|
- app/pb_kits/playbook/pb_form_group/docs/_form_group_button.html.erb
|
@@ -2074,12 +2053,22 @@ files:
|
|
2074
2053
|
- lib/playbook.rb
|
2075
2054
|
- lib/playbook/classnames.rb
|
2076
2055
|
- lib/playbook/engine.rb
|
2056
|
+
- lib/playbook/forms.rb
|
2057
|
+
- lib/playbook/forms/builder.rb
|
2058
|
+
- lib/playbook/forms/builder/action_area.rb
|
2059
|
+
- lib/playbook/forms/builder/checkbox_field.rb
|
2060
|
+
- lib/playbook/forms/builder/collection_select_field.rb
|
2061
|
+
- lib/playbook/forms/builder/date_picker_field.rb
|
2062
|
+
- lib/playbook/forms/builder/form_field_builder.rb
|
2063
|
+
- lib/playbook/forms/builder/select_field.rb
|
2064
|
+
- lib/playbook/forms/builder/typeahead_field.rb
|
2077
2065
|
- lib/playbook/kit_base.rb
|
2078
2066
|
- lib/playbook/kit_resolver.rb
|
2079
2067
|
- lib/playbook/markdown.rb
|
2080
2068
|
- lib/playbook/markdown/helper.rb
|
2081
2069
|
- lib/playbook/markdown/template_handler.rb
|
2082
2070
|
- lib/playbook/pb_doc_helper.rb
|
2071
|
+
- lib/playbook/pb_forms_helper.rb
|
2083
2072
|
- lib/playbook/pb_kit_helper.rb
|
2084
2073
|
- lib/playbook/props.rb
|
2085
2074
|
- lib/playbook/props/array.rb
|
@@ -2114,9 +2103,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
2114
2103
|
version: '0'
|
2115
2104
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
2116
2105
|
requirements:
|
2117
|
-
- - "
|
2106
|
+
- - ">="
|
2118
2107
|
- !ruby/object:Gem::Version
|
2119
|
-
version:
|
2108
|
+
version: '0'
|
2120
2109
|
requirements: []
|
2121
2110
|
rubyforge_project:
|
2122
2111
|
rubygems_version: 2.7.3
|
@@ -1,60 +0,0 @@
|
|
1
|
-
<%
|
2
|
-
require "simple_form" unless defined?(SimpleForm)
|
3
|
-
require "active_model/railtie" unless defined?(ActiveModel)
|
4
|
-
|
5
|
-
example_form_model = Class.new do
|
6
|
-
include ::ActiveModel::Model
|
7
|
-
attr_accessor :example_text_field,
|
8
|
-
:example_phone_field,
|
9
|
-
:example_email_field,
|
10
|
-
:example_number_field,
|
11
|
-
:example_search_field,
|
12
|
-
:example_password_field,
|
13
|
-
:example_url_field,
|
14
|
-
:example_text_area,
|
15
|
-
:example_select_field,
|
16
|
-
:example_collection_select_field,
|
17
|
-
:example_checkbox_field,
|
18
|
-
:example_date_picker_field_1
|
19
|
-
|
20
|
-
|
21
|
-
def self.model_name
|
22
|
-
ActiveModel::Name.new(self, nil, "ExampleFormModel")
|
23
|
-
end
|
24
|
-
end
|
25
|
-
%>
|
26
|
-
|
27
|
-
<%
|
28
|
-
example_collection = [
|
29
|
-
OpenStruct.new(name: "Alabama", value: 1),
|
30
|
-
OpenStruct.new(name: "Alaska", value: 2),
|
31
|
-
OpenStruct.new(name: "Arizona", value: 3),
|
32
|
-
OpenStruct.new(name: "Arkansas", value: 4),
|
33
|
-
OpenStruct.new(name: "California", value: 5),
|
34
|
-
OpenStruct.new(name: "Colorado", value: 6),
|
35
|
-
OpenStruct.new(name: "Connecticut", value: 7),
|
36
|
-
OpenStruct.new(name: "Delaware", value: 8),
|
37
|
-
OpenStruct.new(name: "Florida", value: 9),
|
38
|
-
OpenStruct.new(name: "Georgia", value: 10),
|
39
|
-
]
|
40
|
-
%>
|
41
|
-
|
42
|
-
<%= pb_rails("form/simple_form", props: { options: { model: example_form_model.new, url: "", method: :get } }) do |form| %>
|
43
|
-
<%= form.input :example_text_field, as: :string %>
|
44
|
-
<%= form.input :example_phone_field, as: :tel %>
|
45
|
-
<%= form.input :example_email_field, as: :email %>
|
46
|
-
<%= form.input :example_number_field, as: :integer %>
|
47
|
-
<%= form.input :example_search_field, as: :search %>
|
48
|
-
<%= form.input :example_password_field, as: :password %>
|
49
|
-
<%= form.input :example_url_field, as: :url %>
|
50
|
-
<%= form.input :example_text_area, as: :text %>
|
51
|
-
<%= form.select :example_select_field, [["Yes", 1], ["No", 2]], props: { label: true } %>
|
52
|
-
<%= form.collection_select :example_collection_select_field, example_collection, :value, :name, props: { label: true } %>
|
53
|
-
<%= form.check_box :example_checkbox_field, props: { text: "Example Checkbox", label: true } %>
|
54
|
-
<%= form.date_picker :example_date_picker_field_1, props: { label: true } %>
|
55
|
-
|
56
|
-
<%= form.actions do |action| %>
|
57
|
-
<%= action.submit %>
|
58
|
-
<%= action.button props: { type: "reset", text: "Cancel", variant: "secondary" } %>
|
59
|
-
<% end %>
|
60
|
-
<% end %>
|
@@ -1,61 +0,0 @@
|
|
1
|
-
<%
|
2
|
-
require "simple_form" unless defined?(SimpleForm)
|
3
|
-
require "active_model/railtie" unless defined?(ActiveModel)
|
4
|
-
|
5
|
-
example_form_model = Class.new do
|
6
|
-
include ::ActiveModel::Model
|
7
|
-
attr_accessor :example_text_field,
|
8
|
-
:example_phone_field,
|
9
|
-
:example_email_field,
|
10
|
-
:example_number_field,
|
11
|
-
:example_search_field,
|
12
|
-
:example_password_field,
|
13
|
-
:example_url_field,
|
14
|
-
:example_text_area,
|
15
|
-
:example_select_field,
|
16
|
-
:example_collection_select_field,
|
17
|
-
:example_checkbox_field,
|
18
|
-
:example_date_picker_field_2
|
19
|
-
|
20
|
-
|
21
|
-
def self.model_name
|
22
|
-
ActiveModel::Name.new(self, nil, "ExampleFormModel")
|
23
|
-
end
|
24
|
-
end
|
25
|
-
%>
|
26
|
-
|
27
|
-
<%
|
28
|
-
example_collection = [
|
29
|
-
OpenStruct.new(name: "Alabama", value: 1),
|
30
|
-
OpenStruct.new(name: "Alaska", value: 2),
|
31
|
-
OpenStruct.new(name: "Arizona", value: 3),
|
32
|
-
OpenStruct.new(name: "Arkansas", value: 4),
|
33
|
-
OpenStruct.new(name: "California", value: 5),
|
34
|
-
OpenStruct.new(name: "Colorado", value: 6),
|
35
|
-
OpenStruct.new(name: "Connecticut", value: 7),
|
36
|
-
OpenStruct.new(name: "Delaware", value: 8),
|
37
|
-
OpenStruct.new(name: "Florida", value: 9),
|
38
|
-
OpenStruct.new(name: "Georgia", value: 10),
|
39
|
-
]
|
40
|
-
%>
|
41
|
-
|
42
|
-
|
43
|
-
<%= pb_rails("form", props: { validate: true, form_system: "simple_form", form_system_options: [example_form_model.new, url: "", method: :get] }) do |form| %>
|
44
|
-
<%= form.input :example_text_field, {as: :string, input_html: {props: {required: true}}} %>
|
45
|
-
<%= form.input :example_phone_field, {as: :tel, input_html: {props: {required: true, validation: { pattern: "[0-9]{3}-[0-9]{3}-[0-9]{4}", message: "Please enter a valid phone number (example: 888-888-8888)." }}}} %>
|
46
|
-
<%= form.input :example_email_field, {as: :email, input_html: {props: {required: true}}} %>
|
47
|
-
<%= form.input :example_number_field, {as: :integer, input_html: {props: {required: true}}} %>
|
48
|
-
<%= form.input :example_search_field, {as: :search, input_html: {props: {required: true, validation: { pattern: "[0-9]{2}-[0-9]{5}", message: "Please enter a valid project number (example: 33-12345)." }}}} %>
|
49
|
-
<%= form.input :example_password_field, {as: :password, input_html: {props: {required: true}}} %>
|
50
|
-
<%= form.input :example_url_field, {as: :url, input_html: {props: {required: true}}} %>
|
51
|
-
<%= form.input :example_text_area, {as: :text, input_html: {props: {required: true}}} %>
|
52
|
-
<%= form.select :example_select_field, [["Yes", 1], ["No", 2]], props: { required: true, blank_selection: "Select One...", label: true } %>
|
53
|
-
<%= form.collection_select :example_collection_select_field, example_collection, :value, :name, props: { required: true, blank_selection: "Select One...", label: true } %>
|
54
|
-
<%= form.check_box :example_checkbox_field, props: { text: "Example Checkbox", label: true, required: true } %>
|
55
|
-
<%= form.date_picker :example_date_picker_field_2, props: { label: true, required: true } %>
|
56
|
-
|
57
|
-
<%= form.actions do |action| %>
|
58
|
-
<%= action.submit %>
|
59
|
-
<%= action.button props: { type: "reset", text: "Cancel", variant: "secondary" } %>
|
60
|
-
<% end %>
|
61
|
-
<% end %>
|
@@ -1 +0,0 @@
|
|
1
|
-
Validation displays an error with red border and red text below indicating that the user must fill out the field.
|
@@ -1,31 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Playbook
|
4
|
-
module PbForm
|
5
|
-
module FormBuilder
|
6
|
-
extend ActiveSupport::Concern
|
7
|
-
|
8
|
-
included do
|
9
|
-
prepend(FormFieldBuilder.new(:email_field, kit_name: "text_input"))
|
10
|
-
prepend(FormFieldBuilder.new(:number_field, kit_name: "text_input"))
|
11
|
-
prepend(FormFieldBuilder.new(:search_field, kit_name: "text_input"))
|
12
|
-
prepend(FormFieldBuilder.new(:telephone_field, kit_name: "text_input"))
|
13
|
-
prepend(FormFieldBuilder.new(:text_field, kit_name: "text_input"))
|
14
|
-
prepend(FormFieldBuilder.new(:password_field, kit_name: "text_input"))
|
15
|
-
prepend(FormFieldBuilder.new(:url_field, kit_name: "text_input"))
|
16
|
-
prepend(FormFieldBuilder.new(:text_area, kit_name: "textarea"))
|
17
|
-
prepend(TypeaheadField)
|
18
|
-
prepend(SelectField)
|
19
|
-
prepend(CollectionSelectField)
|
20
|
-
prepend(CheckboxField)
|
21
|
-
prepend(DatePickerField)
|
22
|
-
end
|
23
|
-
|
24
|
-
def actions
|
25
|
-
@template.send(:view_context).content_tag :ol, class: "pb-form-actions" do
|
26
|
-
yield ActionArea.new(@template, submit_default_value)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Playbook
|
4
|
-
module PbForm
|
5
|
-
module FormBuilder
|
6
|
-
module CheckboxField
|
7
|
-
def check_box(name, props: {}, **options)
|
8
|
-
label_text = @template.label(@object_name, name) if props[:label] == true
|
9
|
-
options[:required] = true if props[:required]
|
10
|
-
props[:margin_bottom] = "sm"
|
11
|
-
props[:form_spacing] = true
|
12
|
-
|
13
|
-
checked_value = options[:checked_value]
|
14
|
-
unchecked_value = options[:unchecked_value]
|
15
|
-
options.delete(:checked_value)
|
16
|
-
options.delete(:unchecked_value)
|
17
|
-
|
18
|
-
input = super(name, options, checked_value, unchecked_value)
|
19
|
-
|
20
|
-
if props[:label]
|
21
|
-
@template.pb_rails("caption", props: { text: label_text, margin_bottom: "xs" }) +
|
22
|
-
@template.pb_rails("checkbox", props: props) do
|
23
|
-
input
|
24
|
-
end
|
25
|
-
else
|
26
|
-
@template.pb_rails("checkbox", props: props) do
|
27
|
-
input
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Playbook
|
4
|
-
module PbForm
|
5
|
-
module FormBuilder
|
6
|
-
module CollectionSelectField
|
7
|
-
def collection_select(name, collection, value_method, text_method, options = {}, html_options = {}, props: {} )
|
8
|
-
props[:label] = @template.label(@object_name, name) if props[:label] == true
|
9
|
-
options[:skip_default_ids] = false unless options.has_key?(:skip_default_ids)
|
10
|
-
options[:prompt] = props[:blank_selection] || ""
|
11
|
-
html_options[:required] = "required" if props[:required]
|
12
|
-
input = super(name, collection, value_method, text_method, options, html_options)
|
13
|
-
|
14
|
-
@template.pb_rails("select", props: props) do
|
15
|
-
input
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Playbook
|
4
|
-
module PbForm
|
5
|
-
module FormBuilder
|
6
|
-
module DatePickerField
|
7
|
-
def date_picker(name, props: {})
|
8
|
-
prefix = @object_name
|
9
|
-
html_attribute_name = "#{prefix}[#{name}]"
|
10
|
-
html_id = "#{prefix}_#{name}"
|
11
|
-
|
12
|
-
props[:label] = @template.label(@object_name, name) if props[:label] == true
|
13
|
-
props[:label] = "Date Picker" if props[:label].nil?
|
14
|
-
|
15
|
-
props[:name] = html_attribute_name
|
16
|
-
props[:picker_id] = html_id
|
17
|
-
|
18
|
-
input = text_field(
|
19
|
-
name,
|
20
|
-
autocomplete: "off",
|
21
|
-
disabled: props[:disable_input],
|
22
|
-
data: props[:input_data],
|
23
|
-
aria: props[:input_aria],
|
24
|
-
props: {
|
25
|
-
error: props[:error],
|
26
|
-
label: props[:hide_label] ? nil : props[:label],
|
27
|
-
placeholder: props[:placeholder],
|
28
|
-
required: props[:required],
|
29
|
-
}
|
30
|
-
)
|
31
|
-
|
32
|
-
@template.pb_rails("date_picker", props: props) do
|
33
|
-
input
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Playbook
|
4
|
-
module PbForm
|
5
|
-
module FormBuilder
|
6
|
-
module SelectField
|
7
|
-
def select(name, choices = nil, options = {}, html_options = {}, props: {}, &block)
|
8
|
-
props[:label] = @template.label(@object_name, name) if props[:label] == true
|
9
|
-
options[:skip_default_ids] = false unless options.has_key?(:skip_default_ids)
|
10
|
-
options[:prompt] = props[:blank_selection] || ""
|
11
|
-
html_options[:required] = "required" if props[:required]
|
12
|
-
input = super(name, choices, options, html_options, &block)
|
13
|
-
|
14
|
-
@template.pb_rails("select", props: props) do
|
15
|
-
input
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Playbook
|
4
|
-
module PbForm
|
5
|
-
module FormBuilder
|
6
|
-
module TypeaheadField
|
7
|
-
def typeahead(name, _options = {}, _html_options = {}, props: {})
|
8
|
-
props[:name] = name
|
9
|
-
@template.pb_rails("typeahead", props: props)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
@@ -1,11 +0,0 @@
|
|
1
|
-
<%= form_with(form_options, &method(:render_form)) %>
|
2
|
-
|
3
|
-
<% if validate %>
|
4
|
-
<% content_for :pb_js do %>
|
5
|
-
<%= javascript_tag do %>
|
6
|
-
window.addEventListener('DOMContentLoaded', function() {
|
7
|
-
PbFormValidation.start()
|
8
|
-
})
|
9
|
-
<% end %>
|
10
|
-
<% end %>
|
11
|
-
<% end %>
|
@@ -1,41 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Playbook
|
4
|
-
module PbForm
|
5
|
-
class FormWith < Playbook::KitBase
|
6
|
-
class FormBuilder < ::ActionView::Helpers::FormBuilder
|
7
|
-
include ::Playbook::PbForm::FormBuilder
|
8
|
-
end
|
9
|
-
|
10
|
-
prop :options, type: Playbook::Props::Hash, default: {}
|
11
|
-
prop :validate, type: Playbook::Props::Boolean, default: false
|
12
|
-
|
13
|
-
def data
|
14
|
-
prop(:data).merge("pb-form-validation" => validate)
|
15
|
-
end
|
16
|
-
|
17
|
-
def form_options
|
18
|
-
{
|
19
|
-
url: "",
|
20
|
-
id: id,
|
21
|
-
aria: aria,
|
22
|
-
class: classname,
|
23
|
-
data: data,
|
24
|
-
builder: ::Playbook::PbForm::FormWith::FormBuilder,
|
25
|
-
}.merge(options)
|
26
|
-
end
|
27
|
-
|
28
|
-
def render_form(builder)
|
29
|
-
view_context.capture(builder, &children)
|
30
|
-
end
|
31
|
-
|
32
|
-
def classname
|
33
|
-
[generate_classname("pb-form"), options[:class]].join(" ")
|
34
|
-
end
|
35
|
-
|
36
|
-
def render_in(view_context, &_block)
|
37
|
-
super(view_context, &nil)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|