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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +1 -18
  3. data/app/pb_kits/playbook/pb_avatar/_avatar.scss +0 -3
  4. data/app/pb_kits/playbook/pb_date_picker/_date_picker.scss +7 -0
  5. data/app/pb_kits/playbook/pb_form/docs/_description.md +2 -6
  6. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +1 -1
  7. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +1 -4
  8. data/app/pb_kits/playbook/pb_form/docs/example.yml +2 -4
  9. data/app/pb_kits/playbook/pb_form/form.rb +14 -20
  10. data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.scss +18 -55
  11. data/app/pb_kits/playbook/pb_select/_select.scss +2 -1
  12. data/app/pb_kits/playbook/pb_text_input/_text_input.scss +3 -16
  13. data/app/pb_kits/playbook/pb_textarea/_textarea.scss +2 -8
  14. data/app/pb_kits/playbook/pb_textarea/_textarea_mixin.scss +9 -4
  15. data/app/pb_kits/playbook/pb_typeahead/_typeahead.scss +6 -18
  16. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async_users.jsx +1 -0
  17. data/app/pb_kits/playbook/tokens/_colors.scss +1 -1
  18. data/lib/playbook.rb +4 -1
  19. data/lib/playbook/forms.rb +3 -0
  20. data/lib/playbook/forms/builder.rb +31 -0
  21. data/{app/pb_kits/playbook/pb_form/form_builder → lib/playbook/forms/builder}/action_area.rb +2 -2
  22. data/lib/playbook/forms/builder/checkbox_field.rb +32 -0
  23. data/lib/playbook/forms/builder/collection_select_field.rb +19 -0
  24. data/lib/playbook/forms/builder/date_picker_field.rb +37 -0
  25. data/{app/pb_kits/playbook/pb_form/form_builder → lib/playbook/forms/builder}/form_field_builder.rb +2 -2
  26. data/lib/playbook/forms/builder/select_field.rb +19 -0
  27. data/lib/playbook/forms/builder/typeahead_field.rb +12 -0
  28. data/lib/playbook/pb_forms_helper.rb +41 -0
  29. data/lib/playbook/pb_kit_helper.rb +2 -0
  30. data/lib/playbook/props/base.rb +1 -1
  31. data/lib/playbook/version.rb +1 -1
  32. metadata +22 -33
  33. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form.html.erb +0 -60
  34. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form_validate.html.erb +0 -61
  35. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form_validate.md +0 -1
  36. data/app/pb_kits/playbook/pb_form/form_builder.rb +0 -31
  37. data/app/pb_kits/playbook/pb_form/form_builder/checkbox_field.rb +0 -34
  38. data/app/pb_kits/playbook/pb_form/form_builder/collection_select_field.rb +0 -21
  39. data/app/pb_kits/playbook/pb_form/form_builder/date_picker_field.rb +0 -39
  40. data/app/pb_kits/playbook/pb_form/form_builder/select_field.rb +0 -21
  41. data/app/pb_kits/playbook/pb_form/form_builder/typeahead_field.rb +0 -14
  42. data/app/pb_kits/playbook/pb_form/form_with.html.erb +0 -11
  43. data/app/pb_kits/playbook/pb_form/form_with.rb +0 -41
  44. data/app/pb_kits/playbook/pb_form/simple_form.html.erb +0 -11
  45. data/app/pb_kits/playbook/pb_form/simple_form.rb +0 -67
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Playbook
4
- VERSION = "8.3.0.pre.alpha1"
4
+ VERSION = "9.1.0"
5
5
  end
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: 8.3.0.pre.alpha1
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-03-29 00:00:00.000000000 Z
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: rubocop
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.81.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.81.0
317
+ version: 0.9.1
318
318
  - !ruby/object:Gem::Dependency
319
- name: simple_form
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: 6.0.0
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: 6.0.0
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: 1.3.1
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