playbook_ui 12.31.0.pre.alpha.PLAY814removemomentjs935 → 12.31.0.pre.alpha.customiconsfa928
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/custom-icons.js +355 -0
- data/app/pb_kits/playbook/index.js +2 -1
- data/app/pb_kits/playbook/pb_date/_date.tsx +8 -7
- data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.tsx +31 -45
- data/app/pb_kits/playbook/pb_date_range_stacked/_date_range_stacked.tsx +3 -5
- data/app/pb_kits/playbook/pb_date_stacked/_date_stacked.tsx +21 -24
- 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 +8 -6
- data/app/pb_kits/playbook/pb_icon/_icon.tsx +9 -3
- data/app/pb_kits/playbook/pb_icon/icon.rb +8 -2
- data/app/pb_kits/playbook/pb_kit/dateTime.ts +67 -139
- data/app/pb_kits/playbook/pb_label_value/_label_value.tsx +31 -52
- data/app/pb_kits/playbook/pb_logistic/_logistic.jsx +120 -0
- data/app/pb_kits/playbook/pb_message/_message.tsx +24 -24
- data/app/pb_kits/playbook/pb_time/_time.tsx +11 -9
- data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.tsx +49 -46
- data/app/pb_kits/playbook/pb_time_stacked/_time_stacked.tsx +6 -4
- data/app/pb_kits/playbook/pb_timestamp/_timestamp.tsx +11 -11
- data/app/pb_kits/playbook/pb_weekday_stacked/_weekday_stacked.tsx +11 -8
- data/dist/playbook-rails.js +7 -7
- data/lib/playbook/version.rb +1 -1
- metadata +4 -2
@@ -24,7 +24,7 @@ type MessageProps = {
|
|
24
24
|
label?: string,
|
25
25
|
message: string,
|
26
26
|
timestamp?: string,
|
27
|
-
timestampObject?:
|
27
|
+
timestampObject?: string,
|
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";
|
4
5
|
import { buildCss } from "../utilities/props";
|
5
6
|
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: string;
|
17
17
|
dark?: boolean;
|
18
18
|
id?: string;
|
19
19
|
showIcon?: boolean;
|
@@ -41,6 +41,8 @@ const Time = (props: TimeProps) => {
|
|
41
41
|
className
|
42
42
|
);
|
43
43
|
|
44
|
+
const dateTimestamp = new DateTime({ value: date, zone: timeZone });
|
45
|
+
|
44
46
|
return (
|
45
47
|
<div className={classes}>
|
46
48
|
{showIcon && (
|
@@ -68,18 +70,18 @@ const Time = (props: TimeProps) => {
|
|
68
70
|
)
|
69
71
|
)}
|
70
72
|
|
71
|
-
<time dateTime={date
|
73
|
+
<time dateTime={date}>
|
72
74
|
<span>
|
73
75
|
{unstyled
|
74
76
|
? (
|
75
77
|
<>
|
76
78
|
<span>
|
77
|
-
{
|
79
|
+
{dateTimestamp.toTimeWithMeridian()}
|
78
80
|
</span>
|
79
81
|
{" "}
|
80
82
|
{showTimezone && (
|
81
83
|
<span>
|
82
|
-
{
|
84
|
+
{dateTimestamp.toTimezone()}
|
83
85
|
</span>
|
84
86
|
)}
|
85
87
|
</>
|
@@ -90,13 +92,13 @@ const Time = (props: TimeProps) => {
|
|
90
92
|
<Body
|
91
93
|
className="pb_time"
|
92
94
|
tag="span"
|
93
|
-
text={
|
95
|
+
text={dateTimestamp.toTimeWithMeridian()}
|
94
96
|
/>{" "}
|
95
97
|
{showTimezone && (
|
96
98
|
<Body
|
97
99
|
color="light"
|
98
100
|
tag="span"
|
99
|
-
text={
|
101
|
+
text={dateTimestamp.toTimezone()}
|
100
102
|
/>
|
101
103
|
)}
|
102
104
|
</>
|
@@ -106,13 +108,13 @@ const Time = (props: TimeProps) => {
|
|
106
108
|
<Caption
|
107
109
|
color="light"
|
108
110
|
tag="span"
|
109
|
-
text={
|
111
|
+
text={dateTimestamp.toTimeWithMeridian()}
|
110
112
|
/>{" "}
|
111
113
|
{showTimezone && (
|
112
114
|
<Caption
|
113
115
|
color="light"
|
114
116
|
tag="span"
|
115
|
-
text={
|
117
|
+
text={dateTimestamp.toTimezone()}
|
116
118
|
/>
|
117
119
|
)}
|
118
120
|
</>
|
@@ -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'
|
4
5
|
import { globalProps, GlobalProps } from '../utilities/globalProps'
|
5
6
|
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,20 +19,23 @@ type TimeRangeInlineProps = {
|
|
19
19
|
dark?: boolean,
|
20
20
|
icon?: boolean,
|
21
21
|
timezone?: boolean,
|
22
|
-
startTime:
|
23
|
-
endTime:
|
22
|
+
startTime: string,
|
23
|
+
endTime: string,
|
24
24
|
} & GlobalProps
|
25
25
|
|
26
|
-
const timezoneString = (dateValue:
|
27
|
-
|
26
|
+
const timezoneString = (dateValue: string) => {
|
27
|
+
const date = new DateTime({ value: dateValue })
|
28
|
+
return `${date.convertToTimezone()}`
|
28
29
|
}
|
29
30
|
|
30
|
-
const dateTimestamp = (dateValue:
|
31
|
-
|
31
|
+
const dateTimestamp = (dateValue: string) => {
|
32
|
+
const date = new DateTime({ value: dateValue })
|
33
|
+
return `${date.toHour()}:${date.toMinute()}${date.toMeridian()}`
|
32
34
|
}
|
33
35
|
|
34
|
-
const dateTimeIso = (dateValue:
|
35
|
-
|
36
|
+
const dateTimeIso = (dateValue: string) => {
|
37
|
+
const date = new DateTime({ value: dateValue })
|
38
|
+
return date.toIso()
|
36
39
|
}
|
37
40
|
|
38
41
|
const TimeRangeInline = (props: TimeRangeInlineProps) => {
|
@@ -56,10 +59,10 @@ const TimeRangeInline = (props: TimeRangeInlineProps) => {
|
|
56
59
|
const separator = (
|
57
60
|
<Body color="light">
|
58
61
|
<Icon
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
62
|
+
className="pb_time_range_inline_arrow"
|
63
|
+
dark={dark}
|
64
|
+
fixedWidth
|
65
|
+
icon="long-arrow-right"
|
63
66
|
/>
|
64
67
|
</Body>
|
65
68
|
)
|
@@ -68,16 +71,16 @@ const TimeRangeInline = (props: TimeRangeInlineProps) => {
|
|
68
71
|
return (
|
69
72
|
icon &&
|
70
73
|
<Body
|
71
|
-
|
72
|
-
|
74
|
+
color="light"
|
75
|
+
tag="span"
|
73
76
|
>
|
74
77
|
<Icon
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
78
|
+
className="pb_time_range_inline_icon"
|
79
|
+
dark={dark}
|
80
|
+
fixedWidth
|
81
|
+
icon="clock"
|
82
|
+
size={size}
|
83
|
+
tag="span"
|
81
84
|
/>
|
82
85
|
</Body>
|
83
86
|
)
|
@@ -85,17 +88,17 @@ const TimeRangeInline = (props: TimeRangeInlineProps) => {
|
|
85
88
|
|
86
89
|
return (
|
87
90
|
<div
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
91
|
+
{...ariaProps}
|
92
|
+
{...dataProps}
|
93
|
+
className={classnames('pb_time_range_inline_kit_' + alignment, globalProps(props), className)}
|
94
|
+
id={id}
|
92
95
|
>
|
93
96
|
<div className="pb_time_range_inline_wrapper">
|
94
97
|
{size == 'xs' &&
|
95
98
|
<>
|
96
99
|
<Caption
|
97
|
-
|
98
|
-
|
100
|
+
dark={dark}
|
101
|
+
tag="span"
|
99
102
|
>
|
100
103
|
{iconContent()}
|
101
104
|
<time dateTime={dateTimeIso(startTime)}>
|
@@ -105,15 +108,15 @@ const TimeRangeInline = (props: TimeRangeInlineProps) => {
|
|
105
108
|
</time>
|
106
109
|
</Caption>
|
107
110
|
<Caption
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
+
className="pb_time_range_inline_arrow"
|
112
|
+
dark={dark}
|
113
|
+
tag="span"
|
111
114
|
>
|
112
115
|
{separator}
|
113
116
|
</Caption>
|
114
117
|
<Caption
|
115
|
-
|
116
|
-
|
118
|
+
dark={dark}
|
119
|
+
tag="span"
|
117
120
|
>
|
118
121
|
<time dateTime={dateTimeIso(endTime)}>
|
119
122
|
{` ${dateTimestamp(
|
@@ -123,9 +126,9 @@ const TimeRangeInline = (props: TimeRangeInlineProps) => {
|
|
123
126
|
</Caption>
|
124
127
|
{timezone &&
|
125
128
|
<Caption
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
+
className="pb_time_range_inline_timezone"
|
130
|
+
dark={dark}
|
131
|
+
tag="span"
|
129
132
|
>
|
130
133
|
{timezoneString(endTime)}
|
131
134
|
</Caption>
|
@@ -135,8 +138,8 @@ const TimeRangeInline = (props: TimeRangeInlineProps) => {
|
|
135
138
|
{size == 'sm' &&
|
136
139
|
<>
|
137
140
|
<Body
|
138
|
-
|
139
|
-
|
141
|
+
dark={dark}
|
142
|
+
tag="span"
|
140
143
|
>
|
141
144
|
{iconContent()}
|
142
145
|
<time dateTime={dateTimeIso(startTime)}>
|
@@ -146,15 +149,15 @@ const TimeRangeInline = (props: TimeRangeInlineProps) => {
|
|
146
149
|
</time>
|
147
150
|
</Body>
|
148
151
|
<Body
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
+
className="pb_time_range_inline_arrow"
|
153
|
+
dark={dark}
|
154
|
+
tag="span"
|
152
155
|
>
|
153
156
|
{separator}
|
154
157
|
</Body>
|
155
158
|
<Body
|
156
|
-
|
157
|
-
|
159
|
+
dark={dark}
|
160
|
+
tag="span"
|
158
161
|
>
|
159
162
|
<time dateTime={dateTimeIso(endTime)}>
|
160
163
|
{` ${dateTimestamp(
|
@@ -164,10 +167,10 @@ const TimeRangeInline = (props: TimeRangeInlineProps) => {
|
|
164
167
|
</Body>
|
165
168
|
{timezone &&
|
166
169
|
<Body
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
170
|
+
className="pb_time_range_inline_timezone"
|
171
|
+
color="light"
|
172
|
+
dark={dark}
|
173
|
+
tag="span"
|
171
174
|
>
|
172
175
|
{timezoneString(endTime)}
|
173
176
|
</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'
|
4
5
|
import { buildCss, buildDataProps } from '../utilities/props'
|
5
6
|
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?: string,
|
17
17
|
id?: string,
|
18
18
|
time?: number | Date,
|
19
19
|
timeZone?: string,
|
@@ -39,6 +39,8 @@ 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
|
+
|
42
44
|
return (
|
43
45
|
<div
|
44
46
|
className={classes}
|
@@ -50,13 +52,13 @@ const TimeStackedDefault = (props: TimeStackedProps): React.ReactElement => {
|
|
50
52
|
dark={dark}
|
51
53
|
>
|
52
54
|
<time>
|
53
|
-
{
|
55
|
+
{dateTimestamp.toTimeWithMeridian()}
|
54
56
|
<Caption
|
55
57
|
className="pb_time_stacked"
|
56
58
|
color="light"
|
57
59
|
dark={dark}
|
58
60
|
tag="span"
|
59
|
-
text={
|
61
|
+
text={dateTimestamp.toTimezone()}
|
60
62
|
/>
|
61
63
|
</time>
|
62
64
|
</Body>
|
@@ -1,10 +1,9 @@
|
|
1
1
|
import React from 'react'
|
2
2
|
import classnames from 'classnames'
|
3
3
|
|
4
|
+
import DateTime from '../pb_kit/dateTime'
|
4
5
|
import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
|
5
6
|
import { globalProps } from '../utilities/globalProps'
|
6
|
-
import DateTime from '../pb_kit/dateTime';
|
7
|
-
|
8
7
|
|
9
8
|
import Caption from '../pb_caption/_caption'
|
10
9
|
|
@@ -15,7 +14,7 @@ type TimestampProps = {
|
|
15
14
|
dark?: boolean,
|
16
15
|
data?: string,
|
17
16
|
text: string,
|
18
|
-
timestamp:
|
17
|
+
timestamp: string,
|
19
18
|
timezone: string,
|
20
19
|
id?: string,
|
21
20
|
showDate?: boolean,
|
@@ -33,8 +32,8 @@ const Timestamp = (props: TimestampProps): React.ReactElement => {
|
|
33
32
|
dark = false,
|
34
33
|
data = {},
|
35
34
|
text,
|
36
|
-
timezone,
|
37
35
|
timestamp,
|
36
|
+
timezone,
|
38
37
|
showDate = true,
|
39
38
|
showUser = false,
|
40
39
|
hideUpdated = false,
|
@@ -54,25 +53,26 @@ const Timestamp = (props: TimestampProps): React.ReactElement => {
|
|
54
53
|
)
|
55
54
|
|
56
55
|
const currentYear = new Date().getFullYear().toString()
|
57
|
-
const
|
56
|
+
const dateTimestamp = new DateTime({ value: timestamp, zone: timezone })
|
57
|
+
const dateDisplay = `${dateTimestamp.toMonth()} ${dateTimestamp.toDay()}`
|
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 = `${dateTimestamp.toHour()}:${dateTimestamp.toMinute()}${dateTimestamp.toMeridian()}`
|
64
64
|
|
65
65
|
const fullTimeDisplay = () => {
|
66
66
|
if (shouldShowTimezone) {
|
67
|
-
timeDisplay = `${timeDisplay} ${
|
67
|
+
timeDisplay = `${timeDisplay} ${dateTimestamp.toTimezone()}`
|
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 = `${dateTimestamp.toMonth()} ${dateTimestamp.toDay()}`
|
74
|
+
if (dateTimestamp.toYear() !== currentYear) {
|
75
|
+
fullDisplay = `${fullDisplay}, ${dateTimestamp.toYear()}`
|
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} ${dateTimestamp.value.fromNow()}`
|
86
86
|
}
|
87
87
|
|
88
88
|
const captionText = () => {
|
@@ -7,7 +7,8 @@ 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
|
-
|
10
|
+
|
11
|
+
import DateTime from '../pb_kit/dateTime'
|
11
12
|
|
12
13
|
type WeekdayStackedProps = {
|
13
14
|
align?: "left" | "center" | "right",
|
@@ -21,20 +22,22 @@ type WeekdayStackedProps = {
|
|
21
22
|
compact?: boolean,
|
22
23
|
}
|
23
24
|
|
24
|
-
const getDayOfWeek = (value: Date, compact: boolean) => {
|
25
|
+
const getDayOfWeek = (value: Date | string, compact: boolean) => {
|
26
|
+
const dateTime = new DateTime({ value })
|
25
27
|
if (compact) {
|
26
|
-
return
|
28
|
+
return dateTime.toDayAbbr()
|
27
29
|
} else {
|
28
|
-
return
|
30
|
+
return dateTime.toWeekday()
|
29
31
|
}
|
30
32
|
}
|
31
33
|
|
32
|
-
const getFormattedDate = (value: Date, variant: "day_only" | "month_day" | "expanded")
|
34
|
+
const getFormattedDate = (value: Date | string, variant: "day_only" | "month_day" | "expanded") => {
|
35
|
+
const dateTime = new DateTime({ value })
|
33
36
|
if (variant === 'day_only') {
|
34
|
-
return
|
37
|
+
return dateTime.toDay()
|
35
38
|
} else {
|
36
|
-
const format = variant === 'expanded' ? '
|
37
|
-
return
|
39
|
+
const format = variant === 'expanded' ? '%b %-d' : '%-m/%-d'
|
40
|
+
return dateTime.toCustomFormat(format)
|
38
41
|
}
|
39
42
|
}
|
40
43
|
|