playbook_ui 2.9.0 → 2.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (118) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/app/helpers/playbook/pb_doc_helper.rb +5 -1
  4. data/app/pb_kits/playbook/index.js +73 -0
  5. data/app/pb_kits/playbook/packs/examples.js +24 -0
  6. data/app/pb_kits/playbook/packs/kits.js +8 -0
  7. data/app/pb_kits/playbook/packs/pb_badge.js +4 -0
  8. data/app/pb_kits/playbook/packs/pb_checkbox.js +4 -0
  9. data/app/pb_kits/playbook/packs/pb_date_range_inline.js +4 -0
  10. data/app/pb_kits/playbook/packs/pb_date_year_stacked.js +4 -0
  11. data/app/pb_kits/playbook/packs/pb_distribution_bar.js +4 -0
  12. data/app/pb_kits/playbook/packs/pb_fixed_confirmation_toast.js +4 -0
  13. data/app/pb_kits/playbook/packs/pb_home_address_street.js +4 -0
  14. data/app/pb_kits/playbook/packs/pb_loading_inline.js +4 -0
  15. data/app/pb_kits/playbook/packs/site_styles/_kit_style_index.scss +8 -0
  16. data/app/pb_kits/playbook/pb_badge/_badge.html.erb +6 -0
  17. data/app/pb_kits/playbook/pb_badge/_badge.jsx +34 -0
  18. data/app/pb_kits/playbook/pb_badge/_badge.scss +37 -0
  19. data/app/pb_kits/playbook/pb_badge/badge.rb +65 -0
  20. data/app/pb_kits/playbook/pb_badge/docs/_badge_colors.html.erb +107 -0
  21. data/app/pb_kits/playbook/pb_badge/docs/_badge_colors.jsx +82 -0
  22. data/app/pb_kits/playbook/pb_badge/docs/_badge_default.html.erb +16 -0
  23. data/app/pb_kits/playbook/pb_badge/docs/_badge_default.jsx +20 -0
  24. data/app/pb_kits/playbook/pb_badge/docs/_badge_rounded.html.erb +19 -0
  25. data/app/pb_kits/playbook/pb_badge/docs/_badge_rounded.jsx +20 -0
  26. data/app/pb_kits/playbook/pb_badge/docs/example.yml +10 -0
  27. data/app/pb_kits/playbook/pb_badge/docs/index.js +3 -0
  28. data/app/pb_kits/playbook/pb_caption/_caption.html.erb +1 -1
  29. data/app/pb_kits/playbook/pb_caption/_caption.scss +2 -2
  30. data/app/pb_kits/playbook/pb_caption/caption.rb +24 -56
  31. data/app/pb_kits/playbook/pb_checkbox/_checkbox.html.erb +10 -0
  32. data/app/pb_kits/playbook/pb_checkbox/_checkbox.jsx +42 -0
  33. data/app/pb_kits/playbook/pb_checkbox/_checkbox.scss +66 -0
  34. data/app/pb_kits/playbook/pb_checkbox/checkbox.rb +94 -0
  35. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_dark.html.erb +1 -0
  36. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_default.html.erb +1 -0
  37. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_default.jsx +17 -0
  38. data/app/pb_kits/playbook/pb_checkbox/docs/example.yml +8 -0
  39. data/app/pb_kits/playbook/pb_checkbox/docs/index.js +1 -0
  40. data/app/pb_kits/playbook/pb_date/date.rb +14 -23
  41. data/app/pb_kits/playbook/pb_date/docs/_date_default.html.erb +3 -3
  42. data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.html.erb +22 -0
  43. data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.jsx +54 -0
  44. data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.scss +3 -0
  45. data/app/pb_kits/playbook/pb_date_range_inline/date_range_inline.rb +55 -0
  46. data/app/pb_kits/playbook/pb_date_range_inline/docs/_date_range_inline_default.html.erb +1 -0
  47. data/app/pb_kits/playbook/pb_date_range_inline/docs/_date_range_inline_default.jsx +12 -0
  48. data/app/pb_kits/playbook/pb_date_range_inline/docs/example.yml +9 -0
  49. data/app/pb_kits/playbook/pb_date_range_inline/docs/index.js +1 -0
  50. data/app/pb_kits/playbook/pb_date_year_stacked/_date_year_stacked.html.erb +7 -0
  51. data/app/pb_kits/playbook/pb_date_year_stacked/_date_year_stacked.jsx +51 -0
  52. data/app/pb_kits/playbook/pb_date_year_stacked/_date_year_stacked.scss +17 -0
  53. data/app/pb_kits/playbook/pb_date_year_stacked/date_year_stacked.rb +75 -0
  54. data/app/pb_kits/playbook/pb_date_year_stacked/docs/_date_year_stacked_dark.html.erb +5 -0
  55. data/app/pb_kits/playbook/pb_date_year_stacked/docs/_date_year_stacked_dark.jsx +14 -0
  56. data/app/pb_kits/playbook/pb_date_year_stacked/docs/_date_year_stacked_default.html.erb +5 -0
  57. data/app/pb_kits/playbook/pb_date_year_stacked/docs/_date_year_stacked_default.jsx +14 -0
  58. data/app/pb_kits/playbook/pb_date_year_stacked/docs/example.yml +9 -0
  59. data/app/pb_kits/playbook/pb_date_year_stacked/docs/index.js +2 -0
  60. data/app/pb_kits/playbook/pb_distribution_bar/_distribution_bar.html.erb +8 -0
  61. data/app/pb_kits/playbook/pb_distribution_bar/_distribution_bar.jsx +52 -0
  62. data/app/pb_kits/playbook/pb_distribution_bar/_distribution_bar.scss +31 -0
  63. data/app/pb_kits/playbook/pb_distribution_bar/distribution_bar.rb +56 -0
  64. data/app/pb_kits/playbook/pb_distribution_bar/docs/_distribution_bar_default.html.erb +9 -0
  65. data/app/pb_kits/playbook/pb_distribution_bar/docs/_distribution_bar_default.jsx +24 -0
  66. data/app/pb_kits/playbook/pb_distribution_bar/docs/example.yml +9 -0
  67. data/app/pb_kits/playbook/pb_distribution_bar/docs/index.js +1 -0
  68. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.html.erb +7 -0
  69. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.jsx +58 -0
  70. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.scss +27 -0
  71. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_default.html.erb +18 -0
  72. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_default.jsx +26 -0
  73. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/example.yml +9 -0
  74. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/index.js +1 -0
  75. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.rb +74 -0
  76. data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.html.erb +25 -0
  77. data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.jsx +64 -0
  78. data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.scss +20 -0
  79. data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_dark.html.erb +9 -0
  80. data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_dark.jsx +18 -0
  81. data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_default.html.erb +8 -0
  82. data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_default.jsx +17 -0
  83. data/app/pb_kits/playbook/pb_home_address_street/docs/example.yml +11 -0
  84. data/app/pb_kits/playbook/pb_home_address_street/docs/index.js +2 -0
  85. data/app/pb_kits/playbook/pb_home_address_street/home_address_street.rb +80 -0
  86. data/app/pb_kits/playbook/pb_kit/dateTime.js +45 -0
  87. data/app/pb_kits/playbook/pb_kit/pb_date_time.rb +68 -0
  88. data/app/pb_kits/playbook/pb_loading_inline/_loading_inline.html.erb +6 -0
  89. data/app/pb_kits/playbook/pb_loading_inline/_loading_inline.jsx +31 -0
  90. data/app/pb_kits/playbook/pb_loading_inline/_loading_inline.scss +19 -0
  91. data/app/pb_kits/playbook/pb_loading_inline/docs/_loading_inline_dark.html.erb +13 -0
  92. data/app/pb_kits/playbook/pb_loading_inline/docs/_loading_inline_dark.jsx +14 -0
  93. data/app/pb_kits/playbook/pb_loading_inline/docs/_loading_inline_light.html.erb +9 -0
  94. data/app/pb_kits/playbook/pb_loading_inline/docs/_loading_inline_light.jsx +14 -0
  95. data/app/pb_kits/playbook/pb_loading_inline/docs/example.yml +11 -0
  96. data/app/pb_kits/playbook/pb_loading_inline/docs/index.js +2 -0
  97. data/app/pb_kits/playbook/pb_loading_inline/loading_inline.rb +67 -0
  98. data/app/pb_kits/playbook/pb_time/docs/_time_default.html.erb +3 -3
  99. data/app/pb_kits/playbook/pb_time/docs/_time_timestamp.html.erb +3 -3
  100. data/app/pb_kits/playbook/pb_time/time.rb +16 -29
  101. data/app/pb_kits/playbook/pb_toggle/toggle.rb +2 -0
  102. data/app/pb_kits/playbook/props.rb +45 -0
  103. data/app/pb_kits/playbook/props/base.rb +27 -0
  104. data/app/pb_kits/playbook/props/boolean.rb +11 -0
  105. data/app/pb_kits/playbook/props/enum.rb +16 -0
  106. data/app/pb_kits/playbook/props/hash.rb +11 -0
  107. data/app/pb_kits/playbook/props/string.rb +8 -0
  108. data/app/pb_kits/playbook/tokens/_colors.scss +2 -1
  109. data/app/pb_kits/playbook/tokens/_transition.scss +1 -0
  110. data/lib/playbook/engine.rb +0 -1
  111. data/lib/playbook/version.rb +1 -1
  112. metadata +148 -22
  113. data/app/pb_kits/playbook/packs/index.js +0 -67
  114. data/lib/tasks/db.rake +0 -10
  115. data/stories/basic.js +0 -18
  116. data/stories/complex.js +0 -15
  117. data/stories/form.js +0 -2
  118. data/stories/index.js +0 -29
