playbook_ui 11.3.0 → 11.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/index.js +1 -0
  3. data/app/pb_kits/playbook/pb_button/_button.tsx +6 -6
  4. data/app/pb_kits/playbook/pb_circle_icon_button/{_circle_icon_button.jsx → _circle_icon_button.tsx} +6 -10
  5. data/app/pb_kits/playbook/pb_contact/contact.test.js +45 -1
  6. data/app/pb_kits/playbook/pb_currency/{_currency.jsx → _currency.tsx} +17 -12
  7. data/app/pb_kits/playbook/pb_date/_date.tsx +101 -0
  8. data/app/pb_kits/playbook/pb_date_picker/date_picker.test.js +10 -9
  9. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.tsx +80 -0
  10. data/app/pb_kits/playbook/pb_icon/_icon.tsx +1 -0
  11. data/app/pb_kits/playbook/pb_icon_circle/{_icon_circle.jsx → _icon_circle.tsx} +2 -4
  12. data/app/pb_kits/playbook/pb_kit/{dateTime.js → dateTime.ts} +5 -6
  13. data/app/pb_kits/playbook/pb_label_pill/{_label_pill.jsx → _label_pill.tsx} +2 -4
  14. data/app/pb_kits/playbook/pb_label_value/_label_value.jsx +1 -1
  15. data/app/pb_kits/playbook/pb_logistic/_logistic.jsx +1 -1
  16. data/app/pb_kits/playbook/pb_pill/_pill.tsx +1 -1
  17. data/app/pb_kits/playbook/pb_section_separator/{_section_separator.jsx → _section_separator.tsx} +7 -8
  18. data/app/pb_kits/playbook/pb_time/_time.tsx +92 -0
  19. data/app/pb_kits/playbook/pb_time/docs/_time_align.jsx +1 -1
  20. data/app/pb_kits/playbook/pb_time/docs/_time_default.jsx +1 -1
  21. data/app/pb_kits/playbook/pb_time/docs/_time_sizes.jsx +1 -1
  22. data/app/pb_kits/playbook/pb_time/docs/_time_timestamp.jsx +1 -1
  23. data/app/pb_kits/playbook/pb_time/docs/_time_timezone.jsx +1 -1
  24. data/app/pb_kits/playbook/pb_time_stacked/_time_stacked.jsx +1 -1
  25. data/app/pb_kits/playbook/pb_title/_title.tsx +1 -1
  26. data/app/pb_kits/playbook/pb_tooltip/_tooltip.scss +49 -6
  27. data/app/pb_kits/playbook/pb_tooltip/_tooltip.tsx +144 -0
  28. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_default_react.jsx +59 -0
  29. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_default_react.md +5 -0
  30. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_icon.erb +10 -0
  31. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_icon.jsx +52 -0
  32. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_icon.md +1 -0
  33. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_interaction.jsx +40 -0
  34. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_interaction.md +1 -0
  35. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_margin.jsx +39 -0
  36. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_margin.md +3 -0
  37. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_with_icon_circle.html.erb +1 -1
  38. data/app/pb_kits/playbook/pb_tooltip/docs/example.yml +7 -1
  39. data/app/pb_kits/playbook/pb_tooltip/docs/index.js +4 -0
  40. data/app/pb_kits/playbook/pb_tooltip/tooltip.test.jsx +50 -0
  41. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_without_pills.html.erb +37 -0
  42. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_without_pills.md +1 -0
  43. data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +1 -0
  44. data/app/pb_kits/playbook/pb_typeahead/typeahead.html.erb +2 -2
  45. data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +10 -2
  46. data/app/pb_kits/playbook/pb_weekday_stacked/_weekday_stacked.jsx +1 -1
  47. data/app/pb_kits/playbook/playbook-doc.js +2 -0
  48. data/lib/playbook/version.rb +2 -2
  49. metadata +25 -11
  50. data/app/pb_kits/playbook/pb_date/_date.jsx +0 -138
  51. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.jsx +0 -93
  52. data/app/pb_kits/playbook/pb_time/_time.jsx +0 -90
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 829ab73754749eeb3476c40cfaba3fb74e62e92744f725772b851b3c084a81ce
4
- data.tar.gz: e42dc4f35cb80676454745307afba58a5d33e7deae5f68ff36074a28e78e3299
3
+ metadata.gz: 638051af443b06b03b9de8a9092d21f8ce06f3806e60bd43cec8463ce428a69a
4
+ data.tar.gz: c43d207810694a318a13280bb917b8a295cb44310e05433a262639bee6b8778e
5
5
  SHA512:
