playbook_ui 12.3.1.pre.alpha.phone1 → 12.4.0.pre.alpha.devdocstest1
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/data/menu.yml +1 -1
- data/app/pb_kits/playbook/index.js +0 -1
- data/app/pb_kits/playbook/pb_dashboard_value/{_dashboard_value.jsx → _dashboard_value.tsx} +12 -14
- data/app/pb_kits/playbook/pb_date_time_stacked/{_date_time_stacked.jsx → _date_time_stacked.tsx} +2 -6
- data/app/pb_kits/playbook/pb_date_time_stacked/docs/_date_time_stacked_default.jsx +5 -2
- data/app/pb_kits/playbook/pb_dialog/_dialog.scss +2 -0
- data/app/pb_kits/playbook/pb_lightbox/Carousel/index.tsx +7 -7
- data/app/pb_kits/playbook/pb_person/{_person.jsx → _person.tsx} +6 -8
- data/app/pb_kits/playbook/pb_person/person.test.js +43 -0
- data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.scss +34 -14
- data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_default.md +1 -0
- data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_initial_country.md +1 -1
- data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_only_countries.md +1 -1
- data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_preferred_countries.md +1 -1
- data/app/pb_kits/playbook/pb_radio/_radio.scss +19 -11
- data/app/pb_kits/playbook/pb_radio/_radio.tsx +1 -1
- data/app/pb_kits/playbook/pb_text_input/_text_input.scss +1 -1
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_add_on.html.erb +7 -6
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_add_on.jsx +8 -8
- data/app/pb_kits/playbook/pb_time_stacked/_time_stacked.tsx +1 -1
- data/app/pb_kits/playbook/pb_title_count/{_title_count.jsx → _title_count.tsx} +7 -5
- data/app/pb_kits/playbook/pb_title_count/title_count.test.js +69 -0
- data/app/pb_kits/playbook/tokens/_colors.scss +24 -24
- data/lib/playbook/version.rb +2 -2
- metadata +10 -7
- /data/app/pb_kits/playbook/pb_dashboard_value/{dashboardValueSettings.js → dashboardValueSettings.ts} +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3663b6779408f8388e9eaf0cf9f6ff48d0e98e5f6ac6abc11c75c5360b6b5f76
|
4
|
+
data.tar.gz: 809146bf7a2354e0010a59f6672e36daf0dd547eedf5525dc584abb9c0fa0961
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 30fb6ffcbc0b0b0fe04cd8c5400ffa31ad39756ed9e9eb53a46b464898a9c4cdea4cf6784a9091b4f17b151b1e245672d5a7431ccaa9e02558acd62b5d9d0bc1
|
7
|
+
data.tar.gz: 71fe5fdce4763e7ef7fe6600a59549bfb2b74532460ef9bb29bcfb99aa8fe5d86de6585a3f44de9fb09827c410477f4e2200ce53b3a91d4614e7db8c4c5644c7
|
@@ -32,6 +32,7 @@ kits:
|
|
32
32
|
- form_group
|
33
33
|
- form_pill
|
34
34
|
- passphrase
|
35
|
+
- phone_number_input
|
35
36
|
- radio
|
36
37
|
- rich_text_editor
|
37
38
|
- select
|
@@ -62,7 +63,6 @@ kits:
|
|
62
63
|
- hashtag
|
63
64
|
- pill
|
64
65
|
- pagination
|
65
|
-
- phone_number_input
|
66
66
|
- popover
|
67
67
|
- progress:
|
68
68
|
- progress_pills
|
@@ -53,7 +53,6 @@ export { default as LabelPill } from './pb_label_pill/_label_pill'
|
|
53
53
|
export { default as LabelValue } from './pb_label_value/_label_value'
|
54
54
|
export { default as Layout } from './pb_layout/_layout'
|
55
55
|
export { default as Legend } from './pb_legend/_legend'
|
56
|
-
export { default as Lightbox } from './pb_lightbox/_lightbox'
|
57
56
|
export { default as LineGraph } from './pb_line_graph/_line_graph'
|
58
57
|
export { default as List } from './pb_list/_list'
|
59
58
|
export { default as ListItem } from './pb_list/_list_item'
|
@@ -1,5 +1,3 @@
|
|
1
|
-
/* @flow */
|
2
|
-
|
3
1
|
import React from 'react'
|
4
2
|
import classnames from 'classnames'
|
5
3
|
import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
|
@@ -11,22 +9,22 @@ import StatValue from '../pb_stat_value/_stat_value'
|
|
11
9
|
|
12
10
|
type DashboardValueProps = {
|
13
11
|
align?: 'left' | 'center' | 'right',
|
14
|
-
aria?:
|
12
|
+
aria?: { [key: string]: string },
|
15
13
|
className?: string,
|
16
|
-
data?:
|
14
|
+
data?: { [key: string]: string },
|
17
15
|
id?: string,
|
18
16
|
statChange?: {
|
19
|
-
change
|
20
|
-
value?: string |
|
17
|
+
change? : 'increase' | 'decrease' | 'neutral',
|
18
|
+
value?: string | number
|
21
19
|
},
|
22
20
|
statLabel?: string,
|
23
21
|
statValue?: {
|
24
22
|
unit?: string,
|
25
|
-
value?: string |
|
23
|
+
value?: string | number
|
26
24
|
}
|
27
25
|
}
|
28
26
|
|
29
|
-
const DashboardValue = (props: DashboardValueProps) => {
|
27
|
+
const DashboardValue = (props: DashboardValueProps): React.ReactElement => {
|
30
28
|
const {
|
31
29
|
align = 'left',
|
32
30
|
aria = {},
|
@@ -53,21 +51,21 @@ const DashboardValue = (props: DashboardValueProps) => {
|
|
53
51
|
className={classes}
|
54
52
|
id={id}
|
55
53
|
>
|
56
|
-
|
54
|
+
{ statLabel &&
|
57
55
|
<Body color="light">{statLabel}</Body>
|
58
|
-
|
59
|
-
|
56
|
+
}
|
57
|
+
{ statValue &&
|
60
58
|
<StatValue
|
61
59
|
unit={statValue.unit}
|
62
60
|
value={statValue.value}
|
63
61
|
/>
|
64
|
-
|
65
|
-
|
62
|
+
}
|
63
|
+
{ statChange &&
|
66
64
|
<StatChange
|
67
65
|
change={statChange.change}
|
68
66
|
value={statChange.value}
|
69
67
|
/>
|
70
|
-
|
68
|
+
}
|
71
69
|
</div>
|
72
70
|
)
|
73
71
|
}
|
data/app/pb_kits/playbook/pb_date_time_stacked/{_date_time_stacked.jsx → _date_time_stacked.tsx}
RENAMED
@@ -1,6 +1,4 @@
|
|
1
1
|
|
2
|
-
/* @flow */
|
3
|
-
|
4
2
|
import React from 'react'
|
5
3
|
|
6
4
|
import { buildCss } from '../utilities/props'
|
@@ -20,7 +18,7 @@ type DateTimeStackedProps = {
|
|
20
18
|
timeZone?: string,
|
21
19
|
}
|
22
20
|
|
23
|
-
const DateTimeStacked = (props: DateTimeStackedProps) => {
|
21
|
+
const DateTimeStacked = (props: DateTimeStackedProps): React.ReactElement => {
|
24
22
|
if (props.date) deprecatedProps('Date Time Stacked', ['date'])
|
25
23
|
|
26
24
|
const {
|
@@ -34,7 +32,7 @@ const DateTimeStacked = (props: DateTimeStackedProps) => {
|
|
34
32
|
|
35
33
|
return (
|
36
34
|
<Flex
|
37
|
-
inline=
|
35
|
+
inline={false}
|
38
36
|
vertical="stretch"
|
39
37
|
{...props}
|
40
38
|
>
|
@@ -44,7 +42,6 @@ const DateTimeStacked = (props: DateTimeStackedProps) => {
|
|
44
42
|
bold
|
45
43
|
dark={dark}
|
46
44
|
date={date || datetime}
|
47
|
-
timeZone={timeZone}
|
48
45
|
/>
|
49
46
|
</FlexItem>
|
50
47
|
|
@@ -57,7 +54,6 @@ const DateTimeStacked = (props: DateTimeStackedProps) => {
|
|
57
54
|
className={classes}
|
58
55
|
dark={dark}
|
59
56
|
date={date || datetime}
|
60
|
-
tag="caption"
|
61
57
|
timeZone={timeZone}
|
62
58
|
/>
|
63
59
|
</FlexItem>
|
@@ -9,17 +9,20 @@ const DateTimeStackedDefault = (props) => (
|
|
9
9
|
{...props}
|
10
10
|
/>
|
11
11
|
<br />
|
12
|
+
<DateTimeStacked
|
13
|
+
datetime={new Date(2018, 2, 20)}
|
14
|
+
{...props}
|
15
|
+
/>
|
16
|
+
<br />
|
12
17
|
<DateTimeStacked
|
13
18
|
datetime={new Date()}
|
14
19
|
timeZone="Asia/Tokyo"
|
15
|
-
|
16
20
|
{...props}
|
17
21
|
/>
|
18
22
|
<br />
|
19
23
|
<DateTimeStacked
|
20
24
|
datetime={new Date()}
|
21
25
|
timeZone="America/Denver"
|
22
|
-
|
23
26
|
{...props}
|
24
27
|
/>
|
25
28
|
|
@@ -5,6 +5,7 @@
|
|
5
5
|
@import "../tokens/border_radius";
|
6
6
|
@import "../tokens/spacing";
|
7
7
|
@import "../tokens/animation-curves";
|
8
|
+
@import "../tokens/positioning";
|
8
9
|
|
9
10
|
|
10
11
|
|
@@ -119,6 +120,7 @@
|
|
119
120
|
position: sticky;
|
120
121
|
top: 0;
|
121
122
|
background-color: $white;
|
123
|
+
z-index: $z_8;
|
122
124
|
}
|
123
125
|
|
124
126
|
// @include pb_card;
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/* eslint-disable jsx-control-statements/jsx-use-if-tag */
|
2
|
-
import React
|
2
|
+
import React from 'react'
|
3
3
|
import Slides from './Slides'
|
4
4
|
import Thumbnails from './Thumbnails'
|
5
5
|
|
@@ -24,13 +24,13 @@ export default function Carousel({
|
|
24
24
|
onChange = ()=>{},
|
25
25
|
setIndex,
|
26
26
|
}: CarouselType): React.ReactElement {
|
27
|
-
useEffect(() => {
|
28
|
-
|
27
|
+
// useEffect(() => {
|
28
|
+
// document.body.style.overflow = 'hidden'
|
29
29
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
}, [])
|
30
|
+
// return () => {
|
31
|
+
// document.body.style.overflow = 'initial'
|
32
|
+
// }
|
33
|
+
// }, [])
|
34
34
|
|
35
35
|
const handleChange = (index: number) => {
|
36
36
|
onChange(index)
|
@@ -1,5 +1,3 @@
|
|
1
|
-
/* @flow */
|
2
|
-
|
3
1
|
import React from 'react'
|
4
2
|
import classnames from 'classnames'
|
5
3
|
|
@@ -14,15 +12,15 @@ import Body from '../pb_body/_body'
|
|
14
12
|
import Title from '../pb_title/_title'
|
15
13
|
|
16
14
|
type PersonProps = {
|
17
|
-
aria?:
|
18
|
-
className?: string |
|
19
|
-
data?:
|
15
|
+
aria?: { [key: string]: string },
|
16
|
+
className?: string | string[],
|
17
|
+
data?: { [key: string]: string },
|
20
18
|
firstName: string,
|
21
19
|
id?: string,
|
22
20
|
lastName: string,
|
23
21
|
}
|
24
22
|
|
25
|
-
const Person = (props: PersonProps) => {
|
23
|
+
const Person = (props: PersonProps): React.ReactElement => {
|
26
24
|
const {
|
27
25
|
aria = {},
|
28
26
|
className,
|
@@ -52,13 +50,13 @@ const Person = (props: PersonProps) => {
|
|
52
50
|
>
|
53
51
|
{firstName}
|
54
52
|
</Body>
|
55
|
-
|
53
|
+
{lastName &&
|
56
54
|
<Title
|
57
55
|
className="pb_person_first"
|
58
56
|
size={4}
|
59
57
|
text={` ${lastName}`}
|
60
58
|
/>
|
61
|
-
|
59
|
+
}
|
62
60
|
</div>
|
63
61
|
)
|
64
62
|
}
|
@@ -0,0 +1,43 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
|
3
|
+
import { render, screen } from '../utilities/test-utils'
|
4
|
+
|
5
|
+
import Person from './_person'
|
6
|
+
|
7
|
+
test('renders person classname', () => {
|
8
|
+
render(
|
9
|
+
<Person
|
10
|
+
data={{ testid: 'classname-test' }}
|
11
|
+
firstName="Kyle"
|
12
|
+
lastName="Fadigan"
|
13
|
+
/>
|
14
|
+
)
|
15
|
+
|
16
|
+
const kit = screen.getByTestId('classname-test')
|
17
|
+
expect(kit).toHaveClass("pb_person_kit");
|
18
|
+
})
|
19
|
+
|
20
|
+
|
21
|
+
test('it renders the component with the first name', () => {
|
22
|
+
render(
|
23
|
+
<Person
|
24
|
+
firstName="Kyle"
|
25
|
+
lastName="Fadigan"
|
26
|
+
/>
|
27
|
+
)
|
28
|
+
|
29
|
+
const kit = screen.getByText('Kyle')
|
30
|
+
expect(kit).toBeTruthy()
|
31
|
+
})
|
32
|
+
|
33
|
+
test('it renders the component with the last name', () => {
|
34
|
+
render(
|
35
|
+
<Person
|
36
|
+
firstName="Kyle"
|
37
|
+
lastName="Fadigan"
|
38
|
+
/>
|
39
|
+
)
|
40
|
+
|
41
|
+
const kit = screen.getByText('Fadigan')
|
42
|
+
expect(kit).toBeTruthy()
|
43
|
+
})
|
@@ -5,6 +5,14 @@
|
|
5
5
|
color: $focus_input_light;
|
6
6
|
}
|
7
7
|
|
8
|
+
.iti__country {
|
9
|
+
padding: 5px 10px 5px 16px;
|
10
|
+
}
|
11
|
+
|
12
|
+
.iti__selected-flag {
|
13
|
+
padding: 0 6px 0 16px;
|
14
|
+
}
|
15
|
+
|
8
16
|
.iti__country.iti__highlight {
|
9
17
|
background-color: $hover_light;
|
10
18
|
|
@@ -26,7 +34,7 @@
|
|
26
34
|
}
|
27
35
|
|
28
36
|
.iti--separate-dial-code .iti__selected-flag {
|
29
|
-
background-color: rgba(
|
37
|
+
background-color: rgba($white, $opacity_1);
|
30
38
|
}
|
31
39
|
|
32
40
|
.iti__arrow {
|
@@ -35,7 +43,7 @@
|
|
35
43
|
border-top: unset;
|
36
44
|
width: unset;
|
37
45
|
height: unset;
|
38
|
-
margin-bottom:
|
46
|
+
margin-bottom: $space_xxs;
|
39
47
|
}
|
40
48
|
|
41
49
|
.iti__arrow--up {
|
@@ -43,28 +51,36 @@
|
|
43
51
|
}
|
44
52
|
|
45
53
|
.iti__arrow::before {
|
54
|
+
border-style: solid;
|
55
|
+
border-width: 0.1em 0.1em 0 0;
|
56
|
+
content: '';
|
46
57
|
display: inline-block;
|
47
|
-
|
48
|
-
|
49
|
-
|
58
|
+
height: 0.6em;
|
59
|
+
left: 0.1em;
|
60
|
+
position: relative;
|
61
|
+
vertical-align: top;
|
62
|
+
width: 0.6em;
|
63
|
+
top: 10px;
|
64
|
+
transform: rotate(135deg);
|
50
65
|
font-size: 0.5em;
|
51
|
-
|
66
|
+
color: $slate;
|
52
67
|
}
|
53
68
|
|
54
69
|
.iti__arrow.iti__arrow--up::before {
|
55
|
-
|
56
|
-
|
57
|
-
content: "\f077";
|
70
|
+
transform: rotate(-45deg);
|
71
|
+
top: 12px;
|
58
72
|
}
|
59
73
|
|
60
74
|
.iti__active::after {
|
61
75
|
float: right;
|
62
|
-
|
63
|
-
-webkit-font-smoothing: antialiased;
|
64
|
-
font: var(--fa-font-regular);
|
65
|
-
content: "\f00c";
|
66
|
-
font-size: 1em;
|
76
|
+
content: "";
|
67
77
|
margin-top: 5px;
|
78
|
+
transform: rotate(45deg);
|
79
|
+
height: 12px;
|
80
|
+
width: 6px;
|
81
|
+
border-bottom: 2px solid;
|
82
|
+
border-right: 2px solid;
|
83
|
+
border-radius: 1px;
|
68
84
|
}
|
69
85
|
|
70
86
|
.iti__country-list {
|
@@ -73,6 +89,10 @@
|
|
73
89
|
border: 1px solid $border_light;
|
74
90
|
box-shadow: $shadow_deep;
|
75
91
|
}
|
92
|
+
|
93
|
+
.iti__divider {
|
94
|
+
border-bottom: 1px solid $border_light;
|
95
|
+
}
|
76
96
|
|
77
97
|
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
|
78
98
|
.iti__flag {
|
@@ -0,0 +1 @@
|
|
1
|
+
NOTE: Error state is handled by default, validating length (too long or too short) relative to the selected country’s phone format and enforcing numeric-only values for all countries.
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
Setting an initial country preselects that country within the input as well as the country dropdown.
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
Limiting countries removes all countries from the dropdown except your selections.
|
data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_preferred_countries.md
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
Preferred countries will display in the order they are listed with the first country preselected, and all non-preferred countries listed alphabetically below a section separator within the remaining dropdown.
|
@@ -16,16 +16,13 @@
|
|
16
16
|
border-radius: 1000px;
|
17
17
|
border: 2px solid $border_light;
|
18
18
|
margin-right: $space_xs;
|
19
|
-
transition
|
20
|
-
transition-duration: $transition_short;
|
21
|
-
transition-timing-function: $easeIn;
|
19
|
+
transition: background $transition_default ease, box-shadow $transition_default ease, border-color $transition_default ease;
|
22
20
|
}
|
23
21
|
|
24
22
|
@media (hover:hover) {
|
25
|
-
&:hover
|
26
|
-
|
27
|
-
|
28
|
-
}
|
23
|
+
&:hover .pb_radio_button {
|
24
|
+
background-color: $bg_light;
|
25
|
+
border-color: $border_light;
|
29
26
|
}
|
30
27
|
}
|
31
28
|
|
@@ -33,7 +30,12 @@
|
|
33
30
|
position: relative;
|
34
31
|
width: 0;
|
35
32
|
left: $offscreen;
|
36
|
-
&:
|
33
|
+
&:focus-visible {
|
34
|
+
& ~ .pb_radio_button {
|
35
|
+
box-shadow: 0px 0px 0px 2px $white, 0px 0px 0px 4px $primary;
|
36
|
+
}
|
37
|
+
}
|
38
|
+
&:checked {
|
37
39
|
& ~ .pb_radio_button {
|
38
40
|
border: 6px solid $primary;
|
39
41
|
}
|
@@ -54,7 +56,12 @@
|
|
54
56
|
border-color: $border_dark;
|
55
57
|
}
|
56
58
|
input {
|
57
|
-
&:
|
59
|
+
&:focus-visible {
|
60
|
+
& ~ .pb_radio_button {
|
61
|
+
box-shadow: 0px 0px 0px 2px $bg_dark_card, 0px 0px 0px 4px $primary;
|
62
|
+
}
|
63
|
+
}
|
64
|
+
&:checked {
|
58
65
|
& ~ .pb_radio_button {
|
59
66
|
border: 6px solid $primary;
|
60
67
|
}
|
@@ -62,9 +69,10 @@
|
|
62
69
|
}
|
63
70
|
|
64
71
|
@media (hover:hover) {
|
65
|
-
&:hover
|
72
|
+
&:hover {
|
66
73
|
.pb_radio_button {
|
67
|
-
|
74
|
+
background-color: rgba($white,.10);
|
75
|
+
border-color: $border_dark;
|
68
76
|
}
|
69
77
|
}
|
70
78
|
}
|
@@ -8,6 +8,12 @@
|
|
8
8
|
add_on: { icon: "user", alignment: 'right', border: true }
|
9
9
|
}) %>
|
10
10
|
|
11
|
+
|
12
|
+
<%= pb_rails("text_input", props: {
|
13
|
+
label: "Right-Aligned Add On With No Border",
|
14
|
+
add_on: { icon: "percent", alignment: 'right', border: false }
|
15
|
+
}) %>
|
16
|
+
|
11
17
|
<%= pb_rails("text_input", props: {
|
12
18
|
label: "Left-Aligned Add On With No Border",
|
13
19
|
add_on: { icon: "percent", alignment: 'left', border: false }
|
@@ -16,9 +22,4 @@
|
|
16
22
|
<%= pb_rails("text_input", props: {
|
17
23
|
label: "Left-Aligned Add On With Border",
|
18
24
|
add_on: { icon: "user", alignment: 'left', border: true }
|
19
|
-
}) %>
|
20
|
-
|
21
|
-
<%= pb_rails("text_input", props: {
|
22
|
-
label: "Right-Aligned Add On With No Border",
|
23
|
-
add_on: { icon: "percent", alignment: 'right', border: false }
|
24
|
-
}) %>
|
25
|
+
}) %>
|
@@ -51,19 +51,19 @@ const TextInputAddOn = (props) => {
|
|
51
51
|
</div>
|
52
52
|
<div>
|
53
53
|
<TextInput
|
54
|
-
addOn={{ icon: 'percent', alignment: '
|
55
|
-
label="
|
56
|
-
onChange={
|
57
|
-
value={
|
54
|
+
addOn={{ icon: 'percent', alignment: 'right', border: false }}
|
55
|
+
label="Right-Aligned Add On With No Border"
|
56
|
+
onChange={handleUpdateThirdInput}
|
57
|
+
value={thirdInput}
|
58
58
|
{...props}
|
59
59
|
/>
|
60
60
|
</div>
|
61
61
|
<div>
|
62
62
|
<TextInput
|
63
|
-
addOn={{ icon: 'percent', alignment: '
|
64
|
-
label="
|
65
|
-
onChange={
|
66
|
-
value={
|
63
|
+
addOn={{ icon: 'percent', alignment: 'left', border: false }}
|
64
|
+
label="Left-Aligned Add On With No Border"
|
65
|
+
onChange={handleUpdateSecondInput}
|
66
|
+
value={secondInput}
|
67
67
|
{...props}
|
68
68
|
/>
|
69
69
|
</div>
|
@@ -11,17 +11,17 @@ import Title from '../pb_title/_title'
|
|
11
11
|
|
12
12
|
type TitleCountProps = {
|
13
13
|
align: "center" | "left" | "right",
|
14
|
-
aria?:
|
14
|
+
aria?: { [key: string]: string },
|
15
15
|
className?: string,
|
16
|
-
count?:
|
16
|
+
count?: number,
|
17
17
|
dark?: boolean,
|
18
|
-
data?:
|
18
|
+
data?: { [key: string]: string },
|
19
19
|
id?: string,
|
20
20
|
title?: string,
|
21
21
|
size?: "lg" | "sm",
|
22
22
|
};
|
23
23
|
|
24
|
-
const TitleCount = (props: TitleCountProps) => {
|
24
|
+
const TitleCount = (props: TitleCountProps): React.ReactElement => {
|
25
25
|
const {
|
26
26
|
align = 'left',
|
27
27
|
aria = {},
|
@@ -61,7 +61,9 @@ const TitleCount = (props: TitleCountProps) => {
|
|
61
61
|
color="light"
|
62
62
|
dark={dark}
|
63
63
|
>
|
64
|
-
|
64
|
+
{count &&
|
65
|
+
formatCount
|
66
|
+
}
|
65
67
|
</Body>
|
66
68
|
|
67
69
|
</div>
|
@@ -0,0 +1,69 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import { render, screen } from '../utilities/test-utils'
|
3
|
+
|
4
|
+
import TitleCount from './_title_count'
|
5
|
+
|
6
|
+
test('returns namespaced class name', () => {
|
7
|
+
render(
|
8
|
+
<TitleCount
|
9
|
+
count={35.78}
|
10
|
+
data={{ testid: 'primary-test' }}
|
11
|
+
title="Appointments"
|
12
|
+
/>
|
13
|
+
)
|
14
|
+
|
15
|
+
const kit = screen.getByTestId('primary-test')
|
16
|
+
expect(kit).toHaveClass('pb_title_count_kit_left_sm')
|
17
|
+
})
|
18
|
+
|
19
|
+
test('size variant', () => {
|
20
|
+
render(
|
21
|
+
<TitleCount
|
22
|
+
count={35.78}
|
23
|
+
data={{ testid: 'large-test' }}
|
24
|
+
size="lg"
|
25
|
+
title="Appointments"
|
26
|
+
/>
|
27
|
+
)
|
28
|
+
|
29
|
+
const kit = screen.getByTestId('large-test')
|
30
|
+
expect(kit).toHaveClass('pb_title_count_kit_left_lg')
|
31
|
+
})
|
32
|
+
|
33
|
+
test('align variant', () => {
|
34
|
+
render(
|
35
|
+
<TitleCount
|
36
|
+
align="right"
|
37
|
+
count={35.78}
|
38
|
+
data={{ testid: 'large-test' }}
|
39
|
+
title="Appointments"
|
40
|
+
/>
|
41
|
+
)
|
42
|
+
|
43
|
+
const kit = screen.getByTestId('large-test')
|
44
|
+
expect(kit).toHaveClass('pb_title_count_kit_right_sm')
|
45
|
+
})
|
46
|
+
|
47
|
+
test('renders count correctly', () => {
|
48
|
+
render(
|
49
|
+
<TitleCount
|
50
|
+
count={35.78}
|
51
|
+
title="Appointments"
|
52
|
+
/>
|
53
|
+
)
|
54
|
+
|
55
|
+
const kit = screen.getByText('35.78')
|
56
|
+
expect(kit).toBeTruthy()
|
57
|
+
})
|
58
|
+
|
59
|
+
test('renders title correctly', () => {
|
60
|
+
render(
|
61
|
+
<TitleCount
|
62
|
+
count={35.78}
|
63
|
+
title="Appointments"
|
64
|
+
/>
|
65
|
+
)
|
66
|
+
|
67
|
+
const kit = screen.getByText('Appointments')
|
68
|
+
expect(kit).toBeTruthy()
|
69
|
+
})
|
@@ -59,7 +59,7 @@ $main_colors: (
|
|
59
59
|
Background colors ------------------*/
|
60
60
|
$bg_light: $silver !default;
|
61
61
|
$bg_dark: #0a0527 !default;
|
62
|
-
$bg_dark_card: #231E3D;
|
62
|
+
$bg_dark_card: #231E3D !default;
|
63
63
|
$background_colors: (
|
64
64
|
bg_light: $bg_light,
|
65
65
|
bg_dark: $bg_dark,
|
@@ -68,7 +68,7 @@ $background_colors: (
|
|
68
68
|
|
69
69
|
/* Card colors ------------------*/
|
70
70
|
$card_light: $white !default;
|
71
|
-
$card_dark: rgba($white, $opacity_1);
|
71
|
+
$card_dark: rgba($white, $opacity_1) !default;
|
72
72
|
$card_colors: (
|
73
73
|
card_light: $card_light,
|
74
74
|
card_dark: $card_dark
|
@@ -80,7 +80,7 @@ $action_colors: (
|
|
80
80
|
);
|
81
81
|
|
82
82
|
/* Active colors ----------------------*/
|
83
|
-
$active_light: lighten(#E5F2FF, 3.5%);
|
83
|
+
$active_light: lighten(#E5F2FF, 3.5%) !default;
|
84
84
|
$active_dark: #0082ff !default;
|
85
85
|
$active_colors: (
|
86
86
|
active_light: $active_light,
|
@@ -88,17 +88,17 @@ $active_colors: (
|
|
88
88
|
);
|
89
89
|
|
90
90
|
/* Hover colors -----------------------*/
|
91
|
-
$hover_light: darken($silver, 5%);
|
92
|
-
$hover_dark: rgba($white, $opacity_2);
|
91
|
+
$hover_light: darken($silver, 5%) !default;
|
92
|
+
$hover_dark: rgba($white, $opacity_2) !default;
|
93
93
|
$hover_colors: (
|
94
94
|
hover_light: $hover_light,
|
95
95
|
hover_dark: $hover_dark
|
96
96
|
);
|
97
97
|
|
98
98
|
/* Focus colors -----------------------*/
|
99
|
-
$focus_color: $primary;
|
100
|
-
$focus_input_light: rgba($active_light, $opacity_5);
|
101
|
-
$focus_input_dark: rgba(#144075, $opacity_5);
|
99
|
+
$focus_color: $primary !default;
|
100
|
+
$focus_input_light: rgba($active_light, $opacity_5) !default;
|
101
|
+
$focus_input_dark: rgba(#144075, $opacity_5) !default;
|
102
102
|
$focus_input_colors: (
|
103
103
|
focus_input_light: $focus_input_light,
|
104
104
|
focus_input_dark: $focus_input_dark,
|
@@ -107,14 +107,14 @@ $focus_input_colors: (
|
|
107
107
|
|
108
108
|
/* Border colors ----------------------*/
|
109
109
|
$border_light: #E4E8F0 !default;
|
110
|
-
$border_dark: rgba($white, $opacity_1);
|
110
|
+
$border_dark: rgba($white, $opacity_1) !default;
|
111
111
|
$border_colors: (
|
112
112
|
border_light: $border_light,
|
113
113
|
border_dark: $border_dark
|
114
114
|
);
|
115
115
|
|
116
116
|
/* Shadow colors ----------------------*/
|
117
|
-
$shadow: rgba(#3C6AAC, $opacity_2);
|
117
|
+
$shadow: rgba(#3C6AAC, $opacity_2) !default;
|
118
118
|
$shadow_colors: (
|
119
119
|
shadow: $shadow,
|
120
120
|
);
|
@@ -124,8 +124,8 @@ $text_lt_default: $charcoal !default;
|
|
124
124
|
$text_lt_light: #687887 !default;
|
125
125
|
$text_lt_lighter: $slate !default;
|
126
126
|
$text_dk_default: $white !default;
|
127
|
-
$text_dk_light: rgba($white, $opacity_6);
|
128
|
-
$text_dk_lighter: rgba($white, $opacity_4);
|
127
|
+
$text_dk_light: rgba($white, $opacity_6) !default;
|
128
|
+
$text_dk_lighter: rgba($white, $opacity_4) !default;
|
129
129
|
$text_colors: (
|
130
130
|
text_lt_default: $text_lt_default,
|
131
131
|
text_lt_light: $text_lt_light,
|
@@ -157,24 +157,24 @@ $data_colors: (
|
|
157
157
|
|
158
158
|
/* Status colors ----------------------*/
|
159
159
|
$success: $green !default;
|
160
|
-
$success_secondary: lighten($success, 10%);
|
161
|
-
$success_subtle: rgba($success, $opacity_1);
|
160
|
+
$success_secondary: lighten($success, 10%) !default;
|
161
|
+
$success_subtle: rgba($success, $opacity_1) !default;
|
162
162
|
$warning: $yellow !default;
|
163
|
-
$warning_secondary: lighten($warning, 10%);
|
164
|
-
$warning_subtle: rgba($warning, $opacity_1);
|
163
|
+
$warning_secondary: lighten($warning, 10%) !default;
|
164
|
+
$warning_subtle: rgba($warning, $opacity_1) !default;
|
165
165
|
$error: $red !default;
|
166
166
|
$error_dark: $red_dark !default;
|
167
|
-
$error_dark_body: $error_dark;
|
168
|
-
$error_secondary: lighten($error, 10%);
|
169
|
-
$error_subtle: rgba($error, $opacity_1);
|
167
|
+
$error_dark_body: $error_dark !default;
|
168
|
+
$error_secondary: lighten($error, 10%) !default;
|
169
|
+
$error_subtle: rgba($error, $opacity_1) !default;
|
170
170
|
$info: $teal !default;
|
171
|
-
$info_secondary : lighten($info, 10%);
|
172
|
-
$info_subtle: rgba($info, $opacity_1);
|
171
|
+
$info_secondary : lighten($info, 10%) !default;
|
172
|
+
$info_subtle: rgba($info, $opacity_1) !default;
|
173
173
|
$neutral: $slate !default;
|
174
|
-
$neutral_secondary: lighten($neutral, 10%);
|
175
|
-
$neutral_subtle: rgba($neutral, $opacity_1);
|
174
|
+
$neutral_secondary: lighten($neutral, 10%) !default;
|
175
|
+
$neutral_subtle: rgba($neutral, $opacity_1) !default;
|
176
176
|
$primary: $primary !default;
|
177
|
-
$primary_secondary: lighten($primary, 10%);
|
177
|
+
$primary_secondary: lighten($primary, 10%) !default;
|
178
178
|
|
179
179
|
$status_colors: (
|
180
180
|
success: $success,
|
data/lib/playbook/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: playbook_ui
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 12.
|
4
|
+
version: 12.4.0.pre.alpha.devdocstest1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Power UX
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2023-02-
|
12
|
+
date: 2023-02-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: actionpack
|
@@ -660,10 +660,10 @@ files:
|
|
660
660
|
- app/pb_kits/playbook/pb_dashboard/pbChartsDarkTheme.ts
|
661
661
|
- app/pb_kits/playbook/pb_dashboard/pbChartsLightTheme.ts
|
662
662
|
- app/pb_kits/playbook/pb_dashboard/themeTypes.ts
|
663
|
-
- app/pb_kits/playbook/pb_dashboard_value/_dashboard_value.jsx
|
664
663
|
- app/pb_kits/playbook/pb_dashboard_value/_dashboard_value.scss
|
664
|
+
- app/pb_kits/playbook/pb_dashboard_value/_dashboard_value.tsx
|
665
665
|
- app/pb_kits/playbook/pb_dashboard_value/_dashboard_value_mixins.scss
|
666
|
-
- app/pb_kits/playbook/pb_dashboard_value/dashboardValueSettings.
|
666
|
+
- app/pb_kits/playbook/pb_dashboard_value/dashboardValueSettings.ts
|
667
667
|
- app/pb_kits/playbook/pb_dashboard_value/dashboard_value.html.erb
|
668
668
|
- app/pb_kits/playbook/pb_dashboard_value/dashboard_value.rb
|
669
669
|
- app/pb_kits/playbook/pb_dashboard_value/docs/_dashboard_value_align.html.erb
|
@@ -812,8 +812,8 @@ files:
|
|
812
812
|
- app/pb_kits/playbook/pb_date_time/docs/_description.md
|
813
813
|
- app/pb_kits/playbook/pb_date_time/docs/example.yml
|
814
814
|
- app/pb_kits/playbook/pb_date_time/docs/index.js
|
815
|
-
- app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.jsx
|
816
815
|
- app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.scss
|
816
|
+
- app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.tsx
|
817
817
|
- app/pb_kits/playbook/pb_date_time_stacked/date_time_stacked.html.erb
|
818
818
|
- app/pb_kits/playbook/pb_date_time_stacked/date_time_stacked.rb
|
819
819
|
- app/pb_kits/playbook/pb_date_time_stacked/date_time_stacked.test.js
|
@@ -1525,8 +1525,8 @@ files:
|
|
1525
1525
|
- app/pb_kits/playbook/pb_passphrase/passphrase.html.erb
|
1526
1526
|
- app/pb_kits/playbook/pb_passphrase/passphrase.rb
|
1527
1527
|
- app/pb_kits/playbook/pb_passphrase/passphrase.test.jsx
|
1528
|
-
- app/pb_kits/playbook/pb_person/_person.jsx
|
1529
1528
|
- app/pb_kits/playbook/pb_person/_person.scss
|
1529
|
+
- app/pb_kits/playbook/pb_person/_person.tsx
|
1530
1530
|
- app/pb_kits/playbook/pb_person/docs/_description.md
|
1531
1531
|
- app/pb_kits/playbook/pb_person/docs/_footer.md
|
1532
1532
|
- app/pb_kits/playbook/pb_person/docs/_person_default.html.erb
|
@@ -1536,6 +1536,7 @@ files:
|
|
1536
1536
|
- app/pb_kits/playbook/pb_person/docs/index.js
|
1537
1537
|
- app/pb_kits/playbook/pb_person/person.html.erb
|
1538
1538
|
- app/pb_kits/playbook/pb_person/person.rb
|
1539
|
+
- app/pb_kits/playbook/pb_person/person.test.js
|
1539
1540
|
- app/pb_kits/playbook/pb_person_contact/_person_contact.jsx
|
1540
1541
|
- app/pb_kits/playbook/pb_person_contact/_person_contact.scss
|
1541
1542
|
- app/pb_kits/playbook/pb_person_contact/docs/_description.md
|
@@ -1555,6 +1556,7 @@ files:
|
|
1555
1556
|
- app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.scss
|
1556
1557
|
- app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx
|
1557
1558
|
- app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_default.jsx
|
1559
|
+
- app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_default.md
|
1558
1560
|
- app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_initial_country.jsx
|
1559
1561
|
- app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_initial_country.md
|
1560
1562
|
- app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_only_countries.jsx
|
@@ -2088,8 +2090,8 @@ files:
|
|
2088
2090
|
- app/pb_kits/playbook/pb_title/title.html.erb
|
2089
2091
|
- app/pb_kits/playbook/pb_title/title.rb
|
2090
2092
|
- app/pb_kits/playbook/pb_title/title.test.js
|
2091
|
-
- app/pb_kits/playbook/pb_title_count/_title_count.jsx
|
2092
2093
|
- app/pb_kits/playbook/pb_title_count/_title_count.scss
|
2094
|
+
- app/pb_kits/playbook/pb_title_count/_title_count.tsx
|
2093
2095
|
- app/pb_kits/playbook/pb_title_count/docs/_description.md
|
2094
2096
|
- app/pb_kits/playbook/pb_title_count/docs/_footer.md
|
2095
2097
|
- app/pb_kits/playbook/pb_title_count/docs/_title_count_align.html.erb
|
@@ -2101,6 +2103,7 @@ files:
|
|
2101
2103
|
- app/pb_kits/playbook/pb_title_count/docs/index.js
|
2102
2104
|
- app/pb_kits/playbook/pb_title_count/title_count.html.erb
|
2103
2105
|
- app/pb_kits/playbook/pb_title_count/title_count.rb
|
2106
|
+
- app/pb_kits/playbook/pb_title_count/title_count.test.js
|
2104
2107
|
- app/pb_kits/playbook/pb_title_detail/_title_detail.jsx
|
2105
2108
|
- app/pb_kits/playbook/pb_title_detail/_title_detail.scss
|
2106
2109
|
- app/pb_kits/playbook/pb_title_detail/docs/_description.md
|
File without changes
|