@@ -0,0 +1,13 @@
1
+ <%= pb_rails("loading_inline", props: {
2
+ dark: true
3
+ }) %>
4
+
5
+ <%= pb_rails("loading_inline", props: {
6
+ align: "center",
7
+ dark: true
8
+ }) %>
9
+
10
+ <%= pb_rails("loading_inline", props: {
11
+ align: "right",
12
+ dark: true
13
+ }) %>
@@ -0,0 +1,14 @@
1
+ import React from "react"
2
+ import LoadingInline from "../_loading_inline.jsx"
3
+
4
+ function LoadingInlineDark() {
5
+ return (
6
+ <div>
7
+ <LoadingInline dark />
8
+ <LoadingInline dark align="center" />
9
+ <LoadingInline dark align="right" />
10
+ </div>
11
+ )
12
+ }
13
+
14
+ export default LoadingInlineDark;
@@ -0,0 +1,9 @@
1
+ <%= pb_rails("loading_inline") %>
2
+
3
+ <%= pb_rails("loading_inline", props: {
4
+ align: "center"
5
+ }) %>
6
+
7
+ <%= pb_rails("loading_inline", props: {
8
+ align: "right"
9
+ }) %>
@@ -0,0 +1,14 @@
1
+ import React from "react"
2
+ import LoadingInline from "../_loading_inline.jsx"
3
+
4
+ function LoadingInlineLight() {
5
+ return (
6
+ <div>
7
+ <LoadingInline />
8
+ <LoadingInline align="center" />
9
+ <LoadingInline align="right" />
10
+ </div>
11
+ )
12
+ }
13
+
14
+ export default LoadingInlineLight;
@@ -0,0 +1,11 @@
1
+ examples:
2
+
3
+ rails:
4
+ - loading_inline_light: Light
5
+ - loading_inline_dark: Dark
6
+
7
+
8
+ react:
9
+ - loading_inline_light: Default
10
+ - loading_inline_dark: Default
11
+
@@ -0,0 +1,2 @@
1
+ export {default as LoadingInlineLight} from './_loading_inline_light.jsx';
2
+ export {default as LoadingInlineDark} from './_loading_inline_dark.jsx';
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module PbLoadingInline
5
+ class LoadingInline < Playbook::PbKit::Base
6
+ PROPS = %i[configured_align
7
+ configured_classname
8
+ configured_dark
9
+ configured_data
10
+ configured_id].freeze
11
+
12
+ def initialize(align: default_configuration,
13
+ classname: default_configuration,
14
+ dark: default_configuration,
15
+ data: default_configuration,
16
+ id: default_configuration)
17
+ self.configured_align = align
18
+ self.configured_classname = classname
19
+ self.configured_dark = dark
20
+ self.configured_data = data
21
+ self.configured_id = id
22
+ end
23
+
24
+ def align
25
+ align_options = %w[left center right]
26
+ one_of_value(configured_align, align_options, "left")
27
+ end
28
+
29
+ def dark
30
+ is_true? configured_dark
31
+ end
32
+
33
+ def icon
34
+ pb_icon = Playbook::PbIcon::Icon.new(fixed_width: true, icon: "spinner", pulse: true)
35
+ ApplicationController.renderer.render(partial: pb_icon, as: :object)
36
+ end
37
+
38
+ def value
39
+ pb_icon_value = Playbook::PbBody::Body.new(color: "light", dark: dark) do
40
+ icon + "Loading"
41
+ end
42
+ ApplicationController.renderer.render(partial: pb_icon_value, as: :object)
43
+ end
44
+
45
+ def to_partial_path
46
+ "pb_loading_inline/loading_inline"
47
+ end
48
+
49
+ def kit_class
50
+ loading_inline_options = [
51
+ "pb_loading_inline_kit",
52
+ align,
53
+ ]
54
+ loading_inline_options.join("_")
55
+ end
56
+
57
+ private
58
+
59
+ DEFAULT = Object.new
60
+ private_constant :DEFAULT
61
+ def default_configuration
62
+ DEFAULT
63
+ end
64
+ attr_accessor(*PROPS)
65
+ end
66
+ end
67
+ end
@@ -1,18 +1,18 @@
1
1
  <%= pb_rails("time", props: {
2
- timestamp: "2012-08-02T15:49:29Z",
2
+ time: Time.now,
3
3
  size: "lg"
4
4
  }) %>
