playbook_ui 10.15.1 → 10.18.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (113) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +3 -0
  3. data/app/pb_kits/playbook/pb_background/background.test.js +22 -0
  4. data/app/pb_kits/playbook/pb_bar_graph/_bar_graph.jsx +3 -0
  5. data/app/pb_kits/playbook/pb_bar_graph/bar_graph.rb +3 -0
  6. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_colors.html.erb +26 -0
  7. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_colors.jsx +37 -0
  8. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_colors.md +2 -0
  9. data/app/pb_kits/playbook/pb_bar_graph/docs/example.yml +2 -0
  10. data/app/pb_kits/playbook/pb_bar_graph/docs/index.js +1 -0
  11. data/app/pb_kits/playbook/pb_button/_button.jsx +3 -3
  12. data/app/pb_kits/playbook/pb_button/_button.scss +17 -0
  13. data/app/pb_kits/playbook/pb_button/button.rb +6 -3
  14. data/app/pb_kits/playbook/pb_button/button.test.js +13 -0
  15. data/app/pb_kits/playbook/pb_button/docs/_button_size.html.erb +3 -0
  16. data/app/pb_kits/playbook/pb_button/docs/_button_size.jsx +26 -0
  17. data/app/pb_kits/playbook/pb_button/docs/_button_size.md +1 -0
  18. data/app/pb_kits/playbook/pb_button/docs/example.yml +2 -0
  19. data/app/pb_kits/playbook/pb_button/docs/index.js +1 -0
  20. data/app/pb_kits/playbook/pb_caption/_caption.jsx +17 -4
  21. data/app/pb_kits/playbook/pb_caption/_caption.scss +25 -8
  22. data/app/pb_kits/playbook/pb_caption/_caption_mixin.scss +17 -0
  23. data/app/pb_kits/playbook/pb_caption/caption.rb +5 -1
  24. data/app/pb_kits/playbook/pb_caption/docs/_caption_example.html.erb +3 -0
  25. data/app/pb_kits/playbook/pb_caption/docs/_caption_example.jsx +27 -0
  26. data/app/pb_kits/playbook/pb_caption/docs/_caption_example.md +1 -0
  27. data/app/pb_kits/playbook/pb_caption/docs/example.yml +7 -4
  28. data/app/pb_kits/playbook/pb_caption/docs/index.js +1 -0
  29. data/app/pb_kits/playbook/pb_card/_card.jsx +1 -3
  30. data/app/pb_kits/playbook/pb_card/_card.scss +0 -6
  31. data/app/pb_kits/playbook/pb_card/_card_mixin.scss +1 -8
  32. data/app/pb_kits/playbook/pb_card/card.html.erb +2 -0
  33. data/app/pb_kits/playbook/pb_card/card.rb +0 -8
  34. data/app/pb_kits/playbook/pb_card/docs/_card_background.html.erb +1 -1
  35. data/app/pb_kits/playbook/pb_card/docs/_card_content.html.erb +3 -1
  36. data/app/pb_kits/playbook/pb_card/docs/_card_content.jsx +9 -2
  37. data/app/pb_kits/playbook/pb_circle_chart/_circle_chart.jsx +3 -0
  38. data/app/pb_kits/playbook/pb_circle_chart/circle_chart.rb +6 -0
  39. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_colors.md +2 -0
  40. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default_date.md +3 -1
  41. data/app/pb_kits/playbook/pb_date_time_stacked/date_time_stacked.test.js +13 -4
  42. data/app/pb_kits/playbook/pb_docs/kit_example.rb +4 -0
  43. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.rb +4 -0
  44. data/app/pb_kits/playbook/pb_flex/_flex.jsx +4 -0
  45. data/app/pb_kits/playbook/pb_flex/_flex.scss +17 -1
  46. data/app/pb_kits/playbook/pb_flex/_flex_item.jsx +6 -2
  47. data/app/pb_kits/playbook/pb_flex/_flex_item.scss +22 -0
  48. data/app/pb_kits/playbook/pb_flex/docs/_flex_item.html.erb +12 -1
  49. data/app/pb_kits/playbook/pb_flex/docs/_flex_item.md +2 -0
  50. data/app/pb_kits/playbook/pb_flex/docs/_flex_item_align_self.html.erb +89 -0
  51. data/app/pb_kits/playbook/pb_flex/docs/_flex_item_align_self.jsx +210 -0
  52. data/app/pb_kits/playbook/pb_flex/docs/_flex_item_align_self.md +5 -0
  53. data/app/pb_kits/playbook/pb_flex/docs/_flex_item_example.jsx +27 -0
  54. data/app/pb_kits/playbook/pb_flex/docs/_flex_item_example.md +2 -0
  55. data/app/pb_kits/playbook/pb_flex/docs/example.yml +2 -0
  56. data/app/pb_kits/playbook/pb_flex/docs/index.js +1 -0
  57. data/app/pb_kits/playbook/pb_flex/flex.rb +14 -1
  58. data/app/pb_kits/playbook/pb_flex/flex_item.rb +16 -1
  59. data/app/pb_kits/playbook/pb_gauge/_gauge.jsx +3 -0
  60. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_colors.html.erb +12 -0
  61. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_colors.jsx +19 -0
  62. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_colors.md +2 -0
  63. data/app/pb_kits/playbook/pb_gauge/docs/example.yml +2 -0
  64. data/app/pb_kits/playbook/pb_gauge/docs/index.js +1 -0
  65. data/app/pb_kits/playbook/pb_gauge/gauge.rb +2 -0
  66. data/app/pb_kits/playbook/pb_icon/icon.rb +4 -0
  67. data/app/pb_kits/playbook/pb_icon_circle/_icon_circle.scss +2 -2
  68. data/app/pb_kits/playbook/pb_icon_circle/docs/_icon_circle_color.html.erb +1 -1
  69. data/app/pb_kits/playbook/pb_icon_circle/docs/_icon_circle_color.jsx +1 -1
  70. data/app/pb_kits/playbook/pb_icon_circle/docs/_icon_circle_color.md +1 -0
  71. data/app/pb_kits/playbook/pb_icon_circle/icon_circle.rb +1 -1
  72. data/app/pb_kits/playbook/pb_icon_stat_value/icon_stat_value.rb +2 -0
  73. data/app/pb_kits/playbook/pb_image/_image.jsx +4 -1
  74. data/app/pb_kits/playbook/pb_image/_image.scss +24 -8
  75. data/app/pb_kits/playbook/pb_image/docs/_transition_image.html.erb +54 -0
  76. data/app/pb_kits/playbook/pb_image/docs/_transition_image.jsx +77 -0
  77. data/app/pb_kits/playbook/pb_image/docs/_transition_image.md +1 -0
  78. data/app/pb_kits/playbook/pb_image/docs/example.yml +2 -0
  79. data/app/pb_kits/playbook/pb_image/docs/index.js +1 -0
  80. data/app/pb_kits/playbook/pb_image/image.html.erb +1 -1
  81. data/app/pb_kits/playbook/pb_image/image.rb +8 -1
  82. data/app/pb_kits/playbook/pb_image/image.test.js +9 -4
  83. data/app/pb_kits/playbook/pb_line_graph/_line_graph.jsx +4 -1
  84. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_colors.html.erb +26 -0
  85. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_colors.jsx +37 -0
  86. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_colors.md +2 -0
  87. data/app/pb_kits/playbook/pb_line_graph/docs/example.yml +2 -0
  88. data/app/pb_kits/playbook/pb_line_graph/docs/index.js +1 -0
  89. data/app/pb_kits/playbook/pb_line_graph/line_graph.rb +3 -0
  90. data/app/pb_kits/playbook/pb_list/list.rb +2 -0
  91. data/app/pb_kits/playbook/pb_select/select.rb +3 -0
  92. data/app/pb_kits/playbook/pb_source/source.rb +3 -0
  93. data/app/pb_kits/playbook/pb_text_input/text_input.rb +2 -0
  94. data/app/pb_kits/playbook/pb_title/docs/_title_light.html.erb +4 -1
  95. data/app/pb_kits/playbook/pb_title/title.html.erb +4 -2
  96. data/app/pb_kits/playbook/plugins/pb_chart.js +17 -25
  97. data/app/pb_kits/playbook/tokens/_colors.scss +3 -1
  98. data/app/pb_kits/playbook/utilities/_cursor.scss +3 -0
  99. data/app/pb_kits/playbook/utilities/_display.scss +23 -0
  100. data/app/pb_kits/playbook/utilities/_shadow.scss +11 -0
  101. data/app/pb_kits/playbook/utilities/globalProps.js +19 -1
  102. data/lib/playbook/classnames.rb +3 -0
  103. data/lib/playbook/cursor.rb +29 -0
  104. data/lib/playbook/display.rb +29 -0
  105. data/lib/playbook/engine.rb +0 -1
  106. data/lib/playbook/kit_base.rb +6 -0
  107. data/lib/playbook/markdown/helper.rb +2 -2
  108. data/lib/playbook/pb_doc_helper.rb +4 -0
  109. data/lib/playbook/props/base.rb +2 -2
  110. data/lib/playbook/shadow.rb +29 -0
  111. data/lib/playbook/version.rb +2 -2
  112. data/lib/playbook.rb +3 -0
  113. metadata +45 -15
