playbook_ui 12.30.1 → 12.31.0.pre.alpha.datepickerdisableddatefix931
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/_playbook.scss +2 -0
- data/app/pb_kits/playbook/pb_badge/_badge.scss +5 -0
- data/app/pb_kits/playbook/pb_badge/_badge.tsx +1 -1
- data/app/pb_kits/playbook/pb_badge/badge.rb +1 -1
- data/app/pb_kits/playbook/pb_badge/badge.test.js +13 -0
- data/app/pb_kits/playbook/pb_badge/docs/_badge_notification.html.erb +12 -0
- data/app/pb_kits/playbook/pb_badge/docs/_badge_notification.jsx +25 -0
- data/app/pb_kits/playbook/pb_badge/docs/example.yml +2 -1
- data/app/pb_kits/playbook/pb_badge/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_button/docs/_button_hover.jsx +40 -0
- data/app/pb_kits/playbook/pb_button/docs/example.yml +1 -0
- data/app/pb_kits/playbook/pb_button/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.ts +37 -31
- data/app/pb_kits/playbook/pb_message/docs/_message_default.jsx +33 -45
- data/app/pb_kits/playbook/pb_message/docs/_message_hover.jsx +41 -0
- data/app/pb_kits/playbook/pb_message/docs/example.yml +1 -0
- data/app/pb_kits/playbook/pb_message/docs/index.js +2 -0
- data/app/pb_kits/playbook/pb_multi_level_select/_helper_functions.tsx +4 -1
- data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +8 -3
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids.html.erb +76 -0
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids.jsx +88 -0
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids.md +5 -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 +2 -1
- data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.rb +3 -0
- data/app/pb_kits/playbook/pb_section_separator/_section_separator.scss +7 -0
- data/app/pb_kits/playbook/pb_section_separator/_section_separator.tsx +12 -7
- data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_children.html.erb +14 -0
- data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_children.jsx +30 -0
- data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_children.md +3 -0
- data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_dashed.html.erb +1 -0
- data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_dashed.jsx +13 -0
- data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text.html.erb +1 -1
- data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text.jsx +1 -1
- data/app/pb_kits/playbook/pb_section_separator/docs/example.yml +6 -3
- data/app/pb_kits/playbook/pb_section_separator/docs/index.js +2 -0
- data/app/pb_kits/playbook/pb_section_separator/section_separator.html.erb +4 -2
- data/app/pb_kits/playbook/pb_section_separator/section_separator.rb +4 -1
- data/app/pb_kits/playbook/pb_title/_title.scss +18 -0
- data/app/pb_kits/playbook/pb_title/_title.tsx +20 -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 +21 -4
- data/app/pb_kits/playbook/pb_title/title.test.js +42 -29
- data/app/pb_kits/playbook/tokens/_scale.scss +9 -0
- data/app/pb_kits/playbook/tokens/exports/_scale.scss +13 -0
- data/app/pb_kits/playbook/utilities/_border_radius.scss +31 -0
- data/app/pb_kits/playbook/utilities/_colors.scss +3 -0
- data/app/pb_kits/playbook/utilities/_hover.scss +47 -0
- data/app/pb_kits/playbook/utilities/globalProps.ts +22 -2
- data/dist/playbook-rails.js +6 -6
- data/lib/playbook/version.rb +2 -2
- metadata +26 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 654d556d34f5a4d85545aff221a0ad40d54b0f09c6f5a26d74dbd99b346ce57d
|
4
|
+
data.tar.gz: 3ae3d76e2d79224c105d7b8c53c7f7c9033cda03505d55cc4222262926e9a580
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1e0ed9fa251b5130bcdfc146ea0e1144b2273424c5f8171fc12b573ada98fbf2ca743d7467602d6d904b65c16fb8976ed51133461bb6497cff4dc038823100b4
|
7
|
+
data.tar.gz: a8dcf56f0adeed47b1e403318feec0a711f9d45dbc6617e26bdb19533fe055552a61bfeb05663141b49d28810f12f3e62397f8177ffa07e6510533a5972f1b5b
|
@@ -24,7 +24,7 @@ type BadgeProps = {
|
|
24
24
|
removeOnClick?: React.MouseEventHandler<HTMLSpanElement>,
|
25
25
|
rounded?: boolean,
|
26
26
|
text?: string,
|
27
|
-
variant?: "error" | "info" | "neutral" | "primary" | "success" | "warning",
|
27
|
+
variant?: "error" | "info" | "neutral" | "notification" | "primary" | "success" | "warning",
|
28
28
|
} & GlobalProps
|
29
29
|
const Badge = (props: BadgeProps) => {
|
30
30
|
const {
|
@@ -6,7 +6,7 @@ module Playbook
|
|
6
6
|
prop :rounded, type: Playbook::Props::Boolean, default: false
|
7
7
|
prop :text
|
8
8
|
prop :variant, type: Playbook::Props::Enum,
|
9
|
-
values: %w[success warning error info neutral primary],
|
9
|
+
values: %w[success warning error info neutral notification primary],
|
10
10
|
default: "neutral"
|
11
11
|
|
12
12
|
def classname
|
@@ -93,3 +93,16 @@ test('displays success variant', () => {
|
|
93
93
|
cleanup()
|
94
94
|
|
95
95
|
})
|
96
|
+
|
97
|
+
test('displays notification variant', () => {
|
98
|
+
render(
|
99
|
+
<Badge
|
100
|
+
data={{ testid: testId }}
|
101
|
+
text="1"
|
102
|
+
variant="notification"
|
103
|
+
/>
|
104
|
+
)
|
105
|
+
const kit = screen.getByTestId(testId)
|
106
|
+
expect(kit).toHaveClass(`pb_badge_kit_notification`)
|
107
|
+
cleanup()
|
108
|
+
})
|
@@ -0,0 +1,25 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import Badge from '../_badge'
|
3
|
+
|
4
|
+
const BadgeNotification = (props) => {
|
5
|
+
return (
|
6
|
+
<>
|
7
|
+
<Badge
|
8
|
+
rounded
|
9
|
+
text="1"
|
10
|
+
variant="notification"
|
11
|
+
{...props}
|
12
|
+
/>
|
13
|
+
|
14
|
+
|
15
|
+
|
16
|
+
<Badge
|
17
|
+
text="4"
|
18
|
+
variant="notification"
|
19
|
+
{...props}
|
20
|
+
/>
|
21
|
+
</>
|
22
|
+
)
|
23
|
+
}
|
24
|
+
|
25
|
+
export default BadgeNotification
|
@@ -3,9 +3,10 @@ examples:
|
|
3
3
|
- badge_default: Rectangle
|
4
4
|
- badge_rounded: Rounded
|
5
5
|
- badge_colors: Colors
|
6
|
-
|
6
|
+
- badge_notification: Notification
|
7
7
|
|
8
8
|
react:
|
9
9
|
- badge_default: Rectangle
|
10
10
|
- badge_rounded: Rounded
|
11
11
|
- badge_colors: Colors
|
12
|
+
- badge_notification: Notification
|
@@ -0,0 +1,40 @@
|
|
1
|
+
import React from "react"
|
2
|
+
import { Button } from "../../"
|
3
|
+
|
4
|
+
const ButtonHover = (props) => (
|
5
|
+
<div>
|
6
|
+
<div>
|
7
|
+
<Button
|
8
|
+
hover={{ shadow: "deep" }}
|
9
|
+
marginRight='lg'
|
10
|
+
marginTop='xl'
|
11
|
+
onClick={() => alert("button clicked!")}
|
12
|
+
tabIndex={0}
|
13
|
+
text='Shadow Deep'
|
14
|
+
{...props}
|
15
|
+
/>{" "}
|
16
|
+
<Button
|
17
|
+
hover={{ shadow: "deeper" }}
|
18
|
+
marginRight='lg'
|
19
|
+
marginTop='xl'
|
20
|
+
onClick={() => alert("button clicked!")}
|
21
|
+
tabIndex={0}
|
22
|
+
text='Shadow Deeper'
|
23
|
+
variant='secondary'
|
24
|
+
{...props}
|
25
|
+
/>{" "}
|
26
|
+
<Button
|
27
|
+
hover={{ shadow: "deepest" }}
|
28
|
+
marginRight='lg'
|
29
|
+
marginTop='xl'
|
30
|
+
onClick={() => alert("button clicked!")}
|
31
|
+
tabIndex={0}
|
32
|
+
text='Shadow Deepest'
|
33
|
+
variant='link'
|
34
|
+
{...props}
|
35
|
+
/>
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
)
|
39
|
+
|
40
|
+
export default ButtonHover
|
@@ -8,3 +8,4 @@ export { default as ButtonAccessibility } from './_button_accessibility.jsx'
|
|
8
8
|
export { default as ButtonOptions } from './_button_options.jsx'
|
9
9
|
export { default as ButtonSize } from './_button_size.jsx'
|
10
10
|
export { default as ButtonForm } from './_button_form.jsx'
|
11
|
+
export { default as ButtonHover } from './_button_hover.jsx'
|
@@ -71,13 +71,42 @@ const datePickerHelper = (config: DatePickerConfig, scrollContainer: string | HT
|
|
71
71
|
}
|
72
72
|
}
|
73
73
|
const disabledParser = () => {
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
74
|
+
const disabledArray=[]
|
75
|
+
|
76
|
+
disableDate && disableDate.length > 0 && disabledArray.push(...disableDate)
|
77
|
+
disableRange && disableRange.length > 0 && disabledArray.push(...disableRange)
|
78
|
+
disableWeekdays && disableWeekdays.length > 0 && disabledArray.push(...disabledWeekDays())
|
79
|
+
|
80
|
+
return disabledArray
|
81
|
+
}
|
82
|
+
|
83
|
+
const disabledWeekDays = () => {
|
84
|
+
return (
|
85
|
+
[
|
86
|
+
(date:any) => {
|
87
|
+
const weekdayObj: {
|
88
|
+
[day: string]: number
|
89
|
+
} = {
|
90
|
+
Sunday: 0,
|
91
|
+
Monday: 1,
|
92
|
+
Tuesday: 2,
|
93
|
+
Wednesday: 3,
|
94
|
+
Thursday: 4,
|
95
|
+
Friday: 5,
|
96
|
+
Saturday: 6,
|
97
|
+
}
|
98
|
+
return (
|
99
|
+
date.getDay() === weekdayObj[disableWeekdays[0]] ||
|
100
|
+
date.getDay() === weekdayObj[disableWeekdays[1]] ||
|
101
|
+
date.getDay() === weekdayObj[disableWeekdays[2]] ||
|
102
|
+
date.getDay() === weekdayObj[disableWeekdays[3]] ||
|
103
|
+
date.getDay() === weekdayObj[disableWeekdays[4]] ||
|
104
|
+
date.getDay() === weekdayObj[disableWeekdays[5]] ||
|
105
|
+
date.getDay() === weekdayObj[disableWeekdays[6]]
|
106
|
+
)
|
107
|
+
},
|
108
|
+
]
|
109
|
+
)
|
81
110
|
}
|
82
111
|
const calendarResizer = () => {
|
83
112
|
const cal = document.querySelector(`#cal-${pickerId}.open`) as HTMLElement
|
@@ -127,30 +156,7 @@ const datePickerHelper = (config: DatePickerConfig, scrollContainer: string | HT
|
|
127
156
|
disableMobile: true,
|
128
157
|
dateFormat: getDateFormat(),
|
129
158
|
defaultDate: defaultDateGetter(),
|
130
|
-
disable:
|
131
|
-
(date) => {
|
132
|
-
const weekdayObj: {
|
133
|
-
[day: string]: number
|
134
|
-
} = {
|
135
|
-
Sunday: 0,
|
136
|
-
Monday: 1,
|
137
|
-
Tuesday: 2,
|
138
|
-
Wednesday: 3,
|
139
|
-
Thursday: 4,
|
140
|
-
Friday: 5,
|
141
|
-
Saturday: 6,
|
142
|
-
}
|
143
|
-
return (
|
144
|
-
date.getDay() === weekdayObj[disableWeekdays[0]] ||
|
145
|
-
date.getDay() === weekdayObj[disableWeekdays[1]] ||
|
146
|
-
date.getDay() === weekdayObj[disableWeekdays[2]] ||
|
147
|
-
date.getDay() === weekdayObj[disableWeekdays[3]] ||
|
148
|
-
date.getDay() === weekdayObj[disableWeekdays[4]] ||
|
149
|
-
date.getDay() === weekdayObj[disableWeekdays[5]] ||
|
150
|
-
date.getDay() === weekdayObj[disableWeekdays[6]]
|
151
|
-
)
|
152
|
-
},
|
153
|
-
] : disabledParser(),
|
159
|
+
disable: disabledParser(),
|
154
160
|
enableTime,
|
155
161
|
locale: {
|
156
162
|
rangeSeparator: ' to '
|
@@ -1,43 +1,33 @@
|
|
1
|
-
import React from
|
1
|
+
import React from "react"
|
2
2
|
|
3
|
-
import Message from
|
4
|
-
import Image from
|
3
|
+
import Message from "../_message"
|
4
|
+
import Image from "../../pb_image/_image"
|
5
5
|
|
6
6
|
const MessageDefault = (props) => {
|
7
7
|
return (
|
8
8
|
<div>
|
9
9
|
<Message
|
10
|
-
avatarName=
|
11
|
-
avatarStatus=
|
12
|
-
avatarUrl=
|
13
|
-
|
14
|
-
|
15
|
-
|
10
|
+
avatarName='Mike Bishop'
|
11
|
+
avatarStatus='online'
|
12
|
+
avatarUrl='https://randomuser.me/api/portraits/men/50.jpg'
|
13
|
+
borderRadius='rounded'
|
14
|
+
label='Anna Black'
|
15
|
+
message='How can we assist you today?'
|
16
|
+
timestamp='20 seconds ago'
|
16
17
|
{...props}
|
17
18
|
/>
|
18
19
|
|
19
20
|
<br />
|
20
21
|
<br />
|
21
|
-
|
22
|
-
<Message
|
23
|
-
alignTimestamp="left"
|
24
|
-
avatarName="Wade Winningham"
|
25
|
-
avatarUrl="https://randomuser.me/api/portraits/men/14.jpg"
|
26
|
-
label="Patrick Welch"
|
27
|
-
message="We will escalate this issue to a Senior Support agent."
|
28
|
-
timestamp="9 minutes ago"
|
29
|
-
{...props}
|
30
|
-
/>
|
31
|
-
|
32
22
|
<br />
|
33
23
|
<br />
|
34
24
|
|
35
25
|
<Message
|
36
|
-
avatarName=
|
37
|
-
avatarUrl=
|
38
|
-
label=
|
39
|
-
message=
|
40
|
-
timestamp=
|
26
|
+
avatarName='Becca Jacobs'
|
27
|
+
avatarUrl='https://randomuser.me/api/portraits/women/50.jpg'
|
28
|
+
label='Lucille Sanchez'
|
29
|
+
message='Application for Kate Smith is waiting for your approval'
|
30
|
+
timestamp='2 days ago'
|
41
31
|
{...props}
|
42
32
|
/>
|
43
33
|
|
@@ -45,10 +35,10 @@ const MessageDefault = (props) => {
|
|
45
35
|
<br />
|
46
36
|
|
47
37
|
<Message
|
48
|
-
avatarName=
|
49
|
-
label=
|
50
|
-
message=
|
51
|
-
timestamp=
|
38
|
+
avatarName='Timothy Wenhold'
|
39
|
+
label='Beverly Reyes'
|
40
|
+
message='We are so sorry you had a bad experience!'
|
41
|
+
timestamp='2 days ago'
|
52
42
|
{...props}
|
53
43
|
/>
|
54
44
|
|
@@ -56,24 +46,23 @@ const MessageDefault = (props) => {
|
|
56
46
|
<br />
|
57
47
|
|
58
48
|
<Message
|
59
|
-
label=
|
60
|
-
message=
|
61
|
-
timestamp=
|
49
|
+
label='Keith Craig'
|
50
|
+
message='Please hold for one moment, I will check with my manager.'
|
51
|
+
timestamp='2 days ago'
|
62
52
|
{...props}
|
63
53
|
/>
|
64
54
|
|
65
55
|
<br />
|
66
56
|
<br />
|
67
57
|
|
68
|
-
<Message
|
69
|
-
|
70
|
-
timestamp="2 days ago"
|
58
|
+
<Message label='Keith Craig'
|
59
|
+
timestamp='2 days ago'
|
71
60
|
{...props}
|
72
61
|
>
|
73
62
|
<Image
|
74
|
-
alt=
|
75
|
-
size=
|
76
|
-
url=
|
63
|
+
alt='picture of a misty forest'
|
64
|
+
size='md'
|
65
|
+
url='https://unsplash.it/500/400/?image=634'
|
77
66
|
/>
|
78
67
|
</Message>
|
79
68
|
|
@@ -81,18 +70,17 @@ const MessageDefault = (props) => {
|
|
81
70
|
<br />
|
82
71
|
|
83
72
|
<Message
|
84
|
-
label=
|
85
|
-
message=
|
86
|
-
timestamp=
|
73
|
+
label='Keith Craig'
|
74
|
+
message='Please hold for one moment, I will check with my manager.'
|
75
|
+
timestamp='2 days ago'
|
87
76
|
{...props}
|
88
77
|
>
|
89
78
|
<Image
|
90
|
-
alt=
|
91
|
-
size=
|
92
|
-
url=
|
79
|
+
alt='picture of a misty forest'
|
80
|
+
size='md'
|
81
|
+
url='https://unsplash.it/500/400/?image=634'
|
93
82
|
/>
|
94
83
|
</Message>
|
95
|
-
|
96
84
|
</div>
|
97
85
|
)
|
98
86
|
}
|
@@ -0,0 +1,41 @@
|
|
1
|
+
import React from "react"
|
2
|
+
|
3
|
+
import Message from "../_message"
|
4
|
+
|
5
|
+
const MessageHover = (props) => {
|
6
|
+
return (
|
7
|
+
<div>
|
8
|
+
<Message
|
9
|
+
avatarName='Mike Bishop'
|
10
|
+
avatarStatus='online'
|
11
|
+
avatarUrl='https://randomuser.me/api/portraits/men/50.jpg'
|
12
|
+
borderRadius='rounded'
|
13
|
+
hover={{ background: "success_subtle" }}
|
14
|
+
label='Anna Black'
|
15
|
+
message='How can we assist you today?'
|
16
|
+
padding="xs"
|
17
|
+
{...props}
|
18
|
+
/>
|
19
|
+
|
20
|
+
<br />
|
21
|
+
<br />
|
22
|
+
<br />
|
23
|
+
|
24
|
+
<Message
|
25
|
+
avatarName='Becca Jacobs'
|
26
|
+
avatarUrl='https://randomuser.me/api/portraits/women/50.jpg'
|
27
|
+
borderRadius='rounded'
|
28
|
+
hover={{ shadow: "deepest" }}
|
29
|
+
label='Lucille Sanchez'
|
30
|
+
message='Application for Kate Smith is waiting for your approval'
|
31
|
+
padding="xs"
|
32
|
+
{...props}
|
33
|
+
/>
|
34
|
+
|
35
|
+
<br />
|
36
|
+
|
37
|
+
</div>
|
38
|
+
)
|
39
|
+
}
|
40
|
+
|
41
|
+
export default MessageHover
|
@@ -135,7 +135,7 @@ export const recursiveCheckParent = (
|
|
135
135
|
return data;
|
136
136
|
};
|
137
137
|
|
138
|
-
export const getExpandedItems = (treeData: { [key: string]: string }[]) => {
|
138
|
+
export const getExpandedItems = (treeData: { [key: string]: string }[], selectedIds: string[]) => {
|
139
139
|
let expandedItems: any[] = [];
|
140
140
|
|
141
141
|
const traverse = (items: string | any[], ancestors: any[] = []) => {
|
@@ -146,6 +146,9 @@ export const getExpandedItems = (treeData: { [key: string]: string }[]) => {
|
|
146
146
|
if (item.expanded) {
|
147
147
|
expandedItems.push(item.id);
|
148
148
|
}
|
149
|
+
if (selectedIds && selectedIds.length && selectedIds.includes(item.id)) {
|
150
|
+
expandedItems.push(...itemAncestors.map((ancestor) => ancestor.id));
|
151
|
+
}
|
149
152
|
if (Array.isArray(item.children)) {
|
150
153
|
const hasCheckedChildren = item.children.some(
|
151
154
|
(child: { [key: string]: string }) => child.checked
|
@@ -28,6 +28,7 @@ type MultiLevelSelectProps = {
|
|
28
28
|
returnAllSelected?: boolean
|
29
29
|
treeData?: { [key: string]: string }[]
|
30
30
|
onSelect?: (prop: { [key: string]: any }) => void
|
31
|
+
selectedIds?: string[]
|
31
32
|
} & GlobalProps
|
32
33
|
|
33
34
|
const MultiLevelSelect = (props: MultiLevelSelectProps) => {
|
@@ -41,6 +42,7 @@ const MultiLevelSelect = (props: MultiLevelSelectProps) => {
|
|
41
42
|
returnAllSelected = false,
|
42
43
|
treeData,
|
43
44
|
onSelect = () => {},
|
45
|
+
selectedIds
|
44
46
|
} = props
|
45
47
|
|
46
48
|
const ariaProps = buildAriaProps(aria)
|
@@ -64,14 +66,14 @@ const MultiLevelSelect = (props: MultiLevelSelectProps) => {
|
|
64
66
|
//state for return for default
|
65
67
|
const [defaultReturn, setDefaultReturn] = useState([])
|
66
68
|
// Get expanded items from treeData.
|
67
|
-
const initialExpandedItems = getExpandedItems(treeData);
|
69
|
+
const initialExpandedItems = getExpandedItems(treeData, selectedIds);
|
68
70
|
// Initialize state with expanded items.
|
69
71
|
const [expanded, setExpanded] = useState(initialExpandedItems);
|
70
72
|
|
71
73
|
|
72
74
|
useEffect(() => {
|
73
|
-
setFormattedData(addCheckedAndParentProperty(treeData))
|
74
|
-
}, [treeData])
|
75
|
+
setFormattedData(addCheckedAndParentProperty(treeData, selectedIds))
|
76
|
+
}, [treeData, selectedIds])
|
75
77
|
|
76
78
|
useEffect(() => {
|
77
79
|
if (returnAllSelected) {
|
@@ -160,6 +162,7 @@ const MultiLevelSelect = (props: MultiLevelSelectProps) => {
|
|
160
162
|
//function to map over data and add parent_id + depth property to each item
|
161
163
|
const addCheckedAndParentProperty = (
|
162
164
|
treeData: { [key: string]: any }[],
|
165
|
+
selectedIds: string[],
|
163
166
|
parent_id: string = null,
|
164
167
|
depth: number = 0,
|
165
168
|
) => {
|
@@ -169,6 +172,7 @@ const MultiLevelSelect = (props: MultiLevelSelectProps) => {
|
|
169
172
|
return treeData.map((item: { [key: string]: any } | any) => {
|
170
173
|
const newItem = {
|
171
174
|
...item,
|
175
|
+
checked: selectedIds && selectedIds.length && selectedIds.includes(item.id),
|
172
176
|
parent_id,
|
173
177
|
depth,
|
174
178
|
}
|
@@ -179,6 +183,7 @@ const MultiLevelSelect = (props: MultiLevelSelectProps) => {
|
|
179
183
|
: item.children
|
180
184
|
newItem.children = addCheckedAndParentProperty(
|
181
185
|
children,
|
186
|
+
selectedIds,
|
182
187
|
newItem.id,
|
183
188
|
depth + 1
|
184
189
|
)
|
data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids.html.erb
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
<% treeData = [{
|
2
|
+
label: "Power Home Remodeling",
|
3
|
+
value: "Power Home Remodeling",
|
4
|
+
id: "100",
|
5
|
+
expanded: true,
|
6
|
+
children: [
|
7
|
+
{
|
8
|
+
label: "People",
|
9
|
+
value: "People",
|
10
|
+
id: "101",
|
11
|
+
children: [
|
12
|
+
{
|
13
|
+
label: "Talent Acquisition",
|
14
|
+
value: "Talent Acquisition",
|
15
|
+
id: "102",
|
16
|
+
},
|
17
|
+
{
|
18
|
+
label: "Business Affairs",
|
19
|
+
value: "Business Affairs",
|
20
|
+
id: "103",
|
21
|
+
children: [
|
22
|
+
{
|
23
|
+
label: "Initiatives",
|
24
|
+
value: "Initiatives",
|
25
|
+
id: "104",
|
26
|
+
},
|
27
|
+
{
|
28
|
+
label: "Learning & Development",
|
29
|
+
value: "Learning & Development",
|
30
|
+
id: "105",
|
31
|
+
},
|
32
|
+
],
|
33
|
+
},
|
34
|
+
{
|
35
|
+
label: "People Experience",
|
36
|
+
value: "People Experience",
|
37
|
+
id: "106",
|
38
|
+
},
|
39
|
+
],
|
40
|
+
},
|
41
|
+
{
|
42
|
+
label: "Contact Center",
|
43
|
+
value: "Contact Center",
|
44
|
+
id: "107",
|
45
|
+
children: [
|
46
|
+
{
|
47
|
+
label: "Appointment Management",
|
48
|
+
value: "Appointment Management",
|
49
|
+
id: "108",
|
50
|
+
},
|
51
|
+
{
|
52
|
+
label: "Customer Service",
|
53
|
+
value: "Customer Service",
|
54
|
+
id: "109",
|
55
|
+
},
|
56
|
+
{
|
57
|
+
label: "Energy",
|
58
|
+
value: "Energy",
|
59
|
+
id: "110",
|
60
|
+
},
|
61
|
+
],
|
62
|
+
},
|
63
|
+
],
|
64
|
+
}] %>
|
65
|
+
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
<%= pb_rails("multi_level_select", props: {
|
70
|
+
id: "multi-level-select-seelcted_ids",
|
71
|
+
name: "my_data_array_selected",
|
72
|
+
return_all_selected: true,
|
73
|
+
selected_ids:["110","102"],
|
74
|
+
tree_data: treeData,
|
75
|
+
}) %>
|
76
|
+
|