5
5
 
6
6
  <br>
7
7
 
8
8
  <%= pb_rails("time", props: {
9
- timestamp: "2012-08-02T15:49:29Z",
9
+ time: DateTime.now,
10
10
  size: "sm"
11
11
  }) %>
12
12
 
13
13
  <br>
14
14
 
15
15
  <%= pb_rails("time", props: {
16
- timestamp: "2012-08-02T15:49:29Z",
16
+ time: "2012-08-02T15:49:29Z",
17
17
  size: "xs"
18
18
  }) %>
@@ -1,16 +1,16 @@
1
1
  <%= pb_rails("time", props: {
2
- timestamp: "2012-08-02T15:49:29Z"
2
+ time: "2012-08-02T15:49:29Z"
3
3
  }) %>
4
4
 
5
5
  <br>
6
6
 
7
7
  <%= pb_rails("time", props: {
8
- timestamp: DateTime.now
8
+ time: DateTime.now
9
9
  }) %>
10
10
 
11
11
  <br>
12
12
 
13
13
  <%= pb_rails("time", props: {
14
- timestamp: DateTime.now,
14
+ time: DateTime.now,
15
15
  timezone: "America/Chicago"
16
16
  }) %>
@@ -10,6 +10,7 @@ module Playbook
10
10
  configured_data
