playbook_ui 7.16.0.pre.alpha3 → 8.0.0.pre.alpha4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_overrides.scss +0 -4
  3. data/app/pb_kits/playbook/pb_docs/kit_api.html.erb +12 -0
  4. data/app/pb_kits/playbook/pb_docs/kit_api.rb +19 -0
  5. data/app/pb_kits/playbook/pb_docs/kit_example.html.erb +28 -0
  6. data/app/pb_kits/playbook/pb_docs/kit_example.rb +46 -0
  7. data/app/pb_kits/playbook/pb_filter/filter.html.erb +86 -0
  8. data/app/pb_kits/playbook/pb_filter/filter.rb +9 -5
  9. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +2 -2
  10. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +1 -1
  11. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form.html.erb +1 -2
  12. data/app/pb_kits/playbook/pb_form/form.html.erb +7 -0
  13. data/app/pb_kits/playbook/pb_form/form.rb +12 -14
  14. data/app/pb_kits/playbook/pb_form/form_builder.rb +1 -1
  15. data/app/pb_kits/playbook/pb_form/form_builder/action_area.html.erb +3 -0
  16. data/app/pb_kits/playbook/pb_form/form_builder/action_area.rb +5 -21
  17. data/app/pb_kits/playbook/pb_form/form_with.html.erb +18 -0
  18. data/app/pb_kits/playbook/pb_form/form_with.rb +34 -0
  19. data/app/pb_kits/playbook/pb_form/{_form_simple_form.html.erb → simple_form.html.erb} +3 -3
  20. data/app/pb_kits/playbook/pb_form/simple_form.rb +63 -0
  21. data/app/pb_kits/playbook/pb_layout/{_item.html.erb → item.html.erb} +1 -1
  22. data/app/pb_kits/playbook/pb_layout/item.rb +1 -5
  23. data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +1 -0
  24. data/lib/playbook.rb +14 -8
  25. data/lib/playbook/classnames.rb +34 -0
  26. data/lib/playbook/engine.rb +4 -10
  27. data/lib/playbook/kit_base.rb +13 -1
  28. data/lib/playbook/kit_resolver.rb +23 -0
  29. data/lib/playbook/markdown.rb +4 -0
  30. data/lib/playbook/markdown/helper.rb +153 -0
  31. data/lib/playbook/pb_doc_helper.rb +85 -0
  32. data/lib/playbook/pb_kit_helper.rb +3 -24
  33. data/lib/playbook/props.rb +3 -118
  34. data/lib/playbook/spacing.rb +76 -0
  35. data/lib/playbook/version.rb +1 -1
  36. data/lib/playbook/z_index.rb +31 -0
  37. metadata +29 -23
  38. data/app/controllers/playbook/application_controller.rb +0 -15
  39. data/app/helpers/playbook/application_helper.rb +0 -30
  40. data/app/helpers/playbook/pb_doc_helper.rb +0 -206
  41. data/app/helpers/playbook/pb_sample_helper.rb +0 -64
  42. data/app/helpers/playbook/redcarpet_helper.rb +0 -151
  43. data/app/pb_kits/playbook/config/_kit_example.html.erb +0 -23
  44. data/app/pb_kits/playbook/config/_kit_samples_list.html.erb +0 -3
  45. data/app/pb_kits/playbook/config/_kit_ui.html.erb +0 -43
  46. data/app/pb_kits/playbook/config/_pb_kit_api.html.erb +0 -16
  47. data/app/pb_kits/playbook/pb_filter/_filter.html.erb +0 -6
  48. data/app/pb_kits/playbook/pb_filter/templates/_core.html.erb +0 -67
  49. data/app/pb_kits/playbook/pb_filter/templates/_default.html.erb +0 -23
  50. data/app/pb_kits/playbook/pb_form/_form_form_with.html.erb +0 -13
  51. data/app/pb_kits/playbook/pb_form/form/form_with_form.rb +0 -39
  52. data/app/pb_kits/playbook/pb_form/form/simple_form_form.rb +0 -46
  53. data/app/pb_kits/playbook/pb_form/form_builder/form_with_form_builder.rb +0 -11
  54. data/app/pb_kits/playbook/pb_form/form_builder/simple_form_builder.rb +0 -25
  55. data/app/pb_kits/playbook/pb_kit/base.rb +0 -99
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5c1e2f80ae9beff061f5f66ba50e8abe2f5835015e89b63cd93f99fb0d31c7ea
4
- data.tar.gz: ee51bfbcfd083f64b0178d93b52c9f17b32b5ebcdafb826a3ae344b00fde5079
3
+ metadata.gz: '061590a33e32cccf2c0a6b1f434921d84723d0bcbbdbbc088fd3b5f3d13cb978'
4
+ data.tar.gz: '01921feae3d387c46af5f4c9e05121df1808fddaa37f18c842fcb61d68efd33b'
5
5
  SHA512:
6
- metadata.gz: 58175e42f87221ab469bffed9e7e8f93a924dd1fe8445281209650abbd46ec741d5aee71c7d0ec5471a33fc6cec9bd980644ef637ae648b67adfd7fa452e3b3d
7
- data.tar.gz: 87eaf4528894c395091859cdc13dddae33648e6dfb905c2e936286c6f647fb3d1b6456fd5eac6e8424731287ce5411e5a5adf172d0001057914a7fe0579e24e5
6
+ metadata.gz: 05f0cc3aed39dda97c7bff82f2630b05b26242623ea00848f0b0efd327dccd1087cd95ddda329a78ded17139ec7c4e715dec853b485da79d0f1a9dbeac978656
7
+ data.tar.gz: ba4974ce61c5a6b1f56f3bb3aae34cc63000dd22db441d2387c506e5c924947013575840e36cecab9272d731cd4a1337d25d4e8944d5520037a085b644a24af6
@@ -45,7 +45,3 @@
45
45
  .flatpickr-current-month .flatpickr-monthDropdown-months:hover, .numInputWrapper:hover {
46
46
  background-color: $white;
47
47
  }
48
-
49
- // .numInputWrapper:hover {
50
- // background-color: $white;
51
- // }
@@ -0,0 +1,12 @@
1
+ <div data-action="toggle" data-togglable="prop_example" class="pb--propsTable">
2
+ <%= pb_rails("title", props: { text: "Available Props", size: 3, margin_bottom: "sm" }) %>
3
+ <%= pb_rails("card", props: { padding: "none" }) do %>
4
+ <%= pb_rails("list", props: { xpadding: true }) do %>
5
+ <% kit_props.each do |key, _def| %>
6
+ <%= pb_rails("list/item") do %>
7
+ <%= key %>
8
+ <% end %>
9
+ <% end %>
10
+ <% end %>
11
+ <% end %>
12
+ </div>
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module PbDocs
5
+ class KitApi < Playbook::KitBase
6
+ prop :kit, type: Playbook::Props::String, required: true
7
+
8
+ def kit_props
9
+ kit_class.props
10
+ end
11
+
12
+ private
13
+
14
+ def kit_class
15
+ @kit_class ||= Playbook::KitResolver.resolve(kit.to_s)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,28 @@
1
+ <%= pb_rails("card", props: { classname: "pb--doc", padding: "none", dark: dark }) do %>
2
+ <div class="pb--kit-example">
3
+ <%= pb_rails("caption", props: { text: example_title }) %>
4
+ <br />
5
+ <%= example %>
6
+ <br>
7
+ </div>
8
+
9
+ <% if show_code %>
10
+ <div class="markdown pb--kit-example-markdown <%= dark ? "dark" : "" %>">
11
+ <%= markdown(description) %>
12
+ </div>
13
+ <div id="code-wrapper">
14
+ <div class="pb--codeControls">
15
+ <ul>
16
+ <li>
17
+ <a href="#" id="toggle-open" data-toggle="code_example">Code Example</a>
18
+ </li>
19
+ </ul>
20
+ </div>
21
+ <div class="pb--codeCopy" data-action="toggle" data-togglable="code_example" style="display: none" >
22
+ <%= pb_rails("section_separator", props: { dark: dark })%>
23
+ <a href="#" id="toggle-close" data-toggle="false" class="pb--close-toggle">Close</a>
24
+ <pre class="highlight"><%= raw rouge(source, highlighter) %></pre>
25
+ </div>
26
+ </div>
27
+ <% end %>
28
+ <% end %>
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module PbDocs
5
+ class KitExample < Playbook::KitBase
6
+ include Playbook::Markdown::Helper
7
+
8
+ prop :kit, type: Playbook::Props::String, required: true
9
+ prop :example_title, type: Playbook::Props::String, required: true
10
+ prop :example_key, type: Playbook::Props::String, required: true
11
+ prop :show_code, type: Playbook::Props::Boolean, default: true
12
+ prop :type, type: Playbook::Props::Enum, values: %w[rails react], default: "rails"
13
+ prop :dark, type: Playbook::Props::Boolean, default: false
14
+
15
+ def example
16
+ if type == "rails"
17
+ render inline: source
18
+ elsif type == "react"
19
+ react_component example_key.camelize, { dark: dark }
20
+ end
21
+ end
22
+
23
+ def description
24
+ @description ||= read_kit_file(kit, "_#{example_key}.md")
25
+ end
26
+
27
+ def highlighter
28
+ type.eql?("rails") ? "erb" : "react"
29
+ end
30
+
31
+ def source
32
+ @source ||= begin
33
+ extension = type == "react" ? "jsx" : "html.erb"
34
+ read_kit_file("_#{example_key}.#{extension}")
35
+ end
36
+ end
37
+
38
+ private
39
+
40
+ def read_kit_file(*args)
41
+ path = ::Playbook.kit_path(kit, "docs", *args)
42
+ path.exist? ? path.read : ""
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,86 @@
1
+ <%= content_tag(:div,
2
+ id: object.id,
3
+ data: object.data,
4
+ class: object.classname) do %>
5
+ <%= object.wrapper do %>
6
+ <%= pb_rails("flex", props: { orientation: "row", padding_right: "lg", vertical: "center" }) do %>
7
+ <% if (object.template != "sort_only") %>
8
+ <%= pb_rails("circle_icon_button", props: { variant: "secondary", icon: "filter", id:"filter#{object.id}"}) %>
9
+ <div class="maskContainer">
10
+ <div class="filters">
11
+ <div class="left_gradient"></div>
12
+ <% object.filters.each do |filter| %>
13
+ <% if filter[:name] == "" %>
14
+ <div>
15
+ <%= pb_rails("body", props: {
16
+ color: "light",
17
+ padding_left: "xs",
18
+ size: 4,
19
+ tag:"h4",
20
+ text: "No Filter Selected"
21
+ }) %>
22
+ </div>
23
+ <% else %>
24
+ <div class="filter">
25
+ <%= pb_rails("caption", props: { text: filter[:name]}) %>
26
+ <%= pb_rails("title", props: { size: 4, tag:"h4", text: filter[:value]}) %>
27
+ </div>
28
+ <% end %>
29
+ <% end %>
30
+ <div class="right_gradient"></div>
31
+ </div>
32
+ </div>
33
+ <% if (object.template != "default") %>
34
+ <%= pb_rails("caption", props: {text: object.result_text, size:"xs", classname:"filter-results"})%>
35
+ <% end %>
36
+ <% end %>
37
+
38
+ <% if (object.template == "single" ) || (object.template == "sort_only") %>
39
+ <% unless object.sort_menu == [{}] %>
40
+ <%= pb_rails("button", props: {variant: "link",id: "sort-button#{object.id}",padding_right: "none"}) do %>
41
+ <% object.sort_menu.each do |item| %>
42
+ <% if item[:active] == true %>
43
+ <%= item[:item] %>
44
+ <%= pb_rails("icon", props: { icon: object.sort_icon(item[:direction]), fixed_width: true }) %>
45
+ <% end %>
46
+ <% end %>
47
+ <% end %>
48
+ <% end %>
49
+ <% end %>
50
+ <% end %>
51
+
52
+ <% if (object.template == "default")%>
53
+ <%= pb_rails("section_separator") %>
54
+ <%= pb_rails("flex", props: {orientation: "row", vertical: "center", spacing: "between", classname: "filter-bottom"}) do %>
55
+ <%= pb_rails("title_count", props: {title: "Results:",count: object.results, align:"center"}) %>
56
+ <%= pb_rails("flex", props: {orientation: "row", vertical: "center"}) do %>
57
+ <%= pb_rails("caption", props: { text: "sort by:"}) %>
58
+ <%= pb_rails("button", props: {variant: "link", padding_right: "none", id: "sort-button#{object.id}"}) do %>
59
+ <% object.sort_menu.each do |item| %>
60
+ <% if item[:active] == true %>
61
+ <%= item[:item] %>
62
+ <%= pb_rails("icon", props: { icon: object.sort_icon(item[:direction]), fixed_width: true }) %>
63
+ <% end %>
64
+ <% end %>
65
+ <% end %>
66
+ <% end %>
67
+ <% end %>
68
+ <% end %>
69
+ <% end %>
70
+
71
+ <% if object.template != "sort_only"%>
72
+ <%= pb_rails("popover", props: {min_width: object.min_width, close_on_click: "outside", trigger_element_id: "filter#{object.id}", tooltip_id: "filter-form#{object.id}", position: 'bottom'}) do %>
73
+ <%= content %>
74
+ <% end %>
75
+ <%end%>
76
+
77
+ <% if object.template != "filter_only"%>
78
+ <%= pb_rails("popover", props: {classname: "pb_filter_sort_menu", close_on_click: "outside", trigger_element_id: "sort-button#{object.id}", tooltip_id: "sort-filter-btn-tooltip#{object.id}", position: 'bottom', padding: 'none'}) do %>
79
+ <%= pb_rails("list") do %>
80
+ <% object.sort_menu.each do |item| %>
81
+ <%= pb_rails("list/item") do%> <%= pb_rails("button", props: {variant: "link" ,classname: "p-0", text: item[:item], link: item[:link]}) %><% end %>
82
+ <% end %>
83
+ <% end %>
84
+ <% end %>
85
+ <% end %>
86
+ <% end %>
@@ -2,11 +2,7 @@
2
2
 