@@ -43,6 +43,7 @@ module Playbook
43
43
  dark ? "dark" : nil
44
44
  end
45
45
 
46
+ # rubocop:disable Style/CaseLikeIf
46
47
  def layout_class
47
48
  if layout == "right"
48
49
  "layout_right"
@@ -52,6 +53,7 @@ module Playbook
52
53
  ""
53
54
  end
54
55
  end
56
+ # rubocop:enable Style/CaseLikeIf
55
57
 
56
58
  def size_class
57
59
  size ? "large" : nil
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # rubocop:disable Style/StringConcatenation
3
4
  require "action_view"
4
5
 
5
6
  module Playbook
@@ -72,3 +73,5 @@ module Playbook
72
73
  end
73
74
  end
74
75
  end
76
+
77
+ # rubocop:enable Style/StringConcatenation
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # rubocop:disable Style/SingleArgumentDig, Style/HashLikeCase
3
4
  module Playbook
4
5
  module PbSource
5
6
  class Source < Playbook::KitBase
@@ -59,3 +60,5 @@ module Playbook
59
60
  end
60
61
  end
61
62
  end
63
+
64
+ # rubocop:enable Style/SingleArgumentDig, Style/HashLikeCase
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # rubocop:disable Style/SingleArgumentDig
3
4
  module Playbook
