playbook_ui 12.7.1 → 12.8.0.pre.alpha.PLAY625phonenumberdark300
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/pb_avatar/_avatar.tsx +2 -2
- data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +43 -17
- data/app/pb_kits/playbook/pb_multi_level_select/_multi_select_helper.tsx +4 -3
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_return_all_selected.html.erb +71 -0
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_return_all_selected.jsx +87 -0
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_return_all_selected.md +3 -0
- data/app/pb_kits/playbook/pb_multi_level_select/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_multi_level_select/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.html.erb +1 -1
- data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.rb +3 -0
- data/app/pb_kits/playbook/pb_multiple_users/{_multiple_users.jsx → _multiple_users.tsx} +8 -7
- data/app/pb_kits/playbook/pb_multiple_users/multiple_users.test.js +52 -0
- data/app/pb_kits/playbook/pb_multiple_users_stacked/_multiple_users_stacked.test.js +61 -0
- data/app/pb_kits/playbook/pb_multiple_users_stacked/{_multiple_users_stacked.jsx → _multiple_users_stacked.tsx} +22 -25
- data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.scss +62 -1
- data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +16 -14
- data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_default.jsx +6 -4
- data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_initial_country.jsx +8 -6
- data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_only_countries.jsx +2 -1
- data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_preferred_countries.jsx +2 -1
- data/app/pb_kits/playbook/pb_progress_pills/{_progress_pills.jsx → _progress_pills.tsx} +23 -28
- data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.jsx +11 -12
- data/app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_status.jsx +13 -14
- data/app/pb_kits/playbook/pb_progress_pills/progress_pills.test.js +54 -0
- data/lib/playbook/version.rb +2 -2
- metadata +16 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9eb2b26240ac24996dac5e3f618f76952765fb12f15a4bafe21457a5bdcbcc6e
|
4
|
+
data.tar.gz: 831d0e1114b3810ae9bff0cfc492adda9e5abde131ebedf72a07e40203f5ed36
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9083337a529acb9ab2375838368e1021d4269ac76dc158c51a3c7f6c502f68fc1acff70e2b6c5651a4337f1d87778a0254d2df959f0c85786d8447fe990af314
|
7
|
+
data.tar.gz: 24beadc5202811b0bd2ca8e2bf13a3574c1e687bfc119cf4e40a868fe9879fac93f5a315b22b8d662b0a1a44038b59dded14ec8abcaf777522a9ae359e4c2110
|
@@ -14,8 +14,8 @@ type AvatarProps = {
|
|
14
14
|
dark?: boolean,
|
15
15
|
id?: string,
|
16
16
|
imageAlt?: string,
|
17
|
-
imageUrl
|
18
|
-
name
|
17
|
+
imageUrl?: string,
|
18
|
+
name?: string,
|
19
19
|
size?: "md" | "lg" | "sm" | "xl" | "xs" | "xxs",
|
20
20
|
status?: "away" | "offline" | "online",
|
21
21
|
} & GlobalProps
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import React, { useState, useEffect } from "react";
|
1
|
+
import React, { useState, useEffect, useMemo } from "react";
|
2
2
|
import classnames from "classnames";
|
3
3
|
import { buildAriaProps, buildCss, buildDataProps } from "../utilities/props";
|
4
4
|
import { globalProps } from "../utilities/globalProps";
|
@@ -10,8 +10,8 @@ type MultiLevelSelectProps = {
|
|
10
10
|
className?: string;
|
11
11
|
data?: { [key: string]: string };
|
12
12
|
id?: string;
|
13
|
+
returnAllSelected?: boolean;
|
13
14
|
treeData?: { [key: string]: string }[];
|
14
|
-
onChange?: any;
|
15
15
|
onSelect?: (prop: { [key: string]: any }) => void;
|
16
16
|
};
|
17
17
|
|
@@ -21,6 +21,7 @@ const MultiLevelSelect = (props: MultiLevelSelectProps) => {
|
|
21
21
|
className,
|
22
22
|
data = {},
|
23
23
|
id,
|
24
|
+
returnAllSelected = false,
|
24
25
|
treeData,
|
25
26
|
onSelect = () => {},
|
26
27
|
} = props;
|
@@ -63,34 +64,59 @@ const MultiLevelSelect = (props: MultiLevelSelectProps) => {
|
|
63
64
|
};
|
64
65
|
|
65
66
|
useEffect(() => {
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
67
|
+
if (returnAllSelected) {
|
68
|
+
const selected = selectedItems.filter(
|
69
|
+
(item: { [key: string]: any }) => item.checked
|
70
|
+
);
|
71
|
+
//filter to remove duplicate items
|
72
|
+
const uniqueSelected = selected.filter(
|
73
|
+
(obj, index, self) => index === self.findIndex((t) => t.id === obj.id)
|
74
|
+
);
|
75
|
+
setCheckedData(uniqueSelected);
|
76
|
+
}
|
74
77
|
}, [selectedItems]);
|
75
78
|
|
76
79
|
useEffect(() => {
|
77
|
-
let el = document.getElementById(
|
78
|
-
|
80
|
+
let el = document.getElementById(`pb_data_wrapper_${id}`);
|
79
81
|
if (el) {
|
80
82
|
el.setAttribute("data-tree", JSON.stringify(checkedData));
|
81
83
|
}
|
82
|
-
|
83
|
-
|
84
|
+
if (returnAllSelected) {
|
85
|
+
onSelect(checkedData);
|
86
|
+
}
|
84
87
|
}, [checkedData]);
|
85
88
|
|
86
|
-
|
87
|
-
|
89
|
+
const DropDownSelectComponent = useMemo(() => {
|
90
|
+
return (
|
88
91
|
<MultiSelectHelper
|
89
92
|
treeData={formattedData}
|
93
|
+
onChange={(
|
94
|
+
// @ts-ignore
|
95
|
+
selectedNodes: { [key: string]: any }[],
|
96
|
+
currentNode: { [key: string]: any }[]
|
97
|
+
) => {
|
98
|
+
setCheckedData(currentNode);
|
99
|
+
onSelect(currentNode);
|
100
|
+
}}
|
90
101
|
id={id}
|
91
|
-
onChange={onChange}
|
92
102
|
{...props}
|
93
103
|
/>
|
104
|
+
);
|
105
|
+
}, [formattedData]);
|
106
|
+
|
107
|
+
return (
|
108
|
+
<div {...ariaProps} {...dataProps} className={classes} id={id}>
|
109
|
+
{returnAllSelected ? (
|
110
|
+
<MultiSelectHelper
|
111
|
+
treeData={formattedData}
|
112
|
+
treeMode={returnAllSelected}
|
113
|
+
id={id}
|
114
|
+
onChange={onChange}
|
115
|
+
{...props}
|
116
|
+
/>
|
117
|
+
) : (
|
118
|
+
<>{DropDownSelectComponent}</>
|
119
|
+
)}
|
94
120
|
</div>
|
95
121
|
);
|
96
122
|
};
|
@@ -5,12 +5,13 @@ import "react-dropdown-tree-select/dist/styles.css"
|
|
5
5
|
type HelperProps = {
|
6
6
|
id?: string
|
7
7
|
treeData?: { [key: string]: string }[]
|
8
|
-
|
8
|
+
treeMode?: boolean
|
9
|
+
onChange?: any
|
9
10
|
|
10
11
|
}
|
11
12
|
|
12
13
|
const MultiSelectHelper = (props: HelperProps) => {
|
13
|
-
const { id, treeData, onChange } = props
|
14
|
+
const { id, treeData, onChange, treeMode } = props
|
14
15
|
|
15
16
|
|
16
17
|
return (
|
@@ -22,7 +23,7 @@ const MultiSelectHelper = (props: HelperProps) => {
|
|
22
23
|
keepChildrenOnSearch
|
23
24
|
onChange={onChange}
|
24
25
|
texts={{ placeholder: "Select..." }}
|
25
|
-
mode='hierarchical'
|
26
|
+
mode={treeMode ? 'hierarchical' : 'multiSelect'}
|
26
27
|
/>
|
27
28
|
)
|
28
29
|
}
|
@@ -0,0 +1,71 @@
|
|
1
|
+
<% treeData = [{
|
2
|
+
label: "Power Home Remodeling",
|
3
|
+
value: "Power Home Remodeling",
|
4
|
+
id: "powerhome1",
|
5
|
+
expanded: true,
|
6
|
+
children: [
|
7
|
+
{
|
8
|
+
label: "People",
|
9
|
+
value: "People",
|
10
|
+
id: "people1",
|
11
|
+
children: [
|
12
|
+
{
|
13
|
+
label: "Talent Acquisition",
|
14
|
+
value: "Talent Acquisition",
|
15
|
+
id: "talent1",
|
16
|
+
},
|
17
|
+
{
|
18
|
+
label: "Business Affairs",
|
19
|
+
value: "Business Affairs",
|
20
|
+
id: "business1",
|
21
|
+
children: [
|
22
|
+
{
|
23
|
+
label: "Initiatives",
|
24
|
+
value: "Initiatives",
|
25
|
+
id: "initiative1",
|
26
|
+
},
|
27
|
+
{
|
28
|
+
label: "Learning & Development",
|
29
|
+
value: "Learning & Development",
|
30
|
+
id: "development1",
|
31
|
+
},
|
32
|
+
],
|
33
|
+
},
|
34
|
+
{
|
35
|
+
label: "People Experience",
|
36
|
+
value: "People Experience",
|
37
|
+
id: "experience1",
|
38
|
+
},
|
39
|
+
],
|
40
|
+
},
|
41
|
+
{
|
42
|
+
label: "Contact Center",
|
43
|
+
value: "Contact Center",
|
44
|
+
id: "contact1",
|
45
|
+
children: [
|
46
|
+
{
|
47
|
+
label: "Appointment Management",
|
48
|
+
value: "Appointment Management",
|
49
|
+
id: "appointment1",
|
50
|
+
},
|
51
|
+
{
|
52
|
+
label: "Customer Service",
|
53
|
+
value: "Customer Service",
|
54
|
+
id: "customer1",
|
55
|
+
},
|
56
|
+
{
|
57
|
+
label: "Energy",
|
58
|
+
value: "Energy",
|
59
|
+
id: "energy1",
|
60
|
+
},
|
61
|
+
],
|
62
|
+
},
|
63
|
+
],
|
64
|
+
}] %>
|
65
|
+
|
66
|
+
|
67
|
+
<%= pb_rails("multi_level_select", props: {
|
68
|
+
id: "parent-persistence-multi-level-select",
|
69
|
+
tree_data:treeData,
|
70
|
+
return_all_selected: true
|
71
|
+
}) %>
|
data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_return_all_selected.jsx
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import MultiLevelSelect from "../_multi_level_select";
|
3
|
+
|
4
|
+
const treeData = [
|
5
|
+
{
|
6
|
+
label: "Power Home Remodeling",
|
7
|
+
value: "Power Home Remodeling",
|
8
|
+
id: "powerhome1",
|
9
|
+
expanded: true,
|
10
|
+
children: [
|
11
|
+
{
|
12
|
+
label: "People",
|
13
|
+
value: "People",
|
14
|
+
id: "people1",
|
15
|
+
children: [
|
16
|
+
{
|
17
|
+
label: "Talent Acquisition",
|
18
|
+
value: "Talent Acquisition",
|
19
|
+
id: "talent1",
|
20
|
+
},
|
21
|
+
{
|
22
|
+
label: "Business Affairs",
|
23
|
+
value: "Business Affairs",
|
24
|
+
id: "business1",
|
25
|
+
children: [
|
26
|
+
{
|
27
|
+
label: "Initiatives",
|
28
|
+
value: "Initiatives",
|
29
|
+
id: "initiative1",
|
30
|
+
},
|
31
|
+
{
|
32
|
+
label: "Learning & Development",
|
33
|
+
value: "Learning & Development",
|
34
|
+
id: "development1",
|
35
|
+
},
|
36
|
+
],
|
37
|
+
},
|
38
|
+
{
|
39
|
+
label: "People Experience",
|
40
|
+
value: "People Experience",
|
41
|
+
id: "experience1",
|
42
|
+
},
|
43
|
+
],
|
44
|
+
},
|
45
|
+
{
|
46
|
+
label: "Contact Center",
|
47
|
+
value: "Contact Center",
|
48
|
+
id: "contact1",
|
49
|
+
children: [
|
50
|
+
{
|
51
|
+
label: "Appointment Management",
|
52
|
+
value: "Appointment Management",
|
53
|
+
id: "appointment1",
|
54
|
+
},
|
55
|
+
{
|
56
|
+
label: "Customer Service",
|
57
|
+
value: "Customer Service",
|
58
|
+
id: "customer1",
|
59
|
+
},
|
60
|
+
{
|
61
|
+
label: "Energy",
|
62
|
+
value: "Energy",
|
63
|
+
id: "energy1",
|
64
|
+
},
|
65
|
+
],
|
66
|
+
},
|
67
|
+
],
|
68
|
+
},
|
69
|
+
];
|
70
|
+
|
71
|
+
const MultiLevelSelectReturnAllSelected = (props) => {
|
72
|
+
return (
|
73
|
+
<div>
|
74
|
+
<MultiLevelSelect
|
75
|
+
id="multiselect-parent-persistence"
|
76
|
+
onSelect={(selectedNodes) =>
|
77
|
+
console.log("Selected Items", selectedNodes)
|
78
|
+
}
|
79
|
+
returnAllSelected
|
80
|
+
treeData={treeData}
|
81
|
+
{...props}
|
82
|
+
/>
|
83
|
+
</div>
|
84
|
+
);
|
85
|
+
};
|
86
|
+
|
87
|
+
export default MultiLevelSelectReturnAllSelected;
|
data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_return_all_selected.md
ADDED
@@ -0,0 +1,3 @@
|
|
1
|
+
The `returnAllSelected` or `return_all_selected` prop can be used when users want data on all checked nodes from the dropdown, irrespective of whether it is a parent or child node.
|
2
|
+
|
3
|
+
__NOTE__ :This variant also does not automatically uncheck the parent when any of the child nodes are unchecked. `returnAllSelected` is set to false by default.
|
@@ -5,6 +5,8 @@ module Playbook
|
|
5
5
|
class MultiLevelSelect < Playbook::KitBase
|
6
6
|
prop :tree_data, type: Playbook::Props::Array,
|
7
7
|
default: []
|
8
|
+
prop :return_all_selected, type: Playbook::Props::Boolean,
|
9
|
+
default: false
|
8
10
|
|
9
11
|
def classname
|
10
12
|
generate_classname("pb_multi_level_select")
|
@@ -14,6 +16,7 @@ module Playbook
|
|
14
16
|
{
|
15
17
|
id: id,
|
16
18
|
treeData: tree_data,
|
19
|
+
returnAllSelected: return_all_selected,
|
17
20
|
}
|
18
21
|
end
|
19
22
|
end
|
@@ -9,18 +9,18 @@ import { globalProps } from '../utilities/globalProps'
|
|
9
9
|
import Avatar from '../pb_avatar/_avatar'
|
10
10
|
|
11
11
|
type MultipleUsersProps = {
|
12
|
-
aria?:
|
12
|
+
aria?: { [key: string]: string },
|
13
13
|
className?: string,
|
14
14
|
dark?: boolean,
|
15
|
-
data?:
|
15
|
+
data?: { [key: string]: string },
|
16
16
|
id?: string,
|
17
17
|
maxDisplayedUsers?: number,
|
18
18
|
reverse?: boolean,
|
19
|
-
size?:
|
20
|
-
users:
|
19
|
+
size?: "md" | "lg" | "sm" | "xl" | "xs" | "xxs",
|
20
|
+
users: Array<{ [key: string]: string }>,
|
21
21
|
}
|
22
22
|
|
23
|
-
const MultipleUsers = (props: MultipleUsersProps) => {
|
23
|
+
const MultipleUsers = (props: MultipleUsersProps): React.ReactElement => {
|
24
24
|
const {
|
25
25
|
aria = {},
|
26
26
|
className,
|
@@ -64,16 +64,17 @@ const MultipleUsers = (props: MultipleUsersProps) => {
|
|
64
64
|
{...avatarData}
|
65
65
|
className="pb_multiple_users_item"
|
66
66
|
dark={dark}
|
67
|
+
imageAlt={avatarData.name}
|
67
68
|
key={index}
|
68
69
|
size={size}
|
69
70
|
/>
|
70
71
|
))}
|
71
72
|
|
72
|
-
|
73
|
+
{ users.length > maxDisplayedUsers &&
|
73
74
|
<div className={itemClasses}>
|
74
75
|
{`+${users.length - 3}`}
|
75
76
|
</div>
|
76
|
-
|
77
|
+
}
|
77
78
|
</div>
|
78
79
|
)
|
79
80
|
}
|
@@ -0,0 +1,52 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import { render, screen } from '../utilities/test-utils'
|
3
|
+
|
4
|
+
import MultipleUsers from './_multiple_users'
|
5
|
+
|
6
|
+
const testId = 'multipleUserId'
|
7
|
+
|
8
|
+
const MultipleUsersTest = () => {
|
9
|
+
return (
|
10
|
+
<>
|
11
|
+
<MultipleUsers
|
12
|
+
aria={{ label: testId }}
|
13
|
+
className={'custom-class'}
|
14
|
+
data={{ testid: testId }}
|
15
|
+
users={[
|
16
|
+
{
|
17
|
+
name: 'Patrick Welch',
|
18
|
+
imageUrl: 'https://randomuser.me/api/portraits/men/9.jpg',
|
19
|
+
},
|
20
|
+
{
|
21
|
+
name: 'Lucille Sanchez',
|
22
|
+
imageUrl: 'https://randomuser.me/api/portraits/women/6.jpg',
|
23
|
+
},
|
24
|
+
]}
|
25
|
+
/>
|
26
|
+
</>
|
27
|
+
)
|
28
|
+
}
|
29
|
+
|
30
|
+
test('it loads the given images urls', () => {
|
31
|
+
render(<MultipleUsersTest/>)
|
32
|
+
|
33
|
+
const image1 = screen.getByAltText('Patrick Welch')
|
34
|
+
const image2 = screen.getByAltText('Lucille Sanchez')
|
35
|
+
|
36
|
+
expect(image1).toHaveAttribute('src', 'https://randomuser.me/api/portraits/men/9.jpg')
|
37
|
+
expect(image2).toHaveAttribute('src', 'https://randomuser.me/api/portraits/women/6.jpg')
|
38
|
+
})
|
39
|
+
|
40
|
+
test('should render custom class and data', () => {
|
41
|
+
render(<MultipleUsersTest/>)
|
42
|
+
|
43
|
+
const kit = screen.getByTestId(testId)
|
44
|
+
expect(kit).toHaveClass('custom-class')
|
45
|
+
})
|
46
|
+
|
47
|
+
test('should render aria-label', () => {
|
48
|
+
render(<MultipleUsersTest />)
|
49
|
+
|
50
|
+
const kit = screen.getByTestId(testId)
|
51
|
+
expect(kit).toHaveAttribute('aria-label', testId)
|
52
|
+
})
|
@@ -0,0 +1,61 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import { render, screen } from '../utilities/test-utils'
|
3
|
+
|
4
|
+
import MultipleUsersStacked from './_multiple_users_stacked'
|
5
|
+
|
6
|
+
const testId = 'multipleUsersStacked'
|
7
|
+
const className = 'custom-class-name'
|
8
|
+
const nameUser1 = 'Patrick Welch'
|
9
|
+
const nameUser2 = 'Lucille Sanchez'
|
10
|
+
const imageUser1 = 'https://randomuser.me/api/portraits/men/9.jpg'
|
11
|
+
const imageUser2 = 'https://randomuser.me/api/portraits/women/6.jpg'
|
12
|
+
|
13
|
+
const MultipleUsersStackedDefault = () => {
|
14
|
+
return (
|
15
|
+
<MultipleUsersStacked
|
16
|
+
aria={{ label: testId }}
|
17
|
+
className={className}
|
18
|
+
data={{ testid: testId }}
|
19
|
+
users={[
|
20
|
+
{
|
21
|
+
name: nameUser1,
|
22
|
+
imageUrl: imageUser1,
|
23
|
+
imageAlt: nameUser1,
|
24
|
+
},
|
25
|
+
{
|
26
|
+
name: nameUser2,
|
27
|
+
imageUrl: imageUser2,
|
28
|
+
imageAlt: nameUser2,
|
29
|
+
},
|
30
|
+
]}
|
31
|
+
/>
|
32
|
+
)
|
33
|
+
}
|
34
|
+
|
35
|
+
test('should render alt names and images', () => {
|
36
|
+
render(<MultipleUsersStackedDefault />)
|
37
|
+
|
38
|
+
const image1 = screen.getByAltText(nameUser1)
|
39
|
+
const image2 = screen.getByAltText(nameUser2)
|
40
|
+
|
41
|
+
expect(image1).toHaveAttribute('src', imageUser1)
|
42
|
+
expect(image2).toHaveAttribute('src', imageUser2)
|
43
|
+
})
|
44
|
+
|
45
|
+
test('should pass data prop', () => {
|
46
|
+
render(<MultipleUsersStackedDefault />)
|
47
|
+
const kit = screen.getByTestId(testId)
|
48
|
+
expect(kit).toBeInTheDocument()
|
49
|
+
})
|
50
|
+
|
51
|
+
test('should pass className prop', () => {
|
52
|
+
render(<MultipleUsersStackedDefault />)
|
53
|
+
const kit = screen.getByTestId(testId)
|
54
|
+
expect(kit).toHaveClass(className)
|
55
|
+
})
|
56
|
+
|
57
|
+
test('should pass aria prop', () => {
|
58
|
+
render(<MultipleUsersStackedDefault />)
|
59
|
+
const kit = screen.getByTestId(testId)
|
60
|
+
expect(kit).toHaveAttribute('aria-label', testId)
|
61
|
+
})
|
@@ -1,6 +1,3 @@
|
|
1
|
-
/* @flow */
|
2
|
-
/*eslint-disable react/no-multi-comp, flowtype/space-before-type-colon */
|
3
|
-
|
4
1
|
import React from 'react'
|
5
2
|
import classnames from 'classnames'
|
6
3
|
|
@@ -11,12 +8,12 @@ import Avatar from '../pb_avatar/_avatar'
|
|
11
8
|
import Badge from '../pb_badge/_badge'
|
12
9
|
|
13
10
|
type MultipleUsersStackedProps = {
|
14
|
-
aria?:
|
11
|
+
aria?: { [key: string]: string },
|
15
12
|
className?: string,
|
16
13
|
dark?: boolean,
|
17
|
-
data?:
|
14
|
+
data?: { [key: string]: string },
|
18
15
|
id?: string,
|
19
|
-
users:
|
16
|
+
users: Array<{ [key: string]: string }>,
|
20
17
|
}
|
21
18
|
|
22
19
|
const MultipleUsersStacked = (props: MultipleUsersStackedProps) => {
|
@@ -44,11 +41,11 @@ const MultipleUsersStacked = (props: MultipleUsersStackedProps) => {
|
|
44
41
|
return users.slice(0, 1).map((userObject, index) => {
|
45
42
|
return (
|
46
43
|
<Avatar
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
44
|
+
{...userObject}
|
45
|
+
className="pb_multiple_users_stacked_item"
|
46
|
+
dark={dark}
|
47
|
+
key={index}
|
48
|
+
size="xs"
|
52
49
|
/>
|
53
50
|
)
|
54
51
|
})
|
@@ -59,11 +56,11 @@ const MultipleUsersStacked = (props: MultipleUsersStackedProps) => {
|
|
59
56
|
return users.slice(1, 2).map((userObject, index) => {
|
60
57
|
return (
|
61
58
|
<Avatar
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
59
|
+
{...userObject}
|
60
|
+
className="pb_multiple_users_stacked_item second_item"
|
61
|
+
dark={dark}
|
62
|
+
key={index}
|
63
|
+
size="xs"
|
67
64
|
/>
|
68
65
|
)
|
69
66
|
})
|
@@ -74,11 +71,11 @@ const MultipleUsersStacked = (props: MultipleUsersStackedProps) => {
|
|
74
71
|
if (moreThanTwo === true) {
|
75
72
|
return (
|
76
73
|
<Badge
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
74
|
+
className="pb_multiple_users_stacked_item second_item"
|
75
|
+
dark={dark}
|
76
|
+
rounded
|
77
|
+
text={`+${users.length - displayCount()}`}
|
78
|
+
variant="primary"
|
82
79
|
/>
|
83
80
|
)
|
84
81
|
}
|
@@ -86,10 +83,10 @@ const MultipleUsersStacked = (props: MultipleUsersStackedProps) => {
|
|
86
83
|
|
87
84
|
return (
|
88
85
|
<div
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
86
|
+
{...ariaProps}
|
87
|
+
{...dataProps}
|
88
|
+
className={classes}
|
89
|
+
id={id}
|
93
90
|
>
|
94
91
|
{firstUser()}
|
95
92
|
{secondUser()}
|
@@ -4,6 +4,7 @@ $transform-rotate-deg: 135deg;
|
|
4
4
|
$input-max-width: 284px;
|
5
5
|
$dropdown-min-width: 340px;
|
6
6
|
$flag-min-resolution: 192dpi;
|
7
|
+
$bg-dark-country-item: #e2eaf4;
|
7
8
|
|
8
9
|
.pb_phone_number_input {
|
9
10
|
input::placeholder {
|
@@ -47,7 +48,7 @@ $flag-min-resolution: 192dpi;
|
|
47
48
|
background-color: $hover_light;
|
48
49
|
|
49
50
|
.iti__country-name, .iti__dial-code {
|
50
|
-
color: $primary
|
51
|
+
color: $primary;
|
51
52
|
}
|
52
53
|
}
|
53
54
|
|
@@ -129,6 +130,66 @@ $flag-min-resolution: 192dpi;
|
|
129
130
|
.iti__divider {
|
130
131
|
border-bottom: 1px solid $border_light;
|
131
132
|
}
|
133
|
+
|
134
|
+
&.dark {
|
135
|
+
.iti--allow-dropdown .iti__flag-container {
|
136
|
+
background-color: rgba($white, 0);
|
137
|
+
|
138
|
+
&:hover {
|
139
|
+
background-color: rgba($white, 0);
|
140
|
+
|
141
|
+
&+ .text_input {
|
142
|
+
background-color: rgba($white, 0.15);
|
143
|
+
}
|
144
|
+
|
145
|
+
.iti__selected-flag {
|
146
|
+
background-color: rgba($white, 0);
|
147
|
+
}
|
148
|
+
}
|
149
|
+
}
|
150
|
+
|
151
|
+
.iti__selected-flag {
|
152
|
+
background-color: rgba($white, 0);
|
153
|
+
color: $white;
|
154
|
+
}
|
155
|
+
|
156
|
+
.iti__country-list {
|
157
|
+
background-color: $bg_dark; //$card_dark
|
158
|
+
border: 1px solid $border_dark;
|
159
|
+
|
160
|
+
.iti__highlight {
|
161
|
+
background-color: $bg-dark-country-item;
|
162
|
+
}
|
163
|
+
}
|
164
|
+
|
165
|
+
.iti__divider {
|
166
|
+
border-bottom: 1px solid $border_dark;
|
167
|
+
}
|
168
|
+
|
169
|
+
.iti__arrow.iti__arrow--up::before {
|
170
|
+
color: $slate;
|
171
|
+
}
|
172
|
+
|
173
|
+
.iti__country.iti__highlight {
|
174
|
+
.iti__country-name {
|
175
|
+
color: $text_lt_default;
|
176
|
+
}
|
177
|
+
|
178
|
+
.iti__dial-code {
|
179
|
+
color: $text_lt_light;
|
180
|
+
}
|
181
|
+
|
182
|
+
&.iti__active::after {
|
183
|
+
color: $text_lt_default;
|
184
|
+
}
|
185
|
+
}
|
186
|
+
|
187
|
+
.dropdown_open {
|
188
|
+
.text_input {
|
189
|
+
background-color: rgba($white, 0.025) !important;
|
190
|
+
}
|
191
|
+
}
|
192
|
+
}
|
132
193
|
|
133
194
|
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: $flag-min-resolution) {
|
134
195
|
.iti__flag {
|
@@ -1,4 +1,3 @@
|
|
1
|
-
/* @flow */
|
2
1
|
import React, { useEffect, useRef, useState } from 'react'
|
3
2
|
import classnames from 'classnames'
|
4
3
|
import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
|
@@ -15,19 +14,20 @@ declare global {
|
|
15
14
|
}
|
16
15
|
|
17
16
|
type PhoneNumberInputProps = {
|
18
|
-
aria?: { [key: string]: string }
|
19
|
-
className?: string
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
17
|
+
aria?: { [key: string]: string },
|
18
|
+
className?: string,
|
19
|
+
dark?: boolean,
|
20
|
+
data?: { [key: string]: string },
|
21
|
+
disabled?: boolean,
|
22
|
+
id?: string,
|
23
|
+
initialCountry?: string,
|
24
|
+
isValid?: (valid: boolean) => void,
|
25
|
+
label?: string,
|
26
|
+
name?: string,
|
27
|
+
onChange?: (e: React.FormEvent<HTMLInputElement>) => void,
|
28
|
+
onlyCountries: string[],
|
29
|
+
preferredCountries?: string[],
|
30
|
+
value?: string,
|
31
31
|
}
|
32
32
|
|
33
33
|
enum ValidationError {
|
@@ -58,6 +58,7 @@ const PhoneNumberInput = (props: PhoneNumberInputProps) => {
|
|
58
58
|
const {
|
59
59
|
aria = {},
|
60
60
|
className,
|
61
|
+
dark = false,
|
61
62
|
data = {},
|
62
63
|
disabled = false,
|
63
64
|
id = "",
|
@@ -154,6 +155,7 @@ const PhoneNumberInput = (props: PhoneNumberInputProps) => {
|
|
154
155
|
<div {...ariaProps} {...dataProps} className={classes}>
|
155
156
|
<TextInput
|
156
157
|
className={dropDownIsOpen ? 'dropdown_open' : ''}
|
158
|
+
dark={dark}
|
157
159
|
disabled={disabled}
|
158
160
|
error={error}
|
159
161
|
id={id}
|
@@ -1,10 +1,12 @@
|
|
1
1
|
import React from 'react'
|
2
2
|
import { PhoneNumberInput } from '../../'
|
3
3
|
|
4
|
-
const PhoneNumberInputDefault = () => (
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
const PhoneNumberInputDefault = (props) => (
|
5
|
+
<>
|
6
|
+
<PhoneNumberInput
|
7
|
+
id='default'
|
8
|
+
{...props} />
|
9
|
+
</>
|
8
10
|
)
|
9
11
|
|
10
12
|
export default PhoneNumberInputDefault
|
data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_initial_country.jsx
CHANGED
@@ -1,12 +1,14 @@
|
|
1
1
|
import React from 'react'
|
2
2
|
import { PhoneNumberInput } from '../../'
|
3
3
|
|
4
|
-
const PhoneNumberInitialCountry = () => (
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
4
|
+
const PhoneNumberInitialCountry = (props) => (
|
5
|
+
<>
|
6
|
+
<PhoneNumberInput
|
7
|
+
id='initial'
|
8
|
+
initialCountry='br'
|
9
|
+
{...props}
|
10
|
+
/>
|
11
|
+
</>
|
10
12
|
)
|
11
13
|
|
12
14
|
export default PhoneNumberInitialCountry
|
@@ -1,11 +1,12 @@
|
|
1
1
|
import React from 'react'
|
2
2
|
import { PhoneNumberInput } from '../../'
|
3
3
|
|
4
|
-
const PhoneNumberInputOnlyCountries = () => (
|
4
|
+
const PhoneNumberInputOnlyCountries = (props) => (
|
5
5
|
<>
|
6
6
|
<PhoneNumberInput
|
7
7
|
id='only'
|
8
8
|
onlyCountries={['us', 'br']}
|
9
|
+
{...props}
|
9
10
|
/>
|
10
11
|
</>
|
11
12
|
)
|
data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_preferred_countries.jsx
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
import React from 'react'
|
2
2
|
import { PhoneNumberInput } from '../../'
|
3
3
|
|
4
|
-
const PhoneNumberInputPreferredCountries = () => (
|
4
|
+
const PhoneNumberInputPreferredCountries = (props) => (
|
5
5
|
<>
|
6
6
|
<PhoneNumberInput
|
7
7
|
id='preferred'
|
8
8
|
preferredCountries={['us', 'br', 'ph', 'gb']}
|
9
|
+
{...props}
|
9
10
|
/>
|
10
11
|
</>
|
11
12
|
)
|
@@ -1,5 +1,3 @@
|
|
1
|
-
/* @flow */
|
2
|
-
|
3
1
|
import React from 'react'
|
4
2
|
import classnames from 'classnames'
|
5
3
|
|
@@ -11,39 +9,38 @@ import Title from '../pb_title/_title'
|
|
11
9
|
|
12
10
|
type ProgressPillsProps = {
|
13
11
|
active?: number,
|
14
|
-
aria?:
|
12
|
+
aria?: {[key: string]: string},
|
15
13
|
className?: string,
|
16
|
-
data?:
|
14
|
+
data?: { [key: string]: string },
|
15
|
+
dark?: boolean,
|
17
16
|
id?: string,
|
18
17
|
steps?: number,
|
19
18
|
title?: string,
|
20
19
|
value?: string,
|
21
|
-
dark?: boolean,
|
22
20
|
}
|
23
21
|
|
24
|
-
const showSteps = (steps, active, dark) => {
|
22
|
+
const showSteps = (steps: number, active: number, dark: boolean) => {
|
25
23
|
const items = []
|
26
24
|
|
27
25
|
for (let step = 1; step <= steps; step++) {
|
28
|
-
items.push(ProgressPill({ step, active, dark }))
|
26
|
+
items.push(ProgressPill({ steps: step, active, dark }))
|
29
27
|
}
|
30
28
|
|
31
29
|
return items
|
32
30
|
}
|
33
31
|
|
34
|
-
const ProgressPill = ({ active, dark, step }:
|
32
|
+
const ProgressPill = ({ active, dark, steps: step }: ProgressPillsProps) => (
|
35
33
|
<div
|
36
|
-
|
37
|
-
|
38
|
-
}
|
39
|
-
key={step}
|
34
|
+
className={`pb_progress_pill${step <= active ? '_active' : '_inactive'}${dark ? ' dark' : ''
|
35
|
+
}`}
|
36
|
+
key={step}
|
40
37
|
/>
|
41
38
|
)
|
42
39
|
|
43
40
|
const ProgressPills = (props: ProgressPillsProps) => {
|
44
41
|
const {
|
45
42
|
active = 0,
|
46
|
-
aria = { hidden: true },
|
43
|
+
aria = { hidden: 'true' },
|
47
44
|
className,
|
48
45
|
data = {},
|
49
46
|
id,
|
@@ -59,27 +56,25 @@ const ProgressPills = (props: ProgressPillsProps) => {
|
|
59
56
|
|
60
57
|
return (
|
61
58
|
<div
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
59
|
+
{...ariaProps}
|
60
|
+
{...dataProps}
|
61
|
+
className={classes}
|
62
|
+
id={id}
|
66
63
|
>
|
67
|
-
|
68
|
-
<If condition={title}>
|
64
|
+
{title &&
|
69
65
|
<div className="progress_pills_status">
|
70
66
|
<Title
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
67
|
+
dark={dark}
|
68
|
+
size={4}
|
69
|
+
tag="h4"
|
70
|
+
text={title}
|
75
71
|
/>
|
76
72
|
<Body
|
77
|
-
|
78
|
-
|
79
|
-
|
73
|
+
color="light"
|
74
|
+
dark={dark}
|
75
|
+
text={value}
|
80
76
|
/>
|
81
|
-
</div>
|
82
|
-
</If>
|
77
|
+
</div>}
|
83
78
|
<div className="progress_pills">{showSteps(steps, active, dark)}</div>
|
84
79
|
</div>
|
85
80
|
)
|
@@ -1,18 +1,17 @@
|
|
1
|
-
|
2
1
|
import React from 'react'
|
3
|
-
import ProgressPills from '../_progress_pills
|
2
|
+
import ProgressPills from '../_progress_pills'
|
4
3
|
|
5
4
|
const ProgressPillsDefault = (props) => {
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
5
|
+
return (
|
6
|
+
<>
|
7
|
+
<ProgressPills
|
8
|
+
active={2}
|
9
|
+
aria={{ label: '2 out of 3 steps complete' }}
|
10
|
+
steps={3}
|
11
|
+
{...props}
|
12
|
+
/>
|
13
|
+
</>
|
14
|
+
)
|
16
15
|
}
|
17
16
|
|
18
17
|
export default ProgressPillsDefault
|
@@ -1,20 +1,19 @@
|
|
1
|
-
|
2
1
|
import React from 'react'
|
3
|
-
import ProgressPills from '../_progress_pills
|
2
|
+
import ProgressPills from '../_progress_pills'
|
4
3
|
|
5
4
|
const ProgressPillsStatus = (props) => {
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
5
|
+
return (
|
6
|
+
<>
|
7
|
+
<ProgressPills
|
8
|
+
active={2}
|
9
|
+
aria={{ label: '2 out of 3 steps complete' }}
|
10
|
+
steps={3}
|
11
|
+
title="Status:"
|
12
|
+
value="Orientation"
|
13
|
+
{...props}
|
14
|
+
/>
|
15
|
+
</>
|
16
|
+
)
|
18
17
|
}
|
19
18
|
|
20
19
|
export default ProgressPillsStatus
|
@@ -0,0 +1,54 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import { render, screen } from '../utilities/test-utils'
|
3
|
+
|
4
|
+
import ProgressPills from './_progress_pills'
|
5
|
+
|
6
|
+
const testId = 'progressPills'
|
7
|
+
const className = 'custom-class-name'
|
8
|
+
const ariaLabel = '2 out of 3 steps complete'
|
9
|
+
const title = 'Status:'
|
10
|
+
const value = 'Orientation'
|
11
|
+
|
12
|
+
const ProgressPillsDefault = () => {
|
13
|
+
return (
|
14
|
+
<ProgressPills
|
15
|
+
active={2}
|
16
|
+
aria={{ label: ariaLabel }}
|
17
|
+
className={className}
|
18
|
+
data={{ testid: testId }}
|
19
|
+
steps={3}
|
20
|
+
title={title}
|
21
|
+
value={value}
|
22
|
+
/>
|
23
|
+
)
|
24
|
+
}
|
25
|
+
|
26
|
+
test('should pass data prop', () => {
|
27
|
+
render(<ProgressPillsDefault />)
|
28
|
+
const kit = screen.getByTestId(testId)
|
29
|
+
expect(kit).toBeInTheDocument()
|
30
|
+
})
|
31
|
+
|
32
|
+
test('should pass className prop', () => {
|
33
|
+
render(<ProgressPillsDefault />)
|
34
|
+
const kit = screen.getByTestId(testId)
|
35
|
+
expect(kit).toHaveClass(className)
|
36
|
+
})
|
37
|
+
|
38
|
+
test('should pass aria prop', () => {
|
39
|
+
render(<ProgressPillsDefault />)
|
40
|
+
const kit = screen.getByTestId(testId)
|
41
|
+
expect(kit).toHaveAttribute('aria-label', ariaLabel)
|
42
|
+
})
|
43
|
+
|
44
|
+
test('should render title', () => {
|
45
|
+
render(<ProgressPillsDefault />)
|
46
|
+
const kit = screen.getByText(title)
|
47
|
+
expect(kit).toBeInTheDocument()
|
48
|
+
})
|
49
|
+
|
50
|
+
test('should render value', () => {
|
51
|
+
render(<ProgressPillsDefault />)
|
52
|
+
const kit = screen.getByText(value)
|
53
|
+
expect(kit).toBeInTheDocument()
|
54
|
+
})
|
data/lib/playbook/version.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: playbook_ui
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 12.
|
4
|
+
version: 12.8.0.pre.alpha.PLAY625phonenumberdark300
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Power UX
|
8
8
|
- Power Devs
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2023-03-
|
12
|
+
date: 2023-03-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: actionpack
|
@@ -1425,14 +1425,17 @@ files:
|
|
1425
1425
|
- app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_default.html.erb
|
1426
1426
|
- app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_default.jsx
|
1427
1427
|
- app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_default.md
|
1428
|
+
- app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_return_all_selected.html.erb
|
1429
|
+
- app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_return_all_selected.jsx
|
1430
|
+
- app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_return_all_selected.md
|
1428
1431
|
- app/pb_kits/playbook/pb_multi_level_select/docs/example.yml
|
1429
1432
|
- app/pb_kits/playbook/pb_multi_level_select/docs/index.js
|
1430
1433
|
- app/pb_kits/playbook/pb_multi_level_select/helper_functions.ts
|
1431
1434
|
- app/pb_kits/playbook/pb_multi_level_select/multi_level_select.html.erb
|
1432
1435
|
- app/pb_kits/playbook/pb_multi_level_select/multi_level_select.rb
|
1433
1436
|
- app/pb_kits/playbook/pb_multi_level_select/multi_level_select.test.jsx
|
1434
|
-
- app/pb_kits/playbook/pb_multiple_users/_multiple_users.jsx
|
1435
1437
|
- app/pb_kits/playbook/pb_multiple_users/_multiple_users.scss
|
1438
|
+
- app/pb_kits/playbook/pb_multiple_users/_multiple_users.tsx
|
1436
1439
|
- app/pb_kits/playbook/pb_multiple_users/docs/_description.md
|
1437
1440
|
- app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_default.html.erb
|
1438
1441
|
- app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_default.jsx
|
@@ -1445,8 +1448,10 @@ files:
|
|
1445
1448
|
- app/pb_kits/playbook/pb_multiple_users/docs/index.js
|
1446
1449
|
- app/pb_kits/playbook/pb_multiple_users/multiple_users.html.erb
|
1447
1450
|
- app/pb_kits/playbook/pb_multiple_users/multiple_users.rb
|
1448
|
-
- app/pb_kits/playbook/
|
1451
|
+
- app/pb_kits/playbook/pb_multiple_users/multiple_users.test.js
|
1449
1452
|
- app/pb_kits/playbook/pb_multiple_users_stacked/_multiple_users_stacked.scss
|
1453
|
+
- app/pb_kits/playbook/pb_multiple_users_stacked/_multiple_users_stacked.test.js
|
1454
|
+
- app/pb_kits/playbook/pb_multiple_users_stacked/_multiple_users_stacked.tsx
|
1450
1455
|
- app/pb_kits/playbook/pb_multiple_users_stacked/docs/_description.md
|
1451
1456
|
- app/pb_kits/playbook/pb_multiple_users_stacked/docs/_multiple_users_stacked_default.html.erb
|
1452
1457
|
- app/pb_kits/playbook/pb_multiple_users_stacked/docs/_multiple_users_stacked_default.jsx
|
@@ -1627,8 +1632,8 @@ files:
|
|
1627
1632
|
- app/pb_kits/playbook/pb_popover/popover.html.erb
|
1628
1633
|
- app/pb_kits/playbook/pb_popover/popover.rb
|
1629
1634
|
- app/pb_kits/playbook/pb_popover/popover.test.js
|
1630
|
-
- app/pb_kits/playbook/pb_progress_pills/_progress_pills.jsx
|
1631
1635
|
- app/pb_kits/playbook/pb_progress_pills/_progress_pills.scss
|
1636
|
+
- app/pb_kits/playbook/pb_progress_pills/_progress_pills.tsx
|
1632
1637
|
- app/pb_kits/playbook/pb_progress_pills/docs/_description.md
|
1633
1638
|
- app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.html.erb
|
1634
1639
|
- app/pb_kits/playbook/pb_progress_pills/docs/_progress_pills_default.jsx
|
@@ -1638,6 +1643,7 @@ files:
|
|
1638
1643
|
- app/pb_kits/playbook/pb_progress_pills/docs/index.js
|
1639
1644
|
- app/pb_kits/playbook/pb_progress_pills/progress_pills.html.erb
|
1640
1645
|
- app/pb_kits/playbook/pb_progress_pills/progress_pills.rb
|
1646
|
+
- app/pb_kits/playbook/pb_progress_pills/progress_pills.test.js
|
1641
1647
|
- app/pb_kits/playbook/pb_progress_simple/_progress_simple.scss
|
1642
1648
|
- app/pb_kits/playbook/pb_progress_simple/_progress_simple.tsx
|
1643
1649
|
- app/pb_kits/playbook/pb_progress_simple/docs/_description.md
|
@@ -2437,7 +2443,7 @@ homepage: http://playbook.powerapp.cloud
|
|
2437
2443
|
licenses:
|
2438
2444
|
- ISC
|
2439
2445
|
metadata: {}
|
2440
|
-
post_install_message:
|
2446
|
+
post_install_message:
|
2441
2447
|
rdoc_options: []
|
2442
2448
|
require_paths:
|
2443
2449
|
- lib
|
@@ -2448,12 +2454,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
2448
2454
|
version: '0'
|
2449
2455
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
2450
2456
|
requirements:
|
2451
|
-
- - "
|
2457
|
+
- - ">"
|
2452
2458
|
- !ruby/object:Gem::Version
|
2453
|
-
version:
|
2459
|
+
version: 1.3.1
|
2454
2460
|
requirements: []
|
2455
2461
|
rubygems_version: 3.3.7
|
2456
|
-
signing_key:
|
2462
|
+
signing_key:
|
2457
2463
|
specification_version: 4
|
2458
2464
|
summary: Playbook Design System
|
2459
2465
|
test_files: []
|