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.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_avatar/_avatar.scss +0 -3
  3. data/app/pb_kits/playbook/pb_form/docs/_description.md +2 -6
  4. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +1 -1
  5. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +1 -4
  6. data/app/pb_kits/playbook/pb_form/docs/example.yml +2 -4
  7. data/app/pb_kits/playbook/pb_form/form.rb +14 -20
  8. data/app/pb_kits/playbook/pb_highlight/_highlight.jsx +1 -1
  9. data/app/pb_kits/playbook/pb_highlight/highlight.html.erb +3 -1
  10. data/app/pb_kits/playbook/pb_icon_stat_value/_icon_stat_value.jsx +3 -0
  11. data/app/pb_kits/playbook/pb_icon_stat_value/icon_stat_value.html.erb +1 -0
  12. data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.jsx +1 -1
  13. data/app/pb_kits/playbook/pb_progress_pills/docs/_description.md +3 -1
  14. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.html.erb +1 -1
  15. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.jsx +1 -0
  16. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_status.html.erb +1 -1
  17. data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_status.jsx +1 -0
  18. data/app/pb_kits/playbook/pb_progress_pills/progress_pills.html.erb +1 -1
  19. data/app/pb_kits/playbook/pb_progress_pills/progress_pills.rb +5 -0
  20. data/app/pb_kits/playbook/pb_stat_value/_stat_value.jsx +2 -0
  21. data/app/pb_kits/playbook/pb_stat_value/stat_value.html.erb +2 -0
  22. data/app/pb_kits/playbook/pb_typeahead/_typeahead.scss +4 -0
  23. data/lib/playbook.rb +4 -1
  24. data/lib/playbook/forms.rb +3 -0
  25. data/lib/playbook/forms/builder.rb +31 -0
  26. data/{app/pb_kits/playbook/pb_form/form_builder → lib/playbook/forms/builder}/action_area.rb +2 -2
  27. data/lib/playbook/forms/builder/checkbox_field.rb +32 -0
  28. data/lib/playbook/forms/builder/collection_select_field.rb +19 -0
  29. data/lib/playbook/forms/builder/date_picker_field.rb +37 -0
  30. data/{app/pb_kits/playbook/pb_form/form_builder → lib/playbook/forms/builder}/form_field_builder.rb +2 -2
  31. data/lib/playbook/forms/builder/select_field.rb +19 -0
  32. data/lib/playbook/forms/builder/typeahead_field.rb +12 -0
  33. data/lib/playbook/pb_forms_helper.rb +41 -0
  34. data/lib/playbook/pb_kit_helper.rb +2 -0
  35. data/lib/playbook/props/base.rb +1 -1
  36. data/lib/playbook/version.rb +1 -1
  37. metadata +54 -65
  38. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form.html.erb +0 -60
  39. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form_validate.html.erb +0 -61
  40. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form_validate.md +0 -1
  41. data/app/pb_kits/playbook/pb_form/form_builder.rb +0 -31
  42. data/app/pb_kits/playbook/pb_form/form_builder/checkbox_field.rb +0 -34
  43. data/app/pb_kits/playbook/pb_form/form_builder/collection_select_field.rb +0 -21
  44. data/app/pb_kits/playbook/pb_form/form_builder/date_picker_field.rb +0 -39
  45. data/app/pb_kits/playbook/pb_form/form_builder/select_field.rb +0 -21
  46. data/app/pb_kits/playbook/pb_form/form_builder/typeahead_field.rb +0 -14
  47. data/app/pb_kits/playbook/pb_form/form_with.html.erb +0 -11
  48. data/app/pb_kits/playbook/pb_form/form_with.rb +0 -41
  49. data/app/pb_kits/playbook/pb_form/simple_form.html.erb +0 -11
  50. data/app/pb_kits/playbook/pb_form/simple_form.rb +0 -67
@@ -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
@@ -1,11 +0,0 @@
1
- <%= simple_form_for model, 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,67 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- if defined?(SimpleForm)
4
- module Playbook
5
- module PbForm
6
- class SimpleForm < Playbook::KitBase
7
- class FormBuilder < ::SimpleForm::FormBuilder
8
- include ::Playbook::PbForm::FormBuilder
9
-
10
- def input(attribute_name, options = {}, &block)
11
- super(
12
- attribute_name,
13
- options.deep_merge(label: false, input_html: {
14
- props: {
15
- label: true,
16
- },
17
- }),
18
- &block
19
- )
20
- end
21
- end
22
-
23
- prop :options, type: Playbook::Props::Hash, default: {}
24
- prop :validate, type: Playbook::Props::Boolean, default: false
25
-
26
- def options
27
- {
28
- builder: Playbook::PbForm::SimpleForm::FormBuilder,
29
- html: html_options,
30
- data: data,
31
- url: "",
32
- }.merge(prop(:options))
33
- end
34
-
35
- def model
36
- prop(:options).fetch(:model, nil)
37
- end
38
-
39
- def data
40
- prop(:data).merge("pb-form-validation" => validate)
41
- end
42
-
43
- def classname
44
- [generate_classname("pb-form"), html[:class]].join(" ")
45
- end
46
-
47
- def html
48
- prop(:options).fetch(:html, {})
49
- end
50
-
51
- def render_form(builder)
52
- view_context.capture(builder, &children)
53
- end
54
-
55
- def render_in(view_context, &_block)
56
- super(view_context, &nil)
57
- end
58
-
59
- private
60
-
61
- def html_options
62
- html.merge(class: classname)
63
- end
64
- end
65
- end
66
- end
67
- end