4
5
  module PbTextInput
5
6
  class TextInput < Playbook::KitBase
@@ -86,3 +87,4 @@ module Playbook
86
87
  end
87
88
  end
88
89
  end
90
+ # rubocop:enable Style/SingleArgumentDig
@@ -1,4 +1,7 @@
1
- <%= pb_rails("title", props: { text: "Default Title" }) %>
1
+ <%= pb_rails("title", props: {
2
+ }) do %>
3
+ Default Title
4
+ <% end %>
2
5
 
3
6
  <br/>
4
7
 
@@ -1,5 +1,7 @@
1
- <%= content_tag(object.tag, object.text,
1
+ <%= content_tag(object.tag,
2
2
  aria: object.aria,
3
3
  id: object.id,
4
4
  data: object.data,
5
- class: object.classname) %>
5
+ class: object.classname) do %>
6
+ <%= content.presence || object.text %>
7
+ <% end %>
@@ -10,25 +10,14 @@ import solidGauge from 'highcharts/modules/solid-gauge'
10
10
  pie(Highcharts)
11
11
 
12
12
  // Map Data Color String Props to our SCSS Variables
13
+
13
14
  const mapColors = (array) => {
15
+ const regex = /(data)\-[1-8]/ //eslint-disable-line
16
+
14
17
  const newArray = array.map((item) => {
15
- return item == 'data-1'
16
- ? `${colors.data_1}`
17
- : item == 'data-2'
18
- ? `${colors.data_2}`
19
- : item == 'data-3'
20
- ? `${colors.data_3}`
21
- : item == 'data-4'
22
- ? `${colors.data_4}`
23
- : item == 'data-5'
24
- ? `${colors.data_5}`
25
- : item == 'data-6'
26
- ? `${colors.data_6}`
27
- : item == 'data-7'
28
- ? `${colors.data_7}`
29
- : item == 'data-8'
30
- ? `${colors.data_8}`
31
- : ''
18
+ return regex.test(item)
19
+ ? `${colors[`data_${item[item.length - 1]}`]}`
20
+ : item
32
21
  })
33
22
  return newArray
34
23
  }
@@ -72,13 +61,13 @@ class pbChart {
72
61
  if (this.options.type == 'variablepie' || this.options.type == 'pie'){
73
62
  this.setupPieChart(options)
74
63
  } else if (this.options.type == 'gauge') {
75
- this.setupGauge()
64
+ this.setupGauge(options)
76
65
  } else {
77
- this.setupChart()
66
+ this.setupChart(options)
78
67
  }
79
68
  }
