playbook_ui 12.30.1 → 12.31.0.pre.alpha.customiconsfa928

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +2 -0
  3. data/app/pb_kits/playbook/custom-icons.js +355 -0
  4. data/app/pb_kits/playbook/index.js +2 -1
  5. data/app/pb_kits/playbook/pb_badge/_badge.scss +5 -0
  6. data/app/pb_kits/playbook/pb_badge/_badge.tsx +1 -1
  7. data/app/pb_kits/playbook/pb_badge/badge.rb +1 -1
  8. data/app/pb_kits/playbook/pb_badge/badge.test.js +13 -0
  9. data/app/pb_kits/playbook/pb_badge/docs/_badge_notification.html.erb +12 -0
  10. data/app/pb_kits/playbook/pb_badge/docs/_badge_notification.jsx +25 -0
  11. data/app/pb_kits/playbook/pb_badge/docs/example.yml +2 -1
  12. data/app/pb_kits/playbook/pb_badge/docs/index.js +1 -0
  13. data/app/pb_kits/playbook/pb_button/docs/_button_hover.jsx +40 -0
  14. data/app/pb_kits/playbook/pb_button/docs/example.yml +1 -0
  15. data/app/pb_kits/playbook/pb_button/docs/index.js +1 -0
  16. data/app/pb_kits/playbook/pb_icon/_icon.tsx +9 -3
  17. data/app/pb_kits/playbook/pb_icon/icon.rb +8 -2
  18. data/app/pb_kits/playbook/pb_message/docs/_message_default.jsx +33 -45
  19. data/app/pb_kits/playbook/pb_message/docs/_message_hover.jsx +41 -0
  20. data/app/pb_kits/playbook/pb_message/docs/example.yml +1 -0
  21. data/app/pb_kits/playbook/pb_message/docs/index.js +2 -0
  22. data/app/pb_kits/playbook/pb_multi_level_select/_helper_functions.tsx +4 -1
  23. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +8 -3
  24. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids.html.erb +76 -0
  25. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids.jsx +88 -0
  26. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids.md +5 -0
  27. data/app/pb_kits/playbook/pb_multi_level_select/docs/example.yml +2 -0
  28. data/app/pb_kits/playbook/pb_multi_level_select/docs/index.js +2 -1
  29. data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.rb +3 -0
  30. data/app/pb_kits/playbook/pb_section_separator/_section_separator.scss +7 -0
  31. data/app/pb_kits/playbook/pb_section_separator/_section_separator.tsx +12 -7
  32. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_children.html.erb +14 -0
  33. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_children.jsx +30 -0
  34. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_children.md +3 -0
  35. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_dashed.html.erb +1 -0
  36. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_dashed.jsx +13 -0
  37. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text.html.erb +1 -1
  38. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text.jsx +1 -1
  39. data/app/pb_kits/playbook/pb_section_separator/docs/example.yml +6 -3
  40. data/app/pb_kits/playbook/pb_section_separator/docs/index.js +2 -0
  41. data/app/pb_kits/playbook/pb_section_separator/section_separator.html.erb +4 -2
  42. data/app/pb_kits/playbook/pb_section_separator/section_separator.rb +4 -1
  43. data/app/pb_kits/playbook/pb_title/_title.scss +18 -0
  44. data/app/pb_kits/playbook/pb_title/_title.tsx +20 -2
  45. data/app/pb_kits/playbook/pb_title/docs/_title_responsive.html.erb +1 -0
  46. data/app/pb_kits/playbook/pb_title/docs/_title_responsive.jsx +16 -0
  47. data/app/pb_kits/playbook/pb_title/docs/_title_responsive.md +1 -0
  48. data/app/pb_kits/playbook/pb_title/docs/example.yml +2 -0
  49. data/app/pb_kits/playbook/pb_title/docs/index.js +1 -0
  50. data/app/pb_kits/playbook/pb_title/title.rb +21 -4
  51. data/app/pb_kits/playbook/pb_title/title.test.js +42 -29
  52. data/app/pb_kits/playbook/tokens/_scale.scss +9 -0
  53. data/app/pb_kits/playbook/tokens/exports/_scale.scss +13 -0
  54. data/app/pb_kits/playbook/utilities/_border_radius.scss +31 -0
  55. data/app/pb_kits/playbook/utilities/_colors.scss +3 -0
  56. data/app/pb_kits/playbook/utilities/_hover.scss +47 -0
  57. data/app/pb_kits/playbook/utilities/globalProps.ts +22 -2
  58. data/dist/playbook-rails.js +7 -7
  59. data/lib/playbook/version.rb +2 -2
  60. metadata +27 -7
