playbook_ui 12.30.0.pre.alpha.PLAY906multilevelselectedidsprop902 → 12.30.0
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/pb_label_value/label_value.test.js +1 -1
- data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +2 -7
- data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.rb +0 -3
- data/app/pb_kits/playbook/pb_title/_title.scss +18 -0
- data/app/pb_kits/playbook/pb_title/_title.tsx +21 -2
- data/app/pb_kits/playbook/pb_title/docs/_title_responsive.html.erb +1 -0
- data/app/pb_kits/playbook/pb_title/docs/_title_responsive.jsx +16 -0
- data/app/pb_kits/playbook/pb_title/docs/_title_responsive.md +1 -0
- data/app/pb_kits/playbook/pb_title/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_title/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_title/title.rb +17 -4
- data/app/pb_kits/playbook/pb_title/title.test.js +2 -2
- data/dist/playbook-rails.js +2 -2
- data/lib/playbook/version.rb +2 -2
- metadata +10 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d215ecced629f21c640d52daeda126edd0623b0ad55a2f78cd58f52d4dfc613b
|
4
|
+
data.tar.gz: ffc8e4e880ba0869a6c333c0ccea0a2a18cd4191f0209b46648c596f344c6fcd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9cab339a471129485cdc0a108c27c018c1a2722909eaa0b25481280a4618412062a61f4e97adb6b5fdbba8f30b51085cc31df7edb0e001c0f24888380ec36dd1
|
7
|
+
data.tar.gz: 44bf67969554b8e0018531377fbca883022262b0da0148929f47bacbee1106aaef8a156114d7ab46fab82915d22c9c7ba4d79713742feb195442988fe92b0c2a
|
@@ -103,7 +103,7 @@ describe("LabelValue Kit", () => {
|
|
103
103
|
/>
|
104
104
|
)
|
105
105
|
const kit = screen.getByTestId(testId)
|
106
|
-
const activeProp = kit.querySelector(".
|
106
|
+
const activeProp = kit.querySelector(".pb_title_kit_link")
|
107
107
|
expect(activeProp).toBeInTheDocument()
|
108
108
|
})
|
109
109
|
})
|
@@ -28,7 +28,6 @@ type MultiLevelSelectProps = {
|
|
28
28
|
returnAllSelected?: boolean
|
29
29
|
treeData?: { [key: string]: string }[]
|
30
30
|
onSelect?: (prop: { [key: string]: any }) => void
|
31
|
-
selectedIds?: string[]
|
32
31
|
} & GlobalProps
|
33
32
|
|
34
33
|
const MultiLevelSelect = (props: MultiLevelSelectProps) => {
|
@@ -42,7 +41,6 @@ const MultiLevelSelect = (props: MultiLevelSelectProps) => {
|
|
42
41
|
returnAllSelected = false,
|
43
42
|
treeData,
|
44
43
|
onSelect = () => {},
|
45
|
-
selectedIds
|
46
44
|
} = props
|
47
45
|
|
48
46
|
const ariaProps = buildAriaProps(aria)
|
@@ -72,8 +70,8 @@ const MultiLevelSelect = (props: MultiLevelSelectProps) => {
|
|
72
70
|
|
73
71
|
|
74
72
|
useEffect(() => {
|
75
|
-
setFormattedData(addCheckedAndParentProperty(treeData
|
76
|
-
}, [treeData
|
73
|
+
setFormattedData(addCheckedAndParentProperty(treeData))
|
74
|
+
}, [treeData])
|
77
75
|
|
78
76
|
useEffect(() => {
|
79
77
|
if (returnAllSelected) {
|
@@ -162,7 +160,6 @@ const MultiLevelSelect = (props: MultiLevelSelectProps) => {
|
|
162
160
|
//function to map over data and add parent_id + depth property to each item
|
163
161
|
const addCheckedAndParentProperty = (
|
164
162
|
treeData: { [key: string]: any }[],
|
165
|
-
selectedIds: string[],
|
166
163
|
parent_id: string = null,
|
167
164
|
depth: number = 0,
|
168
165
|
) => {
|
@@ -172,7 +169,6 @@ const MultiLevelSelect = (props: MultiLevelSelectProps) => {
|
|
172
169
|
return treeData.map((item: { [key: string]: any } | any) => {
|
173
170
|
const newItem = {
|
174
171
|
...item,
|
175
|
-
checked: selectedIds && selectedIds.length && selectedIds.includes(item.id),
|
176
172
|
parent_id,
|
177
173
|
depth,
|
178
174
|
}
|
@@ -183,7 +179,6 @@ const MultiLevelSelect = (props: MultiLevelSelectProps) => {
|
|
183
179
|
: item.children
|
184
180
|
newItem.children = addCheckedAndParentProperty(
|
185
181
|
children,
|
186
|
-
selectedIds,
|
187
182
|
newItem.id,
|
188
183
|
depth + 1
|
189
184
|
)
|
@@ -9,8 +9,6 @@ module Playbook
|
|
9
9
|
default: []
|
10
10
|
prop :return_all_selected, type: Playbook::Props::Boolean,
|
11
11
|
default: false
|
12
|
-
prop :selected_ids, type: Playbook::Props::Array,
|
13
|
-
default: []
|
14
12
|
prop :input_display, type: Playbook::Props::Enum,
|
15
13
|
values: %w[pills none],
|
16
14
|
default: "pills"
|
@@ -26,7 +24,6 @@ module Playbook
|
|
26
24
|
name: name,
|
27
25
|
treeData: tree_data,
|
28
26
|
returnAllSelected: return_all_selected,
|
29
|
-
selectedIds: selected_ids,
|
30
27
|
}
|
31
28
|
end
|
32
29
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
@import "../tokens/titles";
|
2
2
|
@import "../tokens/colors";
|
3
|
+
@import "../tokens/screen_sizes";
|
3
4
|
@import './title_mixin';
|
4
5
|
|
5
6
|
[class^=pb_title_kit]{
|
@@ -33,4 +34,21 @@
|
|
33
34
|
&[class*=_thin] {
|
34
35
|
@include pb_title_thin;
|
35
36
|
}
|
37
|
+
|
38
|
+
@each $size, $size_value in $breakpoints_grid {
|
39
|
+
@each $title_size_value in [1, 2, 3, 4] {
|
40
|
+
$min_size: map-get($size_value, "min");
|
41
|
+
$max_size: map-get($size_value, "max");
|
42
|
+
&[class*=_#{$size}_#{$title_size_value}] {
|
43
|
+
@include break_on($min_size, $max_size) {
|
44
|
+
@if $title_size_value == 1 { @include pb_title_1; }
|
45
|
+
@else if $title_size_value == 2 { @include pb_title_2; }
|
46
|
+
@else if $title_size_value == 3 { @include pb_title_3; }
|
47
|
+
@else if $title_size_value == 4 { @include pb_title_4; }
|
48
|
+
@include title_colors;
|
49
|
+
@if $title_size_value != 4 { @include pb_title_bold; }
|
50
|
+
}
|
51
|
+
}
|
52
|
+
}
|
53
|
+
}
|
36
54
|
}
|
@@ -3,6 +3,9 @@ import classnames from 'classnames'
|
|
3
3
|
import { buildAriaProps, buildCss, buildDataProps } from '../utilities/props'
|
4
4
|
import { deprecatedProps, GlobalProps, globalProps } from '../utilities/globalProps'
|
5
5
|
|
6
|
+
type SizeType = 1 | 2 | 3 | 4 | "1" | "2" | "3" | "4"
|
7
|
+
type SizeResponsiveType = {[key: string]: SizeType}
|
8
|
+
|
6
9
|
type TitleProps = {
|
7
10
|
aria?: {[key: string]: string},
|
8
11
|
bold?: boolean,
|
@@ -11,7 +14,7 @@ type TitleProps = {
|
|
11
14
|
color?: "default" | "light" | "lighter" | "success" | "error" | "link",
|
12
15
|
data?: {[key: string]: string},
|
13
16
|
id?: string,
|
14
|
-
size?:
|
17
|
+
size?: SizeType | SizeResponsiveType,
|
15
18
|
tag?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "div" | "span",
|
16
19
|
text?: string,
|
17
20
|
variant?: null | "link",
|
@@ -36,9 +39,25 @@ const Title = (props: TitleProps): React.ReactElement => {
|
|
36
39
|
const ariaProps: {[key: string]: string | number} = buildAriaProps(aria)
|
37
40
|
const dataProps: {[key: string]: string | number} = buildDataProps(data)
|
38
41
|
const getBold = bold ? '' : 'thin'
|
42
|
+
|
43
|
+
const generateSizeClasses = () => {
|
44
|
+
let css = ''
|
45
|
+
|
46
|
+
if (typeof size == "number" || typeof size == "string") {
|
47
|
+
css += `pb_title_kit_size_${size} `
|
48
|
+
} else {
|
49
|
+
Object.entries(size).forEach((sizeObj) => {
|
50
|
+
css += `pb_title_kit_${sizeObj[0]}_${sizeObj[1]} `
|
51
|
+
})
|
52
|
+
}
|
53
|
+
|
54
|
+
return css.trim()
|
55
|
+
}
|
56
|
+
|
39
57
|
const classes = classnames(
|
40
|
-
buildCss('pb_title_kit',
|
58
|
+
buildCss('pb_title_kit', variant, color, getBold),
|
41
59
|
globalProps(props),
|
60
|
+
generateSizeClasses(),
|
42
61
|
className
|
43
62
|
)
|
44
63
|
const Tag: React.ReactElement | any = `${tag}`
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= pb_rails("title", props: { text: "Responsive Title", tag: "h1", size: {xs: 3, sm: 2, md: 1} }) %>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import Title from '../_title'
|
3
|
+
|
4
|
+
const TitleResponsive = (props) => {
|
5
|
+
return (
|
6
|
+
<>
|
7
|
+
<Title
|
8
|
+
size={{xs: "3", sm: "2", md: "1"}}
|
9
|
+
text="Responsive Title"
|
10
|
+
{...props}
|
11
|
+
/>
|
12
|
+
</>
|
13
|
+
)
|
14
|
+
}
|
15
|
+
|
16
|
+
export default TitleResponsive
|
@@ -0,0 +1 @@
|
|
1
|
+
The `size` prop supports responsive sizes. To use them, pass an object to the size prop containing your size values relative to responsive break points (show code below). To test this here, resize your browser window to responsively change this Title's size.
|
@@ -3,8 +3,10 @@ examples:
|
|
3
3
|
- title_default: Default UI
|
4
4
|
- title_light_weight: Light Weight UI
|
5
5
|
- title_colors: Colors
|
6
|
+
- title_responsive: Responsive
|
6
7
|
|
7
8
|
react:
|
8
9
|
- title_default: Default UI
|
9
10
|
- title_light_weight: Light Weight UI
|
10
11
|
- title_colors: Colors
|
12
|
+
- title_responsive: Responsive
|
@@ -6,9 +6,7 @@ module Playbook
|
|
6
6
|
prop :color, type: Playbook::Props::Enum,
|
7
7
|
values: [nil, "default", "light", "lighter", "success", "error", "link"],
|
8
8
|
default: nil
|
9
|
-
prop :size,
|
10
|
-
values: [1, 2, 3, 4],
|
11
|
-
default: 3
|
9
|
+
prop :size, default: 3
|
12
10
|
prop :tag, type: Playbook::Props::Enum,
|
13
11
|
values: %w[h1 h2 h3 h4 h5 h6 p div span],
|
14
12
|
default: "h3"
|
@@ -20,12 +18,27 @@ module Playbook
|
|
20
18
|
prop :bold, type: Playbook::Props::Boolean, default: true
|
21
19
|
|
22
20
|
def classname
|
23
|
-
generate_classname("pb_title_kit",
|
21
|
+
title_class = generate_classname("pb_title_kit", variant, color, is_bold)
|
22
|
+
title_class + generate_size_classname
|
24
23
|
end
|
25
24
|
|
26
25
|
def is_bold
|
27
26
|
bold ? nil : "thin"
|
28
27
|
end
|
28
|
+
|
29
|
+
def generate_size_classname
|
30
|
+
responsive = try(:size).is_a?(::Hash)
|
31
|
+
css = ""
|
32
|
+
if responsive
|
33
|
+
size.each do |key, value|
|
34
|
+
css += " pb_title_kit_#{key}_#{value}"
|
35
|
+
end
|
36
|
+
else
|
37
|
+
css += " pb_title_kit_size_#{size}"
|
38
|
+
end
|
39
|
+
|
40
|
+
css unless css.blank?
|
41
|
+
end
|
29
42
|
end
|
30
43
|
end
|
31
44
|
end
|
@@ -25,7 +25,7 @@ test('with thin font weight', () => {
|
|
25
25
|
)
|
26
26
|
|
27
27
|
const kit = screen.getByTestId('primary-test')
|
28
|
-
expect(kit).toHaveClass('
|
28
|
+
expect(kit).toHaveClass('pb_title_kit_thin')
|
29
29
|
})
|
30
30
|
|
31
31
|
test('with colors', () => {
|
@@ -38,5 +38,5 @@ test('with colors', () => {
|
|
38
38
|
)
|
39
39
|
|
40
40
|
const kit = screen.getByTestId('primary-test')
|
41
|
-
expect(kit).toHaveClass('
|
41
|
+
expect(kit).toHaveClass('pb_title_kit_success')
|
42
42
|
})
|