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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/app/helpers/playbook/pb_doc_helper.rb +5 -1
- data/app/pb_kits/playbook/index.js +73 -0
- data/app/pb_kits/playbook/packs/examples.js +24 -0
- data/app/pb_kits/playbook/packs/kits.js +8 -0
- data/app/pb_kits/playbook/packs/pb_badge.js +4 -0
- data/app/pb_kits/playbook/packs/pb_checkbox.js +4 -0
- data/app/pb_kits/playbook/packs/pb_date_range_inline.js +4 -0
- data/app/pb_kits/playbook/packs/pb_date_year_stacked.js +4 -0
- data/app/pb_kits/playbook/packs/pb_distribution_bar.js +4 -0
- data/app/pb_kits/playbook/packs/pb_fixed_confirmation_toast.js +4 -0
- data/app/pb_kits/playbook/packs/pb_home_address_street.js +4 -0
- data/app/pb_kits/playbook/packs/pb_loading_inline.js +4 -0
- data/app/pb_kits/playbook/packs/site_styles/_kit_style_index.scss +8 -0
- data/app/pb_kits/playbook/pb_badge/_badge.html.erb +6 -0
- data/app/pb_kits/playbook/pb_badge/_badge.jsx +34 -0
- data/app/pb_kits/playbook/pb_badge/_badge.scss +37 -0
- data/app/pb_kits/playbook/pb_badge/badge.rb +65 -0
- data/app/pb_kits/playbook/pb_badge/docs/_badge_colors.html.erb +107 -0
- data/app/pb_kits/playbook/pb_badge/docs/_badge_colors.jsx +82 -0
- data/app/pb_kits/playbook/pb_badge/docs/_badge_default.html.erb +16 -0
- data/app/pb_kits/playbook/pb_badge/docs/_badge_default.jsx +20 -0
- data/app/pb_kits/playbook/pb_badge/docs/_badge_rounded.html.erb +19 -0
- data/app/pb_kits/playbook/pb_badge/docs/_badge_rounded.jsx +20 -0
- data/app/pb_kits/playbook/pb_badge/docs/example.yml +10 -0
- data/app/pb_kits/playbook/pb_badge/docs/index.js +3 -0
- data/app/pb_kits/playbook/pb_caption/_caption.html.erb +1 -1
- data/app/pb_kits/playbook/pb_caption/_caption.scss +2 -2
- data/app/pb_kits/playbook/pb_caption/caption.rb +24 -56
- data/app/pb_kits/playbook/pb_checkbox/_checkbox.html.erb +10 -0
- data/app/pb_kits/playbook/pb_checkbox/_checkbox.jsx +42 -0
- data/app/pb_kits/playbook/pb_checkbox/_checkbox.scss +66 -0
- data/app/pb_kits/playbook/pb_checkbox/checkbox.rb +94 -0
- data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_dark.html.erb +1 -0
- data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_default.html.erb +1 -0
- data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_default.jsx +17 -0
- data/app/pb_kits/playbook/pb_checkbox/docs/example.yml +8 -0
- data/app/pb_kits/playbook/pb_checkbox/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_date/date.rb +14 -23
- data/app/pb_kits/playbook/pb_date/docs/_date_default.html.erb +3 -3
- data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.html.erb +22 -0
- data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.jsx +54 -0
- data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.scss +3 -0
- data/app/pb_kits/playbook/pb_date_range_inline/date_range_inline.rb +55 -0
- data/app/pb_kits/playbook/pb_date_range_inline/docs/_date_range_inline_default.html.erb +1 -0
- data/app/pb_kits/playbook/pb_date_range_inline/docs/_date_range_inline_default.jsx +12 -0
- data/app/pb_kits/playbook/pb_date_range_inline/docs/example.yml +9 -0
- data/app/pb_kits/playbook/pb_date_range_inline/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_date_year_stacked/_date_year_stacked.html.erb +7 -0
- data/app/pb_kits/playbook/pb_date_year_stacked/_date_year_stacked.jsx +51 -0
- data/app/pb_kits/playbook/pb_date_year_stacked/_date_year_stacked.scss +17 -0
- data/app/pb_kits/playbook/pb_date_year_stacked/date_year_stacked.rb +75 -0
- data/app/pb_kits/playbook/pb_date_year_stacked/docs/_date_year_stacked_dark.html.erb +5 -0
- data/app/pb_kits/playbook/pb_date_year_stacked/docs/_date_year_stacked_dark.jsx +14 -0
- data/app/pb_kits/playbook/pb_date_year_stacked/docs/_date_year_stacked_default.html.erb +5 -0
- data/app/pb_kits/playbook/pb_date_year_stacked/docs/_date_year_stacked_default.jsx +14 -0
- data/app/pb_kits/playbook/pb_date_year_stacked/docs/example.yml +9 -0
- data/app/pb_kits/playbook/pb_date_year_stacked/docs/index.js +2 -0
- data/app/pb_kits/playbook/pb_distribution_bar/_distribution_bar.html.erb +8 -0
- data/app/pb_kits/playbook/pb_distribution_bar/_distribution_bar.jsx +52 -0
- data/app/pb_kits/playbook/pb_distribution_bar/_distribution_bar.scss +31 -0
- data/app/pb_kits/playbook/pb_distribution_bar/distribution_bar.rb +56 -0
- data/app/pb_kits/playbook/pb_distribution_bar/docs/_distribution_bar_default.html.erb +9 -0
- data/app/pb_kits/playbook/pb_distribution_bar/docs/_distribution_bar_default.jsx +24 -0
- data/app/pb_kits/playbook/pb_distribution_bar/docs/example.yml +9 -0
- data/app/pb_kits/playbook/pb_distribution_bar/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.html.erb +7 -0
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.jsx +58 -0
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.scss +27 -0
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_default.html.erb +18 -0
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_default.jsx +26 -0
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/example.yml +9 -0
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.rb +74 -0
- data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.html.erb +25 -0
- data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.jsx +64 -0
- data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.scss +20 -0
- data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_dark.html.erb +9 -0
- data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_dark.jsx +18 -0
- data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_default.html.erb +8 -0
- data/app/pb_kits/playbook/pb_home_address_street/docs/_home_address_street_default.jsx +17 -0
- data/app/pb_kits/playbook/pb_home_address_street/docs/example.yml +11 -0
- data/app/pb_kits/playbook/pb_home_address_street/docs/index.js +2 -0
- data/app/pb_kits/playbook/pb_home_address_street/home_address_street.rb +80 -0
- data/app/pb_kits/playbook/pb_kit/dateTime.js +45 -0
- data/app/pb_kits/playbook/pb_kit/pb_date_time.rb +68 -0
- data/app/pb_kits/playbook/pb_loading_inline/_loading_inline.html.erb +6 -0
- data/app/pb_kits/playbook/pb_loading_inline/_loading_inline.jsx +31 -0
- data/app/pb_kits/playbook/pb_loading_inline/_loading_inline.scss +19 -0
- data/app/pb_kits/playbook/pb_loading_inline/docs/_loading_inline_dark.html.erb +13 -0
- data/app/pb_kits/playbook/pb_loading_inline/docs/_loading_inline_dark.jsx +14 -0
- data/app/pb_kits/playbook/pb_loading_inline/docs/_loading_inline_light.html.erb +9 -0
- data/app/pb_kits/playbook/pb_loading_inline/docs/_loading_inline_light.jsx +14 -0
- data/app/pb_kits/playbook/pb_loading_inline/docs/example.yml +11 -0
- data/app/pb_kits/playbook/pb_loading_inline/docs/index.js +2 -0
- data/app/pb_kits/playbook/pb_loading_inline/loading_inline.rb +67 -0
- data/app/pb_kits/playbook/pb_time/docs/_time_default.html.erb +3 -3
- data/app/pb_kits/playbook/pb_time/docs/_time_timestamp.html.erb +3 -3
- data/app/pb_kits/playbook/pb_time/time.rb +16 -29
- data/app/pb_kits/playbook/pb_toggle/toggle.rb +2 -0
- data/app/pb_kits/playbook/props.rb +45 -0
- data/app/pb_kits/playbook/props/base.rb +27 -0
- data/app/pb_kits/playbook/props/boolean.rb +11 -0
- data/app/pb_kits/playbook/props/enum.rb +16 -0
- data/app/pb_kits/playbook/props/hash.rb +11 -0
- data/app/pb_kits/playbook/props/string.rb +8 -0
- data/app/pb_kits/playbook/tokens/_colors.scss +2 -1
- data/app/pb_kits/playbook/tokens/_transition.scss +1 -0
- data/lib/playbook/engine.rb +0 -1
- data/lib/playbook/version.rb +1 -1
- metadata +148 -22
- data/app/pb_kits/playbook/packs/index.js +0 -67
- data/lib/tasks/db.rake +0 -10
- data/stories/basic.js +0 -18
- data/stories/complex.js +0 -15
- data/stories/form.js +0 -2
- 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 @@
|
|
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
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
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
|
-
"#{
|
79
|
+
"#{timestamp.to_day_of_week.upcase} · #{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?
|
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?
|
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?
|
108
|
-
pb_value_lg = Playbook::PbTitle::Title.new(size: 3, text: "#{
|
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
|
-
|
2
|
+
date: Date.today,
|
3
3
|
size: "lg"
|
4
4
|
}) %>
|
5
5
|
|
6
6
|
<br>
|
7
7
|
|
8
8
|
<%= pb_rails("date", props: {
|
9
|
-
|
9
|
+
date: DateTime.now
|
10
10
|
}) %>
|
11
11
|
|
12
12
|
<br>
|
13
13
|
|
14
14
|
<%= pb_rails("date", props: {
|
15
|
-
|
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,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 @@
|
|
1
|
+
export {default as DateRangeInlineDefault} from './_date_range_inline_default.jsx';
|
@@ -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
|