11
11
  configured_id
12
12
  configured_size
13
+ configured_time
13
14
  configured_timestamp
14
15
  configured_timezone].freeze
15
16
 
@@ -17,12 +18,14 @@ module Playbook
17
18
  data: default_configuration,
18
19
  id: default_configuration,
19
20
  size: default_configuration,
21
+ time: default_configuration,
20
22
  timestamp: default_configuration,
21
23
  timezone: default_configuration)
22
24
  self.configured_classname = classname
23
25
  self.configured_data = data
24
26
  self.configured_id = id
25
27
  self.configured_size = size
28
+ self.configured_time = time
26
29
  self.configured_timestamp = timestamp
27
30
  self.configured_timezone = timezone
28
31
  end
@@ -53,41 +56,25 @@ module Playbook
53
56
  private
54
57
 
55
58
  def timestamp
56
- convert_to_timestamp(configured_timestamp)
57
- end
58
-
59
- def convert_to_timestamp(time)
60
- time.is_a?(String) ? DateTime.parse(time) : time
61
- time.in_time_zone(timezone_value)
62
- end
63
-
64
- def format_time_string
65
- "#{hour}:#{minutes}#{meridian}" if is_set? configured_timestamp
66
- end
67
-
68
- def hour
69
- timestamp.strftime("%l")
70
- end
71
-
72
- def minutes
73
- timestamp.strftime("%M")
74
- end
75
-
76
- def meridian
77
- timestamp.strftime("%P")[0, 1]
59
+ if is_set? configured_time
60
+ time = configured_time
61
+ else
62
+ time = configured_timestamp
63
+ end
64
+ Playbook::PbKit::PbDateTime.new(time, timezone_value)
78
65
  end
79
66
 
80
67
  def timezone_value
81
68
  default_value(configured_timezone, "America/New_York")
82
69
  end
83
70
 
84
- def timezone_abbr
85
- timestamp.strftime("%Z").upcase
71
+ def format_time_string
72
+ "#{timestamp.to_hour}:#{timestamp.to_minutes}#{timestamp.to_meridian}"
86
73
  end
87
74
 
88
75
  def timezone
89
76
  content_tag(:span, class: "pb_time_timezone") do
90
- timezone_abbr
77
+ timestamp.to_timezone.upcase
91
78
  end