80
69
 
81
- setupGauge() {
70
+ setupGauge(options) {
82
71
  highchartsMore(Highcharts)
83
72
  solidGauge(Highcharts)
84
73
  Highcharts.setOptions(highchartsTheme)
@@ -128,19 +117,21 @@ class pbChart {
128
117
  pointFormat: this.defaults.tooltipHtml,
129
118
  followPointer: true,
130
119
  },
120
+ colors: options.colors !== undefined && options.colors.length > 0 ? mapColors(options.colors) : highchartsTheme.colors,
131
121
  plotOptions: {
132
122
  series: {
133
123
  animation: !this.defaults.disableAnimation,
134
124
  },
135
125
  solidgauge: {
126
+ borderColor: options.colors !== undefined && options.colors.length === 1 ? mapColors(options.colors).join() : highchartsTheme.colors[0],
136
127
  dataLabels: {
137
128
  format: `<span class="prefix">${this.defaults.prefix}</span>` +
138
129
  '<span class="fix">{y:,f}</span>' +
139
130
  `<span class="suffix">${this.defaults.suffix}</span>`,
140
- },
141
- },
131
+ } },
142
132
  },
143
- })
133
+ },
134
+ )
144
135
  document.querySelectorAll('.gauge-pane').forEach((pane) => pane.setAttribute('stroke-linejoin', 'round'))
145
136
  if (document.querySelector('.prefix')) {
146
137
  document.querySelectorAll('.prefix').forEach((prefix) => prefix.setAttribute('y', '28'))
@@ -155,6 +146,7 @@ class pbChart {
155
146
  text: this.defaults.title,
156
147
  },
157
148
  chart: {
149
+ height: this.defaults.height,
158
150
  type: this.defaults.type,
159
151
  events: {
160
152
  render: (event) => alignBlockElement(event),
@@ -172,7 +164,6 @@ class pbChart {
172
164
  format: this.defaults.dataLabelHtml,
173
165
  },
174
166
  showInLegend: this.defaults.showInLegend,
175
-
176
167
  },
177
168
  },
178
169
 
@@ -195,7 +186,7 @@ class pbChart {
195
186
  })
196
187
  }
197
188
 
