playbook_ui 14.5.0.pre.alpha.PBNTR606multilevelselectreset4035 → 14.5.0.pre.alpha.PLAY1486highchartscssdrivenPOC3930
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_bar_graph/_bar_graph.scss +54 -0
- data/app/pb_kits/playbook/pb_bar_graph/_bar_graph.tsx +5 -184
- data/app/pb_kits/playbook/pb_bar_graph/barGraph.test.js +1 -1
- data/app/pb_kits/playbook/pb_circle_chart/_circle_chart.tsx +5 -216
- data/app/pb_kits/playbook/pb_circle_chart/circleChart.test.js +1 -1
- data/app/pb_kits/playbook/pb_form_pill/_form_pill.tsx +1 -9
- data/app/pb_kits/playbook/pb_form_pill/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_form_pill/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_gantt_chart/_gantt_chart.tsx +3 -64
- data/app/pb_kits/playbook/pb_gauge/_gauge.tsx +5 -203
- data/app/pb_kits/playbook/pb_gauge/gauge.test.js +1 -1
- data/app/pb_kits/playbook/pb_line_graph/_line_graph.tsx +5 -154
- data/app/pb_kits/playbook/pb_line_graph/lineGraph.test.js +1 -1
- data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +227 -211
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_default.jsx +1 -1
- data/app/pb_kits/playbook/pb_multi_level_select/docs/example.yml +0 -4
- data/app/pb_kits/playbook/pb_multi_level_select/docs/index.js +0 -2
- data/app/pb_kits/playbook/pb_treemap_chart/_treemap_chart.tsx +5 -113
- data/app/pb_kits/playbook/pb_treemap_chart/treemapChart.test.js +1 -1
- data/app/pb_kits/playbook/pb_typeahead/_typeahead.tsx +1 -4
- data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.tsx +1 -3
- data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +1 -3
- data/dist/chunks/_typeahead-BywvWGAm.js +22 -0
- data/dist/chunks/_weekday_stacked-5OGZKZeo.js +45 -0
- data/dist/chunks/lib-DMOmCoAX.js +29 -0
- data/dist/chunks/{pb_form_validation-D9zkwt2b.js → pb_form_validation-Dna2I7fw.js} +1 -1
- data/dist/chunks/vendor.js +1 -1
- data/dist/playbook-doc.js +1 -1
- data/dist/playbook-rails-react-bindings.js +1 -1
- data/dist/playbook-rails.js +1 -1
- data/dist/playbook.css +1 -1
- data/lib/playbook/pb_doc_helper.rb +5 -5
- data/lib/playbook/version.rb +1 -1
- metadata +6 -16
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.html.erb +0 -19
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.jsx +0 -27
- data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.md +0 -1
- data/app/pb_kits/playbook/pb_multi_level_select/context/index.tsx +0 -5
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_reset.html.erb +0 -93
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children.jsx +0 -105
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children.md +0 -1
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children_with_radios.jsx +0 -106
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children_with_radios.md +0 -1
- data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select_options.tsx +0 -149
- data/dist/chunks/_typeahead-C9g4qCcE.js +0 -22
- data/dist/chunks/_weekday_stacked-Div3Fpd3.js +0 -45
- data/dist/chunks/lib-CEpcaI8y.js +0 -29
@@ -45,7 +45,7 @@ module Playbook
|
|
45
45
|
|
46
46
|
# rubocop:disable Naming/AccessorMethodName
|
47
47
|
def get_kits
|
48
|
-
menu =
|
48
|
+
menu = YAML.load_file(Playbook::Engine.root.join("dist/menu.yml"))
|
49
49
|
all_kits = []
|
50
50
|
menu["kits"].each do |kit|
|
51
51
|
kit_name = kit["name"]
|
@@ -61,7 +61,7 @@ module Playbook
|
|
61
61
|
end
|
62
62
|
|
63
63
|
def get_kits_pb_website
|
64
|
-
menu =
|
64
|
+
menu = YAML.load_file(Rails.root.join("config/menu.yml"))
|
65
65
|
menu["kits"]
|
66
66
|
end
|
67
67
|
# rubocop:enable Naming/AccessorMethodName
|
@@ -84,9 +84,9 @@ module Playbook
|
|
84
84
|
def pb_doc_kit_examples(kit, type)
|
85
85
|
example_file = pb_doc_kit_path(kit, "example.yml")
|
86
86
|
if File.exist?(example_file)
|
87
|
-
|
88
|
-
|
89
|
-
|
87
|
+
examples_list = YAML.load_file(example_file)
|
88
|
+
.inject({}) { |item, (k, v)| item[k.to_sym] = v; item }
|
89
|
+
examples_list.dig(:examples, type) || []
|
90
90
|
else
|
91
91
|
[]
|
92
92
|
end
|
data/lib/playbook/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: playbook_ui
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 14.5.0.pre.alpha.
|
4
|
+
version: 14.5.0.pre.alpha.PLAY1486highchartscssdrivenPOC3930
|
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-
|
12
|
+
date: 2024-10-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: actionpack
|
@@ -1364,9 +1364,6 @@ files:
|
|
1364
1364
|
- app/pb_kits/playbook/pb_form_pill/docs/_form_pill_size.jsx
|
1365
1365
|
- app/pb_kits/playbook/pb_form_pill/docs/_form_pill_tag.html.erb
|
1366
1366
|
- app/pb_kits/playbook/pb_form_pill/docs/_form_pill_tag.jsx
|
1367
|
-
- app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.html.erb
|
1368
|
-
- app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.jsx
|
1369
|
-
- app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.md
|
1370
1367
|
- app/pb_kits/playbook/pb_form_pill/docs/_form_pill_user.html.erb
|
1371
1368
|
- app/pb_kits/playbook/pb_form_pill/docs/_form_pill_user.jsx
|
1372
1369
|
- app/pb_kits/playbook/pb_form_pill/docs/example.yml
|
@@ -1796,7 +1793,6 @@ files:
|
|
1796
1793
|
- app/pb_kits/playbook/pb_multi_level_select/_helper_functions.tsx
|
1797
1794
|
- app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.scss
|
1798
1795
|
- app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx
|
1799
|
-
- app/pb_kits/playbook/pb_multi_level_select/context/index.tsx
|
1800
1796
|
- app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_color.html.erb
|
1801
1797
|
- app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_color.jsx
|
1802
1798
|
- app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_color_rails.md
|
@@ -1804,7 +1800,6 @@ files:
|
|
1804
1800
|
- app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_default.html.erb
|
1805
1801
|
- app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_default.jsx
|
1806
1802
|
- app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_default.md
|
1807
|
-
- app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_reset.html.erb
|
1808
1803
|
- app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_return_all_selected.html.erb
|
1809
1804
|
- app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_return_all_selected.jsx
|
1810
1805
|
- app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_return_all_selected.md
|
@@ -1818,17 +1813,12 @@ files:
|
|
1818
1813
|
- app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single_children_only.html.erb
|
1819
1814
|
- app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single_children_only.jsx
|
1820
1815
|
- app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single_children_only.md
|
1821
|
-
- app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children.jsx
|
1822
|
-
- app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children.md
|
1823
|
-
- app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children_with_radios.jsx
|
1824
|
-
- app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children_with_radios.md
|
1825
1816
|
- app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_form.html.erb
|
1826
1817
|
- app/pb_kits/playbook/pb_multi_level_select/docs/example.yml
|
1827
1818
|
- app/pb_kits/playbook/pb_multi_level_select/docs/index.js
|
1828
1819
|
- app/pb_kits/playbook/pb_multi_level_select/multi_level_select.html.erb
|
1829
1820
|
- app/pb_kits/playbook/pb_multi_level_select/multi_level_select.rb
|
1830
1821
|
- app/pb_kits/playbook/pb_multi_level_select/multi_level_select.test.jsx
|
1831
|
-
- app/pb_kits/playbook/pb_multi_level_select/multi_level_select_options.tsx
|
1832
1822
|
- app/pb_kits/playbook/pb_multiple_users/_multiple_users.scss
|
1833
1823
|
- app/pb_kits/playbook/pb_multiple_users/_multiple_users.tsx
|
1834
1824
|
- app/pb_kits/playbook/pb_multiple_users/docs/_description.md
|
@@ -3080,11 +3070,11 @@ files:
|
|
3080
3070
|
- app/pb_kits/playbook/utilities/test/globalProps/truncate.test.js
|
3081
3071
|
- app/pb_kits/playbook/utilities/text.ts
|
3082
3072
|
- app/pb_kits/playbook/utilities/validEmojiChecker.ts
|
3083
|
-
- dist/chunks/_typeahead-
|
3084
|
-
- dist/chunks/_weekday_stacked-
|
3073
|
+
- dist/chunks/_typeahead-BywvWGAm.js
|
3074
|
+
- dist/chunks/_weekday_stacked-5OGZKZeo.js
|
3085
3075
|
- dist/chunks/lazysizes-B7xYodB-.js
|
3086
|
-
- dist/chunks/lib-
|
3087
|
-
- dist/chunks/pb_form_validation-
|
3076
|
+
- dist/chunks/lib-DMOmCoAX.js
|
3077
|
+
- dist/chunks/pb_form_validation-Dna2I7fw.js
|
3088
3078
|
- dist/chunks/vendor.js
|
3089
3079
|
- dist/menu.yml
|
3090
3080
|
- dist/playbook-doc.js
|
@@ -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,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,149 +0,0 @@
|
|
1
|
-
import React, {useContext} from "react";
|
2
|
-
import classnames from "classnames";
|
3
|
-
import MultiLevelSelectContext from "./context";
|
4
|
-
import { globalProps, GlobalProps } from "../utilities/globalProps";
|
5
|
-
import {
|
6
|
-
buildAriaProps,
|
7
|
-
buildCss,
|
8
|
-
buildDataProps,
|
9
|
-
buildHtmlProps,
|
10
|
-
} from "../utilities/props";
|
11
|
-
import Checkbox from "../pb_checkbox/_checkbox";
|
12
|
-
import Radio from "../pb_radio/_radio";
|
13
|
-
import CircleIconButton from "../pb_circle_icon_button/_circle_icon_button";
|
14
|
-
import Body from "../pb_body/_body";
|
15
|
-
|
16
|
-
type MultiLevelSelectOptionsProps = {
|
17
|
-
aria?: { [key: string]: string },
|
18
|
-
children?: React.ReactNode | ((item: any) => React.ReactNode),
|
19
|
-
className?: string,
|
20
|
-
dark?: boolean,
|
21
|
-
data?: { [key: string]: string },
|
22
|
-
htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
|
23
|
-
} & GlobalProps;
|
24
|
-
|
25
|
-
const MultiLevelSelectOptions = ({
|
26
|
-
children,
|
27
|
-
items,
|
28
|
-
...props
|
29
|
-
}: MultiLevelSelectOptionsProps) => {
|
30
|
-
const {
|
31
|
-
variant,
|
32
|
-
inputName,
|
33
|
-
renderNestedOptions,
|
34
|
-
isTreeRowExpanded,
|
35
|
-
handleToggleClick,
|
36
|
-
handleRadioButtonClick,
|
37
|
-
handledropdownItemClick,
|
38
|
-
filterItem,
|
39
|
-
} = useContext(MultiLevelSelectContext)
|
40
|
-
|
41
|
-
const {
|
42
|
-
aria = {},
|
43
|
-
className,
|
44
|
-
data = {},
|
45
|
-
htmlOptions = {},
|
46
|
-
} = props;
|
47
|
-
|
48
|
-
const ariaProps = buildAriaProps(aria);
|
49
|
-
const dataProps = buildDataProps(data);
|
50
|
-
const htmlProps = buildHtmlProps(htmlOptions);
|
51
|
-
const classes = classnames(
|
52
|
-
buildCss("pb_multi_level_select_options"),
|
53
|
-
globalProps(props),
|
54
|
-
className
|
55
|
-
);
|
56
|
-
|
57
|
-
return (
|
58
|
-
<ul
|
59
|
-
{...ariaProps}
|
60
|
-
{...dataProps}
|
61
|
-
{...htmlProps}
|
62
|
-
className={classes}
|
63
|
-
>
|
64
|
-
{Array.isArray(items) &&
|
65
|
-
items.map((item: { [key: string]: any }) => {
|
66
|
-
return (
|
67
|
-
<div key={item.id}>
|
68
|
-
<li className={"dropdown_item"}
|
69
|
-
data-name={item.id}
|
70
|
-
>
|
71
|
-
<div className="dropdown_item_checkbox_row">
|
72
|
-
{!item.parent_id && !item.children ? null : (
|
73
|
-
<div
|
74
|
-
key={
|
75
|
-
isTreeRowExpanded(item)
|
76
|
-
? "chevron-down"
|
77
|
-
: "chevron-right"
|
78
|
-
}
|
79
|
-
>
|
80
|
-
<CircleIconButton
|
81
|
-
className={
|
82
|
-
item.children && item.children.length > 0
|
83
|
-
? ""
|
84
|
-
: "toggle_icon"
|
85
|
-
}
|
86
|
-
icon={
|
87
|
-
isTreeRowExpanded(item)
|
88
|
-
? "chevron-down"
|
89
|
-
: "chevron-right"
|
90
|
-
}
|
91
|
-
onClick={(event: React.MouseEvent) =>
|
92
|
-
handleToggleClick(item.id, event)
|
93
|
-
}
|
94
|
-
variant="link"
|
95
|
-
/>
|
96
|
-
</div>
|
97
|
-
)}
|
98
|
-
{variant === "single" ? (
|
99
|
-
item.hideRadio ? (
|
100
|
-
<Body>{item.label}</Body>
|
101
|
-
) : (
|
102
|
-
<Radio
|
103
|
-
checked={item.checked}
|
104
|
-
id={`${item.id}-${item.label}`}
|
105
|
-
label={item.label}
|
106
|
-
name={inputName}
|
107
|
-
onChange={(e: React.ChangeEvent<HTMLInputElement>) =>
|
108
|
-
handleRadioButtonClick(e)
|
109
|
-
}
|
110
|
-
padding={item.children ? "none" : "xs"}
|
111
|
-
type="radio"
|
112
|
-
value={item.label}
|
113
|
-
/>
|
114
|
-
)
|
115
|
-
) : (
|
116
|
-
<Checkbox id={item.id}
|
117
|
-
text={item.label}
|
118
|
-
>
|
119
|
-
<input
|
120
|
-
checked={item.checked}
|
121
|
-
name={item.label}
|
122
|
-
onChange={(e) => {
|
123
|
-
handledropdownItemClick(e, !item.checked);
|
124
|
-
}}
|
125
|
-
type="checkbox"
|
126
|
-
value={item.label}
|
127
|
-
/>
|
128
|
-
</Checkbox>
|
129
|
-
)}
|
130
|
-
{/* Render children next to the checkbox */}
|
131
|
-
{children && (
|
132
|
-
typeof children === "function" ? children(item) : children
|
133
|
-
)}
|
134
|
-
</div>
|
135
|
-
{isTreeRowExpanded(item) &&
|
136
|
-
item.children &&
|
137
|
-
item.children.length > 0 &&
|
138
|
-
(variant === "single" || !filterItem) && (
|
139
|
-
<div>{renderNestedOptions(item.children)}</div>
|
140
|
-
)}
|
141
|
-
</li>
|
142
|
-
</div>
|
143
|
-
);
|
144
|
-
})}
|
145
|
-
</ul>
|
146
|
-
);
|
147
|
-
};
|
148
|
-
|
149
|
-
export default MultiLevelSelectOptions;
|