6
- metadata.gz: 6c74669ef536138bc842fb3b2867d68716e10b15af93ea73233593bad06c7c0f01494d30e29cba67c7a2526401a854bf6ad00b259829a2adcfe4795969dbbcb5
7
- data.tar.gz: 169d399c99f5fddd984fedb81e3701b85e918da087546259e84989bbf5f17a0227a9787494a8f524c2a50d38eccfc4badab2e9810e3e0b5cecd5585bb85883ac
6
+ metadata.gz: 80aad4d2179d46bc3332b631a1f4e4e90640d61b3cbd3bfa1894cd8e5710f20ecea86f8d71cada0811e9ac434a99c70cd31a7622c33df2434d82370b5f0a9157
7
+ data.tar.gz: 8a8562a4d3efced667089ca24567758a341255de55f885d1068c7722b301886d427f07943a03ae391d47a1b1d5b4ce279d7bb80a42d7e53042ed9b22ab71d4dc
@@ -98,6 +98,7 @@ export { default as Title } from './pb_title/_title'
98
98
  export { default as TitleCount } from './pb_title_count/_title_count'
99
99
  export { default as TitleDetail } from './pb_title_detail/_title_detail'
100
100
  export { default as Toggle } from './pb_toggle/_toggle'
101
+ export { default as Tooltip } from './pb_tooltip/_tooltip'
101
102
  export { default as TreemapChart } from './pb_treemap_chart/_treemap_chart'
102
103
  export { default as Typeahead } from './pb_typeahead/_typeahead'
103
104
  export { default as User } from './pb_user/_user'
@@ -8,10 +8,10 @@ import Icon from '../pb_icon/_icon'
8
8
  type EventHandler = (React.MouseEventHandler<HTMLElement>)
9
9
 
