playbook_ui 7.16.0.pre.alpha5 → 8.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_flatpickr_styles.scss +0 -3
  3. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_header_styles.scss +7 -0
  4. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_overrides.scss +4 -1
  5. data/app/pb_kits/playbook/pb_docs/kit_api.html.erb +12 -0
  6. data/app/pb_kits/playbook/pb_docs/kit_api.rb +19 -0
  7. data/app/pb_kits/playbook/pb_docs/kit_example.html.erb +28 -0
  8. data/app/pb_kits/playbook/pb_docs/kit_example.rb +46 -0
  9. data/app/pb_kits/playbook/pb_filter/filter.html.erb +86 -0
  10. data/app/pb_kits/playbook/pb_filter/filter.rb +9 -5
  11. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +2 -2
  12. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +1 -1
  13. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form.html.erb +1 -2
  14. data/app/pb_kits/playbook/pb_form/form.html.erb +7 -0
  15. data/app/pb_kits/playbook/pb_form/form.rb +12 -14
  16. data/app/pb_kits/playbook/pb_form/form_builder.rb +1 -1
  17. data/app/pb_kits/playbook/pb_form/form_builder/action_area.html.erb +3 -0
  18. data/app/pb_kits/playbook/pb_form/form_builder/action_area.rb +5 -21
  19. data/app/pb_kits/playbook/pb_form/form_with.html.erb +18 -0
  20. data/app/pb_kits/playbook/pb_form/form_with.rb +34 -0
  21. data/app/pb_kits/playbook/pb_form/{_form_simple_form.html.erb → simple_form.html.erb} +3 -3
  22. data/app/pb_kits/playbook/pb_form/simple_form.rb +63 -0
  23. data/app/pb_kits/playbook/pb_layout/{_item.html.erb → item.html.erb} +1 -1
  24. data/app/pb_kits/playbook/pb_layout/item.rb +1 -5
  25. data/app/pb_kits/playbook/pb_progress_step/_progress_step_item.jsx +2 -5
  26. data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +1 -0
  27. data/lib/playbook.rb +14 -8
  28. data/lib/playbook/classnames.rb +34 -0
  29. data/lib/playbook/engine.rb +4 -10
  30. data/lib/playbook/kit_base.rb +13 -1
  31. data/lib/playbook/kit_resolver.rb +23 -0
  32. data/lib/playbook/markdown.rb +4 -0
  33. data/lib/playbook/markdown/helper.rb +153 -0
  34. data/lib/playbook/pb_doc_helper.rb +89 -0
  35. data/lib/playbook/pb_kit_helper.rb +3 -24
  36. data/lib/playbook/props.rb +3 -118
  37. data/lib/playbook/spacing.rb +76 -0
  38. data/lib/playbook/version.rb +1 -1
  39. data/lib/playbook/z_index.rb +31 -0
  40. metadata +31 -25
  41. data/app/controllers/playbook/application_controller.rb +0 -15
  42. data/app/helpers/playbook/application_helper.rb +0 -30
  43. data/app/helpers/playbook/pb_doc_helper.rb +0 -206
  44. data/app/helpers/playbook/pb_sample_helper.rb +0 -64
  45. data/app/helpers/playbook/redcarpet_helper.rb +0 -151
  46. data/app/pb_kits/playbook/config/_kit_example.html.erb +0 -23
  47. data/app/pb_kits/playbook/config/_kit_samples_list.html.erb +0 -3
  48. data/app/pb_kits/playbook/config/_kit_ui.html.erb +0 -43
  49. data/app/pb_kits/playbook/config/_pb_kit_api.html.erb +0 -16
  50. data/app/pb_kits/playbook/pb_filter/_filter.html.erb +0 -6
  51. data/app/pb_kits/playbook/pb_filter/templates/_core.html.erb +0 -67
  52. data/app/pb_kits/playbook/pb_filter/templates/_default.html.erb +0 -23
  53. data/app/pb_kits/playbook/pb_form/_form_form_with.html.erb +0 -13
  54. data/app/pb_kits/playbook/pb_form/form/form_with_form.rb +0 -39
  55. data/app/pb_kits/playbook/pb_form/form/simple_form_form.rb +0 -46
  56. data/app/pb_kits/playbook/pb_form/form_builder/form_with_form_builder.rb +0 -11
  57. data/app/pb_kits/playbook/pb_form/form_builder/simple_form_builder.rb +0 -25
  58. 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: 7506fd4ba5e3aabe6c2f01f55ae4a9d35f36da9c6197e6eebba0ba5c035e7f47