@@ -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
+
@@ -0,0 +1,88 @@
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 MultiLevelSelectSelectedIds = (props) => {
72
+ return (
73
+ <div>
74
+ <MultiLevelSelect
75
+ id="multi-level-select-selected_ids"
76
+ onSelect={(selectedNodes) =>
77
+ console.log("Selected Items with Return All Selected Data", selectedNodes)
78
+ }
79
+ returnAllSelected
80
+ selectedIds={["energy1","talent1"]}
81
+ treeData={treeData}
82
+ {...props}
83
+ />
84
+ </div>
85
+ );
86
+ };
87
+
88
+ export default MultiLevelSelectSelectedIds;
@@ -0,0 +1,5 @@
1
+ `selected_ids` (Rails) / `selectedIds` (React) is an optional prop that accepts an array of ids that, if present, will mark the corresponding nodes on the treeData as checked on page load.
2
+
3
+ Items that include `checked:true` on the treeData itself will also be selected on page load, even without being passed to `selectedIds`.
4
+
5
+ When an item is marked as checked on page load by any means, the dropdown will expand to show the checked items for easier accessibility.
@@ -2,9 +2,11 @@ examples:
2
2
  rails:
3
3
  - multi_level_select_default: Default
4
4
  - multi_level_select_return_all_selected: Return All Selected
5
+ - multi_level_select_selected_ids: Selected Ids
5
6
  - multi_level_select_with_form: With Form
6
7
 
7
8
  react:
8
9
  - multi_level_select_default: Default
9
10
  - multi_level_select_return_all_selected: Return All Selected
11
+ - multi_level_select_selected_ids: Selected Ids
10
12
 
@@ -1,2 +1,3 @@
1
1
  export { default as MultiLevelSelectDefault } from './_multi_level_select_default.jsx'
2
- export { default as MultiLevelSelectReturnAllSelected } from './_multi_level_select_return_all_selected.jsx'
2
+ export { default as MultiLevelSelectReturnAllSelected } from './_multi_level_select_return_all_selected.jsx'
3
+ export { default as MultiLevelSelectSelectedIds } from "./_multi_level_select_selected_ids.jsx"
@@ -9,6 +9,8 @@ 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: []
12
14
  prop :input_display, type: Playbook::Props::Enum,
13
15
  values: %w[pills none],
14
16
  default: "pills"
@@ -24,6 +26,7 @@ module Playbook
24
26
  name: name,
25
27
  treeData: tree_data,
26
28
  returnAllSelected: return_all_selected,
29
+ selectedIds: selected_ids,
27
30
  }
28
31
  end
29
32
  end
@@ -45,6 +45,13 @@ $section_colors_dark: (
45
45
  }
46
46
  }
47
47
 
48
+ &[class*=_dashed] {
49
+ &::before, &::after {
50
+ border: 1px dashed $border_light;
51
+ background: none;
52
+ }
53
+ }
54
+
48
55
  // Dark =========================
49
56
 
