playbook_ui 16.0.0 → 16.1.0.pre.rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_icon/icon.rb +6 -1
  3. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +7 -0
  4. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options.md +1 -1
  5. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single_disabled.html.erb +135 -0
  6. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single_disabled.jsx +147 -0
  7. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single_disabled.md +1 -0
  8. data/app/pb_kits/playbook/pb_multi_level_select/docs/example.yml +2 -0
  9. data/app/pb_kits/playbook/pb_multi_level_select/docs/index.js +1 -0
  10. data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.test.jsx +402 -27
  11. data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select_options.tsx +1 -0
  12. data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_with_tooltip.html.erb +30 -0
  13. data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_with_tooltip.jsx +1 -1
  14. data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_with_tooltip.md +1 -1
  15. data/app/pb_kits/playbook/pb_multiple_users/docs/example.yml +1 -0
  16. data/app/pb_kits/playbook/pb_multiple_users/multiple_users.html.erb +51 -7
  17. data/app/pb_kits/playbook/pb_multiple_users/multiple_users.rb +1 -0
  18. data/app/pb_kits/playbook/pb_radio/_radio.scss +8 -0
  19. data/dist/chunks/{_pb_line_graph-ByQFYuFO.js → _pb_line_graph-hxi01lk7.js} +1 -1
  20. data/dist/chunks/_typeahead-BgLnlhzP.js +1 -0
  21. data/dist/chunks/{globalProps-D6R2eJnp.js → globalProps-DgYwLYNx.js} +1 -1
  22. data/dist/chunks/{lib-C8h70OzX.js → lib-NLxTo8OB.js} +2 -2
  23. data/dist/chunks/vendor.js +3 -3
  24. data/dist/playbook-rails-react-bindings.js +1 -1
  25. data/dist/playbook-rails.js +1 -1
  26. data/dist/playbook.css +1 -1
  27. data/lib/playbook/version.rb +2 -2
  28. metadata +10 -6
  29. data/dist/chunks/_typeahead-Bl8_gWmz.js +0 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 375e5a9a2040cbf190b9ed83ef91adb015b7347eff80afd264b3423996f9efdb
4
- data.tar.gz: 26f03e82a99ac0e51a20674952021e5acd7237f12b64184c02c465a4d1b203f6
3
+ metadata.gz: 417316b6bfeb02f46d29a9daa9fc6bccd490cffd020f4569d84a3d4ea52b8c34
4
+ data.tar.gz: 3b0839900fc4f979e353a7f7efe1b5d5c2d3f7d2a67aa46eabd8d4bcb9d2d6d0
5
5
  SHA512:
6
- metadata.gz: 7dcc49c34e7d3623cd943c7136ca99b1a58cb5bb479bf13377ea013f0e5ae67a0c83b25252aeab89e7ca2d7296b31ea0b719563fe1d8ee6955f02fff52827412
7
- data.tar.gz: 73943f8daa01fec691f0ebcfb3e2c6d1e6f2ae47dc073ba862fda8aad8d0f0c08f7e92bf54bda7531f0ba12cb9d3bcd87b3322cd9feb092782694ff562b1fdd1
6
+ metadata.gz: b2cd2d914be8f665656c2992f46523369558857bc21fccb957ef5177d3585353f3b82e86ab6a626bba0f2db88d7de71e4d21dcc48d9c324cafc3d3cf19bdae1b
7
+ data.tar.gz: 82d3240c1359f6a8ecf636d7e1dba9fc8a73e5a5ec244027f93e1a14bd67c8c619302609adf530dfddf25888f4995ab1e3e476314a9300b33963301d0f206c26
@@ -109,13 +109,18 @@ module Playbook
109
109
 
110
110
  svg["class"] = %w[pb_custom_icon svg-inline--fa].concat([object.custom_icon_classname]).join(" ")
111
111
  svg["id"] = object.id
112
- svg["data"] = object.data
113
112
  svg["height"] = "auto"
114
113
  svg["width"] = "auto"
