playbook_ui 2.9.8 → 2.9.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/_playbook.scss +3 -0
- data/app/pb_kits/playbook/index.js +4 -0
- data/app/pb_kits/playbook/kits/pb_date_stacked.js +4 -0
- data/app/pb_kits/playbook/kits/pb_multiple_users.js +4 -0
- data/app/pb_kits/playbook/kits/pb_progress_pills.js +4 -0
- data/app/pb_kits/playbook/packs/examples.js +6 -0
- data/app/pb_kits/playbook/packs/kits.js +5 -0
- data/app/pb_kits/playbook/packs/site_styles/docs/_color_utilities.scss +1 -0
- data/app/pb_kits/playbook/pb_avatar/_avatar.jsx +21 -12
- data/app/pb_kits/playbook/pb_avatar/docs/_avatar_default.jsx +5 -5
- data/app/pb_kits/playbook/pb_bar_graph/bar_graph.rb +1 -1
- data/app/pb_kits/playbook/pb_caption/caption.rb +0 -1
- data/app/pb_kits/playbook/pb_card/_card.jsx +18 -6
- data/app/pb_kits/playbook/pb_card/_card.scss +33 -0
- data/app/pb_kits/playbook/pb_card/card.rb +15 -1
- data/app/pb_kits/playbook/pb_card/docs/_card_highlight.html.erb +9 -0
- data/app/pb_kits/playbook/pb_card/docs/_card_highlight.jsx +20 -0
- data/app/pb_kits/playbook/pb_card/docs/example.yml +3 -0
- data/app/pb_kits/playbook/pb_card/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_contact/contact.rb +0 -1
- data/app/pb_kits/playbook/pb_dashboard_value/_dashboard_value.jsx +15 -33
- data/app/pb_kits/playbook/pb_dashboard_value/docs/_dashboard_value_align.jsx +12 -9
- data/app/pb_kits/playbook/pb_dashboard_value/docs/_dashboard_value_default.jsx +12 -9
- data/app/pb_kits/playbook/pb_date/date.rb +1 -1
- data/app/pb_kits/playbook/pb_date_stacked/_date_stacked.html.erb +13 -0
- data/app/pb_kits/playbook/pb_date_stacked/_date_stacked.jsx +83 -0
- data/app/pb_kits/playbook/pb_date_stacked/_date_stacked.scss +35 -0
- data/app/pb_kits/playbook/pb_date_stacked/date_stacked.rb +69 -0
- data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_align.html.erb +21 -0
- data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_align.jsx +33 -0
- data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_dark.html.erb +5 -0
- data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_dark.jsx +24 -0
- data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_default.html.erb +5 -0
- data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_default.jsx +18 -0
- data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_not_current_year.html.erb +5 -0
- data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_not_current_year.jsx +18 -0
- data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_reverse.html.erb +5 -0
- data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_reverse.jsx +18 -0
- data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_sizes.html.erb +5 -0
- data/app/pb_kits/playbook/pb_date_stacked/docs/_date_stacked_sizes.jsx +19 -0
- data/app/pb_kits/playbook/pb_date_stacked/docs/example.yml +22 -0
- data/app/pb_kits/playbook/pb_date_stacked/docs/index.js +7 -0
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.rb +0 -1
- data/app/pb_kits/playbook/pb_kit/pb_date_time.rb +3 -1
- data/app/pb_kits/playbook/pb_layout/layout.rb +0 -1
- data/app/pb_kits/playbook/pb_loading_inline/loading_inline.rb +5 -5
- data/app/pb_kits/playbook/pb_multiple_users/_multiple_users.html.erb +14 -0
- data/app/pb_kits/playbook/pb_multiple_users/_multiple_users.jsx +69 -0
- data/app/pb_kits/playbook/pb_multiple_users/_multiple_users.scss +50 -0
- data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_default.html.erb +39 -0
- data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_default.jsx +46 -0
- data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_reverse.html.erb +41 -0
- data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_reverse.jsx +50 -0
- data/app/pb_kits/playbook/pb_multiple_users/docs/example.yml +9 -0
- data/app/pb_kits/playbook/pb_multiple_users/docs/index.js +2 -0
- data/app/pb_kits/playbook/pb_multiple_users/multiple_users.rb +32 -0
- data/app/pb_kits/playbook/pb_online_status/online_status.rb +2 -2
- data/app/pb_kits/playbook/pb_person_contact/person_contact.rb +2 -2
- data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.html.erb +19 -0
- data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.jsx +51 -0
- data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.scss +42 -0
- data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_dark.html.erb +1 -0
- data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_dark.jsx +21 -0
- data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.html.erb +1 -0
- data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.jsx +18 -0
- data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_status.html.erb +1 -0
- data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_status.jsx +20 -0
- data/app/pb_kits/playbook/pb_progress_pills/docs/example.yml +12 -0
- data/app/pb_kits/playbook/pb_progress_pills/docs/index.js +3 -0
- data/app/pb_kits/playbook/pb_progress_pills/progress_pills.rb +49 -0
- data/app/pb_kits/playbook/pb_progress_simple/progress_simple.rb +3 -3
- data/app/pb_kits/playbook/pb_stat_change/stat_change.rb +5 -5
- data/app/pb_kits/playbook/pb_time/time.rb +2 -2
- data/app/pb_kits/playbook/pb_title_count/title_count.rb +2 -2
- data/app/pb_kits/playbook/pb_user/docs/_user_dark.html.erb +42 -0
- data/app/pb_kits/playbook/pb_user/docs/_user_text_only_dark.html.erb +19 -0
- data/app/pb_kits/playbook/tokens/_colors.scss +4 -0
- data/app/views/playbook/pages/utilities.html.slim +4 -4
- data/lib/playbook/version.rb +1 -1
- data/lib/tasks/pb_release.rake +0 -2
- metadata +49 -2
@@ -1,12 +1,15 @@
|
|
1
1
|
examples:
|
2
2
|
rails:
|
3
3
|
- card_light: Default
|
4
|
+
- card_highlight: Highlight Cards
|
4
5
|
- card_selected: Selected
|
5
6
|
- card_padding: Padding Size
|
6
7
|
- card_shadow: Shadow Size
|
7
8
|
- card_content: Content Size
|
9
|
+
|
8
10
|
react:
|
9
11
|
- card_light: Default
|
12
|
+
- card_highlight: Highlight Cards
|
10
13
|
- card_selected: Selected
|
11
14
|
- card_padding: Padding Size
|
12
15
|
- card_shadow: Shadow Size
|
@@ -1,4 +1,5 @@
|
|
1
1
|
export {default as CardLight} from './_card_light.jsx';
|
2
|
+
export {default as CardHighlight} from './_card_highlight.jsx';
|
2
3
|
export {default as CardSelected} from './_card_selected.jsx';
|
3
4
|
export {default as CardPadding} from './_card_padding.jsx';
|
4
5
|
export {default as CardShadow} from './_card_shadow.jsx';
|
@@ -13,12 +13,12 @@ type DashboardValueProps = {
|
|
13
13
|
align?: 'left' | 'center' | 'right',
|
14
14
|
className?: String,
|
15
15
|
id?: String,
|
16
|
-
|
16
|
+
statChange?: {
|
17
17
|
change?: String,
|
18
18
|
value?: String | Number
|
19
19
|
},
|
20
|
-
|
21
|
-
|
20
|
+
statLabel?: String,
|
21
|
+
statValue?: {
|
22
22
|
unit?: String,
|
23
23
|
value?: String | Number
|
24
24
|
}
|
@@ -39,40 +39,22 @@ const DashboardValue = (props: DashboardValueProps) => {
|
|
39
39
|
align='left',
|
40
40
|
className,
|
41
41
|
id,
|
42
|
-
|
43
|
-
|
44
|
-
|
42
|
+
statChange,
|
43
|
+
statLabel,
|
44
|
+
statValue,
|
45
45
|
} = props
|
46
46
|
|
47
|
-
const statLabel = function(stat_label) {
|
48
|
-
if (stat_label) {
|
49
|
-
return (
|
50
|
-
<Body color="light">{stat_label}</Body>
|
51
|
-
)
|
52
|
-
}
|
53
|
-
}
|
54
|
-
|
55
|
-
const statChange = function(stat_change) {
|
56
|
-
if (stat_change) {
|
57
|
-
return (
|
58
|
-
<StatChange change={stat_change.change} value={stat_change.value} />
|
59
|
-
)
|
60
|
-
}
|
61
|
-
}
|
62
|
-
|
63
|
-
const statValue = function(stat_value) {
|
64
|
-
if (stat_value) {
|
65
|
-
return (
|
66
|
-
<StatValue value={stat_value.value} unit={stat_value.unit} />
|
67
|
-
)
|
68
|
-
}
|
69
|
-
}
|
70
|
-
|
71
47
|
return (
|
72
48
|
<div id={id} className={classnames(dashboardValueCSS(props), className)}>
|
73
|
-
{statLabel
|
74
|
-
|
75
|
-
|
49
|
+
<If condition={statLabel}>
|
50
|
+
<Body color="light">{statLabel}</Body>
|
51
|
+
</If>
|
52
|
+
<If condition={statValue}>
|
53
|
+
<StatValue value={statValue.value} unit={statValue.unit} />
|
54
|
+
</If>
|
55
|
+
<If condition={statChange}>
|
56
|
+
<StatChange change={statChange.change} value={statChange.value} />
|
57
|
+
</If>
|
76
58
|
</div>
|
77
59
|
)
|
78
60
|
}
|
@@ -5,25 +5,28 @@ function DashboardValueAlign() {
|
|
5
5
|
return (
|
6
6
|
<div>
|
7
7
|
<DashboardValue
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
statChange={{change: "decrease", value: "26.1"}}
|
9
|
+
statLabel="Top Title Value"
|
10
|
+
statValue={{value: "1,428", unit: "appts"}}
|
11
|
+
/>
|
11
12
|
|
12
13
|
<br/><br/>
|
13
14
|
|
14
15
|
<DashboardValue
|
15
16
|
align="center"
|
16
|
-
|
17
|
-
|
18
|
-
|
17
|
+
statChange={{change: "decrease", value: 56.1}}
|
18
|
+
statLabel="Top Title Value"
|
19
|
+
statValue={{value: "1,428", unit: "appts"}}
|
20
|
+
/>
|
19
21
|
|
20
22
|
<br/><br/>
|
21
23
|
|
22
24
|
<DashboardValue
|
23
25
|
align="right"
|
24
|
-
|
25
|
-
|
26
|
-
|
26
|
+
statChange={{change: "decrease", value: 86}}
|
27
|
+
statLabel="Top Title Value"
|
28
|
+
statValue={{value: "1,428", unit: "appts"}}
|
29
|
+
/>
|
27
30
|
</div>
|
28
31
|
)
|
29
32
|
}
|
@@ -5,23 +5,26 @@ function DashboardValueDefault() {
|
|
5
5
|
return (
|
6
6
|
<div>
|
7
7
|
<DashboardValue
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
statChange={{change: "decrease", value: "26.1"}}
|
9
|
+
statLabel="Decreased Value"
|
10
|
+
statValue={{value: "1,428", unit: "appts"}}
|
11
|
+
/>
|
11
12
|
|
12
13
|
<br/><br/>
|
13
14
|
|
14
15
|
<DashboardValue
|
15
|
-
|
16
|
-
|
17
|
-
|
16
|
+
statChange={{change: "increase", value: 56.1}}
|
17
|
+
statLabel="Increased Value"
|
18
|
+
statValue={{value: "938", unit: "homes"}}
|
19
|
+
/>
|
18
20
|
|
19
21
|
<br/><br/>
|
20
22
|
|
21
23
|
<DashboardValue
|
22
|
-
|
23
|
-
|
24
|
-
|
24
|
+
statChange={{value: 86}}
|
25
|
+
statLabel="Neutral Value"
|
26
|
+
statValue={{value: "261", unit: "windows"}}
|
27
|
+
/>
|
25
28
|
</div>
|
26
29
|
)
|
27
30
|
}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<%= content_tag(:div,
|
2
|
+
id: object.id,
|
3
|
+
data: object.data,
|
4
|
+
class: object.classname) do %>
|
5
|
+
|
6
|
+
<div class="pb_date_stacked_day_month">
|
7
|
+
<%= pb_rails("caption", props: { text: object.month }) %>
|
8
|
+
<%= pb_rails("title", props: { text: object.day , size: object.title_size }) do %>
|
9
|
+
<% end %>
|
10
|
+
</div>
|
11
|
+
<%= pb_rails("caption", props: { text: object.year, size:"xs" }) %>
|
12
|
+
|
13
|
+
<% end %>
|
@@ -0,0 +1,83 @@
|
|
1
|
+
/* @flow */
|
2
|
+
|
3
|
+
import React from 'react'
|
4
|
+
import classnames from 'classnames'
|
5
|
+
import DateTime from '../pb_kit/dateTime.js'
|
6
|
+
|
7
|
+
import {
|
8
|
+
Title,
|
9
|
+
Caption
|
10
|
+
} from '../'
|
11
|
+
|
12
|
+
type DateStackedProps = {
|
13
|
+
align?: 'center' | 'right',
|
14
|
+
className?: String | Array<String>,
|
15
|
+
dark?: Boolean,
|
16
|
+
data?: String,
|
17
|
+
date: String,
|
18
|
+
size?: 'sm' | 'md',
|
19
|
+
id?: String,
|
20
|
+
reverse?: Boolean,
|
21
|
+
}
|
22
|
+
|
23
|
+
const kitClasses = ({
|
24
|
+
align='left',
|
25
|
+
size='sm',
|
26
|
+
dark=false,
|
27
|
+
reverse=false,
|
28
|
+
|
29
|
+
}: DateStackedProps) => {
|
30
|
+
const alignStyle = align !== '' ? `_${align}` : ''
|
31
|
+
const sizeStyle = size !== '' ? `_${size}` : ''
|
32
|
+
const themeStyle = dark === true ? '_dark' : ''
|
33
|
+
const reverseStyle = reverse === true ? '_reverse' : ''
|
34
|
+
return 'pb_date_stacked_kit' + alignStyle + sizeStyle + themeStyle + reverseStyle
|
35
|
+
}
|
36
|
+
|
37
|
+
const sizes = {
|
38
|
+
sm: 4,
|
39
|
+
md: 3,
|
40
|
+
}
|
41
|
+
|
42
|
+
const DateStacked = (props: DateStackedProps) => {
|
43
|
+
const {
|
44
|
+
align='left',
|
45
|
+
className,
|
46
|
+
dark=false,
|
47
|
+
reverse=false,
|
48
|
+
date,
|
49
|
+
size='sm'
|
50
|
+
} = props
|
51
|
+
|
52
|
+
const dateTimestamp = new DateTime({ value: date })
|
53
|
+
const css = classnames(kitClasses(props), className)
|
54
|
+
|
55
|
+
const current_year = new Date().getFullYear().toString()
|
56
|
+
const input_year = dateTimestamp.toYear().toString()
|
57
|
+
|
58
|
+
const print_year = dateTimestamp => {
|
59
|
+
if (current_year != input_year) {
|
60
|
+
return (
|
61
|
+
<Caption size='xs'>{input_year}</Caption>
|
62
|
+
)
|
63
|
+
}
|
64
|
+
}
|
65
|
+
|
66
|
+
return (
|
67
|
+
<div className={css}>
|
68
|
+
<div class="pb_date_stacked_day_month">
|
69
|
+
<Caption
|
70
|
+
text={`${dateTimestamp.toMonth().toUpperCase()}`}
|
71
|
+
/>
|
72
|
+
<Title
|
73
|
+
dark={dark}
|
74
|
+
size={sizes[size]}
|
75
|
+
text={`${dateTimestamp.toDay()}`}
|
76
|
+
/>
|
77
|
+
</div>
|
78
|
+
{print_year(date)}
|
79
|
+
</div>
|
80
|
+
)
|
81
|
+
}
|
82
|
+
|
83
|
+
export default DateStacked
|
@@ -0,0 +1,35 @@
|
|
1
|
+
@import "../pb_title/title";
|
2
|
+
@import "../pb_caption/caption";
|
3
|
+
@import "../tokens/colors";
|
4
|
+
|
5
|
+
|
6
|
+
[class^=pb_date_stacked_kit]{
|
7
|
+
&[class*=_center] {
|
8
|
+
& > * [class^=pb_title_kit],
|
9
|
+
& > * [class^=pb_caption_kit],
|
10
|
+
& > [class^=pb_date_stacked_year_kit] {
|
11
|
+
text-align: center;
|
12
|
+
}
|
13
|
+
}
|
14
|
+
&[class*=_right] {
|
15
|
+
& > * [class^=pb_title_kit],
|
16
|
+
& > * [class^=pb_caption_kit],
|
17
|
+
& > [class^=pb_date_stacked_year] {
|
18
|
+
text-align: right;
|
19
|
+
}
|
20
|
+
}
|
21
|
+
&[class*=_reverse] {
|
22
|
+
.pb_date_stacked_day_month {
|
23
|
+
display: flex;
|
24
|
+
flex-direction: column-reverse;
|
25
|
+
}
|
26
|
+
}
|
27
|
+
&[class*=_dark] {
|
28
|
+
& > * [class^=pb_title_kit] {
|
29
|
+
color: $text_dk_default;
|
30
|
+
}
|
31
|
+
& > * [class^=pb_caption_kit] {
|
32
|
+
color: $text_dk_light;
|
33
|
+
}
|
34
|
+
}
|
35
|
+
}
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Playbook
|
4
|
+
module PbDateStacked
|
5
|
+
class DateStacked
|
6
|
+
include ActionView::Helpers::TagHelper
|
7
|
+
include ActionView::Context
|
8
|
+
include Playbook::Props
|
9
|
+
|
10
|
+
partial "pb_date_stacked/date_stacked"
|
11
|
+
|
12
|
+
prop :date, type: Playbook::Props::Date, required: true
|
13
|
+
prop :align, type: Playbook::Props::Enum,
|
14
|
+
values: %w[left center right],
|
15
|
+
default: "left"
|
16
|
+
prop :size, type: Playbook::Props::Enum,
|
17
|
+
values: %w[sm md],
|
18
|
+
default: "sm"
|
19
|
+
prop :reverse, type: Playbook::Props::Boolean,
|
20
|
+
default: false
|
21
|
+
prop :dark, type: Playbook::Props::Boolean,
|
22
|
+
default: false
|
23
|
+
|
24
|
+
def classname
|
25
|
+
generate_classname("pb_date_stacked_kit", align, size, reverse_class, dark_class)
|
26
|
+
end
|
27
|
+
|
28
|
+
def title_size
|
29
|
+
size == "md" ? 3: 4
|
30
|
+
end
|
31
|
+
|
32
|
+
def day
|
33
|
+
day = Playbook::PbKit::PbDateTime.new(date)
|
34
|
+
content_tag(:time, datetime: day.to_iso) do
|
35
|
+
"#{day.to_day}"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def month
|
40
|
+
month = Playbook::PbKit::PbDateTime.new(date)
|
41
|
+
content_tag(:time, datetime: month.to_iso) do
|
42
|
+
"#{month.to_month}"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def year
|
47
|
+
current_year = DateTime.now.year.to_i
|
48
|
+
year = Playbook::PbKit::PbDateTime.new(date).to_year.to_i
|
49
|
+
if current_year != year
|
50
|
+
content_tag(:time, datetime: year) do
|
51
|
+
"#{year}"
|
52
|
+
end
|
53
|
+
else
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
def reverse_class
|
60
|
+
reverse ? "reverse" : nil
|
61
|
+
end
|
62
|
+
|
63
|
+
def dark_class
|
64
|
+
dark ? "dark" : nil
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<%= pb_rails("date_stacked", props: { date: DateTime.now }) %>
|
2
|
+
|
3
|
+
<br>
|
4
|
+
|
5
|
+
<%= pb_rails("date_stacked", props: { date: DateTime.now, align: "center" }) %>
|
6
|
+
|
7
|
+
<br>
|
8
|
+
|
9
|
+
<%= pb_rails("date_stacked", props: { date: DateTime.now, align: "right" }) %>
|
10
|
+
|
11
|
+
<br>
|
12
|
+
|
13
|
+
<%= pb_rails("date_stacked", props: { date: DateTime.now, size: "md"}) %>
|
14
|
+
|
15
|
+
<br>
|
16
|
+
|
17
|
+
<%= pb_rails("date_stacked", props: { date: DateTime.now, size: "md", align: "center" }) %>
|
18
|
+
|
19
|
+
<br>
|
20
|
+
|
21
|
+
<%= pb_rails("date_stacked", props: { date: DateTime.now, size: "md", align: "right" }) %>
|
@@ -0,0 +1,33 @@
|
|
1
|
+
import React from "react"
|
2
|
+
import DateStacked from "../_date_stacked.jsx"
|
3
|
+
|
4
|
+
function DateStackedAlign() {
|
5
|
+
return (
|
6
|
+
<div>
|
7
|
+
<DateStacked date={new Date()} size='sm'/>
|
8
|
+
|
9
|
+
<br/>
|
10
|
+
|
11
|
+
<DateStacked date={new Date()} align='center'/>
|
12
|
+
|
13
|
+
<br/>
|
14
|
+
|
15
|
+
<DateStacked date={new Date()} align='right'/>
|
16
|
+
|
17
|
+
<br/>
|
18
|
+
|
19
|
+
<DateStacked date={new Date()} size='md'/>
|
20
|
+
|
21
|
+
<br/>
|
22
|
+
|
23
|
+
<DateStacked date={new Date()} size='md' align='center'/>
|
24
|
+
|
25
|
+
<br/>
|
26
|
+
|
27
|
+
<DateStacked date={new Date()} size='md' align='right'/>
|
28
|
+
|
29
|
+
</div>
|
30
|
+
)
|
31
|
+
}
|
32
|
+
|
33
|
+
export default DateStackedAlign;
|