10
10
  type ButtonPropTypes = {
11
- aria?: {[key: string]: string},
11
+ aria?: { [key: string]: string },
12
12
  children?: React.ReactChild[] | React.ReactChild,
13
13
  className?: string | string[],
14
- data?: {[key: string]: string},
14
+ data?: { [key: string]: string },
15
15
  disabled?: boolean,
16
16
  fixedWidth?: boolean,
17
17
  form?: string,
@@ -24,11 +24,11 @@ type ButtonPropTypes = {
24
24
  onClick?: EventHandler,
25
25
  size?: 'sm' | 'md' | 'lg',
26
26
  text?: string,
27
- type: 'inline' | null,
27
+ type?: 'inline' | null,
28
28
  htmlType: 'submit' | 'reset' | 'button' | undefined,
29
29
  value?: string | null,
30
30
  variant: 'primary' | 'secondary' | 'link',
31
- wrapperClass: string,
31
+ wrapperClass?: string,
32
32
  } & GlobalProps
33
33
 
34
34
  const buttonClassName = (props: ButtonPropTypes) => {
@@ -99,8 +99,8 @@ const Button = (props: ButtonPropTypes) => {
99
99
  )
100
100
 
101
101
  const ifLoading = () => {
102
- if (loading){
103
- return(
102
+ if (loading) {
103
+ return (
104
104
  <>
105
105
  {loadingIcon}
106
106
  </>
@@ -1,11 +1,7 @@
1
- /* @flow */
2
-
3
1
  import React from 'react'
4
2
  import classnames from 'classnames'
5
3
  import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
6
4
 
7
- import type { Callback } from '../types'
8
-
9
5
  import { noop } from '../utilities/props'
10
6
  import { globalProps } from '../utilities/globalProps'
11
7
 
@@ -13,21 +9,21 @@ import Button from '../pb_button/_button'
13
9
  import Icon from '../pb_icon/_icon'
14
10
 
15
11
  type CircleIconButtonProps = {
16
- aria?: object,
12
+ aria?: { [key: string]: string },
17
13
  className?: string,
18
14
  dark?: boolean,
19
- data?: object,
15
+ data?: { [key: string]: string },
20
16
  disabled?: boolean,
21
17
  icon: string,
22
18
  id?: string,
23
19
  link?: string,
24
- onClick?: Callback,
20
+ onClick?: React.MouseEventHandler<HTMLElement>,
25
21
  newWindow?: boolean,
26
- type?: 'button' | 'submit' | 'reset',
22
+ type?: 'button' | 'submit' | 'reset' | undefined,
27
23
  variant?: 'primary' | 'secondary' | 'link',
28
24
  }
29
25
 
30
- const CircleIconButton = (props: CircleIconButtonProps) => {
26
+ const CircleIconButton = (props: CircleIconButtonProps): React.ReactElement => {
31
27
  const {
32
28
  aria = {},
33
29
  className,
@@ -61,11 +57,11 @@ const CircleIconButton = (props: CircleIconButtonProps) => {
61
57
  <Button
62
58
  dark={dark}
63
59
  disabled={disabled}
60
+ htmlType={type}
64
61
  link={link}
65
62
  newWindow={newWindow}
66
63
  onClick={onClick}
67
64
  text={null}
68
- type={type}
69
65
  variant={variant}
70
66
  >
71
67
  <Icon
@@ -17,7 +17,7 @@ test('returns namespaced class name', () => {
17
17
  })
18
18
 
19
19
  test('returns correct icon', () => {
20
- render(
20
+ render(
21
21
  <>
22
22
  <Contact
23
23
  contactDetail="Cell"
@@ -85,3 +85,47 @@ test('returns correct icon', () => {
85
85
  expect(screen.getByTestId('test-extension').querySelector('.pb_icon_kit')).toHaveClass('fa-phone-plus')
86
86
  expect(screen.getByTestId('test-empty').querySelector('.pb_icon_kit')).toHaveClass('fa-phone')
87
87
  })
88
+
89
+ test("not compliant values return null in phone related contact types", () => {
90
+ const notCompliantValues = [
91
+ "349-185-998223",
92
+ "349-1858",
93
+ "",
94
+ "2",
95
+ "string",
96
+ ]
97
+ const contactTypes = [
98
+ "cell",
99
+ "work",
100
+ "work-cell",
101
+ "wrong-number",
102
+ "wrong-phone",
103
+ "wrong-type",
104
+ "extension",
105
+ ]
106
+
107
+ const buildData = contactTypes.reduce((response, type) => {
108
+ notCompliantValues.forEach((value) => response.push({ type, value }))
109
+ return response
110
+ }, [])
111
+
112
+ const { rerender } = render(
113
+ <Contact
114
+ contactType=""
115
+ contactValue=""
116
+ data={{ testid: `contact-kit-null-test` }}
117
+ />
118
+ )
119
+ buildData.map(({ type, value }) => {
120
+ rerender(
121
+ <Contact
122
+ contactType={type}
123
+ contactValue={value}
124
+ data={{ testid: `contact-kit-null-test` }}
125
+ />
126
+ )
127
+ expect(screen.getByTestId("contact-kit-null-test")).toHaveTextContent(
128
+ "null"
129
+ )
130
+ })
131
+ })
@@ -1,5 +1,3 @@
1
- /* @flow */
2
-
3
1
  import React from 'react'
4
2
  import classnames from 'classnames'
5
3
 
@@ -14,10 +12,10 @@ type CurrencyProps = {
14
12
  abbreviate?: boolean,
15
13
  align?: 'center' | 'left' | 'right',
16
14
  amount: string,
17
- aria?: object,
15
+ aria?: {[key:string]:string},
18
16
  className?: string,
19
17
  dark?: boolean,
20
- data?: object,
18
+ data?: {[key:string]:string},
21
19
  decimals?: 'default' | 'matching',
22
20
  emphasized?: boolean,
23
21
  id?: string,
@@ -28,7 +26,7 @@ type CurrencyProps = {
28
26
  unit?: string,
29
27
  }
30
28
 
31
- const sizes = {
29
+ const sizes: {lg: 1, md: 3, sm: 4} = {
32
30
  lg: 1,
33
31
  md: 3,
34
32
  sm: 4,
@@ -68,12 +66,12 @@ const Currency = (props: CurrencyProps) => {
68
66
  const ariaProps = buildAriaProps(aria)
69
67
  const dataProps = buildDataProps(data)
70
68
  const classes = classnames(
71
- buildCss('pb_currency_kit', align, size, { dark }),
69
+ buildCss('pb_currency_kit', align, size),
72
70
  globalProps(props),
73
71
  className
74
72
  )
75
73
 
76
- const getFormattedNumber = (input) => new Intl.NumberFormat('en-US', {
74
+ const getFormattedNumber = (input: number | any ) => new Intl.NumberFormat('en-US', {
77
75
  notation: 'compact',
78
76
  maximumFractionDigits: 1,
79
77
  }).format(input)
@@ -126,11 +124,18 @@ const Currency = (props: CurrencyProps) => {
126
124
  dark={dark}
127
125
  >
128
126
  {getAbbreviation}
129
- <If condition={unit}>
130
- {unit}
131
- <Else />
132
- {getDecimalValue}
133
- </If>
127
+ {
128
+ unit ? (
129
+ <>
130
+ {unit}
131
+ </>
132
+ ) : (
133
+ <>
134
+ {getDecimalValue}
135
+ </>
136
+ )
137
+ }
138
+
134
139
  </Body>
135
140
  </div>
136
141
  </div>
@@ -0,0 +1,101 @@
1
+ import React from "react";
2
+ import classnames from "classnames";
3
+
4
+ import DateTime from "../pb_kit/dateTime";
5
+ import { buildAriaProps, buildCss, buildDataProps } from "../utilities/props";
6
+ import { globalProps } from "../utilities/globalProps";
7
+
8
+ import Body from "../pb_body/_body";
9
+ import Caption from "../pb_caption/_caption";
10
+ import Icon from "../pb_icon/_icon";
11
+ import Title from "../pb_title/_title";
12
+
13
+ type PbDateProps = {
14
+ alignment?: "left" | "center" | "right";
15
+ aria: { [key: string]: string };
16
+ className?: string;
17
+ data?: { [key: string]: string };
18
+ id?: string;
19
+ showDayOfWeek?: boolean;
20
+ showIcon?: boolean;
21
+ size?: "sm" | "md" | "lg";
22
+ value: string | Date;
23
+ };
24
+
25
+ const PbDate = (props: PbDateProps) => {
26
+ const {
27
+ aria = {},
28
+ alignment = "left",
29
+ className,
30
+ data = {},
31
+ id,
32
+ showDayOfWeek = false,
33
+ showIcon = false,
34
+ size = "md",
35
+ value,
36
+ } = props;
37
+
38
+ const dateTimestamp = new DateTime({ value: value });
39
+ const weekday = dateTimestamp.toWeekday();
40
+ const month = dateTimestamp.toMonth();
41
+ const day = dateTimestamp.toDay();
42
+ const year = dateTimestamp.toYear();
43
+ const currentYear = new Date().getFullYear().toString();
44
+
45
+ const ariaProps = buildAriaProps(aria);
46
+ const dataProps = buildDataProps(data);
47
+
48
+ const classes = classnames(
49
+ buildCss("pb_date_kit", alignment),
50
+ globalProps(props),
51
+ className
52
+ );
53
+
54
+ return (
55
+ <div {...ariaProps} {...dataProps} className={classes} id={id}>
56
+ {size == "md" || size == "lg" ? (
57
+ <Title size={4} tag="h4">
58
+ {showIcon && (
59
+ <Body className="pb_icon_kit_container" color="light" tag="span">
60
+ <Icon fixedWidth icon="calendar-alt" />
61
+ </Body>
62
+ )}
63
+
64
+ {showDayOfWeek && (
65
+ <>
66
+ {weekday}
67
+ <Body color="light" tag="span" text=" • " />
68
+ </>
69
+ )}
70
+
71
+ <span>
72
+ {month} {day}
73
+ </span>
74
+ {currentYear != year && <span>{`, ${year}`}</span>}
75
+ </Title>
76
+ ) : (
77
+ <>
78
+ {showIcon && (
79
+ <Caption className="pb_icon_kit_container" tag="span">
80
+ <Icon fixedWidth icon="calendar-alt" size="sm" />
81
+ </Caption>
82
+ )}
83
+
84
+ {showDayOfWeek && (
85
+ <>
86
+ <Caption tag="div">{weekday}</Caption>
87
+ <Caption color="light" tag="div" text=" • " />
88
+ </>
89
+ )}
90
+
91
+ <Caption tag="span">
92
+ {month} {day}
93
+ {currentYear != year && <>{`, ${year}`}</>}
94
+ </Caption>
95
+ </>
96
+ )}
97
+ </div>
98
+ );
99
+ };
100
+
101
+ export default PbDate;
@@ -5,16 +5,15 @@ import { fireEvent, render, screen, waitFor, within } from '../utilities/test-ut
5
5
  import DatePicker from './_date_picker'
6
6
  import { getTimezoneText } from './plugins/timeSelect'
7
7
 
8
+
9
+
10
+ jest.setSystemTime(new Date('01/01/2020'));
8
11
  const DEFAULT_DATE = new Date()
9
- DEFAULT_DATE.setFullYear(2022)
10
- DEFAULT_DATE.setMonth(1)
11
- DEFAULT_DATE.setDate(1)
12
- DEFAULT_DATE.setHours(12)
13
- DEFAULT_DATE.setMinutes(0)
12
+
14
13
 
15
14
  describe('DatePicker Kit', () => {
16
15
  beforeEach(() => {
17
- jest.spyOn(console, 'error').mockImplementation(() => {});
16
+ jest.spyOn(console, 'error').mockImplementation(() => { });
18
17
  });
19
18
 
20
19
  test('renders DatePicker input field', () => {
@@ -44,10 +43,12 @@ describe('DatePicker Kit', () => {
44
43
 
45
44
  const kit = screen.getByTestId(testId)
46
45
 
46
+
47
47
  const input = within(kit).getByPlaceholderText('Select Date')
48
48
  expect(input).toBeInTheDocument()
49
+
49
50
  await waitFor(() => {
50
- expect(input).toHaveValue('02/01/2022')
51
+ expect(input).toHaveValue('01/01/2020')
51
52
  })
52
53
  })
53
54
 
@@ -143,7 +144,7 @@ describe('DatePicker Kit', () => {
143
144
  }),
144
145
  )
145
146
  await waitFor(() => {
146
- expect(input).toHaveValue('02/01/2022 at 12:00 AM')
147
+ expect(input).toHaveValue('01/01/2020 at 12:00 AM')
147
148
  })
148
149
 
149
150
  fireEvent(
@@ -154,7 +155,7 @@ describe('DatePicker Kit', () => {
154
155
  }),
155
156
  )
156
157
  await waitFor(() => {
157
- expect(input).toHaveValue('02/01/2022 at 12:00 PM')
158
+ expect(input).toHaveValue('01/01/2020 at 12:00 PM')
158
159
  })
159
160
  })
160
161
  })
@@ -0,0 +1,80 @@
1
+ import React, { useEffect, useState } from "react";
2
+ import classnames from "classnames";
3
+
4
+ import { globalProps } from "../utilities/globalProps";
5
+
6
+ import Icon from "../pb_icon/_icon";
7
+ import Title from "../pb_title/_title";
8
+
9
+ const iconMap = {
10
+ success: "check",
11
+ error: "exclamation-triangle",
12
+ neutral: "info-circle",
13
+ tip: "info-circle",
14
+ };
15
+
16
+ type FixedConfirmationToastProps = {
17
+ className?: string;
18
+ closeable?: boolean;
19
+ data?: string;
20
+ horizontal?: "right" | "left" | "center";
21
+ id?: string;
22
+ multiLine?: boolean;
23
+ onClose?: () => void;
24
+ open?: boolean;
25
+ status?: "success" | "error" | "neutral" | "tip";
26
+ text: string;
27
+ vertical?: "top" | "bottom";
28
+ };
29
+
30
+ const FixedConfirmationToast = (props: FixedConfirmationToastProps) => {
31
+ const [showToast, toggleToast] = useState(true);
32
+ const {
33
+ className,
34
+ closeable = false,
35
+ horizontal,
36
+ multiLine = false,
37
+ onClose = () => {},
38
+ open = true,
39
+ status = "neutral",
40
+ text,
41
+ vertical,
42
+ } = props;
43
+ const css = classnames(
44
+ `pb_fixed_confirmation_toast_kit_${status}`,
45
+ { _multi_line: multiLine },
46
+ { [`positioned_toast ${vertical} ${horizontal}`]: vertical && horizontal },
47
+ globalProps(props),
48
+ className
49
+ );
50
+ const icon = iconMap[status];
51
+
52
+ useEffect(() => {
53
+ toggleToast(open);
54
+ }, [open]);
55
+
56
+ const handleClick = () => {
57
+ toggleToast(!closeable);
58
+ onClose();
59
+ };
60
+
61
+ return (
62
+ <>
63
+ {showToast && (
64
+ <div className={css} onClick={handleClick}>
65
+ {icon && <Icon className="pb_icon" fixedWidth icon={icon} />}
66
+ <Title
67
+ className="pb_fixed_confirmation_toast_text"
68
+ size={4}
69
+ text={text}
70
+ />
71
+ {closeable && (
72
+ <Icon className="pb_icon" fixedWidth={false} icon="times" />
73
+ )}
74
+ </div>
75
+ )}
76
+ </>
77
+ );
78
+ };
79
+
80
+ export default FixedConfirmationToast;
@@ -16,6 +16,7 @@ export type IconSizes = "lg"
16
16
  | "8x"
17
17
  | "9x"
18
18
  | "10x"
19
+ | ""
19
20
 
20
21
  type IconProps = {
21
22
  aria?: {[key: string]: string},
@@ -1,5 +1,3 @@
1
- /* @flow */
2
-
3
1
  import React from 'react'
4
2
 
5
3
  import classnames from 'classnames'
@@ -10,10 +8,10 @@ import { globalProps } from '../utilities/globalProps'
10
8
  import Icon from '../pb_icon/_icon'
11
9
 
12
10
  type IconCircleProps = {
13
- aria?: object,
11
+ aria?: {[key:string]: string},
14
12
  className?: string,
15
13
  dark?: boolean,
16
- data?: object,
14
+ data?: {[key:string]: string},
17
15
  icon: string,
18
16
  id?: string,
19
17
  size?: "base" | "xs" | "sm" | "md" | "lg" | "xl",
@@ -1,23 +1,22 @@
1
- /* @flow */
2
- /*eslint-disable flowtype/space-before-type-colon */
3
1
 
4
- import moment from 'moment'
2
+ import moment, { Moment } from 'moment'
5
3
  import 'moment-strftime'
6
4
  import 'moment-timezone'
7
5
 
8
6
  type DateTimeType = {
9
- value: String | Date,
10
- zone?: String,
7
+ value: string | Date,
8
+ zone?: string,
11
9
  }
12
10
 
13
11
  const ABBR_DAYS = ['SU', 'M', 'T', 'W', 'TH', 'F', 'S']
14
12
 
15
13
  export default class DateTime {
14
+ value: Moment & any
16
15
  constructor({ value, zone = 'America/New_York' }: DateTimeType) {
17
16
  this.value = this.convertToTimestampZone(value, zone)
18
17
  }
19
18
 
20
- convertToTimestampZone(value, zone) {
19
+ convertToTimestampZone(value: string | Date, zone: string) {
21
20
  return moment(value).tz(zone)
22
21
  }
23
22
 
@@ -1,5 +1,3 @@
1
- /* @flow */
2
-
3
1
  import React from 'react'
4
2
  import classnames from 'classnames'
5
3
  import { globalProps } from '../utilities/globalProps'
@@ -10,9 +8,9 @@ import Pill from '../pb_pill/_pill'
10
8
  import Caption from '../pb_caption/_caption'
11
9
 
12
10
  type LabelPillProps = {
13
- aria?: object,
11
+ aria?: {[key: string]:string},
14
12
  className?: string,
15
- data?: object,
13
+ data?: {[key: string]:string},
16
14
  id?: string,
17
15
  label?: string,
18
16
  pillValue?: string,
@@ -2,7 +2,7 @@
2
2
 
3
3
  import React from 'react'
4
4
  import classnames from 'classnames'
5
- import DateTime from '../pb_kit/dateTime.js'
5
+ import DateTime from '../pb_kit/dateTime'
6
6
  import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
7
7
  import { globalProps } from '../utilities/globalProps'
8
8
 
@@ -3,7 +3,7 @@
3
3
  import React from 'react'
4
4
  import classnames from 'classnames'
5
5
 
6
- import DateTime from '../pb_kit/dateTime.js'
6
+ import DateTime from '../pb_kit/dateTime'
7
7
  import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
8
8
  import { globalProps } from '../utilities/globalProps'
9
9
 
@@ -11,7 +11,7 @@ type PillProps = {
11
11
  data?: {[key: string]: string},
12
12
  id?: string,
13
13
  text: string,
14
- variant?: "success" | "warning" | "error" | "info" | "neutral",
14
+ variant?: "success" | "warning" | "error" | "info" | "neutral" | "primary",
15
15
  textTransform?: "none" | "lowercase"
16
16
  } & GlobalProps
17
17
 
@@ -1,4 +1,3 @@
1
- /* @flow */
2
1
  import React from 'react'
3
2
  import classnames from 'classnames'
4
3
 
@@ -8,10 +7,10 @@ import { globalProps } from '../utilities/globalProps'
8
7
  import Caption from '../pb_caption/_caption'
9
8
 
10
9
  type SectionSeparatorProps = {
11
- aria: object,
10
+ aria: { [key: string]: string; },
12
11
  className: string,
13
12
  dark?: boolean,
14
- data: object,
13
+ data: { [key: string]: string; },
15
14
  id: string,
16
15
  orientation?: "horizontal" | "vertical",
17
16
  text: string,
@@ -40,13 +39,13 @@ const SectionSeparator = (props: SectionSeparatorProps) => {
40
39
  className={classes}
41
40
  id={id}
42
41
  >
43
-
44
- <If condition={text}>
45
- <span>
42
+ {
43
+ text && (
44
+ <span>
46
45
  <Caption text={text} />
47
46
  </span>
48
- </If>
49
-
47
+ )
48
+ }
50
49
  </div>
51
50
  )
52
51
  }