115
114
  svg["tabindex"] = object.tabindex
116
115
  fill_color = object.color || "currentColor"
117
116
  doc.at_css("path")["fill"] = fill_color
118
117
 
118
+ if object.data.present?
119
+ object.data.each do |key, value|
120
+ svg["data-#{key}"] = value
121
+ end
122
+ end
123
+
119
124
  if object.aria.present?
120
125
  object.aria.each do |key, value|
121
126
  k = key.to_s
@@ -358,6 +358,13 @@ const MultiLevelSelect = forwardRef<HTMLInputElement, MultiLevelSelectProps>((pr
358
358
  const { id, value: inputText } = e.target;
359
359
  // The radio button needs a unique ID, this grabs the ID before the hyphen
360
360
  const selectedItemID = id.match(/^[^-]*/)[0];
361
+
362
+ // Check if the item is disabled - if so, don't allow selection (safety check in addition to native disabled attribute)
363
+ const clickedItem = filterFormattedDataById(formattedData, selectedItemID);
364
+ if (clickedItem.length > 0 && clickedItem[0].disabled) {
365
+ return;
366
+ }
367
+
361
368
  // Reset tree checked state, triggering useEffect
362
369
  const treeWithNoSelections = modifyRecursive(formattedData, false);
363
370
  // Update tree with single selection
@@ -1 +1 @@
1
- individual items can also be disabled by including the `disabled:true` within the object on the treeData for the `returnAllSelected`/`return_all_selected` variant. As noted above, this variant will return data on all checked nodes from the dropdown, irrespective of whether it is a parent or child node.
1
+ Individual items can also be disabled by including the `disabled:true` within the object on the treeData for the `returnAllSelected`/`return_all_selected` variant. As noted above, this variant will return data on all checked nodes from the dropdown, irrespective of whether it is a parent or child node.
@@ -0,0 +1,135 @@
1
+ <% treeData = [
2
+ {
3
+ label: "HQ",
4
+ value: "hQ",
5
+ id: "hq2",
6
+ },
7
+ {
8
+ label: "Philadelphia",
9
+ value: "philadelphia",
10
+ id: "phl2",
11
+ disabled: true,
12
+ children: [
13
+ {
14
+ label: "Marketing & Sales PHL",
15
+ value: "marketingAndSalesPhl",
16
+ id: "marketingPHL2",
17
+ },
18
+ {
19
+ label: "Installation Office PHL",
20
+ value: "installationOfficePhl",
21
+ id: "installationPHL2",
22
+ },
23
+ {
24
+ label: "Warehouse PHL",
25
+ value: "warehousePhl",
26
+ id: "warehousePHL2",
27
+ },
28
+ ]
29
+ },
30
+ {
31
+ label: "New Jersey",
32
+ value: "newJersey",
33
+ id: "nj2",
34
+ children: [
35
+ {
36
+ label: "New Jersey",
37
+ value: "newJersey",
38
+ id: "nj12",
39
+ children: [
40
+ {
41
+ label: "Marketing & Sales NJ",
42
+ value: "marketingAndSalesNj",
43
+ id: "marketingNJ2",
44
+ disabled: true,
45
+ },
46
+ {
47
+ label: "Installation Office NJ",
48
+ value: "installationOfficeNj",
49
+ id: "installationNJ2",
50
+ },
51
+ {
52
+ label: "Warehouse NJ",
53
+ value: "warehouseNj",
54
+ id: "warehouseNJ2",
55
+ },
56
+ ],
57
+ },
58
+ {
59
+ label: "Princeton",
60
+ value: "princeton",
61
+ id: "princeton2",
62
+ children: [
63
+ {
64
+ label: "Marketing & Sales Princeton",
65
+ value: "marketingAndSalesPrinceton",
66
+ id: "marketingPR2",
67
+ },
68
+ {
69
+ label: "Installation Office Princeton",
70
+ value: "installationOfficePrinceton",
71
+ id: "installationPR2",
72
+ disabled: true,
73
+ },
74
+ {
75
+ label: "Warehouse Princeton",
76
+ value: "warehousePrinceton",
77
+ id: "warehousePR2",
78
+ },
79
+ ]
80
+ },
81
+ ]
82
+ },
83
+ {
84
+ label: "Maryland",
85
+ value: "maryland",
86
+ id: "MD2",
87
+ children: [
88
+ {
89
+ label: "Marketing & Sales MD",
90
+ value: "marketingAndSalesMd",
91
+ id: "marketingMD2",
92
+ },
93
+ {
94
+ label: "Installation Office MD",
95
+ value: "installationOfficeMd",
96
+ id: "installationMD2",
97
+ },
98
+ {
99
+ label: "Warehouse MD",
100
+ value: "warehouseMd",
101
+ id: "warehouseMD2",
102
+ },
103
+ ]
104
+ },
105
+ {
106
+ label: "Connecticut",
107
+ value: "connecticut",
108
+ id: "CT2",
109
+ children: [
110
+ {
111
+ label: "Marketing & Sales CT",
112
+ value: "marketingAndSalesCt",
113
+ id: "marketingCT2",
114
+ },
115
+ {
116
+ label: "Installation Office CT",
117
+ value: "installationOfficeCt",
118
+ id: "installationCT2",
119
+ },
120
+ {
121
+ label: "Warehouse CT",
122
+ value: "warehouseCt",
123
+ id: "warehouseCT2",
124
+ },
125
+ ]
126
+ },
127
+ ] %>
128
+
129
+ <%= pb_rails("multi_level_select", props: {
130
+ id: "multi-level-select-single-disabled-rails",
131
+ name: "single_disabled",
132
+ tree_data: treeData,
133
+ input_name: "Power",
134
+ variant: "single"
135
+ }) %>
@@ -0,0 +1,147 @@
1
+ import React from "react";
2
+ import MultiLevelSelect from "../_multi_level_select";
3
+
4
+ const treeData = [
5
+ {
6
+ label: "HQ",
7
+ value: "hQ",
8
+ id: "hq2",
9
+ },
10
+ {
11
+ label: "Philadelphia",
12
+ value: "philadelphia",
13
+ id: "phl2",
14
+ disabled: true,
15
+ children: [
16
+ {
17
+ label: "Marketing & Sales PHL",
18
+ value: "marketingAndSalesPhl",
19
+ id: "marketingPHL2",
20
+ },
21
+ {
22
+ label: "Installation Office PHL",
23
+ value: "installationOfficePhl",
24
+ id: "installationPHL2",
25
+ },
26
+ {
27
+ label: "Warehouse PHL",
28
+ value: "warehousePhl",
29
+ id: "warehousePHL2",
30
+ },
31
+ ]
32
+ },
33
+ {
34
+ label: "New Jersey",
35
+ value: "newJersey",
36
+ id: "nj2",
37
+ children: [
38
+ {
39
+ label: "New Jersey",
40
+ value: "newJersey",
41
+ id: "nj12",
42
+ children: [
43
+ {
44
+ label: "Marketing & Sales NJ",
45
+ value: "marketingAndSalesNj",
46
+ id: "marketingNJ2",
47
+ disabled: true,
48
+ },
49
+ {
50
+ label: "Installation Office NJ",
51
+ value: "installationOfficeNj",
52
+ id: "installationNJ2",
53
+ },
54
+ {
55
+ label: "Warehouse NJ",
56
+ value: "warehouseNj",
57
+ id: "warehouseNJ2",
58
+ },
59
+ ],
60
+ },
61
+ {
62
+ label: "Princeton",
63
+ value: "princeton",
64
+ id: "princeton2",
65
+ children: [
66
+ {
67
+ label: "Marketing & Sales Princeton",
68
+ value: "marketingAndSalesPrinceton",
69
+ id: "marketingPR2",
70
+ },
71
+ {
72
+ label: "Installation Office Princeton",
73
+ value: "installationOfficePrinceton",
74
+ id: "installationPR2",
75
+ disabled: true,
76
+ },
77
+ {
78
+ label: "Warehouse Princeton",
79
+ value: "warehousePrinceton",
80
+ id: "warehousePR2",
81
+ },
82
+ ]
83
+ },
84
+ ]
85
+ },
86
+ {
87
+ label: "Maryland",
88
+ value: "maryland",
89
+ id: "MD2",
90
+ children: [
91
+ {
92
+ label: "Marketing & Sales MD",
93
+ value: "marketingAndSalesMd",
94
+ id: "marketingMD2",
95
+ },
96
+ {
97
+ label: "Installation Office MD",
98
+ value: "installationOfficeMd",
99
+ id: "installationMD2",
100
+ },
101
+ {
102
+ label: "Warehouse MD",
103
+ value: "warehouseMd",
104
+ id: "warehouseMD2",
105
+ },
106
+ ]
107
+ },
108
+ {
109
+ label: "Connecticut",
110
+ value: "connecticut",
111
+ id: "CT2",
112
+ children: [
113
+ {
114
+ label: "Marketing & Sales CT",
115
+ value: "marketingAndSalesCt",
116
+ id: "marketingCT2",
117
+ },
118
+ {
119
+ label: "Installation Office CT",
120
+ value: "installationOfficeCt",
121
+ id: "installationCT2",
122
+ },
123
+ {
124
+ label: "Warehouse CT",
125
+ value: "warehouseCt",
126
+ id: "warehouseCT2",
127
+ },
128
+ ]
129
+ },
130
+ ];
131
+
132
+ const MultiLevelSelectSingleDisabled = (props) => {
133
+ return (
134
+ <div>
135
+ <MultiLevelSelect
136
+ id="multiselect-single-disabled"
137
+ inputName="Power"
138
+ onSelect={(selectedNode) => console.log("Selected Node", selectedNode)}
139
+ treeData={treeData}
140
+ variant="single"
141
+ {...props}
142
+ />
143
+ </div>
144
+ )
145
+ };
146
+
147
+ export default MultiLevelSelectSingleDisabled;
@@ -0,0 +1 @@
1
+ Individual items can be disabled by including `disabled: true` within the object on the treeData for the `single` variant. Disabled options are visibly disabled in the dropdown UI and cannot be selected via mouse click or keyboard navigation. When a parent node is disabled, all of its children are automatically disabled as well.
@@ -15,6 +15,7 @@ examples:
15
15
  - multi_level_select_disabled_options: Disabled Options (Return All Selected)
16
16
  - multi_level_select_disabled_options_parent_default: Disabled Parent Option (Default)
17
17
  - multi_level_select_disabled_options_parent: Disabled Parent Option (Return All Selected)
18
+ - multi_level_select_single_disabled: Disabled Options (Single Select)
18
19
 
19
20
  react:
20
21
  - multi_level_select_default: Default
@@ -33,3 +34,4 @@ examples:
33
34
  - multi_level_select_disabled_options: Disabled Options (Return All Selected)
34
35
  - multi_level_select_disabled_options_parent_default: Disabled Parent Option (Default)
35
36
  - multi_level_select_disabled_options_parent: Disabled Parent Option (Return All Selected)
37
+ - multi_level_select_single_disabled: Disabled Options (Single Select)
@@ -14,3 +14,4 @@ export { default as MultiLevelSelectDisabledOptionsParent } from './_multi_level
14
14
  export { default as MultiLevelSelectDisabledOptionsParentDefault } from './_multi_level_select_disabled_options_parent_default.jsx'
15
15
  export { default as MultiLevelSelectDisabledOptionsDefault } from './_multi_level_select_disabled_options_default.jsx'
16
16
  export { default as MultiLevelSelectLabel } from './_multi_level_select_label.jsx'
17
+ export { default as MultiLevelSelectSingleDisabled } from './_multi_level_select_single_disabled.jsx'