50
57
  &.dark {
@@ -8,10 +8,12 @@ import Caption from '../pb_caption/_caption'
8
8
 
9
9
  type SectionSeparatorProps = {
10
10
  aria?: { [key: string]: string; },
11
+ children?: React.ReactChild[] | React.ReactChild,
11
12
  className?: string,
12
13
  dark?: boolean,
13
14
  data?: { [key: string]: string; },
14
15
  id?: string,
16
+ lineStyle?: "solid" | "dashed",
15
17
  orientation?: "horizontal" | "vertical",
16
18
  text?: string,
17
19
  variant?: "card" | "background",
@@ -20,9 +22,11 @@ type SectionSeparatorProps = {
20
22
  const SectionSeparator = (props: SectionSeparatorProps) => {
21
23
  const {
22
24
  aria = {},
25
+ children,
23
26
  className,
24
27
  data = {},
25
28
  id,
29
+ lineStyle = 'solid',
26
30
  orientation = 'horizontal',
27
31
  text,
28
32
  dark = false,
@@ -30,21 +34,22 @@ const SectionSeparator = (props: SectionSeparatorProps) => {
30
34
  } = props
31
35
  const ariaProps = buildAriaProps(aria)
32
36
  const dataProps = buildDataProps(data)
33
- const classes = classnames(buildCss('pb_section_separator_kit', variant, orientation), globalProps(props), className)
37
+ const classes = classnames(buildCss('pb_section_separator_kit', variant, orientation, lineStyle === "dashed" ? lineStyle : ""), globalProps(props), className)
34
38
 
35
39
  return (
36
40
 
37
41
  <div
38
- {...ariaProps}
39
- {...dataProps}
40
- className={classes}
41
- id={id}
42
+ {...ariaProps}
43
+ {...dataProps}
44
+ className={classes}
45
+ id={id}
42
46
  >
43
47
  {
48
+ children && children ||
44
49
  text && (
45
50
  <span>
46
- <Caption text={text} dark={dark}/>
47
- </span>
51
+ <Caption text={text} dark={dark} />
52
+ </span>
48
53
  )
49
54
  }
50
55
  </div>
@@ -0,0 +1,14 @@
1
+ <%= pb_rails("section_separator", props: { line_style: "dashed" }) do %>
2
+ <%= pb_rails("card", props: {
3
+ border_radius: "rounded",
4
+ justify_content: "center",
5
+ padding: "none"
6
+ }) do %>
7
+ <%= pb_rails("caption", props: {
8
+ text: "TODAY",
9
+ size: "xs",
10
+ padding_left: "xs",
11
+ padding_right: "xs"
12
+ }) %>
13
+ <% end %>
14
+ <% end %>
@@ -0,0 +1,30 @@
1
+ import React from 'react'
2
+ import { SectionSeparator, Card, Caption } from '../../'
3
+
4
+ const children = (
5
+ <Card
6
+ borderRadius="rounded"
7
+ justifyContent="center"
8
+ padding="none"
9
+ >
10
+ <Caption
11
+ paddingLeft="xs"
12
+ paddingRight="xs"
13
+ size="xs"
14
+ text="TODAY"
15
+ />
16
+ </Card>
17
+ )
18
+
19
+ const SectionSeparatorChildren = (props) => {
20
+ return (
21
+ <SectionSeparator
22
+ {...props}
23
+ lineStyle='dashed'
24
+ >
25
+ {children}
26
+ </SectionSeparator>
27
+ )
28
+ }
29
+
30
+ export default SectionSeparatorChildren
@@ -0,0 +1,3 @@
1
+ Pass anything (including any of our kits) to the `children` prop to customize a separator's content.
2
+
3
+ **NOTE:** passing `children` overrides any content passed to `text`
@@ -0,0 +1 @@
1
+ <%= pb_rails("section_separator", props: { line_style: "dashed" }) %>
@@ -0,0 +1,13 @@
1
+ import React from 'react'
2
+ import { SectionSeparator } from '../../'
3
+
4
+ const SectionSeparatorDashed = (props) => {
5
+ return (
6
+ <SectionSeparator
7
+ {...props}
8
+ lineStyle='dashed'
9
+ />
10
+ )
11
+ }
12
+
13
+ export default SectionSeparatorDashed
@@ -1 +1 @@
1
- <%= pb_rails("section_separator", props: { text: "Title Separator" }) %>
1
+ <%= pb_rails("section_separator", props: { text: "Text Separator" }) %>
@@ -5,7 +5,7 @@ const SectionSeparatorText = (props) => {
5
5
  return (
6
6
  <SectionSeparator
7
7
  {...props}
8
- text="Title Separator"
8
+ text="Text Separator"
9
9
  />
10
10
  )
11
11
  }
@@ -1,12 +1,15 @@
1
1
  examples:
2
2
 
3
3
  rails:
4
- - section_separator_text: Text Separator
5
4
  - section_separator_line: Line Separator
5
+ - section_separator_dashed: Dashed Separator
6
+ - section_separator_text: Text Separator
6
7
  - section_separator_vertical: Vertical
7
-
8
+ - section_separator_children: Children
8
9
 
9
10
  react:
10
- - section_separator_text: Text Separator
11
11
  - section_separator_line: Line Separator
12
+ - section_separator_dashed: Dashed Separator
13
+ - section_separator_text: Text Separator
12
14
  - section_separator_vertical: Vertical
15
+ - section_separator_children: Children
@@ -1,3 +1,5 @@
1
1
  export { default as SectionSeparatorLine } from './_section_separator_line.jsx'
2
2
  export { default as SectionSeparatorText } from './_section_separator_text.jsx'
3
3
  export { default as SectionSeparatorVertical } from './_section_separator_vertical.jsx'
4
+ export { default as SectionSeparatorDashed } from './_section_separator_dashed.jsx'
5
+ export { default as SectionSeparatorChildren } from './_section_separator_children.jsx'
@@ -4,9 +4,11 @@
4
4
  data: object.data,
5
5
  class: object.classname) do %>
6
6
  <% if object.orientation === 'horizontal' %>
7
- <% if object.text %>
7
+ <% if content %>
8
+ <%= content %>
9
+ <% elsif object.text %>
8
10
  <span><%= pb_rails("caption", props: { text: object.text }) %></span>
9
- <%end%>
11
+ <% end %>
10
12
  <% end %>
11
13
  <% if object.orientation === 'vertical' %>
12
14
  <%= pb_rails("flex", props: { orientation: "column"}) do %>