playbook_ui 12.36.0 → 12.37.0.pre.alpha.PLAYaddingdatapropselectkit1071

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/index.js +2 -1
  3. data/app/pb_kits/playbook/pb_badge/docs/_badge_colors_swift.md +33 -0
  4. data/app/pb_kits/playbook/pb_badge/docs/_badge_default_swift.md +9 -0
  5. data/app/pb_kits/playbook/pb_badge/docs/_badge_notification_swift.md +9 -0
  6. data/app/pb_kits/playbook/pb_badge/docs/_badge_props_swift.md +6 -0
  7. data/app/pb_kits/playbook/pb_badge/docs/_badge_rounded_swift.md +9 -0
  8. data/app/pb_kits/playbook/pb_badge/docs/example.yml +7 -0
  9. data/app/pb_kits/playbook/pb_collapsible/_collapsible.tsx +15 -13
  10. data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleMain.tsx +24 -8
  11. data/app/pb_kits/playbook/pb_collapsible/collapsible_main.html.erb +1 -1
  12. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_icons.jsx +15 -4
  13. data/app/pb_kits/playbook/pb_collapsible/docs/example.yml +1 -1
  14. data/app/pb_kits/playbook/pb_collapsible/useCollapsible.tsx +14 -0
  15. data/app/pb_kits/playbook/pb_date/_date.tsx +7 -8
  16. data/app/pb_kits/playbook/pb_date/docs/_date_alignment.jsx +2 -2
  17. data/app/pb_kits/playbook/pb_date/docs/_date_default.jsx +29 -5
  18. data/app/pb_kits/playbook/pb_date/docs/_date_unstyled.jsx +2 -2
  19. data/app/pb_kits/playbook/pb_date/docs/_date_variants.jsx +5 -5
  20. data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.tsx +45 -31
  21. data/app/pb_kits/playbook/pb_date_range_stacked/_date_range_stacked.tsx +5 -3
  22. data/app/pb_kits/playbook/pb_date_stacked/_date_stacked.tsx +24 -21
  23. data/app/pb_kits/playbook/pb_date_time/_date_time.tsx +1 -1
  24. data/app/pb_kits/playbook/pb_date_time/dateTime.test.js +1 -1
  25. data/app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.tsx +2 -2
  26. data/app/pb_kits/playbook/pb_date_time_stacked/date_time_stacked.test.js +1 -1
  27. data/app/pb_kits/playbook/pb_date_year_stacked/_date_year_stacked.tsx +6 -8
  28. data/app/pb_kits/playbook/pb_kit/dateTime.ts +146 -63
  29. data/app/pb_kits/playbook/pb_label_value/_label_value.tsx +52 -31
  30. data/app/pb_kits/playbook/pb_message/_message.tsx +24 -24
  31. data/app/pb_kits/playbook/pb_nav/_collapsible_nav.scss +22 -1
  32. data/app/pb_kits/playbook/pb_nav/_item.tsx +26 -2
  33. data/app/pb_kits/playbook/pb_nav/docs/_collapsible_nav.jsx +59 -79
  34. data/app/pb_kits/playbook/pb_nav/docs/_collapsible_nav_custom_icons.jsx +4 -6
  35. data/app/pb_kits/playbook/pb_nav/docs/example.yml +1 -1
  36. data/app/pb_kits/playbook/pb_nav/item.rb +5 -1
  37. data/app/pb_kits/playbook/pb_pill/docs/_pill_default_swift.md +5 -0
  38. data/app/pb_kits/playbook/pb_pill/docs/_pill_props_swift.md +5 -0
  39. data/app/pb_kits/playbook/pb_pill/docs/_pill_variants_swift.md +10 -0
  40. data/app/pb_kits/playbook/pb_pill/docs/example.yml +5 -0
  41. data/app/pb_kits/playbook/pb_radio/docs/_radio_alignment_swift.md +16 -0
  42. data/app/pb_kits/playbook/pb_radio/docs/_radio_custom_swift.md +18 -0
  43. data/app/pb_kits/playbook/pb_radio/docs/_radio_default_swift.md +15 -0
  44. data/app/pb_kits/playbook/pb_radio/docs/_radio_error_swift.md +14 -0
  45. data/app/pb_kits/playbook/pb_radio/docs/_radio_orientation_swift.md +15 -0
  46. data/app/pb_kits/playbook/pb_radio/docs/_radio_padding_swift.md +31 -0
  47. data/app/pb_kits/playbook/pb_radio/docs/_radio_props_swift.md +10 -0
  48. data/app/pb_kits/playbook/pb_radio/docs/_radio_spacing_swift.md +36 -0
  49. data/app/pb_kits/playbook/pb_radio/docs/_radio_subtitle_swift.md +13 -0
  50. data/app/pb_kits/playbook/pb_radio/docs/example.yml +11 -0
  51. data/app/pb_kits/playbook/pb_select/docs/_select_data_attributes.html.erb +24 -0
  52. data/app/pb_kits/playbook/pb_select/docs/_select_data_attributes.md +1 -0
  53. data/app/pb_kits/playbook/pb_select/docs/example.yml +1 -0
  54. data/app/pb_kits/playbook/pb_select/select.html.erb +1 -1
  55. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_options.html.erb +12 -0
  56. data/app/pb_kits/playbook/pb_text_input/docs/example.yml +1 -0
  57. data/app/pb_kits/playbook/pb_text_input/text_input.rb +1 -1
  58. data/app/pb_kits/playbook/pb_time/_time.tsx +9 -11
  59. data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.tsx +46 -49
  60. data/app/pb_kits/playbook/pb_time_stacked/_time_stacked.tsx +4 -6
  61. data/app/pb_kits/playbook/pb_timestamp/_timestamp.tsx +11 -11
  62. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_align_swift.md +45 -0
  63. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default_swift.md +26 -0
  64. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed_swift.md +25 -0
  65. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_props_swift.md +10 -0
  66. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones_swift.md +67 -0
  67. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_swift.md +19 -0
  68. data/app/pb_kits/playbook/pb_timestamp/docs/example.yml +8 -0
  69. data/app/pb_kits/playbook/pb_weekday_stacked/_weekday_stacked.tsx +8 -11
  70. data/dist/playbook-rails.js +7 -7
  71. data/lib/playbook/version.rb +2 -2
  72. metadata +34 -8
  73. data/app/pb_kits/playbook/pb_logistic/_logistic.jsx +0 -120
