playbook_ui 12.32.0 → 12.33.0.pre.alpha.PLAY905reactionbuttons979
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/index.js +1 -1
- data/app/pb_kits/playbook/pb_background/_background.tsx +10 -1
- data/app/pb_kits/playbook/pb_background/background.html.erb +2 -1
- data/app/pb_kits/playbook/pb_background/background.rb +4 -2
- data/app/pb_kits/playbook/pb_body/_body_mixins.scss +1 -0
- data/app/pb_kits/playbook/pb_button/_button.scss +33 -0
- data/app/pb_kits/playbook/pb_button/_button.tsx +65 -26
- data/app/pb_kits/playbook/pb_button/_button_mixins.scss +6 -6
- data/app/pb_kits/playbook/pb_button/button.html.erb +13 -0
- data/app/pb_kits/playbook/pb_button/button.rb +13 -2
- data/app/pb_kits/playbook/pb_button/docs/_button_reaction.html.erb +3 -0
- data/app/pb_kits/playbook/pb_button/docs/_button_reaction.jsx +38 -0
- data/app/pb_kits/playbook/pb_button/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_button/docs/index.js +2 -1
- data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.scss +1 -1
- data/app/pb_kits/playbook/pb_date/_date.tsx +7 -8
- data/app/pb_kits/playbook/pb_date/docs/_date_alignment.jsx +2 -2
- data/app/pb_kits/playbook/pb_date/docs/_date_default.jsx +4 -4
- data/app/pb_kits/playbook/pb_date/docs/_date_unstyled.jsx +2 -2
- data/app/pb_kits/playbook/pb_date/docs/_date_variants.jsx +5 -5
- data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.tsx +45 -31
- data/app/pb_kits/playbook/pb_date_range_stacked/_date_range_stacked.tsx +5 -3
- data/app/pb_kits/playbook/pb_date_stacked/_date_stacked.tsx +24 -21
- data/app/pb_kits/playbook/pb_date_time/_date_time.tsx +1 -1
- data/app/pb_kits/playbook/pb_date_time/dateTime.test.js +1 -1
- data/app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.tsx +2 -2
- data/app/pb_kits/playbook/pb_date_time_stacked/date_time_stacked.test.js +1 -1
- data/app/pb_kits/playbook/pb_date_year_stacked/_date_year_stacked.tsx +6 -8
- data/app/pb_kits/playbook/pb_dialog/_dialog.scss +321 -316
- data/app/pb_kits/playbook/pb_dialog/_dialog.tsx +12 -9
- data/app/pb_kits/playbook/pb_dialog/dialog.html.erb +8 -8
- data/app/pb_kits/playbook/pb_dialog/dialogHelper.js +16 -15
- data/app/pb_kits/playbook/pb_icon/_icon.tsx +4 -2
- data/app/pb_kits/playbook/pb_icon/docs/_icon_fa_kit.html.erb +1 -0
- data/app/pb_kits/playbook/pb_icon/docs/_icon_fa_kit.jsx +21 -0
- data/app/pb_kits/playbook/pb_icon/docs/_icon_fa_kit.md +7 -0
- data/app/pb_kits/playbook/pb_icon/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_icon/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_icon/icon.rb +1 -1
- data/app/pb_kits/playbook/pb_icon_circle/_icon_circle.tsx +14 -4
- data/app/pb_kits/playbook/pb_icon_circle/icon_circle.rb +1 -1
- data/app/pb_kits/playbook/pb_icon_stat_value/_icon_stat_value.tsx +12 -1
- data/app/pb_kits/playbook/pb_icon_stat_value/docs/_icon_stat_value_color.html.erb +6 -0
- data/app/pb_kits/playbook/pb_icon_stat_value/docs/_icon_stat_value_color.jsx +9 -0
- data/app/pb_kits/playbook/pb_icon_stat_value/icon_stat_value.html.erb +16 -12
- data/app/pb_kits/playbook/pb_icon_stat_value/icon_stat_value.rb +2 -2
- data/app/pb_kits/playbook/pb_kit/dateTime.ts +139 -67
- data/app/pb_kits/playbook/pb_label_value/_label_value.tsx +52 -31
- data/app/pb_kits/playbook/pb_map/_map.scss +4 -0
- data/app/pb_kits/playbook/pb_message/_message.tsx +24 -24
- data/app/pb_kits/playbook/pb_time/_time.tsx +9 -11
- data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.tsx +46 -49
- data/app/pb_kits/playbook/pb_time_stacked/_time_stacked.tsx +4 -6
- data/app/pb_kits/playbook/pb_timestamp/_timestamp.tsx +11 -11
- data/app/pb_kits/playbook/pb_weekday_stacked/_weekday_stacked.tsx +8 -11
- data/app/pb_kits/playbook/tokens/_colors.scss +4 -2
- data/app/pb_kits/playbook/utilities/_border_radius.scss +11 -1
- data/app/pb_kits/playbook/utilities/_line_height.scss +1 -2
- data/app/pb_kits/playbook/utilities/_shadow.scss +0 -1
- data/app/pb_kits/playbook/utilities/globalProps.ts +1 -1
- data/dist/playbook-rails.js +7 -7
- data/lib/playbook/version.rb +2 -2
- metadata +12 -8
- data/app/pb_kits/playbook/pb_logistic/_logistic.jsx +0 -120
@@ -1,8 +1,8 @@
|
|
1
1
|
import React from "react";
|
2
2
|
import classnames from "classnames";
|
3
|
-
import DateTime from "../pb_kit/dateTime";
|
4
3
|
import { buildAriaProps, buildCss, buildDataProps } from "../utilities/props";
|
5
4
|
import { globalProps } from "../utilities/globalProps";
|
5
|
+
import DateTime from '../pb_kit/dateTime';
|
6
6
|
|
7
7
|
import Body from "../pb_body/_body";
|
8
8
|
import Caption from "../pb_caption/_caption";
|
@@ -26,9 +26,9 @@ type LabelValueProps = {
|
|
26
26
|
title?: string;
|
27
27
|
};
|
28
28
|
|
29
|
-
const dateString = (value:
|
30
|
-
const month =
|
31
|
-
const day =
|
29
|
+
const dateString = (value: Date) => {
|
30
|
+
const month = DateTime.toMonthNum(value);
|
31
|
+
const day = DateTime.toDay(value);
|
32
32
|
|
33
33
|
return ` · ${month}/${day}`;
|
34
34
|
};
|
@@ -52,7 +52,6 @@ const LabelValue = (props: LabelValueProps) => {
|
|
52
52
|
|
53
53
|
const ariaProps = buildAriaProps(aria);
|
54
54
|
const dataProps = buildDataProps(data);
|
55
|
-
const formattedDate = new DateTime({ value: date });
|
56
55
|
const variantClass = variant === "details" ? "details" : "";
|
57
56
|
const classes = classnames(
|
58
57
|
buildCss("pb_label_value_kit", variantClass),
|
@@ -62,59 +61,81 @@ const LabelValue = (props: LabelValueProps) => {
|
|
62
61
|
|
63
62
|
return (
|
64
63
|
<div
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
64
|
+
{...ariaProps}
|
65
|
+
{...dataProps}
|
66
|
+
className={classes}
|
67
|
+
id={id}
|
68
|
+
title={title}
|
70
69
|
>
|
71
|
-
<Caption dark={dark}
|
70
|
+
<Caption dark={dark}
|
71
|
+
text={label}
|
72
|
+
/>
|
72
73
|
{variant === "details" ? (
|
73
|
-
<Flex inline
|
74
|
+
<Flex inline
|
75
|
+
vertical="center"
|
76
|
+
>
|
74
77
|
{icon && (
|
75
|
-
<Body color="light"
|
76
|
-
|
78
|
+
<Body color="light"
|
79
|
+
dark={dark}
|
80
|
+
marginRight="xs"
|
81
|
+
>
|
82
|
+
<Icon dark={dark}
|
83
|
+
fixedWidth
|
84
|
+
icon={icon}
|
85
|
+
/>
|
77
86
|
</Body>
|
78
87
|
)}
|
79
88
|
{description && (
|
80
89
|
<Body
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
90
|
+
color="light"
|
91
|
+
dark={dark}
|
92
|
+
marginRight="xs"
|
93
|
+
text={description}
|
85
94
|
/>
|
86
95
|
)}
|
87
96
|
{active === true ? (
|
88
|
-
<Flex inline
|
97
|
+
<Flex inline
|
98
|
+
vertical="center"
|
99
|
+
>
|
89
100
|
{title && (
|
90
|
-
<Title dark={dark}
|
101
|
+
<Title dark={dark}
|
102
|
+
size={4}
|
103
|
+
text={title}
|
104
|
+
variant="link"
|
105
|
+
/>
|
91
106
|
)}
|
92
107
|
{date && (
|
93
108
|
<Title
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
109
|
+
dark={dark}
|
110
|
+
marginLeft="xs"
|
111
|
+
size={4}
|
112
|
+
text={" " + dateString(date)}
|
113
|
+
variant="link"
|
99
114
|
/>
|
100
115
|
)}
|
101
116
|
</Flex>
|
102
117
|
) : (
|
103
118
|
<>
|
104
|
-
{title && <Title dark={dark}
|
119
|
+
{title && <Title dark={dark}
|
120
|
+
size={4}
|
121
|
+
text={title}
|
122
|
+
/>
|
123
|
+
}
|
105
124
|
{date && (
|
106
125
|
<Title
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
126
|
+
dark={dark}
|
127
|
+
marginLeft="xs"
|
128
|
+
size={4}
|
129
|
+
text={" " + dateString(date)}
|
111
130
|
/>
|
112
131
|
)}
|
113
132
|
</>
|
114
133
|
)}
|
115
134
|
</Flex>
|
116
135
|
) : (
|
117
|
-
<Body dark={dark}
|
136
|
+
<Body dark={dark}
|
137
|
+
text={value}
|
138
|
+
/>
|
118
139
|
)}
|
119
140
|
</div>
|
120
141
|
);
|
@@ -24,7 +24,7 @@ type MessageProps = {
|
|
24
24
|
label?: string,
|
25
25
|
message: string,
|
26
26
|
timestamp?: string,
|
27
|
-
timestampObject?:
|
27
|
+
timestampObject?: Date,
|
28
28
|
timezone?: string,
|
29
29
|
alignTimestamp?: string,
|
30
30
|
}
|
@@ -61,50 +61,50 @@ const Message = (props: MessageProps) => {
|
|
61
61
|
|
62
62
|
return (
|
63
63
|
<div
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
64
|
+
{...ariaProps}
|
65
|
+
{...dataProps}
|
66
|
+
className={classes}
|
67
|
+
id={id}
|
68
68
|
>
|
69
69
|
{shouldDisplayAvatar &&
|
70
70
|
<Avatar
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
71
|
+
imageUrl={avatarUrl}
|
72
|
+
name={avatarName}
|
73
|
+
size="xs"
|
74
|
+
status={avatarStatus}
|
75
75
|
/>
|
76
76
|
}
|
77
77
|
<div className="content_wrapper">
|
78
78
|
<Flex
|
79
|
-
|
80
|
-
|
79
|
+
justify={alignTimestamp === 'left' ? 'none' : 'between'}
|
80
|
+
orientation="row"
|
81
81
|
>
|
82
82
|
{label &&
|
83
83
|
<Title
|
84
|
-
|
85
|
-
|
86
|
-
|
84
|
+
className="message_title"
|
85
|
+
size={4}
|
86
|
+
text={label}
|
87
87
|
/>
|
88
88
|
}
|
89
89
|
<Timestamp
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
90
|
+
className={`pull-${alignTimestamp} ${timestampObject ? 'message_humanized_time' : null}`}
|
91
|
+
text={timestamp}
|
92
|
+
timestamp={''}
|
93
|
+
timezone={timezone}
|
94
94
|
/>
|
95
95
|
{timestampObject &&
|
96
96
|
<Timestamp
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
97
|
+
className={`pull-${alignTimestamp} message_timestamp`}
|
98
|
+
text={''}
|
99
|
+
timestamp={timestampObject}
|
100
|
+
timezone={timezone}
|
101
101
|
/>
|
102
102
|
}
|
103
103
|
</Flex>
|
104
104
|
{message &&
|
105
105
|
<Body
|
106
|
-
|
107
|
-
|
106
|
+
className="pb_message_body"
|
107
|
+
text={message}
|
108
108
|
/>
|
109
109
|
}
|
110
110
|
{children}
|
@@ -1,9 +1,9 @@
|
|
1
1
|
import React from "react";
|
2
2
|
import classnames from "classnames";
|
3
3
|
|
4
|
-
import DateTime from "../pb_kit/dateTime";
|
5
4
|
import { buildCss } from "../utilities/props";
|
6
5
|
import { globalProps, GlobalProps } from "../utilities/globalProps";
|
6
|
+
import DateTime from '../pb_kit/dateTime';
|
7
7
|
|
8
8
|
import Body from "../pb_body/_body";
|
9
9
|
import Caption from "../pb_caption/_caption";
|
@@ -13,7 +13,7 @@ type TimeProps = {
|
|
13
13
|
align?: "left" | "center" | "right";
|
14
14
|
className?: string | string[];
|
15
15
|
data?: string;
|
16
|
-
date:
|
16
|
+
date: Date;
|
17
17
|
dark?: boolean;
|
18
18
|
id?: string;
|
19
19
|
showIcon?: boolean;
|
@@ -41,8 +41,6 @@ const Time = (props: TimeProps) => {
|
|
41
41
|
className
|
42
42
|
);
|
43
43
|
|
44
|
-
const dateTimestamp = new DateTime({ value: date, zone: timeZone });
|
45
|
-
|
46
44
|
return (
|
47
45
|
<div className={classes}>
|
48
46
|
{showIcon && (
|
@@ -70,18 +68,18 @@ const Time = (props: TimeProps) => {
|
|
70
68
|
)
|
71
69
|
)}
|
72
70
|
|
73
|
-
<time dateTime={date}>
|
71
|
+
<time dateTime={date.toString()}>
|
74
72
|
<span>
|
75
73
|
{unstyled
|
76
74
|
? (
|
77
75
|
<>
|
78
76
|
<span>
|
79
|
-
{
|
77
|
+
{DateTime.toTimeWithMeridiem(date, timeZone)}
|
80
78
|
</span>
|
81
79
|
{" "}
|
82
80
|
{showTimezone && (
|
83
81
|
<span>
|
84
|
-
{
|
82
|
+
{DateTime.toTimeZone(date, timeZone)}
|
85
83
|
</span>
|
86
84
|
)}
|
87
85
|
</>
|
@@ -92,13 +90,13 @@ const Time = (props: TimeProps) => {
|
|
92
90
|
<Body
|
93
91
|
className="pb_time"
|
94
92
|
tag="span"
|
95
|
-
text={
|
93
|
+
text={DateTime.toTimeWithMeridiem(date, timeZone)}
|
96
94
|
/>{" "}
|
97
95
|
{showTimezone && (
|
98
96
|
<Body
|
99
97
|
color="light"
|
100
98
|
tag="span"
|
101
|
-
text={
|
99
|
+
text={DateTime.toTimeZone(date, timeZone)}
|
102
100
|
/>
|
103
101
|
)}
|
104
102
|
</>
|
@@ -108,13 +106,13 @@ const Time = (props: TimeProps) => {
|
|
108
106
|
<Caption
|
109
107
|
color="light"
|
110
108
|
tag="span"
|
111
|
-
text={
|
109
|
+
text={DateTime.toTimeWithMeridiem(date, timeZone)}
|
112
110
|
/>{" "}
|
113
111
|
{showTimezone && (
|
114
112
|
<Caption
|
115
113
|
color="light"
|
116
114
|
tag="span"
|
117
|
-
text={
|
115
|
+
text={DateTime.toTimeZone(date, timeZone)}
|
118
116
|
/>
|
119
117
|
)}
|
120
118
|
</>
|
@@ -1,9 +1,9 @@
|
|
1
1
|
import React from 'react'
|
2
2
|
import classnames from 'classnames'
|
3
3
|
|
4
|
-
import DateTime from '../pb_kit/dateTime'
|
5
4
|
import { globalProps, GlobalProps } from '../utilities/globalProps'
|
6
5
|
import { buildAriaProps, buildDataProps } from '../utilities/props'
|
6
|
+
import DateTime from '../pb_kit/dateTime';
|
7
7
|
|
8
8
|
import Body from '../pb_body/_body'
|
9
9
|
import Caption from '../pb_caption/_caption'
|
@@ -19,23 +19,20 @@ type TimeRangeInlineProps = {
|
|
19
19
|
dark?: boolean,
|
20
20
|
icon?: boolean,
|
21
21
|
timezone?: boolean,
|
22
|
-
startTime:
|
23
|
-
endTime:
|
22
|
+
startTime: Date,
|
23
|
+
endTime: Date,
|
24
24
|
} & GlobalProps
|
25
25
|
|
26
|
-
const timezoneString = (dateValue:
|
27
|
-
|
28
|
-
return `${date.convertToTimezone()}`
|
26
|
+
const timezoneString = (dateValue: Date) => {
|
27
|
+
return `${DateTime.toTimeZone(dateValue)}`
|
29
28
|
}
|
30
29
|
|
31
|
-
const dateTimestamp = (dateValue:
|
32
|
-
|
33
|
-
return `${date.toHour()}:${date.toMinute()}${date.toMeridian()}`
|
30
|
+
const dateTimestamp = (dateValue: Date) => {
|
31
|
+
return `${DateTime.toHour(dateValue)}:${DateTime.toMinute(dateValue)}${DateTime.toMeridiem(dateValue)}`
|
34
32
|
}
|
35
33
|
|
36
|
-
const dateTimeIso = (dateValue:
|
37
|
-
|
38
|
-
return date.toIso()
|
34
|
+
const dateTimeIso = (dateValue: Date) => {
|
35
|
+
return DateTime.toIso(dateValue)
|
39
36
|
}
|
40
37
|
|
41
38
|
const TimeRangeInline = (props: TimeRangeInlineProps) => {
|
@@ -59,10 +56,10 @@ const TimeRangeInline = (props: TimeRangeInlineProps) => {
|
|
59
56
|
const separator = (
|
60
57
|
<Body color="light">
|
61
58
|
<Icon
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
59
|
+
className="pb_time_range_inline_arrow"
|
60
|
+
dark={dark}
|
61
|
+
fixedWidth
|
62
|
+
icon="long-arrow-right"
|
66
63
|
/>
|
67
64
|
</Body>
|
68
65
|
)
|
@@ -71,16 +68,16 @@ const TimeRangeInline = (props: TimeRangeInlineProps) => {
|
|
71
68
|
return (
|
72
69
|
icon &&
|
73
70
|
<Body
|
74
|
-
|
75
|
-
|
71
|
+
color="light"
|
72
|
+
tag="span"
|
76
73
|
>
|
77
74
|
<Icon
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
75
|
+
className="pb_time_range_inline_icon"
|
76
|
+
dark={dark}
|
77
|
+
fixedWidth
|
78
|
+
icon="clock"
|
79
|
+
size={size}
|
80
|
+
tag="span"
|
84
81
|
/>
|
85
82
|
</Body>
|
86
83
|
)
|
@@ -88,17 +85,17 @@ const TimeRangeInline = (props: TimeRangeInlineProps) => {
|
|
88
85
|
|
89
86
|
return (
|
90
87
|
<div
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
88
|
+
{...ariaProps}
|
89
|
+
{...dataProps}
|
90
|
+
className={classnames('pb_time_range_inline_kit_' + alignment, globalProps(props), className)}
|
91
|
+
id={id}
|
95
92
|
>
|
96
93
|
<div className="pb_time_range_inline_wrapper">
|
97
94
|
{size == 'xs' &&
|
98
95
|
<>
|
99
96
|
<Caption
|
100
|
-
|
101
|
-
|
97
|
+
dark={dark}
|
98
|
+
tag="span"
|
102
99
|
>
|
103
100
|
{iconContent()}
|
104
101
|
<time dateTime={dateTimeIso(startTime)}>
|
@@ -108,15 +105,15 @@ const TimeRangeInline = (props: TimeRangeInlineProps) => {
|
|
108
105
|
</time>
|
109
106
|
</Caption>
|
110
107
|
<Caption
|
111
|
-
|
112
|
-
|
113
|
-
|
108
|
+
className="pb_time_range_inline_arrow"
|
109
|
+
dark={dark}
|
110
|
+
tag="span"
|
114
111
|
>
|
115
112
|
{separator}
|
116
113
|
</Caption>
|
117
114
|
<Caption
|
118
|
-
|
119
|
-
|
115
|
+
dark={dark}
|
116
|
+
tag="span"
|
120
117
|
>
|
121
118
|
<time dateTime={dateTimeIso(endTime)}>
|
122
119
|
{` ${dateTimestamp(
|
@@ -126,9 +123,9 @@ const TimeRangeInline = (props: TimeRangeInlineProps) => {
|
|
126
123
|
</Caption>
|
127
124
|
{timezone &&
|
128
125
|
<Caption
|
129
|
-
|
130
|
-
|
131
|
-
|
126
|
+
className="pb_time_range_inline_timezone"
|
127
|
+
dark={dark}
|
128
|
+
tag="span"
|
132
129
|
>
|
133
130
|
{timezoneString(endTime)}
|
134
131
|
</Caption>
|
@@ -138,8 +135,8 @@ const TimeRangeInline = (props: TimeRangeInlineProps) => {
|
|
138
135
|
{size == 'sm' &&
|
139
136
|
<>
|
140
137
|
<Body
|
141
|
-
|
142
|
-
|
138
|
+
dark={dark}
|
139
|
+
tag="span"
|
143
140
|
>
|
144
141
|
{iconContent()}
|
145
142
|
<time dateTime={dateTimeIso(startTime)}>
|
@@ -149,15 +146,15 @@ const TimeRangeInline = (props: TimeRangeInlineProps) => {
|
|
149
146
|
</time>
|
150
147
|
</Body>
|
151
148
|
<Body
|
152
|
-
|
153
|
-
|
154
|
-
|
149
|
+
className="pb_time_range_inline_arrow"
|
150
|
+
dark={dark}
|
151
|
+
tag="span"
|
155
152
|
>
|
156
153
|
{separator}
|
157
154
|
</Body>
|
158
155
|
<Body
|
159
|
-
|
160
|
-
|
156
|
+
dark={dark}
|
157
|
+
tag="span"
|
161
158
|
>
|
162
159
|
<time dateTime={dateTimeIso(endTime)}>
|
163
160
|
{` ${dateTimestamp(
|
@@ -167,10 +164,10 @@ const TimeRangeInline = (props: TimeRangeInlineProps) => {
|
|
167
164
|
</Body>
|
168
165
|
{timezone &&
|
169
166
|
<Body
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
167
|
+
className="pb_time_range_inline_timezone"
|
168
|
+
color="light"
|
169
|
+
dark={dark}
|
170
|
+
tag="span"
|
174
171
|
>
|
175
172
|
{timezoneString(endTime)}
|
176
173
|
</Body>
|
@@ -1,9 +1,9 @@
|
|
1
1
|
import React from 'react'
|
2
2
|
import classnames from 'classnames'
|
3
3
|
|
4
|
-
import DateTime from '../pb_kit/dateTime'
|
5
4
|
import { buildCss, buildDataProps } from '../utilities/props'
|
6
5
|
import { deprecatedProps, globalProps } from '../utilities/globalProps'
|
6
|
+
import DateTime from '../pb_kit/dateTime';
|
7
7
|
|
8
8
|
import Body from '../pb_body/_body'
|
9
9
|
import Caption from '../pb_caption/_caption'
|
@@ -13,7 +13,7 @@ type TimeStackedProps = {
|
|
13
13
|
className?: string | string[],
|
14
14
|
dark?: boolean,
|
15
15
|
data?: { [key: string]: string },
|
16
|
-
date?:
|
16
|
+
date?: Date,
|
17
17
|
id?: string,
|
18
18
|
time?: number | Date,
|
19
19
|
timeZone?: string,
|
@@ -39,8 +39,6 @@ const TimeStackedDefault = (props: TimeStackedProps): React.ReactElement => {
|
|
39
39
|
)
|
40
40
|
const dataProps = buildDataProps(data)
|
41
41
|
|
42
|
-
const dateTimestamp = new DateTime({ value: date ? date : new Date(time), zone: timeZone })
|
43
|
-
|
44
42
|
return (
|
45
43
|
<div
|
46
44
|
className={classes}
|
@@ -52,13 +50,13 @@ const TimeStackedDefault = (props: TimeStackedProps): React.ReactElement => {
|
|
52
50
|
dark={dark}
|
53
51
|
>
|
54
52
|
<time>
|
55
|
-
{
|
53
|
+
{DateTime.toTimeWithMeridiem(date ? date : new Date(time), timeZone)}
|
56
54
|
<Caption
|
57
55
|
className="pb_time_stacked"
|
58
56
|
color="light"
|
59
57
|
dark={dark}
|
60
58
|
tag="span"
|
61
|
-
text={
|
59
|
+
text={DateTime.toTimeZone(date ? date : new Date(time), timeZone)}
|
62
60
|
/>
|
63
61
|
</time>
|
64
62
|
</Body>
|
@@ -1,9 +1,10 @@
|
|
1
1
|
import React from 'react'
|
2
2
|
import classnames from 'classnames'
|
3
3
|
|
4
|
-
import DateTime from '../pb_kit/dateTime'
|
5
4
|
import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
|
6
5
|
import { globalProps } from '../utilities/globalProps'
|
6
|
+
import DateTime from '../pb_kit/dateTime';
|
7
|
+
|
7
8
|
|
8
9
|
import Caption from '../pb_caption/_caption'
|
9
10
|
|
@@ -14,7 +15,7 @@ type TimestampProps = {
|
|
14
15
|
dark?: boolean,
|
15
16
|
data?: string,
|
16
17
|
text: string,
|
17
|
-
timestamp: string,
|
18
|
+
timestamp: Date | string,
|
18
19
|
timezone: string,
|
19
20
|
id?: string,
|
20
21
|
showDate?: boolean,
|
@@ -32,8 +33,8 @@ const Timestamp = (props: TimestampProps): React.ReactElement => {
|
|
32
33
|
dark = false,
|
33
34
|
data = {},
|
34
35
|
text,
|
35
|
-
timestamp,
|
36
36
|
timezone,
|
37
|
+
timestamp,
|
37
38
|
showDate = true,
|
38
39
|
showUser = false,
|
39
40
|
hideUpdated = false,
|
@@ -53,26 +54,25 @@ const Timestamp = (props: TimestampProps): React.ReactElement => {
|
|
53
54
|
)
|
54
55
|
|
55
56
|
const currentYear = new Date().getFullYear().toString()
|
56
|
-
const
|
57
|
-
const dateDisplay = `${dateTimestamp.toMonth()} ${dateTimestamp.toDay()}`
|
57
|
+
const dateDisplay = `${DateTime.toMonth(timestamp, timezone)} ${DateTime.toDay(timestamp, timezone)}`
|
58
58
|
const shouldShowUser = showUser == true && text.length > 0
|
59
59
|
const shouldShowTimezone = showTimezone == true && timezone.length > 0
|
60
60
|
const updatedText = hideUpdated ? "" : "Last updated"
|
61
61
|
const userDisplay = shouldShowUser ? ` by ${text}` : ''
|
62
62
|
|
63
|
-
let timeDisplay = `${
|
63
|
+
let timeDisplay = `${DateTime.toHour(timestamp, timezone)}:${DateTime.toMinute(timestamp, timezone)}${DateTime.toMeridiem(timestamp, timezone)}`
|
64
64
|
|
65
65
|
const fullTimeDisplay = () => {
|
66
66
|
if (shouldShowTimezone) {
|
67
|
-
timeDisplay = `${timeDisplay} ${
|
67
|
+
timeDisplay = `${timeDisplay} ${DateTime.toTimeZone(timestamp, timezone)}`
|
68
68
|
}
|
69
69
|
return timeDisplay
|
70
70
|
}
|
71
71
|
|
72
72
|
const fullDateDisplay = () => {
|
73
|
-
let fullDisplay = `${
|
74
|
-
if (
|
75
|
-
fullDisplay = `${fullDisplay}, ${
|
73
|
+
let fullDisplay = `${DateTime.toMonth(timestamp, timezone)} ${DateTime.toDay(timestamp, timezone)}`
|
74
|
+
if (DateTime.toYear(timestamp, timezone).toString() !== currentYear) {
|
75
|
+
fullDisplay = `${fullDisplay}, ${DateTime.toYear(timestamp, timezone)}`
|
76
76
|
}
|
77
77
|
return `${fullDisplay} ${' \u00b7 '} ${fullTimeDisplay()}`
|
78
78
|
}
|
@@ -82,7 +82,7 @@ const Timestamp = (props: TimestampProps): React.ReactElement => {
|
|
82
82
|
}
|
83
83
|
|
84
84
|
const formatElapsedString = () => {
|
85
|
-
return `${updatedText} ${userDisplay} ${
|
85
|
+
return `${updatedText} ${userDisplay} ${DateTime.fromNow(timestamp)}`
|
86
86
|
}
|
87
87
|
|
88
88
|
const captionText = () => {
|
@@ -7,8 +7,7 @@ import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
|
|
7
7
|
|
8
8
|
import Caption from '../pb_caption/_caption'
|
9
9
|
import Title from '../pb_title/_title'
|
10
|
-
|
11
|
-
import DateTime from '../pb_kit/dateTime'
|
10
|
+
import DateTime from '../pb_kit/dateTime';
|
12
11
|
|
13
12
|
type WeekdayStackedProps = {
|
14
13
|
align?: "left" | "center" | "right",
|
@@ -22,22 +21,20 @@ type WeekdayStackedProps = {
|
|
22
21
|
compact?: boolean,
|
23
22
|
}
|
24
23
|
|
25
|
-
const getDayOfWeek = (value: Date
|
26
|
-
const dateTime = new DateTime({ value })
|
24
|
+
const getDayOfWeek = (value: Date, compact: boolean) => {
|
27
25
|
if (compact) {
|
28
|
-
return
|
26
|
+
return DateTime.toDayAbbr(value)
|
29
27
|
} else {
|
30
|
-
return
|
28
|
+
return DateTime.toWeekday(value)
|
31
29
|
}
|
32
30
|
}
|
33
31
|
|
34
|
-
const getFormattedDate = (value: Date
|
35
|
-
const dateTime = new DateTime({ value })
|
32
|
+
const getFormattedDate = (value: Date, variant: "day_only" | "month_day" | "expanded") => {
|
36
33
|
if (variant === 'day_only') {
|
37
|
-
return
|
34
|
+
return DateTime.toDay(value).toString()
|
38
35
|
} else {
|
39
|
-
const format = variant === 'expanded' ? '
|
40
|
-
return
|
36
|
+
const format = variant === 'expanded' ? 'expanded' : 'month_day'
|
37
|
+
return DateTime.toCustomFormat(value, format)
|
41
38
|
}
|
42
39
|
}
|
43
40
|
|
@@ -75,10 +75,12 @@ $card_colors: (
|
|
75
75
|
);
|
76
76
|
|
77
77
|
$primary-action: $primary !default;
|
78
|
-
$
|
78
|
+
$secondary_action: rgba($primary_action, 0.05) !default;
|
79
|
+
$primary_action_dark: #0082ff !default;
|
79
80
|
|
80
81
|
$action_colors: (
|
81
|
-
primary_action: $primary-action
|
82
|
+
primary_action: $primary-action,
|
83
|
+
primary_action_dark: $primary_action_dark
|
82
84
|
);
|
83
85
|
|
84
86
|
/* Active colors ----------------------*/
|