3
3
  module Playbook
4
4
  module PbFilter
5
- class Filter
6
- include Playbook::Props
7
-
8
- partial "pb_filter/filter"
9
-
5
+ class Filter < Playbook::KitBase
10
6
  prop :filters, type: Playbook::Props::HashArray, default: [{name: ''}]
11
7
  prop :sort_menu, type: Playbook::Props::HashArray, default: [{}]
12
8
  prop :results, type: Playbook::Props::Numeric
@@ -31,6 +27,14 @@ module Playbook
31
27
  end
32
28
  end
33
29
 
30
+ def wrapper(&block)
31
+ if object.background
32
+ pb_rails("card", props: { padding: "none" }, &block)
33
+ else
34
+ capture(&block)
35
+ end
36
+ end
37
+
34
38
  def sort_icon(direction)
35
39
  case direction
36
40
  when "asc"
@@ -13,7 +13,7 @@
13
13
  ]
14
14
  %>
15
15
 
16
- <%= pb_rails("form", props: { form_system_options: { scope: :example, method: :get } }) do |form| %>
16
+ <%= pb_rails("form", props: { form_system_options: { 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 } %>
@@ -32,7 +32,7 @@
32
32
  unchecked_value: "no",
33
33
  id: "checkbox-id",
34
34
  name: "checkbox-name",
35
- class: "checkbox-class"
35
+ class: "checkbox-class"
36
36
  %>
37
37
  <%= form.date_picker :example_date_picker_1, props: { label: true } %>
38
38
 
@@ -14,7 +14,7 @@
14
14
  %>
15
15
 
16
16
  <%= pb_rails("form", props: {
17
- form_system_options: { scope: :example, method: :get },
17
+ form_system_options: { scope: :example, method: :get, url: "" },
18
18
  validate: true
19
19
  }) do |form| %>
20
20
  <%= form.text_field :example_text_field, props: { label: true, required: true } %>
@@ -39,8 +39,7 @@
39
39
  ]
40
40
  %>
41
41
 
42
-
43
- <%= pb_rails("form", props: { form_system: "simple_form", form_system_options: [example_form_model.new, url: "", method: :get] }) do |form| %>
42
+ <%= pb_rails("form/simple_form", props: { options: { model: example_form_model.new, url: "", method: :get } }) do |form| %>
44
43
  <%= form.input :example_text_field, as: :string %>
45
44
  <%= form.input :example_phone_field, as: :tel %>
46
45
  <%= form.input :example_email_field, as: :email %>
@@ -0,0 +1,7 @@
1
+ <%=
2
+ pb_rails("form/#{form_system}", props: {
3
+ options: form_system_options,
4
+ children: children,
5
+ validate: validate
6
+ })
7
+ %>
@@ -1,28 +1,26 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # require_dependency "app/pb_kits/playbook/pb_form/form_builder"
4
-
5
3
  module Playbook
6
4
  module PbForm
7
- class Form
8
- include Playbook::Props
9
-
10
- clear_props
5
+ class Form < ::Playbook::KitBase
11
6
  prop :form_system, type: Playbook::Props::Enum,
12
7
  values: %w[form_with simple_form],
13
8
  default: "form_with"
14
9
  prop :form_system_options, type: Playbook::Props::Base
15
- prop :children, type: Playbook::Props::Proc
16
10
  prop :validate, type: Playbook::Props::Boolean, default: false
17
11
 
18
- delegate :to_partial_path, to: :specific_form
19
- delegate :merged_form_system_options, to: :specific_form
20
- delegate :form_builder, to: :specific_form
21
-
22
- private
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
23
21
 
24
- def specific_form
25
- @specific_form ||= "#{self.class}::#{form_system.classify}Form".constantize.new(self)
22
+ def render_in(view_context, &_block)
23
+ super(view_context, &nil)
26
24
  end
27
25
  end
28
26
  end
@@ -21,7 +21,7 @@ module Playbook
21
21
  prepend(DatePickerField)
22
22
 
23
23
  def actions(&block)
24
- ActionArea.new(self).wrapper(&block)
24
+ @template.render_component ActionArea.new(submit_default_value: submit_default_value), &block
25
25
  end
26
26
  end
27
27
  end
@@ -0,0 +1,3 @@
1
+ <ol class="pb-form-actions">
2
+ <%= content %>
3
+ </ol>
@@ -3,10 +3,8 @@
3
3
  module Playbook
4
4
  module PbForm
5
5
  module FormBuilder
6
- class ActionArea
7
- def initialize(form_builder)
8
- self.form_builder = form_builder
9
- end
6
+ class ActionArea < Playbook::KitBase
7
+ prop :submit_default_value, type: Playbook::Props::String
10
8
 
11
9
  def submit(value = nil, props: {})
12
10
  props[:type] ||= "submit"
@@ -14,26 +12,12 @@ module Playbook
14
12
  end
15
13
 
16
14
  def button(value = nil, props:)
17
- props[:text] ||= value || form_builder.send(:submit_default_value)
18
-
19
- template.content_tag(:li) do
20
- template.pb_rails("button", props: props)
21
- end
22
- end
15
+ props[:text] ||= value || submit_default_value
23
16
 
24
- def wrapper
25
- template.content_tag(:ol, class: "pb-form-actions") do
26
- yield self
17
+ content_tag(:li) do
18
+ pb_rails("button", props: props)
27
19
  end
28
20
  end
29
-
30
- private
31
-
32
- attr_accessor :form_builder
33
-
34
- def template
35
- form_builder.instance_variable_get("@template")
36
- end
37
21
  end
38
22
  end
39
23
  end
@@ -0,0 +1,18 @@
1
+ <%= form_with(id: id,
2
+ aria: aria,
3
+ class: classname,
4
+ data: data,
5
+ builder: form_builder,
6
+ **options) do |form| %>
7
+ <% instance_exec form, &children %>
8
+
9
+ <% if validate %>
10
+ <% content_for :pb_js do %>
11
+ <%= javascript_tag do %>
12
+ window.addEventListener('DOMContentLoaded', function() {
13
+ PbFormValidation.start()
14
+ })
15
+ <% end %>
16
+ <% end %>
17
+ <% end %>
18
+ <% end %>
@@ -0,0 +1,34 @@
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 options
18
+ { url: "" }.merge(Hash(prop(:options)))
19
+ end
20
+
21
+ def classname
22
+ [generate_classname("pb-form"), options[:class]].join(" ")
23
+ end
24
+
25
+ def form_builder
26
+ ::Playbook::PbForm::FormWith::FormBuilder
27
+ end
28
+
29
+ def render_in(view_context, &_block)
30
+ super(view_context, &nil)
31
+ end
32
+ end
33
+ end
34
+ end