92
79
  end
93
80
 
@@ -102,7 +89,7 @@ module Playbook
102
89
  end
103
90
 
104
91
  def text
105
- content_tag(:time, datetime: timestamp.iso8601) do
92
+ content_tag(:time, datetime: timestamp.to_iso) do
106
93
  content_tag(:span) do
107
94
  format_time_string
108
95
  end +
@@ -111,7 +98,7 @@ module Playbook
111
98
  end
112
99
 
113
100
  def display_value_xs
114
- if is_set? configured_timestamp
101
+ if is_set?(configured_timestamp) || is_set?(configured_time)
115
102
  pb_value = Playbook::PbBody::Body.new(color: "default") do
116
103
  text
117
104
  end
@@ -120,7 +107,7 @@ module Playbook
120
107
  end
121
108
 
122
109
  def display_value_sm
123
- if is_set? configured_timestamp
110
+ if is_set?(configured_timestamp) || is_set?(configured_time)
124
111
  pb_value = Playbook::PbBody::Body.new(color: "default") do
125
112
  icon +
126
113
  text
@@ -130,7 +117,7 @@ module Playbook
130
117
  end
131
118
 
132
119
  def display_value_lg
133
- if is_set? configured_timestamp
120
+ if is_set?(configured_timestamp) || is_set?(configured_time)
134
121
  pb_value_lg = Playbook::PbTitle::Title.new(size: 3, text: text)
135
122
  ApplicationController.renderer.render(partial: pb_value_lg, as: :object)
136
123
  end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "action_view"
4
+
3
5
  module Playbook
4
6
  module PbToggle
5
7
  class Toggle < Playbook::PbKit::Base
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "active_support/concern"
4
+ require_relative "./props/base"
5
+ require_relative "./props/boolean"
6
+ require_relative "./props/enum"
7
+ require_relative "./props/hash"
8
+ require_relative "./props/string"
9
+
10
+ module Playbook
11
+ module Props
12
+ extend ActiveSupport::Concern
13
+
14
+ def initialize(prop_values)
15
+ @values = prop_values
16
+ self.class.props.each do |key, definition|
17
+ definition.validate! @values[key]
18
+ end
19
+ end
20
+
21
+ def prop(name)
22
+ self.class.props[name].value @values[name]
23
+ end
24
+
25
+ included do
26
+ prop :id, default: nil
27
+ prop :data, type: Playbook::Props::Hash, default: {}
28
+ prop :classname, default: ""
29
+ prop :aria, type: Playbook::Props::Hash, default: {}
30
+ end
31
+
32
+ class_methods do
33
+ def props
34
+ @props
35
+ end
36
+
37
+ def prop(name, type: Playbook::Props::String, **options)
38
+ @props ||= {}
39
+ @props[name] = type.new(**options)
40
+
41
+ define_method(name) { prop(name) }
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module Props
5
+ class Error < StandardError; end
6
+
7
+ class Base
8
+ attr_reader :default
9
+
10
+ def initialize(default: nil)
11
+ @default = default
12
+ end
13
+
14
+ def value(value)
15
+ value || @default
16
+ end
17
+
18
+ def validate!(input_value)
19
+ validate(value(input_value)) || raise(Playbook::Props::Error, "Invalid value (#{input_value.inspect}) for prop (#{inspect})")
20
+ end
21
+
22
+ def validate(_value)
23
+ true
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module Props
5
+ class Boolean < Playbook::Props::Base
6
+ def validate(value)
7
+ value === true || value === false
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module Props
5
+ class Enum < Playbook::Props::Base
6
+ def initialize(values:, **options)
7
+ super(**options)
8
+ @values = values
9
+ end
10
+
11
+ def validate(value)
12
+ @values.include?(value)
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module Props
5
+ class Hash < Playbook::Props::Base
6
+ def validate(value)
7
+ value.is_a?(::Hash)
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module Props
5
+ class String < Playbook::Props::Base
6
+ end
7
+ end
8
+ end
@@ -140,7 +140,8 @@ $status_colors: (
140
140
  warning: $warning,
141
141
  error: $error,
142
142
  info: $info,
143
- neutral: $neutral
143
+ neutral: $neutral,
144
+ primary: $primary
144
145
  );
145
146
 
146
147
  $status_color_text: (
@@ -1 +1,2 @@
1
1
  $transition_default: 0.3s;
2
+ $transition_cubic: 0.2s cubic-bezier(0.95, 0.05, 0.795, 0.035);