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.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +2 -0
  3. data/app/pb_kits/playbook/pb_badge/_badge.scss +5 -0
  4. data/app/pb_kits/playbook/pb_badge/_badge.tsx +1 -1
  5. data/app/pb_kits/playbook/pb_badge/badge.rb +1 -1
  6. data/app/pb_kits/playbook/pb_badge/badge.test.js +13 -0
  7. data/app/pb_kits/playbook/pb_badge/docs/_badge_notification.html.erb +12 -0
  8. data/app/pb_kits/playbook/pb_badge/docs/_badge_notification.jsx +25 -0
  9. data/app/pb_kits/playbook/pb_badge/docs/example.yml +2 -1
  10. data/app/pb_kits/playbook/pb_badge/docs/index.js +1 -0
  11. data/app/pb_kits/playbook/pb_button/docs/_button_hover.jsx +40 -0
  12. data/app/pb_kits/playbook/pb_button/docs/example.yml +1 -0
  13. data/app/pb_kits/playbook/pb_button/docs/index.js +1 -0
  14. data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.ts +37 -31
  15. data/app/pb_kits/playbook/pb_message/docs/_message_default.jsx +33 -45
  16. data/app/pb_kits/playbook/pb_message/docs/_message_hover.jsx +41 -0
  17. data/app/pb_kits/playbook/pb_message/docs/example.yml +1 -0
  18. data/app/pb_kits/playbook/pb_message/docs/index.js +2 -0
  19. data/app/pb_kits/playbook/pb_multi_level_select/_helper_functions.tsx +4 -1
  20. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +8 -3
  21. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids.html.erb +76 -0
  22. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids.jsx +88 -0
  23. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids.md +5 -0
  24. data/app/pb_kits/playbook/pb_multi_level_select/docs/example.yml +2 -0
  25. data/app/pb_kits/playbook/pb_multi_level_select/docs/index.js +2 -1
  26. data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.rb +3 -0
  27. data/app/pb_kits/playbook/pb_section_separator/_section_separator.scss +7 -0
  28. data/app/pb_kits/playbook/pb_section_separator/_section_separator.tsx +12 -7
  29. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_children.html.erb +14 -0
  30. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_children.jsx +30 -0
  31. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_children.md +3 -0
  32. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_dashed.html.erb +1 -0
  33. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_dashed.jsx +13 -0
  34. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text.html.erb +1 -1
  35. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text.jsx +1 -1
  36. data/app/pb_kits/playbook/pb_section_separator/docs/example.yml +6 -3
  37. data/app/pb_kits/playbook/pb_section_separator/docs/index.js +2 -0
  38. data/app/pb_kits/playbook/pb_section_separator/section_separator.html.erb +4 -2
  39. data/app/pb_kits/playbook/pb_section_separator/section_separator.rb +4 -1
  40. data/app/pb_kits/playbook/pb_title/_title.scss +18 -0
  41. data/app/pb_kits/playbook/pb_title/_title.tsx +20 -2
  42. data/app/pb_kits/playbook/pb_title/docs/_title_responsive.html.erb +1 -0
  43. data/app/pb_kits/playbook/pb_title/docs/_title_responsive.jsx +16 -0
  44. data/app/pb_kits/playbook/pb_title/docs/_title_responsive.md +1 -0
  45. data/app/pb_kits/playbook/pb_title/docs/example.yml +2 -0
  46. data/app/pb_kits/playbook/pb_title/docs/index.js +1 -0
  47. data/app/pb_kits/playbook/pb_title/title.rb +21 -4
  48. data/app/pb_kits/playbook/pb_title/title.test.js +42 -29
  49. data/app/pb_kits/playbook/tokens/_scale.scss +9 -0
  50. data/app/pb_kits/playbook/tokens/exports/_scale.scss +13 -0
  51. data/app/pb_kits/playbook/utilities/_border_radius.scss +31 -0
  52. data/app/pb_kits/playbook/utilities/_colors.scss +3 -0
  53. data/app/pb_kits/playbook/utilities/_hover.scss +47 -0
  54. data/app/pb_kits/playbook/utilities/globalProps.ts +22 -2
  55. data/dist/playbook-rails.js +6 -6
  56. data/lib/playbook/version.rb +2 -2
  57. metadata +26 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: be0a7b566ae2becf6f879bd4f1cd39c0c27f487ef1a0a962238469eeec8753c6
4
- data.tar.gz: ff75740ac1377ced70e9c9b6dc4dbe78f3f7a4ec7a0320d202f4be2b5c3601cd
3
+ metadata.gz: 654d556d34f5a4d85545aff221a0ad40d54b0f09c6f5a26d74dbd99b346ce57d
4
+ data.tar.gz: 3ae3d76e2d79224c105d7b8c53c7f7c9033cda03505d55cc4222262926e9a580
5
5
  SHA512:
