playbook_ui_docs 14.5.0.pre.alpha.play1586datearea4115 → 14.5.0.pre.alpha.psych4support3941

Sign up to get free protection for your applications and to get access to all the features.
Files changed (27) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +0 -1
  3. data/app/pb_kits/playbook/pb_dropdown/docs/index.js +0 -1
  4. data/app/pb_kits/playbook/pb_filter/docs/_filter_default.jsx +1 -1
  5. data/app/pb_kits/playbook/pb_form_pill/docs/example.yml +0 -2
  6. data/app/pb_kits/playbook/pb_form_pill/docs/index.js +0 -1
  7. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_default.jsx +1 -1
  8. data/app/pb_kits/playbook/pb_multi_level_select/docs/example.yml +0 -4
  9. data/app/pb_kits/playbook/pb_multi_level_select/docs/index.js +0 -2
  10. data/app/pb_kits/playbook/pb_timeline/docs/example.yml +1 -2
  11. data/app/pb_kits/playbook/pb_timeline/docs/index.js +0 -1
  12. data/dist/playbook-doc.js +1 -1
  13. metadata +2 -16
  14. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_clear_selection.jsx +0 -45
  15. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_clear_selection.md +0 -1
  16. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.html.erb +0 -19
  17. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.jsx +0 -27
  18. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.md +0 -1
  19. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_reset.html.erb +0 -93
  20. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_reset.md +0 -1
  21. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children.jsx +0 -105
  22. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children.md +0 -1
  23. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children_with_radios.jsx +0 -106
  24. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children_with_radios.md +0 -1
  25. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_with_children.html.erb +0 -43
  26. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_with_children.jsx +0 -72
  27. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_with_children.md +0 -4
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: playbook_ui_docs
3
3
  version: !ruby/object:Gem::Version
4
- version: 14.5.0.pre.alpha.play1586datearea4115
4
+ version: 14.5.0.pre.alpha.psych4support3941
5
5
  platform: ruby
6
6
  authors:
7
7
  - Power UX
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2024-10-17 00:00:00.000000000 Z
12
+ date: 2024-10-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: playbook_ui
@@ -663,8 +663,6 @@ files:
663
663
  - app/pb_kits/playbook/pb_drawer/docs/index.js
664
664
  - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_blank_selection.html.erb
665
665
  - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_blank_selection.jsx
666
- - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_clear_selection.jsx
667
- - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_clear_selection.md
668
666
  - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default.html.erb
669
667
  - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default.jsx
670
668
  - app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default.md
@@ -838,9 +836,6 @@ files:
838
836
  - app/pb_kits/playbook/pb_form_pill/docs/_form_pill_size.jsx
839
837
  - app/pb_kits/playbook/pb_form_pill/docs/_form_pill_tag.html.erb
840
838
  - app/pb_kits/playbook/pb_form_pill/docs/_form_pill_tag.jsx
841
- - app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.html.erb
842
- - app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.jsx
843
- - app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.md
844
839
  - app/pb_kits/playbook/pb_form_pill/docs/_form_pill_user.html.erb
845
840
  - app/pb_kits/playbook/pb_form_pill/docs/_form_pill_user.jsx
846
841
  - app/pb_kits/playbook/pb_form_pill/docs/example.yml
@@ -1141,8 +1136,6 @@ files:
1141
1136
  - app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_default.html.erb
1142
1137
  - app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_default.jsx
1143
1138
  - app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_default.md
1144
- - app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_reset.html.erb
1145
- - app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_reset.md
1146
1139
  - app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_return_all_selected.html.erb
1147
1140
  - app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_return_all_selected.jsx
1148
1141
  - app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_return_all_selected.md
@@ -1156,10 +1149,6 @@ files:
1156
1149
  - app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single_children_only.html.erb
1157
1150
  - app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single_children_only.jsx
1158
1151
  - app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single_children_only.md
1159
- - app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children.jsx
1160
- - app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children.md
1161
- - app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children_with_radios.jsx
1162
- - app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children_with_radios.md
1163
1152
  - app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_form.html.erb
1164
1153
  - app/pb_kits/playbook/pb_multi_level_select/docs/example.yml
1165
1154
  - app/pb_kits/playbook/pb_multi_level_select/docs/index.js
@@ -1783,9 +1772,6 @@ files:
1783
1772
  - app/pb_kits/playbook/pb_timeline/docs/_timeline_default.jsx