4
- data.tar.gz: 9f6cb471538b8ce9e1563a386ceee044db8df80ac31b276b49794783ddf5a35b
3
+ metadata.gz: cf9b3f5c473d741e312f2688e16d3aad2f37b6a18c4dd11bf878dd538ab11199
4
+ data.tar.gz: 3cd322faca0eba26a65c5e84277d9691f301bd116d95d9bdefab56c50c699c80
5
5
  SHA512:
6
- metadata.gz: e69547b69f74fa31c73c051db1431febbaf041e1b285dbde95d2add050e6518a973b4a355a6628a208dba788d8c3fe43364d83acfea02872c7871e04a9022c08
7
- data.tar.gz: 1bdf69f04bf3913e87dbb780886e7f38df6044149ba6fcd6b8fad95565d2e706f45a85c903b3abeacf64d1604b9f8de4f11d23b946b63b359308f17f058911b9
6
+ metadata.gz: a98eec496b2a72d53fd4d7e590ef9e86aa0b18fc66d019b50d18733b774952746f06bda29c30ffcdfffb1ec715460cb3fe6ed529f5e647063a7891352ee17805
7
+ data.tar.gz: 8afa59cc9e0f784b0267ef52f83597b4f097a413a0a819f623a24ec2da2ebb1eaa2619aa237788b76c738d76cf600397b82624f0f96d54e3e31b153acbc68dc5
@@ -289,9 +289,6 @@
289
289
  .numInputWrapper span svg path {
290
290
  fill: rgba(0,0,0,0.5);
291
291
  }
292
- .numInputWrapper:hover {
293
- background: rgba(0,0,0,0.05);
294
- }
295
292
  .numInputWrapper:hover span {
296
293
  opacity: 1;
297
294
  }
@@ -13,6 +13,7 @@
13
13
  }
14
14
  .flatpickr-monthDropdown-months {
15
15
  appearance: none;
16
+ -webkit-appearance: none;
16
17
  @include pb_title_4;
17
18
  height: $space_xl;
18
19
  width: $space_xs * 12;
@@ -29,10 +30,14 @@
29
30
  }
30
31
  .numInputWrapper {
31
32
  display: contents;
33
+ display: -webkit-box;
34
+ display: -webkit-flex;
32
35
  .numInput {
33
36
  @include pb_title_4;
34
37
  border: 0;
35
38
  appearance: none;
39
+ -webkit-appearance: none;
40
+ border-radius: 0;
36
41
  background-color: transparent;
37
42
  border-left: solid 1px $border_light;
38
43
  padding-left: $space_md - 1.5;
@@ -45,6 +50,7 @@
45
50
  @media (hover: hover) {
46
51
  &:hover {
47
52
  cursor: pointer;
53
+ background-color: $white;
48
54
  }
49
55
  }
50
56
  }
@@ -61,6 +67,7 @@
61
67
  }
62
68
  .year-dropdown-icon {
63
69
  align-self: center;
70
+ -webkit-align-self: center;
64
71
  margin-top: $space_xs - 3;
65
72
  width: $space_xs + 2;
66
73
  position: relative;
@@ -41,4 +41,7 @@
41
41
  .flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {
42
42
  -webkit-box-shadow: none;
43
43
  box-shadow: none;
44
- }
44
+ }
45
+ .flatpickr-current-month .flatpickr-monthDropdown-months:hover, .numInputWrapper:hover {
46
+ background-color: $white;
47
+ }
@@ -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