6
- metadata.gz: 589840dca5165dd2173a6d2eb01bf95045918ddf958598262a5040cc9e18560ec5cc1cc1073fd522ed50266bb2a3d9fbee1b42ca5eea8d862ffe2a0408e3163f
7
- data.tar.gz: d04f64d8a30a45a41541f861c39db6dc82fc21b636e5caa87ec1c889399eaa28fd09374f1994a3266c4cf8bec4d5e3bc80bbe0dfe346a65713b0bdda06c2b321
6
+ metadata.gz: 1e0ed9fa251b5130bcdfc146ea0e1144b2273424c5f8171fc12b573ada98fbf2ca743d7467602d6d904b65c16fb8976ed51133461bb6497cff4dc038823100b4
7
+ data.tar.gz: a8dcf56f0adeed47b1e403318feec0a711f9d45dbc6617e26bdb19533fe055552a61bfeb05663141b49d28810f12f3e62397f8177ffa07e6510533a5972f1b5b
@@ -110,5 +110,7 @@
110
110
  @import './utilities/display';
111
111
  @import './utilities/flexbox';
112
112
  @import './utilities/focus';
113
+ @import './utilities/border_radius';
114
+ @import './utilities/hover';
113
115
 
114
116
  @import 'pb_multi_level_select/multi_level_select';
@@ -37,6 +37,11 @@
37
37
  border-radius: $pb_badge_height / 2;
38
38
  }
39
39
 
40
+ &[class*=_notification] {
41
+ background: $primary;
42
+ color: $white;
43
+ }
44
+
40
45
  &.dark {
41
46
  border-width: 0;
42
47
 
@@ -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,12 @@
1
+ <div>
2
+ <%= pb_rails("badge", props: {
3
+ text: "1",
4
+ variant: "notification",
5
+ rounded: true
6
+ }) %>
7
+
8
+ <%= pb_rails("badge", props: {
9
+ text: "4",
10
+ variant: "notification"
11
+ }) %>
12
+ </div>
@@ -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
+ &nbsp;
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
@@ -1,3 +1,4 @@
1
1
  export { default as BadgeDefault } from './_badge_default'
2
2
  export { default as BadgeRounded } from './_badge_rounded'
3
3
  export { default as BadgeColors } from './_badge_colors'
4
+ export { default as BadgeNotification } from './_badge_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
@@ -21,3 +21,4 @@ examples:
21
21
  - button_options: Button Additional Options (onClick)
22
22
  - button_size: Button Size
23
23
  - button_form: Button Form Attribute
24
+ - button_hover: Button Hover
@@ -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
- if (disableDate && disableDate.length > 0) {
75
- return disableDate
76
- } else if (disableRange && disableRange.length > 0) {
77
- return disableRange
78
- } else {
79
- return []
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: disableWeekdays && disableWeekdays.length > 0 ? [
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 'react'
1
+ import React from "react"
2
2
 
3
- import Message from '../_message'
4
- import Image from '../../pb_image/_image'
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="Mike Bishop"
11
- avatarStatus="online"
12
- avatarUrl="https://randomuser.me/api/portraits/men/50.jpg"
13
- label="Anna Black"
14
- message="How can we assist you today?"
15
- timestamp="20 seconds ago"
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="Becca Jacobs"
37
- avatarUrl="https://randomuser.me/api/portraits/women/50.jpg"
38
- label="Lucille Sanchez"
39
- message="Application for Kate Smith is waiting for your approval"
40
- timestamp="2 days ago"
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="Timothy Wenhold"
49
- label="Beverly Reyes"
50
- message="We are so sorry you had a bad experience!"
51
- timestamp="2 days ago"
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="Keith Craig"
60
- message="Please hold for one moment, I will check with my manager."
61
- timestamp="2 days ago"
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
- label="Keith Craig"
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="picture of a misty forest"
75
- size="md"
76
- url="https://unsplash.it/500/400/?image=634"
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="Keith Craig"
85
- message="Please hold for one moment, I will check with my manager."
86
- timestamp="2 days ago"
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="picture of a misty forest"
91
- size="md"
92
- url="https://unsplash.it/500/400/?image=634"
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
@@ -8,4 +8,5 @@ examples:
8
8
  react:
9
9
  - message_default: Default
10
10
  - message_timestamp: With Timestamp Hover
11
+ - message_hover: Hover
11
12
 
@@ -1,2 +1,4 @@
1
1
  export { default as MessageDefault } from './_message_default.jsx'
2
2
  export { default as MessageTimestamp } from './_message_timestamp.jsx'
3
+ export { default as MessageHover } from './_message_hover.jsx'
4
+
@@ -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
  )
@@ -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
+