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 @@
1
+ <%= pb_rails("checkbox", props: {text:"Checkbox Label" , icon:"check", dark: true}) %>
@@ -0,0 +1 @@
1
+ <%= pb_rails("checkbox" , props:{ text:"Checkbox Label", value:"checkbox-value", icon:"check", name:"checkbox-name" }) %>
@@ -0,0 +1,17 @@
1
+ import React from "react"
2
+ import Checkbox from "../_checkbox.jsx"
3
+
4
+ function CheckboxDefault() {
5
+ return (
6
+ <div>
7
+ <Checkbox
8
+
9
+ label='Checkbox label'
10
+ name="default name"
11
+ value="default value"
12
+ />
13
+ </div>
14
+ )
15
+ }
16
+
17
+ export default CheckboxDefault;
@@ -0,0 +1,8 @@
1
+ examples:
2
+
3
+ rails:
4
+ - checkbox_default: Default
5
+ - checkbox_dark: Dark
6
+
7
+ react:
8
+ - checkbox_default: Default
@@ -0,0 +1 @@
1
+ export {default as CheckboxDefault} from './_checkbox_default.jsx';
@@ -8,6 +8,7 @@ module Playbook
8
8
 
9
9
  PROPS = %i[configured_classname
10
10
  configured_data
11
+ configured_date
11
12
  configured_id
12
13
  configured_size
13
14
  configured_timestamp
@@ -15,12 +16,14 @@ module Playbook
15
16
 
16
17
  def initialize(classname: default_configuration,
17
18
  data: default_configuration,
19
+ date: default_configuration,
18
20
  id: default_configuration,
19
21
  size: default_configuration,
20
22
  timestamp: default_configuration,
21
23
  timezone: default_configuration)
22
24
  self.configured_classname = classname
23
25
  self.configured_data = data
26
+ self.configured_date = date
24
27
  self.configured_id = id
25
28
  self.configured_size = size
26
29
  self.configured_timestamp = timestamp
@@ -49,30 +52,18 @@ module Playbook
49
52
  private
50
53
 
51
54
  def timestamp
52
- convert_to_timestamp(configured_timestamp)
53
- end
54
-
55
- def convert_to_timestamp(time)
56
- time.is_a?(String) ? DateTime.parse(time) : time
57
- time.in_time_zone(timezone_value)
55
+ if is_set? configured_date
56
+ date = configured_date
57
+ else
58
+ date = configured_timestamp
59
+ end
60
+ Playbook::PbKit::PbDateTime.new(date, timezone_value)
58
61
  end
59
62
 
60
63
  def timezone_value
61
64
  default_value(configured_timezone, "America/New_York")
62
65
  end
63
66
 
64
- def day_of_week
65
- timestamp.strftime("%a").upcase
66
- end
67
-
68
- def month
69
- timestamp.strftime("%^b").upcase
70
- end
71
-
72
- def day
73
- timestamp.strftime("%e")
74
- end
75
-
76
67
  def size
77
68
  size_options = %w[lg sm xs]
78
69
  one_of_value(configured_size, size_options, "sm")
@@ -85,27 +76,27 @@ module Playbook
85
76
 
86
77
  def text
87
78
  content_tag(:span) do
88
- "#{day_of_week} &middot; #{month} #{day}".html_safe
79
+ "#{timestamp.to_day_of_week.upcase} &middot; #{timestamp.to_month.upcase} #{timestamp.to_day}".html_safe
89
80
  end
90
81
  end
91
82
 
92
83
  def display_value_xs
93
- if is_set? configured_timestamp
84
+ if is_set?(configured_timestamp) || is_set?(configured_date)
94
85
  pb_value = Playbook::PbTitle::Title.new(size: 4, text: text)
95
86
  ApplicationController.renderer.render(partial: pb_value, as: :object)
96
87
  end
97
88
  end
98
89
 
99
90
  def display_value_sm
100
- if is_set? configured_timestamp
91
+ if is_set?(configured_timestamp) || is_set?(configured_date)
101
92
  pb_value = Playbook::PbTitle::Title.new(size: 4, text: icon + text)
102
93
  ApplicationController.renderer.render(partial: pb_value, as: :object)
103
94
  end
104
95
  end
105
96
 
106
97
  def display_value_lg
107
- if is_set? configured_timestamp
108
- pb_value_lg = Playbook::PbTitle::Title.new(size: 3, text: "#{month} #{day}")
98
+ if is_set?(configured_timestamp) || is_set?(configured_date)
99
+ pb_value_lg = Playbook::PbTitle::Title.new(size: 3, text: "#{timestamp.to_month.upcase} #{timestamp.to_day}")
109
100
  ApplicationController.renderer.render(partial: pb_value_lg, as: :object)
110
101
  end
111
102
  end
@@ -1,17 +1,17 @@
1
1
  <%= pb_rails("date", props: {
2
- timestamp: "2012-08-02T15:49:29Z",
2
+ date: Date.today,
3
3
  size: "lg"
4
4
  }) %>
5
5
 
6
6
  <br>
7
7
 
8
8
  <%= pb_rails("date", props: {
9
- timestamp: "2012-08-02T15:49:29Z"
9
+ date: DateTime.now
10
10
  }) %>
11
11
 
12
12
  <br>
13
13
 
14
14
  <%= pb_rails("date", props: {
15
- timestamp: "2012-08-02T15:49:29Z",
15
+ date: "2012-08-02T15:49:29Z",
16
16
  size: "xs"
17
17
  }) %>
@@ -0,0 +1,22 @@
1
+ <%= content_tag(:div,
2
+ id: object.id,
3
+ data: object.data,
4
+ class: object.classname("pb_date_range_inline")) do %>
5
+
6
+ <%= pb_rails("body", props: { tag: "span", color: "light" }) do %>
7
+ <%= pb_rails("icon", props: { icon: "calendar-alt", fixed_width: true }) %>
8
+ <% end %>
9
+
10
+ <%= pb_rails("body", props: { tag: "span"}) do %>
11
+ <%= object.start_date %>
12
+ <% end %>
13
+
14
+ <%= pb_rails("body", props: { tag: "span", color: "light" }) do %>
15
+ <%= pb_rails("icon", props: { icon: "long-arrow-right", fixed_width: true }) %>
16
+ <% end %>
17
+
18
+ <%= pb_rails("body", props: { tag: "span"}) do %>
19
+ <%= object.end_date %>
20
+ <% end %>
21
+
22
+ <% end %>
@@ -0,0 +1,54 @@
1
+ /* @flow */
2
+ /*eslint-disable react/no-multi-comp, flowtype/space-before-type-colon */
3
+
4
+ import React from 'react'
5
+ import DateTime from '../pb_kit/dateTime.js'
6
+
7
+ import {
8
+ Body,
9
+ Icon,
10
+ } from '../'
11
+
12
+
13
+ type DateRangeInlineProps = {
14
+ className?: String,
15
+ data?: String,
16
+ endDate?: Date,
17
+ id?: String,
18
+ startDate?: Date
19
+ }
20
+
21
+ const dateTimestamp = (dateValue) => {
22
+ let date = new DateTime({ value: dateValue })
23
+ return `${date.toDay()} ${date.toMonth()} ${date.toYear()}`
24
+ }
25
+
26
+ const dateTimeIso = (dateValue) => {
27
+ let date = new DateTime({ value: dateValue })
28
+ return date.toIso()
29
+ }
30
+
31
+ const DateRangeInline = ({
32
+ className,
33
+ data,
34
+ endDate,
35
+ id,
36
+ startDate
37
+ }: DateRangeInlineProps) => (
38
+ <div>
39
+ <Body tag="span" color="light">
40
+ <Icon icon="calendar-alt" fixedWidth="true" />
41
+ </Body>
42
+ <Body tag="span">
43
+ <time dateTime={dateTimeIso(startDate)} >{` ${dateTimestamp(startDate)} `}</time>
44
+ </Body>
45
+ <Body tag="span" color="light">
46
+ <Icon icon="long-arrow-right" fixedWidth="true" />
47
+ </Body>
48
+ <Body tag="span">
49
+ <time dateTime={dateTimeIso(endDate)} >{` ${dateTimestamp(endDate)} `}</time>
50
+ </Body>
51
+ </div>
52
+ )
53
+
54
+ export default DateRangeInline
@@ -0,0 +1,3 @@
1
+ .pb_date_range_inline {
2
+
3
+ }
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module PbDateRangeInline
5
+ class DateRangeInline < Playbook::PbKit::Base
6
+ include ActionView::Helpers::TagHelper
7
+ include ActionView::Context
8
+
9
+ PROPS = %i[configured_classname
10
+ configured_data
11
+ configured_end_date
12
+ configured_id
13
+ configured_start_date].freeze
14
+
15
+ def initialize(classname: default_configuration,
16
+ data: default_configuration,
17
+ end_date: default_configuration,
18
+ id: default_configuration,
19
+ start_date: default_configuration)
20
+ self.configured_classname = classname
21
+ self.configured_data = data
22
+ self.configured_id = id
23
+ self.configured_end_date = end_date
24
+ self.configured_start_date = start_date
25
+ end
26
+
27
+ def end_date
28
+ date_time = Playbook::PbKit::PbDateTime.new(default_value(configured_end_date, ""))
29
+ content_tag(:time, datetime: date_time.to_iso) do
30
+ "#{date_time.to_day} #{date_time.to_month_downcase} #{date_time.to_year}"
31
+ end
32
+ end
33
+
34
+ def start_date
35
+ date_time = Playbook::PbKit::PbDateTime.new(default_value(configured_start_date, ""))
36
+ content_tag(:time, datetime: date_time.to_iso) do
37
+ "#{date_time.to_day} #{date_time.to_month_downcase} #{date_time.to_year}"
38
+ end
39
+ end
40
+
41
+ def to_partial_path
42
+ "pb_date_range_inline/date_range_inline"
43
+ end
44
+
45
+ private
46
+
47
+ DEFAULT = Object.new
48
+ private_constant :DEFAULT
49
+ def default_configuration
50
+ DEFAULT
51
+ end
52
+ attr_accessor(*PROPS)
53
+ end
54
+ end
55
+ end
@@ -0,0 +1 @@
1
+ <%= pb_rails("date_range_inline", props: { start_date: Date.new(2019, 06, 18), end_date: Date.new(2020, 03, 20) }) %>
@@ -0,0 +1,12 @@
1
+ import React from "react"
2
+ import DateRangeInline from "../_date_range_inline.jsx"
3
+
4
+ function DateRangeInlineDefault() {
5
+ return (
6
+ <div>
7
+ <DateRangeInline startDate={new Date('18 Jun 2019')} endDate={new Date('20 Mar 2020')} />
8
+ </div>
9
+ )
10
+ }
11
+
12
+ export default DateRangeInlineDefault;
@@ -0,0 +1,9 @@
1
+ examples:
2
+
3
+ rails:
4
+ - date_range_inline_default: Default
5
+
6
+
7
+ react:
8
+ - date_range_inline_default: Default
9
+
@@ -0,0 +1 @@
1
+ export {default as DateRangeInlineDefault} from './_date_range_inline_default.jsx';
@@ -0,0 +1,7 @@
1
+ <%= content_tag(:div,
2
+ id: object.id,
3
+ data: object.data,
4
+ class: object.classname(object.kit_class)) do %>
5
+ <%= object.day_month %>
6
+ <%= object.year %>
7
+ <% end %>
@@ -0,0 +1,51 @@
1
+ /* @flow */
2
+ /*eslint-disable react/no-multi-comp, flowtype/space-before-type-colon */
3
+
4
+ import React from 'react'
5
+ import classnames from 'classnames'
6
+
7
+ import DateTime from '../pb_kit/dateTime.js'
8
+
9
+ import {
10
+ Body,
11
+ Title,
12
+ } from '../'
13
+
14
+ type DateYearStackedProps = {
15
+ align?: 'center' | 'right',
16
+ className?: String | Array<String>,
17
+ dark?: Boolean,
18
+ data?: String,
19
+ date: String,
20
+ id?: String,
21
+ }
22
+
23
+ const kitClasses = ({align='left'}: DateYearStackedProps) => {
24
+ let classname = 'pb_date_year_stacked'
25
+ classname += `_${align}`
26
+ return classname
27
+ }
28
+
29
+ const DateYearStacked = ({
30
+ align,
31
+ className,
32
+ dark=false,
33
+ date,
34
+ }: DateYearStackedProps) => {
35
+
36
+ const dateTimestamp = new DateTime({ value: date })
37
+ const css = classnames(kitClasses({align}), className)
38
+
39
+ return (
40
+ <div className={css}>
41
+ <Title
42
+ dark={dark}
43
+ size={4}
44
+ text={`${dateTimestamp.toDay()} ${dateTimestamp.toMonth().toUpperCase()}`}
45
+ />
46
+ <Body color="light">{ dateTimestamp.toYear() }</Body>
47
+ </div>
48
+ )
49
+ }
50
+
51
+ export default DateYearStacked
@@ -0,0 +1,17 @@
1
+ [class^=pb_date_year_stacked] {
2
+ &[class*=_left] {
3
+ & > [class^=pb_title], & > [class^=pb_body] {
4
+ text-align: left;
5
+ }
6
+ }
7
+ &[class*=_center] {
8
+ & > [class^=pb_title], & > [class^=pb_body] {
9
+ text-align: center;
10
+ }
11
+ }
12
+ &[class*=_right] {
13
+ & > [class^=pb_title], & > [class^=pb_body] {
14
+ text-align: right;
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,75 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Playbook
4
+ module PbDateYearStacked
5
+ class DateYearStacked < Playbook::PbKit::Base
6
+ PROPS = %i[configured_align
7
+ configured_classname
8
+ configured_dark
9
+ configured_data
10
+ configured_date
11
+ configured_id].freeze
12
+
13
+ def initialize(align: default_configuration,
14
+ classname: default_configuration,
15
+ dark: default_configuration,
16
+ data: default_configuration,
17
+ date: default_configuration,
18
+ id: default_configuration)
19
+ self.configured_align = align
20
+ self.configured_classname = classname
21
+ self.configured_dark = dark
22
+ self.configured_data = data
23
+ self.configured_date = date
24
+ self.configured_id = id
25
+ end
26
+
27
+ def align
28
+ align_options = %w[left center right]
29
+ one_of_value(configured_align, align_options, "left")
30
+ end
31
+
32
+ def dark
33
+ is_true? configured_dark
34
+ end
35
+
36
+ def date
37
+ Playbook::PbKit::PbDateTime.new(configured_date)
38
+ end
39
+
40
+ def year
41
+ year = date.to_year
42
+ pb_body = Playbook::PbBody::Body.new(text: year, color: "light", dark: dark)
43
+ ApplicationController.renderer.render(partial: pb_body, as: :object)
44
+ end
45
+
46
+ def day_month
47
+ day_month = "#{date.to_day} #{date.to_month}"
48
+ pb_title = Playbook::PbTitle::Title.new(text: day_month, size: 4, dark: dark)
49
+ ApplicationController.renderer.render(partial: pb_title, as: :object)
50
+ end
51
+
52
+ def to_partial_path
53
+ "pb_date_year_stacked/date_year_stacked"
54
+ end
55
+
56
+ def kit_class
57
+ kit_options = [
58
+ "pb_date_year_stacked",
59
+ align,
60
+
61
+ ]
62
+ kit_options.join("_")
63
+ end
64
+
65
+ private
66
+
67
+ DEFAULT = Object.new
68
+ private_constant :DEFAULT
69
+ def default_configuration
70
+ DEFAULT
71
+ end
72
+ attr_accessor(*PROPS)
73
+ end
74
+ end
75
+ end