playbook_ui 8.3.0 → 9.2.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/app/pb_kits/playbook/pb_avatar/_avatar.scss +0 -3
- 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_highlight/_highlight.jsx +1 -1
- data/app/pb_kits/playbook/pb_highlight/highlight.html.erb +3 -1
- data/app/pb_kits/playbook/pb_icon_stat_value/_icon_stat_value.jsx +3 -0
- data/app/pb_kits/playbook/pb_icon_stat_value/icon_stat_value.html.erb +1 -0
- data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.jsx +1 -1
- data/app/pb_kits/playbook/pb_progress_pills/docs/_description.md +3 -1
- data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.html.erb +1 -1
- data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.jsx +1 -0
- data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_status.html.erb +1 -1
- data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_status.jsx +1 -0
- data/app/pb_kits/playbook/pb_progress_pills/progress_pills.html.erb +1 -1
- data/app/pb_kits/playbook/pb_progress_pills/progress_pills.rb +5 -0
- data/app/pb_kits/playbook/pb_stat_value/_stat_value.jsx +2 -0
- data/app/pb_kits/playbook/pb_stat_value/stat_value.html.erb +2 -0
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.scss +4 -0
- 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 +54 -65
- 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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aef1741f04bc8e69735bca02d3a02371f3b505fa00e89886e0765ef9966cabb4
|
4
|
+
data.tar.gz: 7ba329497b8405ca204af5e7d41e18ec51e14d3691b33741f36767d385a0506e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 29359809591a9728d7be433e38691ca397c133c1b1ed9bbe85e75b95775fcd6d90f4c25c65eccd288f4197af1c5a7ed2016821d61967a1b737b9d467ac22baad
|
7
|
+
data.tar.gz: 85d37c87b12da09850947cc291b02e8a7edb081a4f165d8824d47a2cb0bc26a6a02eb30e486f0899b3b259753a67fe32d25486fdabee9fcdb9724bbc192b6f47
|
@@ -48,7 +48,6 @@ $avatar-sizes: (
|
|
48
48
|
line-height: $size;
|
49
49
|
text-transform: uppercase;
|
50
50
|
position: relative;
|
51
|
-
z-index: 0;
|
52
51
|
}
|
53
52
|
|
54
53
|
img {
|
@@ -57,7 +56,6 @@ $avatar-sizes: (
|
|
57
56
|
position: absolute;
|
58
57
|
top: 0;
|
59
58
|
left: 0;
|
60
|
-
z-index: 1;
|
61
59
|
border-radius: $border-rad-mega;
|
62
60
|
object-fit: cover;
|
63
61
|
display: block;
|
@@ -69,7 +67,6 @@ $avatar-sizes: (
|
|
69
67
|
top: 0;
|
70
68
|
bottom: auto;
|
71
69
|
left: auto;
|
72
|
-
z-index: 500;
|
73
70
|
|
74
71
|
&.size_xs {
|
75
72
|
right: -4px;
|
@@ -1,10 +1,6 @@
|
|
1
|
-
The `form` kit provides consumers with a convenient, consistently styled `<form>` wrapper.
|
1
|
+
The `form` kit provides consumers with a convenient, consistently styled `<form>` wrapper.
|
2
2
|
|
3
3
|
### Form Helpers
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
**Note:** It is suggested to use `form_with` for newer or more progressive Rails applications and `simple_form` for older legacy forms where simple_form is already implemented and a complete overhaul might not make sense.
|
8
|
-
|
9
|
-
This kit does make use of other kits such as text_input, select and typeahead to name a few. Doing so provides UI consistency within forms and makes adding a form to your page easier.
|
5
|
+
This kit uses rails `form_with` with our custom builder to render forms using other kits such as text_input, select, and typeahead to name a few. Doing so provides UI consistency within forms and makes adding a form to your page easier.
|
10
6
|
|
@@ -13,7 +13,7 @@
|
|
13
13
|
]
|
14
14
|
%>
|
15
15
|
|
16
|
-
<%=
|
16
|
+
<%= pb_form_with(scope: :example, url: "", method: :get) do |form| %>
|
17
17
|
<%= form.typeahead :example_user, props: { data: { typeahead_example1: true, user: {} }, placeholder: "Search for a user" } %>
|
18
18
|
<%= form.text_field :example_text_field, props: { label: true } %>
|
19
19
|
<%= form.telephone_field :example_phone_field, props: { label: true } %>
|
@@ -13,10 +13,7 @@
|
|
13
13
|
]
|
14
14
|
%>
|
15
15
|
|
16
|
-
<%=
|
17
|
-
scope: :example, method: :get, url: "",
|
18
|
-
validate: true
|
19
|
-
}) do |form| %>
|
16
|
+
<%= pb_form_with(scope: :example, method: :get, url: "", validate: true) do |form| %>
|
20
17
|
<%= form.text_field :example_text_field, props: { label: true, required: true } %>
|
21
18
|
<%= form.telephone_field :example_phone_field, props: { label: true, required: true, validation: { pattern: "[0-9]{3}-[0-9]{3}-[0-9]{4}", message: "Please enter a valid phone number (example: 888-888-8888)." } } %>
|
22
19
|
<%= form.email_field :example_email_field, props: { label: true, required: true } %>
|
@@ -1,7 +1,5 @@
|
|
1
1
|
examples:
|
2
2
|
|
3
3
|
rails:
|
4
|
-
- form_form_with: Default
|
5
|
-
- form_form_with_validate: Default
|
6
|
-
- form_simple_form: Default (Simple Form)
|
7
|
-
- form_simple_form_validate: Default (Simple Form) + Validation
|
4
|
+
- form_form_with: Default
|
5
|
+
- form_form_with_validate: Default + Validation
|
@@ -3,33 +3,27 @@
|
|
3
3
|
module Playbook
|
4
4
|
module PbForm
|
5
5
|
class Form < ::Playbook::KitBase
|
6
|
-
prop :form_system,
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
prop :form_system, deprecated: "Playbook only supports form_with and this prop is ignored",
|
7
|
+
type: Playbook::Props::Base
|
8
|
+
prop :form_system_options, deprecated: "Use options instead",
|
9
|
+
type: Playbook::Props::Base
|
10
|
+
prop :options, type: Playbook::Props::Base
|
10
11
|
prop :validate, type: Playbook::Props::Boolean, default: false
|
11
12
|
|
12
|
-
def form_system_options
|
13
|
-
form_options = prop(:form_system_options)
|
14
|
-
if form_options.is_a?(::Array)
|
15
|
-
model, options = *form_options
|
16
|
-
(options || {}).merge(model: model)
|
17
|
-
else
|
18
|
-
form_options
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
13
|
def render_in(view_context, &block)
|
23
|
-
|
14
|
+
view_context.pb_form_with(form_options, &block)
|
24
15
|
end
|
25
16
|
|
26
17
|
private
|
27
18
|
|
28
|
-
def
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
19
|
+
def form_options
|
20
|
+
{
|
21
|
+
id: id,
|
22
|
+
aria: aria,
|
23
|
+
class: classname,
|
24
|
+
data: data,
|
25
|
+
validate: validate,
|
26
|
+
}.merge(prop(:options) || prop(:form_system_options) || { })
|
33
27
|
end
|
34
28
|
end
|
35
29
|
end
|
@@ -28,7 +28,7 @@ const Highlight = (props: HighlightProps) => {
|
|
28
28
|
autoEscape
|
29
29
|
data={data}
|
30
30
|
highlightClassName={classnames(globalProps(props), className)}
|
31
|
-
highlightTag="
|
31
|
+
highlightTag="mark"
|
32
32
|
id={id}
|
33
33
|
searchWords={highlightedText}
|
34
34
|
textToHighlight={text || children}
|
@@ -52,6 +52,7 @@ const IconStatValue = (props: IconStatValueProps) => {
|
|
52
52
|
return (
|
53
53
|
<Title
|
54
54
|
size={1}
|
55
|
+
tag="span"
|
55
56
|
text={`${value}`}
|
56
57
|
/>
|
57
58
|
)
|
@@ -59,6 +60,7 @@ const IconStatValue = (props: IconStatValueProps) => {
|
|
59
60
|
return (
|
60
61
|
<Title
|
61
62
|
size={2}
|
63
|
+
tag="span"
|
62
64
|
text={`${value}`}
|
63
65
|
/>
|
64
66
|
)
|
@@ -66,6 +68,7 @@ const IconStatValue = (props: IconStatValueProps) => {
|
|
66
68
|
return (
|
67
69
|
<Title
|
68
70
|
size={3}
|
71
|
+
tag="span"
|
69
72
|
text={`${value}`}
|
70
73
|
/>
|
71
74
|
)
|
@@ -1 +1,3 @@
|
|
1
|
-
Progress pills indicate a specific point in time of a series of sequential steps. They are used to track progress of something over time.
|
1
|
+
Progress pills indicate a specific point in time of a series of sequential steps. They are used to track progress of something over time.
|
2
|
+
|
3
|
+
Note: be sure to make use of the aria attribute as shown in the example if you want this kit to be web accessible.
|
@@ -1 +1 @@
|
|
1
|
-
<%= pb_rails("progress_pills", props: { steps: 3, active: 2 }) %>
|
1
|
+
<%= pb_rails("progress_pills", props: { aria: { label: "2 out of 3 steps complete" }, steps: 3, active: 2 }) %>
|
@@ -1 +1 @@
|
|
1
|
-
<%= pb_rails("progress_pills", props: { steps: 3, active: 2, title:"Status:", value:"Orientation" }) %>
|
1
|
+
<%= pb_rails("progress_pills", props: { aria: { label: "2 out of 3 steps complete" }, steps: 3, active: 2, title:"Status:", value:"Orientation" }) %>
|
@@ -25,6 +25,7 @@ const StatValue = (props: StatValueProps) => {
|
|
25
25
|
return (
|
26
26
|
<Title
|
27
27
|
size={1}
|
28
|
+
tag="span"
|
28
29
|
text={`${value}`}
|
29
30
|
/>
|
30
31
|
)
|
@@ -36,6 +37,7 @@ const StatValue = (props: StatValueProps) => {
|
|
36
37
|
return (
|
37
38
|
<Title
|
38
39
|
size={3}
|
40
|
+
tag="span"
|
39
41
|
text={unit}
|
40
42
|
/>
|
41
43
|
)
|
@@ -6,10 +6,12 @@
|
|
6
6
|
<%= pb_rails "title", props: {
|
7
7
|
classname: "pb_stat_value_kit",
|
8
8
|
size: 1,
|
9
|
+
tag: "span",
|
9
10
|
text: object.formatted_value } %>
|
10
11
|
|
11
12
|
<%= pb_rails "title", props: {
|
12
13
|
classname: "pb_stat_value_kit",
|
14
|
+
tag: "span",
|
13
15
|
size: 3,
|
14
16
|
text: object.unit } %>
|
15
17
|
</div>
|
@@ -9,6 +9,7 @@
|
|
9
9
|
}
|
10
10
|
.pb_typeahead_wrapper {
|
11
11
|
position: relative;
|
12
|
+
|
12
13
|
.text_input_value_container{
|
13
14
|
cursor: text;
|
14
15
|
}
|
@@ -28,6 +29,9 @@
|
|
28
29
|
}
|
29
30
|
[class^=pb_text_input_kit] {
|
30
31
|
.text_input_wrapper {
|
32
|
+
.text_input {
|
33
|
+
max-height: none;
|
34
|
+
}
|
31
35
|
& > input:first-child {
|
32
36
|
padding-right: $space_xl;
|
33
37
|
}
|
data/lib/playbook.rb
CHANGED
@@ -6,8 +6,11 @@ require "webpacker"
|
|
6
6
|
require "webpacker/react"
|
7
7
|
require "view_component/engine"
|
8
8
|
|
9
|
-
require "playbook/props"
|
10
9
|
require "playbook/version"
|
10
|
+
|
11
|
+
require "playbook/props"
|
12
|
+
require "playbook/forms"
|
13
|
+
require "playbook/pb_forms_helper"
|
11
14
|
require "playbook/pb_kit_helper"
|
12
15
|
require "playbook/pb_doc_helper"
|
13
16
|
require "playbook/kit_base"
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Playbook
|
4
|
+
module Forms
|
5
|
+
class Builder < ::ActionView::Helpers::FormBuilder
|
6
|
+
require_relative "builder/action_area"
|
7
|
+
require_relative "builder/checkbox_field"
|
8
|
+
require_relative "builder/collection_select_field"
|
9
|
+
require_relative "builder/date_picker_field"
|
10
|
+
require_relative "builder/form_field_builder"
|
11
|
+
require_relative "builder/select_field"
|
12
|
+
require_relative "builder/typeahead_field"
|
13
|
+
|
14
|
+
prepend(FormFieldBuilder.new(:email_field, kit_name: "text_input"))
|
15
|
+
prepend(FormFieldBuilder.new(:number_field, kit_name: "text_input"))
|
16
|
+
prepend(FormFieldBuilder.new(:search_field, kit_name: "text_input"))
|
17
|
+
prepend(FormFieldBuilder.new(:telephone_field, kit_name: "text_input"))
|
18
|
+
prepend(FormFieldBuilder.new(:text_field, kit_name: "text_input"))
|
19
|
+
prepend(FormFieldBuilder.new(:password_field, kit_name: "text_input"))
|
20
|
+
prepend(FormFieldBuilder.new(:url_field, kit_name: "text_input"))
|
21
|
+
prepend(FormFieldBuilder.new(:text_area, kit_name: "textarea"))
|
22
|
+
|
23
|
+
def actions
|
24
|
+
context = @template.respond_to?(:view_context) ? @template.view_context : @template
|
25
|
+
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
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Playbook
|
4
|
+
module Forms
|
5
|
+
class Builder
|
6
|
+
def check_box(name, props: {}, **options)
|
7
|
+
label_text = @template.label(@object_name, name) if props[:label] == true
|
8
|
+
options[:required] = true if props[:required]
|
9
|
+
props[:margin_bottom] = "sm"
|
10
|
+
props[:form_spacing] = true
|
11
|
+
|
12
|
+
checked_value = options[:checked_value]
|
13
|
+
unchecked_value = options[:unchecked_value]
|
14
|
+
options.delete(:checked_value)
|
15
|
+
options.delete(:unchecked_value)
|
16
|
+
|
17
|
+
input = super(name, options, checked_value, unchecked_value)
|
18
|
+
|
19
|
+
if props[:label]
|
20
|
+
@template.pb_rails("caption", props: { text: label_text, margin_bottom: "xs" }) +
|
21
|
+
@template.pb_rails("checkbox", props: props) do
|
22
|
+
input
|
23
|
+
end
|
24
|
+
else
|
25
|
+
@template.pb_rails("checkbox", props: props) do
|
26
|
+
input
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Playbook
|
4
|
+
module Forms
|
5
|
+
class Builder
|
6
|
+
def collection_select(name, collection, value_method, text_method, options = {}, html_options = {}, props: {} )
|
7
|
+
props[:label] = @template.label(@object_name, name) if props[:label] == true
|
8
|
+
options[:skip_default_ids] = false unless options.has_key?(:skip_default_ids)
|
9
|
+
options[:prompt] = props[:blank_selection] || ""
|
10
|
+
html_options[:required] = "required" if props[:required]
|
11
|
+
input = super(name, collection, value_method, text_method, options, html_options)
|
12
|
+
|
13
|
+
@template.pb_rails("select", props: props) do
|
14
|
+
input
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Playbook
|
4
|
+
module Forms
|
5
|
+
class Builder
|
6
|
+
def date_picker(name, props: {})
|
7
|
+
prefix = @object_name
|
8
|
+
html_attribute_name = "#{prefix}[#{name}]"
|
9
|
+
html_id = "#{prefix}_#{name}"
|
10
|
+
|
11
|
+
props[:label] = @template.label(@object_name, name) if props[:label] == true
|
12
|
+
props[:label] = "Date Picker" if props[:label].nil?
|
13
|
+
|
14
|
+
props[:name] = html_attribute_name
|
15
|
+
props[:picker_id] = html_id
|
16
|
+
|
17
|
+
input = text_field(
|
18
|
+
name,
|
19
|
+
autocomplete: "off",
|
20
|
+
disabled: props[:disable_input],
|
21
|
+
data: props[:input_data],
|
22
|
+
aria: props[:input_aria],
|
23
|
+
props: {
|
24
|
+
error: props[:error],
|
25
|
+
label: props[:hide_label] ? nil : props[:label],
|
26
|
+
placeholder: props[:placeholder],
|
27
|
+
required: props[:required],
|
28
|
+
}
|
29
|
+
)
|
30
|
+
|
31
|
+
@template.pb_rails("date_picker", props: props) do
|
32
|
+
input
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|