198
- setupChart() {
189
+ setupChart(options) {
199
190
  Highcharts.setOptions(highchartsTheme)
200
191
 
201
192
  const configOptions = {
@@ -222,6 +213,7 @@ class pbChart {
222
213
  legend: {
223
214
  enabled: this.defaults.legend,
224
215
  },
216
+ colors: options.colors !== undefined && options.colors.length > 0 ? mapColors(options.colors) : highchartsTheme.colors,
225
217
  plotOptions: {
226
218
  series: {
227
219
  pointStart: this.defaults.pointStart,
@@ -12,6 +12,7 @@ $red: #FF2229;
12
12
  $yellow: #F9BB00;
13
13
  $green: #00CA74;
14
14
  $orange: #FD804C;
15
+ $default: #93a8b8;
15
16
  $colors: (
16
17
  royal: $royal,
17
18
  purple: $purple,
@@ -19,7 +20,8 @@ $colors: (
19
20
  red: $red,
20
21
  yellow: $yellow,
21
22
  green: $green,
22
- orange: $orange
23
+ orange: $orange,
24
+ default: $default,
23
25
  );
24
26
 
25
27
  /* Specialty Gradient -----------------*/
@@ -0,0 +1,3 @@
1
+ .cursor_pointer {
2
+ cursor: pointer;
3
+ }
@@ -0,0 +1,23 @@
1
+ .display_block {
2
+ display: block;
3
+ }
4
+
5
+ .display_inline_block {
6
+ display: inline-block;
7
+ }
8
+
9
+ .display_inline {
10
+ display: inline;
11
+ }
12
+
13
+ .display_flex {
14
+ display: flex;
15
+ }
16
+
17
+ .display_inline_flex {
18
+ display: inline-flex;
19
+ }
20
+
21
+ .display_hidden {
22
+ display: none;
23
+ }
@@ -0,0 +1,11 @@
1
+ @import "../tokens/exports/shadows";
2
+
3
+ @mixin shadow-classes($shadows-list) {
4
+ @each $name, $shadow in $shadows-list {
5
+ .#{$name} {
6
+ box-shadow: $shadow;
7
+ }
8
+ }
9
+ }
10
+ @include shadow-classes($box_shadows);
11
+
@@ -57,10 +57,28 @@ const zIndexProps = ({ zIndex }) => {
57
57
  return css
58
58
  }
59
59
 
60
+ const shadowProps = ({ shadow }) => {
61
+ let css = ''
62
+ css += shadow ? `shadow_${shadow} ` : ''
63
+ return css
64
+ }
65
+
66
+ const displayProps = ({ display }) => {
67
+ let css = ''
68
+ css += display ? `display_${display} ` : ''
69
+ return css
70
+ }
71
+
72
+ const cursorProps = ({ cursor }) => {
73
+ let css = ''
74
+ css += cursor ? `cursor_${cursor} ` : ''
75
+ return css
76
+ }
77
+
60
78
  // All Exported as a single function
61
79
  export const globalProps = (props, defaultProps = {}) => {
62
80
  const allProps = { ...props, ...defaultProps }
63
- return spacingProps(allProps) + darkProps(allProps) + maxWidthProps(allProps) + zIndexProps(allProps) + numberSpacingProps(allProps)
81
+ return spacingProps(allProps) + darkProps(allProps) + maxWidthProps(allProps) + zIndexProps(allProps) + numberSpacingProps(allProps) + shadowProps(allProps) + displayProps(allProps) + cursorProps(allProps)
64
82
  }
65
83
 
66
84
  export const deprecatedProps = (kit, props = []) => {
@@ -16,6 +16,9 @@ module Playbook
16
16
  max_width_props,
17
17
  z_index_props,
18
18
  number_spacing_props,
19
+ shadow_props,
20
+ display_props,
21
+ cursor_props,
19
22
  ].compact.join(" ")
20
23
  end
21
24
 
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module Cursor
5
+ def self.included(base)
6
+ base.prop :cursor
7
+ end
8
+
9
+ def cursor_props
10
+ selected_props = cursor_options.keys.select { |sk| try(sk) }
11
+ return nil unless selected_props.present?
12
+
13
+ selected_props.map do |k|
14
+ cursor_value = send(k)
15
+ "cursor_#{cursor_value}" if cursor_values.include? cursor_value
16
+ end.compact.join(" ")
17
+ end
18
+
19
+ def cursor_options
20
+ {
21
+ cursor: "cursor",
22
+ }
23
+ end
24
+
25
+ def cursor_values
26
+ %w[pointer]
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module Display
5
+ def self.included(base)
6
+ base.prop :display
7
+ end
8
+
9
+ def display_props
10
+ selected_props = display_options.keys.select { |sk| try(sk) }
11
+ return nil unless selected_props.present?
12
+
13
+ selected_props.map do |k|
14
+ display_value = send(k)
15
+ "display_#{display_value}" if display_values.include? display_value
16
+ end.compact.join(" ")
17
+ end
18
+
19
+ def display_options
20
+ {
21
+ display: "display",
22
+ }
23
+ end
24
+
25
+ def display_values
26
+ %w[block inline_block inline flex inline_flex hidden]
27
+ end
28
+ end
29
+ end
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "action_view/railtie"
4
- require "view_component/engine"
5
4
  require "webpacker/react"
6
5
 
7
6
  module Playbook
@@ -4,6 +4,9 @@ require "playbook/classnames"
4
4
  require "playbook/spacing"
5
5
  require "playbook/z_index"
6
6
  require "playbook/number_spacing"
7
+ require "playbook/shadow"
8
+ require "playbook/display"
9
+ require "playbook/cursor"
7
10
 
8
11
  module Playbook
9
12
  class KitBase < ViewComponent::Base
@@ -13,6 +16,9 @@ module Playbook
13
16
  include Playbook::Spacing
14
17
  include Playbook::ZIndex
15
18
  include Playbook::NumberSpacing
19
+ include Playbook::Shadow
20
+ include Playbook::Display
21
+ include Playbook::Cursor
16
22
 
17
23
  prop :id
18
24
  prop :data, type: Playbook::Props::Hash, default: {}
@@ -80,7 +80,7 @@ module Playbook
80
80
  loop do
81
81
  break unless @headers.include?(permalink)
82
82
 
83
- permalink.gsub!(/\_(\d+)$/, "_#{Regexp.last_match(1).to_i + 1}")
83
+ permalink.gsub!(/_(\d+)$/, "_#{Regexp.last_match(1).to_i + 1}")
84
84
  end
85
85
  end
86
86
  @headers << permalink
@@ -121,7 +121,7 @@ module Playbook
121
121
  if @list_items[0].include?("[do]") || @list_items[0].include?("[dont]")
122
122
  @element_items = []
123
123
  @list_items.each do |item, _index|
124
- item.gsub(%r{\<li>(.*)\</li>}) do
124
+ item.gsub(%r{<li>(.*)</li>}) do
125
125
  @element_items.push(Regexp.last_match(1))
126
126
  end
127
127
  end
@@ -26,6 +26,7 @@ module Playbook
26
26
  end
27
27
 
28
28
  # Deal with lists of kits, used in Playbook doc and Externally
29
+ # rubocop:disable Style/StringConcatenation
29
30
  def pb_kits(type: "rails", limit_examples: false, dark_mode: false)
30
31
  display_kits = []
31
32
  kits = get_kits
@@ -40,6 +41,7 @@ module Playbook
40
41
  end
41
42
  raw("<div class='pb--docItem'>" + display_kits.join("</div><div class='pb--docItem'>") + "</div>")
42
43
  end
44
+ # rubocop:enable Style/StringConcatenation
43
45
 
44
46
  # rubocop:disable Naming/AccessorMethodName
45
47
  def get_kits
@@ -48,12 +50,14 @@ module Playbook
48
50
  end
49
51
  # rubocop:enable Naming/AccessorMethodName
50
52
 
53
+ # rubocop:disable Style/OptionalBooleanParameter
51
54
  def render_pb_doc_kit(kit, type, limit_examples, code = true, dark_mode = false)
52
55
  title = pb_doc_render_clickable_title(kit, type)
53
56
  ui = raw("<div class='pb--docItem-ui'>
54
57
  #{pb_kit(kit: kit, type: type, show_code: code, limit_examples: limit_examples, dark_mode: dark_mode)}</div>")
55
58
  title + ui
56
59
  end
60
+ # rubocop:enable Style/OptionalBooleanParameter
57
61
 
58
62
  private
59
63
 
@@ -7,7 +7,7 @@ module Playbook
7
7
  class Base
8
8
  attr_reader :default, :deprecated, :required, :name, :kit
9
9
 
10
- def initialize(default: nil, deprecated: false, required: false, name:, kit:)
10
+ def initialize(name:, kit:, default: nil, deprecated: false, required: false)
11
11
  @default = default
12
12
  @deprecated = deprecated
13
13
  @required = required
@@ -39,7 +39,7 @@ module Playbook
39
39
  end
40
40
 
41
41
  def log(message)
42
- logger = ActiveSupport::Logger.new(STDOUT)
42
+ logger = ActiveSupport::Logger.new($stdout)
43
43
  @logger ||= ActiveSupport::TaggedLogging.new(logger)
44
44
  @logger.log(0, message)
45
45
  end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module Shadow
5
+ def self.included(base)
6
+ base.prop :shadow
7
+ end
8
+
9
+ def shadow_props
10
+ selected_props = shadow_options.keys.select { |sk| try(sk) }
11
+ return nil unless selected_props.present?
12
+
13
+ selected_props.map do |k|
14
+ shadow_value = send(k)
15
+ "shadow_#{shadow_value}" if shadow_values.include? shadow_value
16
+ end.compact.join(" ")
17
+ end
18
+
19
+ def shadow_options
20
+ {
21
+ shadow: "shadow",
22
+ }
23
+ end
24
+
25
+ def shadow_values
26
+ %w[none deep deeper deepest]
27
+ end
28
+ end
29
+ end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Playbook
4
- PREVIOUS_VERSION = "10.15.0"
5
- VERSION = "10.15.1"
4
+ PREVIOUS_VERSION = "10.18.0"
5
+ VERSION = "10.18.1"
6
6
  end
data/lib/playbook.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "view_component"
4
+
3
5
  require "playbook/version"
4
6
  require "playbook/engine"
5
7
  require "playbook/props"
@@ -15,6 +17,7 @@ module Playbook
15
17
  ROOT_PATH = Pathname.new(File.join(__dir__, ".."))
16
18
 
17
19
  class ConflictingPropsError < StandardError; end
20
+
18
21
  class MissingPropError < StandardError; end
19
22
 
20
23
  module_function