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,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Playbook
4
- module PbForm
5
- module FormBuilder
4
+ module Forms
5
+ class Builder
6
6
  class FormFieldBuilder < Module
7
7
  def initialize(method_name, kit_name:)
8
8
  define_method method_name do |name, props: {}, **options, &block|
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module Forms
5
+ class Builder
6
+ def select(name, choices = nil, options = {}, html_options = {}, props: {}, &block)
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, choices, options, html_options, &block)
12
+
13
+ @template.pb_rails("select", props: props) do
14
+ input
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module Forms
5
+ class Builder
6
+ def typeahead(name, _options = {}, _html_options = {}, props: {})
7
+ props[:name] = name
8
+ @template.pb_rails("typeahead", props: props)
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module PbFormsHelper
5
+ # Renders a pb form with ::Playbook::Forms::Builder, that can render
6
+ # Playbook kits in the most railsie way.
7
+ #
8
+ # I.e.:
9
+ #
10
+ # pb_form_with model: @user do |f|
11
+ # f.text_field :name
12
+ # end
13
+ #
14
+ # The form can also validate the fields, and trigger the validation automatically:
15
+ #
16
+ # I.e.:
17
+ #
18
+ # pb_form_with model: @user, validate: true do |f|
19
+ # f.text_field :name, required: true
20
+ # end
21
+ #
22
+ # @param data [Hash] hash of data attributes
23
+ # @param validate [Boolean] whether validation should be triggered or not
24
+ # @see [#form_with] for other options
25
+ def pb_form_with(data: {}, validate: false, **kwargs, &block)
26
+ data = data.merge("pb-form-validation" => validate)
27
+ classname = ["pb-form", kwargs[:class]].join(" ")
28
+ options = kwargs.merge(
29
+ class: classname,
30
+ data: data,
31
+ builder: ::Playbook::Forms::Builder
32
+ )
33
+
34
+ content_for(:pb_js, javascript_tag(<<~JS))
35
+ window.addEventListener("DOMContentLoaded", function() { PbFormValidation.start() })
36
+ JS
37
+
38
+ form_with(**options, &block)
39
+ end
40
+ end
41
+ end
@@ -2,6 +2,8 @@
2
2
 
3
3
  module Playbook
4
4
  module PbKitHelper
5
+ include ::Playbook::PbFormsHelper
6
+
5
7
  def pb_rails(kit_name, props: {}, &block)
6
8
  kit = Playbook::KitResolver.resolve(kit_name.to_s)
7
9
  render_component kit.new(props, &block), &block
@@ -20,7 +20,7 @@ module Playbook
20
20
  end
21
21
 
22
22
  def validate!(input_value)
23
- warn("#{kit} Kit: The prop '#{name}' is deprecated and will be removed in a future release!") if deprecated #TODO: add some color for pop
23
+ warn("#{kit} Kit: The prop '#{name}' is deprecated and will be removed in a future release!") if deprecated && input_value #TODO: add some color for pop
24
24
 
25
25
  raise(Playbook::Props::Error, "#{kit} prop '#{name}' of type #{inspect.class} is required and needs a value") if required && input_value.nil?
26
26
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Playbook
4
- VERSION = "8.3.0"
4
+ VERSION = "9.2.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
4
+ version: 9.2.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-04-01 00:00:00.000000000 Z
12
+ date: 2021-04-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
@@ -75,128 +75,128 @@ dependencies:
75
75
  name: react-rails
76
76
  requirement: !ruby/object:Gem::Requirement
77
77
  requirements:
78
- - - '='
78
+ - - "~>"
79
79
  - !ruby/object:Gem::Version
80
- version: 2.6.0
80
+ version: '2.6'
81
81
  type: :runtime
82
82
  prerelease: false
83
83
  version_requirements: !ruby/object:Gem::Requirement
84
84
  requirements:
85
- - - '='
85
+ - - "~>"
86
86
  - !ruby/object:Gem::Version
87
- version: 2.6.0
87
+ version: '2.6'
88
88
  - !ruby/object:Gem::Dependency
89
89
  name: redcarpet
90
90
  requirement: !ruby/object:Gem::Requirement
91
91
  requirements:
92
- - - '='
92
+ - - "~>"
93
93
  - !ruby/object:Gem::Version
94
- version: 3.5.1
94
+ version: '3.5'
95
95
  type: :runtime
96
96
  prerelease: false
97
97
  version_requirements: !ruby/object:Gem::Requirement
98
98
  requirements:
99
- - - '='
99
+ - - "~>"
100
100
  - !ruby/object:Gem::Version