1784
1773
  - app/pb_kits/playbook/pb_timeline/docs/_timeline_vertical.html.erb
1785
1774
  - app/pb_kits/playbook/pb_timeline/docs/_timeline_vertical.jsx
1786
- - app/pb_kits/playbook/pb_timeline/docs/_timeline_with_children.html.erb
1787
- - app/pb_kits/playbook/pb_timeline/docs/_timeline_with_children.jsx
1788
- - app/pb_kits/playbook/pb_timeline/docs/_timeline_with_children.md
1789
1775
  - app/pb_kits/playbook/pb_timeline/docs/_timeline_with_date.html.erb
1790
1776
  - app/pb_kits/playbook/pb_timeline/docs/_timeline_with_date.jsx
1791
1777
  - app/pb_kits/playbook/pb_timeline/docs/_timeline_with_date.md
@@ -1,45 +0,0 @@
1
- import React, { useRef } from 'react'
2
- import { Button, Dropdown } from 'playbook-ui'
3
-
4
- const options = [
5
- {
6
- label: "United States",
7
- value: "United States",
8
- },
9
- {
10
- label: "Canada",
11
- value: "Canada",
12
- },
13
- {
14
- label: "Pakistan",
15
- value: "Pakistan",
16
- }
17
- ]
18
-
19
- const DropdownClearSelection = (props) => {
20
- const dropdownRef = useRef(null)
21
-
22
- const handleReset = () => {
23
- if (dropdownRef.current) {
24
- dropdownRef.current.clearSelected()
25
- }
26
- }
27
-
28
- return (
29
- <>
30
- <Dropdown
31
- defaultValue={options[2]}
32
- options={options}
33
- ref={dropdownRef}
34
- {...props}
35
- />
36
- <Button
37
- marginTop="md"
38
- onClick={handleReset}
39
- text="Reset"
40
- />
41
- </>
42
- )
43
- }
44
-
45
- export default DropdownClearSelection
@@ -1 +0,0 @@
1
- To use an external control (like a reset button) to clear Dropdown selection, you can make use of the `useRef` hook. You must pass a ref to the Dropdown component and use that ref within the onClick for the external control in the way shown in the code snippet below.
@@ -1,19 +0,0 @@
1
- <%
2
- names = [
3
- { label: 'Alexander Nathaniel Montgomery', value: 'Alexander Nathaniel Montgomery' },
4
- { label: 'Isabella Anastasia Wellington', value: 'Isabella Anastasia Wellington' },
5
- { label: 'Christopher Maximilian Harrington', value: 'Christopher Maximilian Harrington' },
6
- { label: 'Elizabeth Seraphina Kensington', value: 'Elizabeth Seraphina Kensington' },
7
- { label: 'Theodore Jonathan Abernathy', value: 'Theodore Jonathan Abernathy' },
8
- ]
9
- %>
10
-
11
- <%= pb_rails("typeahead", props: {
12
- html_options: { style: { maxWidth: "240px" }},
13
- id: "typeahead-form-pill",
14
- is_multi: true,
15
- options: names,
16
- label: "Names",
17
- pills: true,
18
- truncate: 1,
19
- }) %>
@@ -1,27 +0,0 @@
1
- import React from 'react'
2
- import Typeahead from '../../pb_typeahead/_typeahead'
3
-
4
- const names = [
5
- { label: 'Alexander Nathaniel Montgomery', value: 'Alexander Nathaniel Montgomery' },
6
- { label: 'Isabella Anastasia Wellington', value: 'Isabella Anastasia Wellington' },
7
- { label: 'Christopher Maximilian Harrington', value: 'Christopher Maximilian Harrington' },
8
- { label: 'Elizabeth Seraphina Kensington', value: 'Elizabeth Seraphina Kensington' },
9
- { label: 'Theodore Jonathan Abernathy', value: 'Theodore Jonathan Abernathy' },
10
- ]
11
-
12
- const FormPillTruncatedText = (props) => {
13
- return (
14
- <>
15
- <Typeahead
16
- htmlOptions={{ style: { maxWidth: "240px" }}}
17
- isMulti
18
- label="Names"
19
- options={names}
20
- truncate={1}
21
- {...props}
22
- />
23
- </>
24
- )
25
- }
26
-
27
- export default FormPillTruncatedText
@@ -1 +0,0 @@
1
- For pills with longer text, the `truncate` global prop can be used to truncate the label within each Form Pill. See [here](https://playbook.powerapp.cloud/visual_guidelines/truncate) for more information on the truncate global prop.
@@ -1,93 +0,0 @@
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
- expanded: true,
12
- children: [
13
- {
14
- label: "Talent Acquisition",
15
- value: "Talent Acquisition",
16
- id: "102",
17
- },
18
- {
19
- label: "Business Affairs",
20
- value: "Business Affairs",
21
- id: "103",
22
- children: [
23
- {
24
- label: "Initiatives",
25
- value: "Initiatives",
26
- id: "104",
27
- },
28
- {
29
- label: "Learning & Development",
30
- value: "Learning & Development",
31
- id: "105",
32
- },
33
- ],
34
- },
35
- {
36
- label: "People Experience",
37
- value: "People Experience",
38
- id: "106",
39
- },
40
- ],
41
- },
42
- {
43
- label: "Contact Center",
44
- value: "Contact Center",
45
- id: "107",
46
- children: [
47
- {
48
- label: "Appointment Management",
49
- value: "Appointment Management",
50
- id: "108",
51
- },
52
- {
53
- label: "Customer Service",
54
- value: "Customer Service",
55
- id: "109",
56
- },
57
- {
58
- label: "Energy",
59
- value: "Energy",
60
- id: "110",
61
- },
62
- ],
63
- },
64
- ],
65
- }] %>
66
-
67
- <%= pb_rails("multi_level_select", props: {
68
- id: "multi-level-select-reset-example",
69
- name: "my_array",
70
- tree_data: treeData,
71
- return_all_selected: true
72
- }) %>
73
-
74
- <%= pb_rails("button", props: { text: "Reset", margin_top: "lg", id:"multilevelselect-reset-button" }) %>
75
-
76
-
77
- <script>
78
- window.addEventListener('DOMContentLoaded', () => {
79
- const exampleResetButton = document.querySelector("#multilevelselect-reset-button");
80
-
81
- exampleResetButton.addEventListener("click", () => {
82
- clearMultiLevelSelectById('multi-level-select-reset-example');
83
- });
84
- function clearMultiLevelSelectById(id) {
85
- const clearFunction = window[`clearMultiLevelSelect_${id}`];
86
- if (clearFunction) {
87
- clearFunction();
88
- } else {
89
- console.warn(`No clear function found for MultiLevelSelect with id: ${id}`);
90
- }
91
- }
92
- })
93
- </script>
@@ -1 +0,0 @@
1
- In order to clear the multilevelselect selection using an external trigger (like a reset button), the `clearMultiLevelSelect` function can be used. See the code snippet below to see this in action. The function is scoped by id so an id MUST be used on the multilevelselect kit and passed to the function as shown for it to work.
@@ -1,105 +0,0 @@
1
- import React from "react";
2
- import MultiLevelSelect from "../_multi_level_select";
3
- import Badge from "../../pb_badge/_badge";
4
-
5
- const treeData = [
6
- {
7
- label: "Power Home Remodeling",
8
- value: "Power Home Remodeling",
9
- id: "powerhome1",
10
- expanded: true,
11
- children: [
12
- {
13
- label: "People",
14
- value: "People",
15
- id: "people1",
16
- expanded: true,
17
- status: "active",
18
- children: [
19
- {
20
- label: "Talent Acquisition",
21
- value: "Talent Acquisition",
22
- id: "talent1",
23
- },
24
- {
25
- label: "Business Affairs",
26
- value: "Business Affairs",
27
- id: "business1",
28
- status: "active",
29
- variant: "primary",
30
-
31
- children: [
32
- {
33
- label: "Initiatives",
34
- value: "Initiatives",
35
- id: "initiative1",
36
- },
37
- {
38
- label: "Learning & Development",
39
- value: "Learning & Development",
40
- id: "development1",
41
- status: "Inactive",
42
- },
43
- ],
44
- },
45
- {
46
- label: "People Experience",
47
- value: "People Experience",
48
- id: "experience1",
49
- },
50
- ],
51
- },
52
- {
53
- label: "Contact Center",
54
- value: "Contact Center",
55
- id: "contact1",
56
- status: "Inactive",
57
- variant: "error",
58
- children: [
59
- {
60
- label: "Appointment Management",
61
- value: "Appointment Management",
62
- id: "appointment1",
63
- },
64
- {
65
- label: "Customer Service",
66
- value: "Customer Service",
67
- id: "customer1",
68
- },
69
- {
70
- label: "Energy",
71
- value: "Energy",
72
- id: "energy1",
73
- },
74
- ],
75
- },
76
- ],
77
- },
78
- ];
79
-
80
- const MultiLevelSelectWithChildren = (props) => {
81
- return (
82
- <div>
83
- <MultiLevelSelect
84
- id="multiselect-with-children"
85
- onSelect={(selectedNodes) =>
86
- console.log("Selected Items", selectedNodes)
87
- }
88
- treeData={treeData}
89
- {...props}
90
- >
91
- <MultiLevelSelect.Options>
92
- {(item) => (
93
- <Badge
94
- marginLeft="sm"
95
- text={item.status}
96
- variant={item.status === "active" ? "success" : "warning"}
97
- />
98
- )}
99
- </MultiLevelSelect.Options>
100
- </MultiLevelSelect>
101
- </div>
102
- );
103
- };
104
-
105
- export default MultiLevelSelectWithChildren;
@@ -1 +0,0 @@
1
- The MultiLevelSelect also provides a subcomponent structure which can be used to render children to the right of the Checkboxes and their labels. As seen in the code snippet below, these children have access to the current item being iterated over which can be used for conditional rendering.
@@ -1,106 +0,0 @@
1
- import React from "react";
2
- import MultiLevelSelect from "../_multi_level_select";
3
- import Badge from "../../pb_badge/_badge";
4
-
5
- const treeData = [
6
- {
7
- label: "Power Home Remodeling",
8
- value: "Power Home Remodeling",
9
- id: "powerhome1",
10
- expanded: true,
11
- children: [
12
- {
13
- label: "People",
14
- value: "People",
15
- id: "people1",
16
- expanded: true,
17
- status: "active",
18
- children: [
19
- {
20
- label: "Talent Acquisition",
21
- value: "Talent Acquisition",
22
- id: "talent1",
23
- },
24
- {
25
- label: "Business Affairs",
26
- value: "Business Affairs",
27
- id: "business1",
28
- status: "active",
29
- variant: "primary",
30
-
31
- children: [
32
- {
33
- label: "Initiatives",
34
- value: "Initiatives",
35
- id: "initiative1",
36
- },
37
- {
38
- label: "Learning & Development",
39
- value: "Learning & Development",
40
- id: "development1",
41
- status: "Inactive",
42
- },
43
- ],
44
- },
45
- {
46
- label: "People Experience",
47
- value: "People Experience",
48
- id: "experience1",
49
- },
50
- ],
51
- },
52
- {
53
- label: "Contact Center",
54
- value: "Contact Center",
55
- id: "contact1",
56
- status: "Inactive",
57
- variant: "error",
58
- children: [
59
- {
60
- label: "Appointment Management",
61
- value: "Appointment Management",
62
- id: "appointment1",
63
- },
64
- {
65
- label: "Customer Service",
66
- value: "Customer Service",
67
- id: "customer1",
68
- },
69
- {
70
- label: "Energy",
71
- value: "Energy",
72
- id: "energy1",
73
- },
74
- ],
75
- },
76
- ],
77
- },
78
- ];
79
-
80
- const MultiLevelSelectWithChildrenWithRadios = (props) => {
81
- return (
82
- <div>
83
- <MultiLevelSelect
84
- id="multiselect-with-children"
85
- onSelect={(selectedNodes) =>
86
- console.log("Selected Items", selectedNodes)
87
- }
88
- treeData={treeData}
89
- variant="single"
90
- {...props}
91
- >
92
- <MultiLevelSelect.Options>
93
- {(item) => (
94
- <Badge
95
- marginLeft="sm"
96
- text={item.status}
97
- variant={item.status === "active" ? "success" : "warning"}
98
- />
99
- )}
100
- </MultiLevelSelect.Options>
101
- </MultiLevelSelect>
102
- </div>
103
- );
104
- };
105
-
106
- export default MultiLevelSelectWithChildrenWithRadios;
@@ -1 +0,0 @@
1
- The MultiLevelSelect subcomponent structure is also available in the 'Single Select' variant. In this variant, the children will be rendered to the right of the Radios and their labels.
@@ -1,43 +0,0 @@
1
- <%= pb_rails("timeline", props: {orientation: "horizontal", show_date: true}) do %>
2
- <%= pb_rails("timeline/item", props: { line_style: "solid"}) do |item| %>
3
-
4
- <% item.date_area do %>
5
- <%= pb_rails("timeline/date_area") do %>
6
- <%= pb_rails("title", props: { text: "Any Kit Here", size: 2 }) %>
7
- <% end %>
8
- <% end %>
9
-
10
- <% item.node_area do %>
11
- <%= pb_rails("timeline/node_area", props: { icon: 'check', icon_color: 'teal' }) %>
12
- <% end %>
13
-
14
- <% item.detail_area do %>
15
- <%= pb_rails("title_detail", props: {
16
- title: "Jackson Heights",
17
- detail: "37-27 74th Street"
18
- }) %>
19
- <% end %>
20
- <% end %>
21
- <%= pb_rails("timeline/item", props: { line_style: "dotted"}) do |item| %>
22
-
23
- <% item.node_area do %>
24
- <%= pb_rails("timeline/node_area") do %>
25
- <%= pb_rails("pill", props: { text: "Any Kit" , variant: "success" }) %>
26
- <% end %>
27
- <% end %>
28
-
29
- <% item.detail_area do %>
30
- <%= pb_rails("title_detail", props: {
31
- title: "Greenpoint",
32
- detail: "81 Gate St Brooklyn"
33
- }) %>
34
- <% end %>
35
- <% end %>
36
-
37
- <%= pb_rails("timeline/item", props: {icon: "map-marker-alt", icon_color: "purple", date: Date.today+1 }) do |item| %>
38
- <%= pb_rails("title_detail", props: {
39
- title: "Society Hill",
40
- detail: "72 E St Astoria"
41
- }) %>
42
- <% end %>
43
- <% end %>
@@ -1,72 +0,0 @@
1
- import React from 'react'
2
-
3
- import Timeline from '../_timeline'
4
- import TimelineItem from '../_item'
5
- import TimelineDateArea from '../_date_area'
6
- import TimelineNodeArea from '../_node_area'
7
- import TimelineDetailArea from '../_detail_area'
8
- import Title from '../../pb_title/_title'
9
- import Pill from '../../pb_pill/_pill'
10
-
11
- import TitleDetail from '../../pb_title_detail/_title_detail'
12
-
13
- const TimelineWithChildren = (props) => (
14
- <div>
15
- <Timeline orientation="horizontal"
16
- showDate
17
- {...props}
18
- >
19
- <TimelineItem lineStyle="solid"
20
- {...props}
21
- >
22
- <TimelineDateArea>
23
- <Title size={2}
24
- text='Any Kit Here'
25
- />
26
- </TimelineDateArea>
27
- <TimelineNodeArea icon="user"
28
- iconColor="royal"
29
- />
30
- <TimelineDetailArea>
31
- <TitleDetail detail="37-27 74th Street"
32
- title="Jackson Heights"
33
- {...props}
34
- />
35
- </TimelineDetailArea>
36
- </TimelineItem>
37
-
38
- <TimelineItem lineStyle="dotted"
39
- {...props}
40
- >
41
- <TimelineNodeArea>
42
- <Pill text="Any Kit"
43
- variant="success"
44
- />
45
- </TimelineNodeArea>
46
- <TimelineDetailArea>
47
- <TitleDetail detail="81 Gate St Brooklyn"
48
- title="Greenpoint"
49
- {...props}
50
- />
51
- </TimelineDetailArea>
52
- </TimelineItem>
53
-
54
- <TimelineItem lineStyle="solid"
55
- {...props}
56
- >
57
- <TimelineDateArea date={new Date(new Date().setDate(new Date().getDate() + 1))} />
58
- <TimelineNodeArea icon="map-marker-alt"
59
- iconColor="purple"
60
- />
61
- <TimelineDetailArea>
62
- <TitleDetail detail="72 E St Astoria"
63
- title="Society Hill"
64
- {...props}
65
- />
66
- </TimelineDetailArea>
67
- </TimelineItem>
68
- </Timeline>
69
- </div>
70
- )
71
-
72
- export default TimelineWithChildren
@@ -1,4 +0,0 @@
1
- You can use whatever kit you want for the date area of the timeline item, the node area, and the content area at the bottom or left.
2
-
3
- Checkout the code in this example to see the children kits in action.
4
-