@@ -1,9 +1,9 @@
1
1
  import React from "react";
2
2
 
3
3
  import classnames from "classnames";
4
- import DateTime from "../pb_kit/dateTime";
5
4
  import { buildCss, buildDataProps } from "../utilities/props";
6
5
  import { globalProps } from "../utilities/globalProps";
6
+ import DateTime from '../pb_kit/dateTime';
7
7
 
8
8
  import Caption from "../pb_caption/_caption";
9
9
  import Title from "../pb_title/_title";
@@ -14,7 +14,7 @@ type DateStackedProps = {
14
14
  className?: string | string[];
15
15
  dark?: boolean;
16
16
  data?: string;
17
- date: string | Date;
17
+ date: Date;
18
18
  size?: "sm" | "md";
19
19
  id?: string;
20
20
  reverse?: boolean;
@@ -45,39 +45,42 @@ const DateStacked = (props: DateStackedProps) => {
45
45
  className
46
46
  );
47
47
 
48
- const currentYear = new Date().getFullYear().toString();
49
- const dateTimestamp = new DateTime({ value: date });
50
- const inputYear = dateTimestamp.toYear().toString();
48
+ const currentYear = new Date().getFullYear()
49
+ const inputYear = DateTime.toYear(date);
51
50
  const dataProps = buildDataProps(data)
52
51
 
53
52
  return (
54
53
  <>
55
54
  {bold == false ? (
56
- <div {...dataProps} className={classes}>
55
+ <div {...dataProps}
56
+ className={classes}
57
+ >
57
58
  <div className="pb_date_stacked_day_month">
58
- <Caption text={dateTimestamp.toMonth().toUpperCase()} />
59
+ <Caption text={DateTime.toMonth(date).toUpperCase()} />
59
60
  <Title
60
- dark={dark}
61
- size={sizes[size]}
62
- text={dateTimestamp.toDay()}
61
+ dark={dark}
62
+ size={sizes[size]}
63
+ text={DateTime.toDay(date).toString()}
63
64
  />
64
65
  </div>
65
66
  {currentYear != inputYear && <Caption size="xs">{inputYear}</Caption>}
66
67
  </div>
67
68
  ) : (
68
- <div {...dataProps} className={classes}>
69
+ <div {...dataProps}
70
+ className={classes}
71
+ >
69
72
  <div className="pb_date_stacked_day_month">
70
- <Title
71
- bold
72
- dark={dark}
73
- size="4"
74
- text={dateTimestamp.toMonth()}
73
+ <Title
74
+ bold
75
+ dark={dark}
76
+ size="4"
77
+ text={DateTime.toMonth(date)}
75
78
  />
76
- <Title
77
- bold
78
- dark={dark}
79
- size="4"
80
- text={dateTimestamp.toDay()}
79
+ <Title
80
+ bold
81
+ dark={dark}
82
+ size="4"
83
+ text={DateTime.toDay(date).toString()}
81
84
  />
82
85
  {currentYear != inputYear && <Title size="4">{inputYear}</Title>}
83
86
  </div>
@@ -13,7 +13,7 @@ type DateTimeProps = {
13
13
  aria?: { [key: string]: string; },
14
14
  className?: string,
15
15
  data?: { [key: string]: string; },
16
- datetime: string,
16
+ datetime: Date,
17
17
  id?: string,
18
18
  size?: "sm" | "md",
19
19
  showDayOfWeek: boolean,
@@ -89,7 +89,7 @@ describe('DateTime Kit', () => {
89
89
  const kit = screen.getByTestId(testId)
90
90
  const text = kit.querySelector('.pb_time_kit_md.ml_sm')
91
91
 
92
- expect(text.textContent).toEqual('2:00p JST')
92
+ expect(text.textContent).toEqual('2:00p GMT+9')
93
93
  })
94
94
  test('renders DatePicker size', () => {
95
95
  render(
@@ -12,8 +12,8 @@ import DateStacked from '../pb_date_stacked/_date_stacked'
12
12
 
13
13
  type DateTimeStackedProps = {
14
14
  id?: string,
15
- date: string,
16
- datetime: string,
15
+ date: Date,
16
+ datetime: Date,
17
17
  dark: boolean,
18
18
  timeZone?: string,
19
19
  }
@@ -34,7 +34,7 @@ test('renders time in default timezone', () => {
34
34
  test('renders time in timezone', () => {
35
35
  props.timeZone = 'Asia/Tokyo'
36
36
  const kit = renderKit(DateTimeStacked, props)
37
- expect(kit).toHaveTextContent(`${monthDayYear}2:00aJST`)
37
+ expect(kit).toHaveTextContent(`${monthDayYear}2:00aGMT+9`)
38
38
  })
39
39
 
40
40
  test('renders time in timezone', () => {
@@ -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 { globalProps } from '../utilities/globalProps'
6
+ import DateTime from '../pb_kit/dateTime';
7
7
 
8
8
  import Body from '../pb_body/_body'
9
9
  import Title from '../pb_title/_title'
@@ -13,13 +13,12 @@ type DateYearStackedProps = {
13
13
  className?: string | string[],
14
14
  dark?: boolean,
15
15
  data?: string,
16
- date: string,
16
+ date: Date,
17
17
  id?: string,
18
18
  }
19
19
 
20
20
  const DateYearStacked = (props: DateYearStackedProps) => {
21
21
  const { align = 'left', className, dark = false, date, data={} } = props
22
- const dateTimestamp = new DateTime({ value: date })
23
22
  const css = classnames(
24
23
  buildCss('pb_date_year_stacked', align),
25
24
  globalProps(props),
@@ -29,15 +28,14 @@ const DateYearStacked = (props: DateYearStackedProps) => {
29
28
 
30
29
  return (
31
30
  <div {...dataProps}
32
- className={css}>
31
+ className={css}
32
+ >
33
33
  <Title
34
34
  dark={dark}
35
35
  size={4}
36
- text={`${dateTimestamp.toDay()} ${dateTimestamp
37
- .toMonth()
38
- .toUpperCase()}`}
36
+ text={`${DateTime.toDay(date)} ${DateTime.toMonth(date).toUpperCase()}`}
39
37
  />
40
- <Body color="light">{dateTimestamp.toYear()}</Body>
38
+ <Body color="light">{DateTime.toYear(date)}</Body>
41
39
  </div>
42
40
  )
43
41
  }
@@ -1,90 +1,173 @@
1
+ const ABBR_DAYS = ['SU', 'M', 'T', 'W', 'TH', 'F', 'S']
1
2
 
2
- import moment, { Moment } from 'moment'
3
- import 'moment-strftime'
4
- import 'moment-timezone'
3
+ const days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
5
4
 
6
- type DateTimeType = {
7
- value: string | Date,
8
- zone?: string,
9
- }
5
+ const months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
10
6
 
11
- const ABBR_DAYS = ['SU', 'M', 'T', 'W', 'TH', 'F', 'S']
12
-
13
- export default class DateTime {
14
- value: Moment & any
15
- constructor({ value, zone = 'America/New_York' }: DateTimeType) {
16
- this.value = this.convertToTimestampZone(value, zone)
17
- }
7
+ const formatDate = (newDate: Date | string) => {
8
+ const isTimelessStringDate = typeof newDate === "string" && !newDate.includes("T")
18
9
 
19
- convertToTimestampZone(value: string | Date, zone: string) {
20
- return moment(value).tz(zone)
10
+ if (isTimelessStringDate) {
11
+ const unhyphenatedDate = new Date((newDate as string).replace(/-/g, "/"))
12
+ return unhyphenatedDate
21
13
  }
22
14
 
23
- convertToTimezone() {
24
- return this.value.strftime('%Z')
25
- }
15
+ return new Date(newDate)
16
+ }
26
17
 
27
- toCustomFormat(format = '%-m/%-d') {
28
- return this.value.strftime(format)
18
+ export const toMinute = (newDate: Date | string, timeZone?: string): string => {
19
+ const date = formatDate(newDate)
20
+ if (timeZone) {
21
+ return date.toLocaleTimeString(undefined, { timeZone, hour: "2-digit", minute: "2-digit" }).slice(3, 5);
22
+ } else {
23
+ return date.toLocaleTimeString(undefined, { hour: "2-digit", minute: "2-digit" }).slice(3, 5);
29
24
  }
25
+ }
30
26
 
31
- toYear() {
32
- return this.value.strftime('%Y')
27
+ export const toHour = (newDate: Date | string, timeZone?: string): string => {
28
+ const date = formatDate(newDate)
29
+ if (timeZone) {
30
+ return date.toLocaleTimeString(undefined, { timeZone, hour: "numeric" }).split(' ')[0];
31
+ } else {
32
+ return date.toLocaleTimeString(undefined, { hour: "numeric" }).split(' ')[0];
33
33
  }
34
+ }
34
35
 
35
- toMonth() {
36
- return this.value.strftime('%b')
37
- }
36
+ export const toDay = (newDate: Date | string, timeZone?: string): number => {
37
+ if (timeZone) {
38
+ const date = new Date(formatDate(newDate).toLocaleString(undefined, { timeZone }));
39
+ return date.getDate()
40
+ } else {
41
+ const date = formatDate(newDate)
42
+ return date.getDate()
43
+ }
44
+ }
38
45
 
39
- toMonthNum() {
40
- return this.value.strftime('%-m')
41
- }
46
+ export const toDayAbbr = (newDate: Date | string): string => {
47
+ const date = formatDate(newDate)
48
+ return ABBR_DAYS[date.getUTCDay()]
49
+ }
42
50
 
43
- toMonthFull() {
44
- return this.value.strftime('%B')
45
- }
51
+ export const toWeekday = (newDate: Date | string): string => {
52
+ const date = formatDate(newDate)
53
+ return days[date.getUTCDay()]
54
+ }
46
55
 
47
- toDay() {
48
- return this.value.strftime('%e')
49
- }
56
+ export const toMonth = (newDate: Date | string, timeZone?: string): string => {
57
+ if (timeZone) {
58
+ const date = new Date(formatDate(newDate).toLocaleString(undefined, { timeZone }));
59
+ return months[date.getUTCMonth()]
60
+ } else {
61
+ const date = formatDate(newDate)
62
+ return months[date.getUTCMonth()]
63
+ }
64
+ }
50
65
 
51
- toDayAbbr() {
52
- return ABBR_DAYS[this.value.day()]
53
- }
66
+ export const toMonthNum = (newDate: Date | string): number => {
67
+ const date = formatDate(newDate)
68
+ return date.getUTCMonth() +1
69
+ }
54
70
 
55
- toWeekday() {
56
- return this.value.strftime('%a')
57
- }
71
+ export const toYear = (newDate: Date | string, timeZone?: string): number => {
72
+ if (timeZone) {
73
+ const date = new Date(newDate.toLocaleString(undefined, { timeZone }));
74
+ return date.getUTCFullYear()
75
+ } else {
76
+ const date = new Date(newDate)
77
+ return date.getUTCFullYear()
78
+ }
79
+ }
58
80
 
59
- toHour() {
60
- return this.value.strftime('%l')
81
+ export const toTime = (newDate: Date | string, timeZone?: string): string => {
82
+ const date = formatDate(newDate)
83
+ if (timeZone) {
84
+ return date.toLocaleTimeString(undefined, { timeZone, timeStyle: "short" }).split(' ')[0];
85
+ } else {
86
+ return date.toLocaleTimeString(undefined, { timeStyle: "short" }).split(' ')[0];
61
87
  }
88
+ }
62
89
 
63
- toMinute() {
64
- return this.value.strftime('%M')
65
- }
90
+ export const toMeridiem = (newDate: Date | string, timeZone?: string): string => {
91
+ const date = formatDate(newDate)
92
+ if (timeZone) {
93
+ return date.toLocaleString(undefined, { timeZone, hour12: true }).slice(-2).charAt(0).toLocaleLowerCase();
94
+ } else {
95
+ return date.toLocaleString(undefined, { hour12: true }).slice(-2).charAt(0).toLocaleLowerCase();
96
+ }
97
+ }
66
98
 
67
- toMeridian() {
68
- return this.value.strftime('%P')[0]
69
- }
99
+ export const toTimeZone = (newDate: Date | string, timeZone?: string): string => {
100
+ const date = formatDate(newDate)
101
+ if (timeZone) {
102
+ return date.toLocaleString(undefined, { timeZone, timeZoneName: "short" }).split(' ')[3];
103
+ } else {
104
+ return date.toLocaleString(undefined, { timeZoneName: "short" }).split(' ')[3];
105
+ }
106
+ }
70
107
 
71
- toIso() {
72
- return this.value.toISOString()
73
- }
108
+ export const toTimeWithMeridiem = (newDate: Date | string, timeZone: string): string => {
109
+ const date = formatDate(newDate)
110
+ return `${toTime(date, timeZone)}${toMeridiem(date, timeZone)}`;
111
+ }
74
112
 
75
- toTime() {
76
- const time = this.value.strftime('%I:%M')
113
+ export const toIso = (newDate: Date | string): string => {
114
+ const date = formatDate(newDate)
115
+ return date.toISOString()
116
+ }
77
117
 
78
- // strftime adds a leading 0 on single hour times. ie 08:31.
79
- // this removes that 0 to match the rails kit.
80
- return time.charAt() === '0' ? time.slice(1) : time
81
- }
118
+ export const fromNow = (newDate: Date | string): string => {
119
+
120
+ const startDate = formatDate(newDate).getTime()
121
+ const endDate = new Date().getTime()
122
+ const elapsedTime = endDate - startDate
123
+ let elapsedTimeString = `${Math.round(elapsedTime / (365.25 * 24 * 60 * 60 * 1000))} years ago.`; // 730+ days
124
+
125
+ const elapsedTimeData = [
126
+ { min: 0, max: 44999, value: "a few seconds ago" }, // 0-44 seconds
127
+ { min: 45000, max: 89999, value: "a minute ago" }, // 45-89 seconds
128
+ { min: 90000, max: 2649999, value: `${Math.round(elapsedTime / 60000)} minutes ago`}, // 90s-44 minutes
129
+ { min: 2650000, max: 7299999, value: "an hour ago" }, // 45-120 minutes
130
+ { min: 7300000, max: 75699999, value: `${Math.round(elapsedTime / 3600000)} hours ago`}, // 2-21 hours
131
+ { min: 75700000, max: 172899999, value: "a day ago" }, // 22-48 hours
132
+ { min: 172900000, max: 2169999999, value: `${Math.round(elapsedTime / 86400000)} days ago`}, // 2-25 days
133
+ { min: 2170000000, max: 5184999999, value: "a month ago"}, // 26-60 days
134
+ { min: 5185000000, max: 27561699999, value: `${Math.round(elapsedTime / 30.44 * 24 * 60 * 60 * 1000)} months ago`}, // 60-319 days
135
+ { min: 27561700000, max: 63072999999, value: "a year ago"}, // 320-730 days
136
+ ];
137
+
138
+ for (const timeDate of elapsedTimeData) {
139
+ if (elapsedTime >= timeDate.min && elapsedTime <= timeDate.max) {
140
+ elapsedTimeString = timeDate.value;
141
+ break;
142
+ }
143
+ }
144
+
145
+ return elapsedTimeString
146
+ }
82
147
 
83
- toTimezone() {
84
- return this.value.strftime('%Z')
148
+ export const toCustomFormat = (newDate: Date | string, format = 'month_day'): string => {
149
+ const date = formatDate(newDate)
150
+ if (format == "month_day") {
151
+ return `${toMonthNum(date)}/${toDay(date)}`
152
+ } else {
153
+ return `${date.toLocaleString(undefined, { month: "short" })} ${toDay(date)}`
85
154
  }
155
+ }
86
156
 
87
- toTimeWithMeridian() {
88
- return this.toTime() + this.toMeridian()
89
- }
157
+ export default {
158
+ toMinute,
159
+ toHour,
160
+ toDay,
161
+ toDayAbbr,
162
+ toWeekday,
163
+ toMonth,
164
+ toMonthNum,
165
+ toYear,
166
+ toTime,
167
+ toMeridiem,
168
+ toTimeZone,
169
+ toTimeWithMeridiem,
170
+ toIso,
171
+ fromNow,
172
+ toCustomFormat,
90
173
  }
@@ -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: DateTime) => {
30
- const month = value.toMonthNum();
31
- const day = value.toDay();
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
- {...ariaProps}
66
- {...dataProps}
67
- className={classes}
68
- id={id}
69
- title={title}
64
+ {...ariaProps}
65
+ {...dataProps}
66
+ className={classes}
67
+ id={id}
68
+ title={title}
70
69
  >
71
- <Caption dark={dark} text={label} />
70
+ <Caption dark={dark}
71
+ text={label}
72
+ />
72
73
  {variant === "details" ? (
73
- <Flex inline vertical="center">
74
+ <Flex inline
75
+ vertical="center"
76
+ >
74
77
  {icon && (
75
- <Body color="light" dark={dark} marginRight="xs">
76
- <Icon dark={dark} fixedWidth icon={icon} />
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
- color="light"
82
- dark={dark}
83
- marginRight="xs"
84
- text={description}
90
+ color="light"
91
+ dark={dark}
92
+ marginRight="xs"
93
+ text={description}
85
94
  />
86
95
  )}
87
96
  {active === true ? (
88
- <Flex inline vertical="center">
97
+ <Flex inline
98
+ vertical="center"
99
+ >
89
100
  {title && (
90
- <Title dark={dark} size={4} text={title} variant="link" />
101
+ <Title dark={dark}
102
+ size={4}
103
+ text={title}
104
+ variant="link"
105
+ />
91
106
  )}
92
107
  {date && (
93
108
  <Title
94
- dark={dark}
95
- marginLeft="xs"
96
- size={4}
97
- text={" " + dateString(formattedDate)}
98
- variant="link"
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} size={4} text={title} />}
119
+ {title && <Title dark={dark}
120
+ size={4}
121
+ text={title}
122
+ />
123
+ }
105
124
  {date && (
106
125
  <Title
107
- dark={dark}
108
- marginLeft="xs"
109
- size={4}
110
- text={" " + dateString(formattedDate)}
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} text={value} />
136
+ <Body dark={dark}
137
+ text={value}
138
+ />
118
139
  )}
119
140
  </div>
120
141
  );
@@ -25,7 +25,7 @@ type MessageProps = {
25
25
  label?: string,
26
26
  message: string,
27
27
  timestamp?: string,
28
- timestampObject?: string,
28
+ timestampObject?: Date,
29
29
  timezone?: string,
30
30
  alignTimestamp?: string,
31
31
  }
@@ -62,50 +62,50 @@ const Message = (props: MessageProps) => {
62
62
 
63
63
  return (
64
64
  <div
65
- {...ariaProps}
66
- {...dataProps}
67
- className={classes}
68
- id={id}
65
+ {...ariaProps}
66
+ {...dataProps}
67
+ className={classes}
68
+ id={id}
69
69
  >
70
70
  {shouldDisplayAvatar &&
71
71
  <Avatar
72
- imageUrl={avatarUrl}
73
- name={avatarName}
74
- size="xs"
75
- status={avatarStatus}
72
+ imageUrl={avatarUrl}
73
+ name={avatarName}
74
+ size="xs"
75
+ status={avatarStatus}
76
76
  />
77
77
  }
78
78
  <div className="content_wrapper">
79
79
  <Flex
80
- justify={alignTimestamp === 'left' ? 'none' : 'between'}
81
- orientation="row"
80
+ justify={alignTimestamp === 'left' ? 'none' : 'between'}
81
+ orientation="row"
82
82
  >
83
83
  {label &&
84
84
  <Title
85
- className="message_title"
86
- size={4}
87
- text={label}
85
+ className="message_title"
86
+ size={4}
87
+ text={label}
88
88
  />
89
89
  }
90
90
  <Timestamp
91
- className={`pull-${alignTimestamp} ${timestampObject ? 'message_humanized_time' : null}`}
92
- text={timestamp}
93
- timestamp={''}
94
- timezone={timezone}
91
+ className={`pull-${alignTimestamp} ${timestampObject ? 'message_humanized_time' : null}`}
92
+ text={timestamp}
93
+ timestamp={''}
94
+ timezone={timezone}
95
95
  />
96
96
  {timestampObject &&
97
97
  <Timestamp
98
- className={`pull-${alignTimestamp} message_timestamp`}
99
- text={''}
100
- timestamp={timestampObject}
101
- timezone={timezone}
98
+ className={`pull-${alignTimestamp} message_timestamp`}
99
+ text={''}
100
+ timestamp={timestampObject}
101
+ timezone={timezone}
102
102
  />
103
103
  }
104
104
  </Flex>
105
105
  {message &&
106
106
  <Body
107
- className="pb_message_body"
108
- text={message}
107
+ className="pb_message_body"
108
+ text={message}
109
109
  />
110
110
  }
111
111
  {children}
@@ -1,6 +1,27 @@
1
+ @import "../tokens/spacing";
2
+ @import "../tokens/colors";
3
+ @import "../tokens/border_radius";
4
+
1
5
  [class^="pb_nav_list"] {
6
+ .pb_collapsible_nav_item {
2
7
  .pb_collapsible_main_kit,
3
- .pb_collapsible_content_kit {
8
+ .pb_collapsible_content_kit,
9
+ .pb_collapsible_kit {
4
10
  padding: 0 !important;
5
11
  }
12
+
13
+ .icon_wrapper {
14
+ border-radius: $border_radius_rounded;
15
+ width: 19px;
16
+ height: 19px;
17
+ display:flex;
18
+ align-items: center;
19
+ justify-content: center;
20
+ margin-right: $space_xs;
21
+ &:hover {
22
+ background-color: rgba($primary_action, $opacity_3);
23
+
24
+ }
25
+ }
26
+ }
6
27
  }