101
- version: 3.5.1
101
+ version: '3.5'
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: rouge
104
104
  requirement: !ruby/object:Gem::Requirement
105
105
  requirements:
106
- - - '='
106
+ - - "~>"
107
107
  - !ruby/object:Gem::Version
108
- version: 3.15.0
108
+ version: '3.15'
109
109
  type: :runtime
110
110
  prerelease: false
111
111
  version_requirements: !ruby/object:Gem::Requirement
112
112
  requirements:
113
- - - '='
113
+ - - "~>"
114
114
  - !ruby/object:Gem::Version
115
- version: 3.15.0
115
+ version: '3.15'
116
116
  - !ruby/object:Gem::Dependency
117
117
  name: sassc-rails
118
118
  requirement: !ruby/object:Gem::Requirement
119
119
  requirements:
120
- - - '='
120
+ - - "~>"
121
121
  - !ruby/object:Gem::Version
122
- version: 1.3.0
122
+ version: '1.3'
123
123
  type: :runtime
124
124
  prerelease: false
125
125
  version_requirements: !ruby/object:Gem::Requirement
126
126
  requirements:
127
- - - '='
127
+ - - "~>"
128
128
  - !ruby/object:Gem::Version
129
- version: 1.3.0
129
+ version: '1.3'
130
130
  - !ruby/object:Gem::Dependency
131
131
  name: slim-rails
132
132
  requirement: !ruby/object:Gem::Requirement
133
133
  requirements:
134
- - - '='
134
+ - - "~>"
135
135
  - !ruby/object:Gem::Version
136
- version: 3.2.0
136
+ version: '3.2'
137
137
  type: :runtime
138
138
  prerelease: false
139
139
  version_requirements: !ruby/object:Gem::Requirement
140
140
  requirements:
141
- - - '='
141
+ - - "~>"
142
142
  - !ruby/object:Gem::Version
143
- version: 3.2.0
143
+ version: '3.2'
144
144
  - !ruby/object:Gem::Dependency
145
145
  name: sprockets-rails
146
146
  requirement: !ruby/object:Gem::Requirement
147
147
  requirements:
148
- - - '='
148
+ - - "~>"
149
149
  - !ruby/object:Gem::Version
150
- version: 2.3.3
150
+ version: '2.3'
151
151
  type: :runtime
152
152
  prerelease: false
153
153
  version_requirements: !ruby/object:Gem::Requirement
154
154
  requirements:
155
- - - '='
155
+ - - "~>"
156
156
  - !ruby/object:Gem::Version
157
- version: 2.3.3
157
+ version: '2.3'
158
158
  - !ruby/object:Gem::Dependency
159
159
  name: view_component
160
160
  requirement: !ruby/object:Gem::Requirement
161
161
  requirements:
162
- - - '='
162
+ - - "~>"
163
163
  - !ruby/object:Gem::Version
164
- version: 2.23.2
164
+ version: '2.23'
165
165
  type: :runtime
166
166
  prerelease: false
167
167
  version_requirements: !ruby/object:Gem::Requirement
168
168
  requirements:
169
- - - '='
169
+ - - "~>"
170
170
  - !ruby/object:Gem::Version
171
- version: 2.23.2
171
+ version: '2.23'
172
172
  - !ruby/object:Gem::Dependency
173
173
  name: webpacker
174
174
  requirement: !ruby/object:Gem::Requirement
175
175
  requirements:
176
- - - '='
176
+ - - "~>"
177
177
  - !ruby/object:Gem::Version
178
- version: 4.2.2
178
+ version: '4.2'
179
179
  type: :runtime
180
180
  prerelease: false
181
181
  version_requirements: !ruby/object:Gem::Requirement
182
182
  requirements:
183
- - - '='
183
+ - - "~>"
184
184
  - !ruby/object:Gem::Version
185
- version: 4.2.2
185
+ version: '4.2'
186
186
  - !ruby/object:Gem::Dependency
187
187
  name: webpacker-react
188
188
  requirement: !ruby/object:Gem::Requirement
189
189
  requirements:
190
190
  - - "~>"
191
191
  - !ruby/object:Gem::Version
192
- version: 0.3.2
192
+ version: '0.3'
193
193
  type: :runtime
194
194
  prerelease: false
195
195
  version_requirements: !ruby/object:Gem::Requirement
196
196
  requirements:
197
197
  - - "~>"
198
198
  - !ruby/object:Gem::Version
199
- version: 0.3.2
199
+ version: '0.3'
200
200
  - !ruby/object:Gem::Dependency
201
201
  name: better_errors
202
202
  requirement: !ruby/object:Gem::Requirement
@@ -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
@@ -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 %>