playbook_ui 14.23.0.pre.alpha.PLAY2330removewalkthrough9176 → 14.23.0.pre.alpha.advancedtablefix9082
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.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/_playbook.scss +1 -0
- data/app/pb_kits/playbook/pb_advanced_table/Components/CustomCell.tsx +6 -7
- data/app/pb_kits/playbook/pb_advanced_table/Components/TableActionBar.tsx +10 -10
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +1 -53
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +6 -9
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.rb +2 -12
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table_action_bar.js +0 -16
- data/app/pb_kits/playbook/pb_advanced_table/scss_partials/advanced_table_sticky_mixin.scss +1 -7
- data/app/pb_kits/playbook/pb_advanced_table/table_row.html.erb +2 -2
- data/app/pb_kits/playbook/pb_checkbox/checkbox.rb +1 -12
- data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_indeterminate.html.erb +1 -1
- data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_indeterminate_rails.md +1 -2
- data/app/pb_kits/playbook/pb_checkbox/index.js +1 -3
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +1 -17
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.tsx +0 -6
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_radio_options.jsx +0 -1
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_radio_options_react.md +1 -1
- data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +2 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/index.js +1 -2
- data/app/pb_kits/playbook/pb_dropdown/dropdown.test.jsx +0 -24
- data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownOption.tsx +1 -11
- data/app/pb_kits/playbook/pb_select/select.rb +2 -4
- data/app/pb_kits/playbook/pb_table/docs/_table_with_selectable_rows.html.erb +0 -1
- data/app/pb_kits/playbook/pb_walkthrough/_walkthrough.scss +0 -0
- data/app/pb_kits/playbook/pb_walkthrough/_walkthrough.tsx +202 -0
- data/app/pb_kits/playbook/pb_walkthrough/docs/_walkthrough_continuous.jsx +69 -0
- data/app/pb_kits/playbook/pb_walkthrough/docs/_walkthrough_default.jsx +71 -0
- data/app/pb_kits/playbook/pb_walkthrough/docs/_walkthrough_multi_beacon.jsx +110 -0
- data/app/pb_kits/playbook/pb_walkthrough/docs/_walkthrough_no_beacon.jsx +76 -0
- data/app/pb_kits/playbook/pb_walkthrough/docs/_walkthrough_no_overlay.jsx +76 -0
- data/app/pb_kits/playbook/pb_walkthrough/docs/_walkthrough_styled.jsx +76 -0
- data/app/pb_kits/playbook/pb_walkthrough/docs/example.yml +10 -0
- data/app/pb_kits/playbook/pb_walkthrough/docs/index.js +6 -0
- data/app/pb_kits/playbook/pb_walkthrough/walkthrough.test.jsx +34 -0
- data/dist/chunks/_weekday_stacked-C16ua8Si.js +61 -0
- data/dist/chunks/vendor.js +1 -1
- data/dist/menu.yml +7 -0
- data/dist/playbook-doc.js +2 -2
- data/dist/playbook-rails.js +1 -1
- data/dist/playbook.css +1 -1
- data/lib/playbook/version.rb +1 -1
- metadata +14 -6
- data/app/pb_kits/playbook/pb_dropdown/_dropdown_mixin.scss +0 -36
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_active_style_options.jsx +0 -90
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_active_style_options_react.md +0 -4
- data/dist/chunks/_weekday_stacked-BF1N4Z9h.js +0 -37
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b0b8707f27e1d78520568b40d2f13050f404af79a1cbcda223db14444569aa9e
|
4
|
+
data.tar.gz: 30329a170b42fd317808886d5d6a3c54d0b76ce766e8d425f673388f4f743080
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 95a214937ae321b93e42789ae622c9690ee90b7773be34444f6c659961f39f1ed22a64448b19867419accaaebda7489431bc54d8a9a559a48be8d77a7407f256
|
7
|
+
data.tar.gz: 89966b80daf0eb0911e9c2232ab75c263d68309b6a18dc5112e599ff0b484bc5eb555cd88603b1ea4b152e1fe82bc44472cfc4e78ae68f6870991a405d254a31
|
@@ -107,6 +107,7 @@
|
|
107
107
|
@import 'pb_typeahead/typeahead';
|
108
108
|
@import 'pb_user/user';
|
109
109
|
@import 'pb_user_badge/user_badge';
|
110
|
+
@import 'pb_walkthrough/walkthrough';
|
110
111
|
@import 'pb_weekday_stacked/weekday_stacked';
|
111
112
|
@import 'pb_empty_state/empty_state';
|
112
113
|
@import 'utilities/mixins';
|
@@ -20,7 +20,7 @@ interface CustomCellProps {
|
|
20
20
|
customRenderer?: (row: Row<GenericObject>, value: string | undefined) => React.ReactNode
|
21
21
|
selectableRows?: boolean
|
22
22
|
customStyle?: GenericObject
|
23
|
-
}
|
23
|
+
}
|
24
24
|
|
25
25
|
export const CustomCell = ({
|
26
26
|
getValue,
|
@@ -35,7 +35,7 @@ export const CustomCell = ({
|
|
35
35
|
|
36
36
|
const handleOnExpand = (row: Row<GenericObject>) => {
|
37
37
|
onRowToggleClick && onRowToggleClick(row);
|
38
|
-
|
38
|
+
|
39
39
|
if (!expandedControl) {
|
40
40
|
setExpanded({ ...expanded, [row.id]: !row.getIsExpanded() });
|
41
41
|
}
|
@@ -46,8 +46,8 @@ export const CustomCell = ({
|
|
46
46
|
|
47
47
|
return (
|
48
48
|
<div style={{ paddingLeft: `${row.depth * 1.25}em`}}>
|
49
|
-
<Flex
|
50
|
-
alignItems="center"
|
49
|
+
<Flex
|
50
|
+
alignItems="center"
|
51
51
|
columnGap="xs"
|
52
52
|
justify="start"
|
53
53
|
orientation="row"
|
@@ -71,12 +71,11 @@ export const CustomCell = ({
|
|
71
71
|
>
|
72
72
|
{row.getIsExpanded() ? (
|
73
73
|
<Icon cursor="pointer"
|
74
|
-
icon="circle-play"
|
75
|
-
rotation={90}
|
74
|
+
icon="circle-play-down"
|
76
75
|
/>
|
77
76
|
) : (
|
78
77
|
<Icon cursor="pointer"
|
79
|
-
icon="circle-play"
|
78
|
+
icon="circle-play"
|
80
79
|
/>
|
81
80
|
)}
|
82
81
|
</button>
|
@@ -112,7 +112,7 @@ const TableActionBar: React.FC<TableActionBarProps> = ({
|
|
112
112
|
paddingBottom="xs"
|
113
113
|
text={node.label}
|
114
114
|
/>
|
115
|
-
<Flex flexDirection="column"
|
115
|
+
<Flex flexDirection="column"
|
116
116
|
paddingLeft="lg"
|
117
117
|
>
|
118
118
|
{node?.children?.map((child) =>
|
@@ -141,8 +141,8 @@ const TableActionBar: React.FC<TableActionBarProps> = ({
|
|
141
141
|
setShowPopover(!shouldClose)
|
142
142
|
|
143
143
|
const popoverReference = (
|
144
|
-
<Tooltip
|
145
|
-
placement="top"
|
144
|
+
<Tooltip
|
145
|
+
placement="top"
|
146
146
|
text="Column Configuration"
|
147
147
|
>
|
148
148
|
<div onClick={togglePopover}>
|
@@ -170,8 +170,8 @@ const TableActionBar: React.FC<TableActionBarProps> = ({
|
|
170
170
|
>
|
171
171
|
{type === "row-selection" ? (
|
172
172
|
<>
|
173
|
-
<Caption color="light"
|
174
|
-
paddingLeft="xs"
|
173
|
+
<Caption color="light"
|
174
|
+
paddingLeft="xs"
|
175
175
|
size="xs"
|
176
176
|
>
|
177
177
|
{selectedCount} Selected
|
@@ -188,15 +188,15 @@ const TableActionBar: React.FC<TableActionBarProps> = ({
|
|
188
188
|
zIndex={3}
|
189
189
|
>
|
190
190
|
<>
|
191
|
-
<Caption
|
192
|
-
paddingY="sm"
|
191
|
+
<Caption
|
192
|
+
paddingY="sm"
|
193
193
|
text="Columns Config"
|
194
|
-
textAlign="center"
|
194
|
+
textAlign="center"
|
195
195
|
/>
|
196
196
|
<SectionSeparator paddingBottom="xs" />
|
197
197
|
{tree.map((node: VisibilityNode) => (
|
198
|
-
<Flex cursor="pointer"
|
199
|
-
flexDirection="column"
|
198
|
+
<Flex cursor="pointer"
|
199
|
+
flexDirection="column"
|
200
200
|
key={node.id}
|
201
201
|
paddingX="xs"
|
202
202
|
>
|
@@ -124,65 +124,13 @@
|
|
124
124
|
-ms-overflow-style: none !important;
|
125
125
|
scrollbar-width: none !important;
|
126
126
|
}
|
127
|
-
|
128
|
-
// When action bar is hidden, ensure proper border radius for header corners
|
129
|
-
&.hidden-action-bar {
|
130
|
-
.pb_advanced_table_header {
|
131
|
-
> tr:first-child {
|
132
|
-
th:first-child {
|
133
|
-
border-top-left-radius: 4px !important;
|
134
|
-
}
|
135
|
-
th:last-child {
|
136
|
-
border-top-right-radius: 4px !important;
|
137
|
-
}
|
138
|
-
}
|
139
|
-
}
|
140
|
-
|
141
|
-
// Also handle the case when there are multiple header rows
|
142
|
-
.pb_advanced_table_header {
|
143
|
-
> tr:first-child {
|
144
|
-
th:first-child,
|
145
|
-
.table-header-cells:first-child,
|
146
|
-
.table-header-cells-custom:first-child {
|
147
|
-
border-top-left-radius: 4px !important;
|
148
|
-
}
|
149
|
-
th:last-child,
|
150
|
-
.table-header-cells:last-child,
|
151
|
-
.table-header-cells-custom:last-child {
|
152
|
-
border-top-right-radius: 4px !important;
|
153
|
-
}
|
154
|
-
}
|
155
|
-
}
|
156
|
-
}
|
157
|
-
|
158
|
-
// When action bar is shown, remove border radius from header
|
159
|
-
.row-selection-actions-card.is-visible ~ * .pb_advanced_table_header,
|
160
|
-
.row-selection-actions-card.show-action-card ~ * .pb_advanced_table_header {
|
161
|
-
> tr:first-child {
|
162
|
-
th:first-child,
|
163
|
-
th:last-child,
|
164
|
-
.table-header-cells:first-child,
|
165
|
-
.table-header-cells:last-child,
|
166
|
-
.table-header-cells-custom:first-child,
|
167
|
-
.table-header-cells-custom:last-child {
|
168
|
-
border-top-left-radius: 0 !important;
|
169
|
-
border-top-right-radius: 0 !important;
|
170
|
-
}
|
171
|
-
}
|
172
|
-
}
|
173
|
-
|
127
|
+
|
174
128
|
|
175
129
|
.row-selection-actions-card {
|
176
130
|
border-bottom-right-radius: 0px !important;
|
177
131
|
border-bottom-left-radius: 0px !important;
|
178
132
|
border-bottom-color: transparent;
|
179
133
|
transition: height 300ms ease;
|
180
|
-
|
181
|
-
&.is-visible,
|
182
|
-
&.show-action-card {
|
183
|
-
border-top-left-radius: 4px !important;
|
184
|
-
border-top-right-radius: 4px !important;
|
185
|
-
}
|
186
134
|
}
|
187
135
|
.table-header-cells:first-child {
|
188
136
|
min-width: 180px;
|
@@ -218,10 +218,10 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
218
218
|
)
|
219
219
|
|
220
220
|
return (
|
221
|
-
<Card
|
221
|
+
<Card
|
222
222
|
borderNone
|
223
223
|
borderRadius="none"
|
224
|
-
className="advanced-table-fullscreen-header"
|
224
|
+
className="advanced-table-fullscreen-header"
|
225
225
|
{...props}
|
226
226
|
>
|
227
227
|
<Flex justify="end">
|
@@ -250,10 +250,6 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
250
250
|
const ariaProps = buildAriaProps(aria);
|
251
251
|
const dataProps = buildDataProps(data);
|
252
252
|
const htmlProps = buildHtmlProps(htmlOptions);
|
253
|
-
|
254
|
-
// Visibility flag for action bar
|
255
|
-
const isActionBarVisible = (selectableRows && showActionsBar && selectedRowsLength > 0) || columnVisibilityControl;
|
256
|
-
|
257
253
|
const classes = classnames(
|
258
254
|
buildCss("pb_advanced_table"),
|
259
255
|
`advanced-table-responsive-${responsive}`,
|
@@ -261,8 +257,6 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
261
257
|
{
|
262
258
|
'advanced-table-fullscreen': isFullscreen,
|
263
259
|
'advanced-table-allow-fullscreen': allowFullScreen,
|
264
|
-
// Add the hidden-action-bar class when action bar functionality exists but is not visible
|
265
|
-
'hidden-action-bar': (selectableRows || columnVisibilityControl) && !isActionBarVisible,
|
266
260
|
},
|
267
261
|
{'advanced-table-sticky-left-columns': stickyLeftColumn && stickyLeftColumn.length > 0},
|
268
262
|
columnGroupBorderColor ? `column-group-border-${columnGroupBorderColor}` : '',
|
@@ -276,6 +270,9 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
276
270
|
? getVirtualizedContainerStyles(maxHeight)
|
277
271
|
: {};
|
278
272
|
|
273
|
+
// Visibility flag for action bar
|
274
|
+
const isActionBarVisible = (selectableRows && showActionsBar && selectedRowsLength > 0) || columnVisibilityControl;
|
275
|
+
|
279
276
|
// The actual Main <Table /> element
|
280
277
|
const tableElement = (
|
281
278
|
<Table
|
@@ -291,7 +288,7 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
291
288
|
) : (
|
292
289
|
<>
|
293
290
|
<TableHeader />
|
294
|
-
<TableBody
|
291
|
+
<TableBody
|
295
292
|
isFetching={isFetching}
|
296
293
|
/>
|
297
294
|
</>
|
@@ -35,12 +35,7 @@ module Playbook
|
|
35
35
|
default: []
|
36
36
|
|
37
37
|
def classname
|
38
|
-
additional_classes = [
|
39
|
-
responsive_classname,
|
40
|
-
max_height_classname,
|
41
|
-
hide_scroll_bar_class,
|
42
|
-
hidden_action_bar_class,
|
43
|
-
]
|
38
|
+
additional_classes = [responsive_classname, max_height_classname, hide_scroll_bar_class]
|
44
39
|
additional_classes << "column-group-border-#{column_group_border_color}" if column_group_border_color != "none"
|
45
40
|
generate_classname("pb_advanced_table", *additional_classes, separator: " ")
|
46
41
|
end
|
@@ -54,12 +49,7 @@ module Playbook
|
|
54
49
|
end
|
55
50
|
|
56
51
|
def hide_scroll_bar_class
|
57
|
-
scroll_bar_none ? "advanced-table-hide-scrollbar" : ""
|
58
|
-
end
|
59
|
-
|
60
|
-
def hidden_action_bar_class
|
61
|
-
# Add hidden-action-bar class when action bar functionality is enabled but not currently visible
|
62
|
-
selectable_rows && !is_action_bar_visible ? "hidden-action-bar" : ""
|
52
|
+
scroll_bar_none ? "advanced-table-hide-scrollbar " : ""
|
63
53
|
end
|
64
54
|
|
65
55
|
def selected_rows
|
@@ -1,7 +1,4 @@
|
|
1
1
|
function showActionBar(actionBar, selectedCount) {
|
2
|
-
// Get container
|
3
|
-
const tableContainer = actionBar.closest('.pb_advanced_table');
|
4
|
-
|
5
2
|
// Show action bar directly
|
6
3
|
actionBar.style.height = "auto";
|
7
4
|
actionBar.style.overflow = "visible";
|
@@ -11,11 +8,6 @@ function showActionBar(actionBar, selectedCount) {
|
|
11
8
|
actionBar.classList.remove("p_none");
|
12
9
|
actionBar.classList.add("p_xs", "is-visible", "show-action-card");
|
13
10
|
|
14
|
-
// Remove hidden-action-bar class when action bar is shown
|
15
|
-
if (tableContainer) {
|
16
|
-
tableContainer.classList.remove("hidden-action-bar");
|
17
|
-
}
|
18
|
-
|
19
11
|
// Update the count
|
20
12
|
const countElement = actionBar.querySelector(".selected-count");
|
21
13
|
if (countElement) {
|
@@ -24,20 +16,12 @@ function showActionBar(actionBar, selectedCount) {
|
|
24
16
|
}
|
25
17
|
|
26
18
|
function hideActionBar(actionBar) {
|
27
|
-
// Get container
|
28
|
-
const tableContainer = actionBar.closest('.pb_advanced_table');
|
29
|
-
|
30
19
|
// Hide action bar directly
|
31
20
|
actionBar.style.height = "0px";
|
32
21
|
actionBar.style.overflow = "hidden";
|
33
22
|
actionBar.style.opacity = "0";
|
34
23
|
actionBar.classList.add("p_none");
|
35
24
|
actionBar.classList.remove("p_xs", "is-visible", "show-action-card");
|
36
|
-
|
37
|
-
// Add hidden-action-bar class when action bar is hidden
|
38
|
-
if (tableContainer) {
|
39
|
-
tableContainer.classList.add("hidden-action-bar");
|
40
|
-
}
|
41
25
|
}
|
42
26
|
|
43
27
|
export function updateSelectionActionBar(table, selectedCount) {
|
@@ -79,14 +79,8 @@
|
|
79
79
|
left: 0;
|
80
80
|
border-radius: unset;
|
81
81
|
z-index: 5;
|
82
|
-
|
83
|
-
// Add proper border radius when action bar is visible
|
84
|
-
&.is-visible,
|
85
|
-
&.show-action-card {
|
86
|
-
border-top-left-radius: 4px !important;
|
87
|
-
border-top-right-radius: 4px !important;
|
88
|
-
}
|
89
82
|
}
|
83
|
+
|
90
84
|
.checkbox-cell {
|
91
85
|
display: table-cell !important;
|
92
86
|
}
|
@@ -39,11 +39,11 @@
|
|
39
39
|
style="color: <%= button_color %>"
|
40
40
|
>
|
41
41
|
<%= pb_rails("icon", props: { id: "advanced-table_open_icon", icon: "circle-play", cursor: "pointer" }) %>
|
42
|
-
<%= pb_rails("icon", props: { id: "advanced-table_close_icon", icon: "circle-play", cursor: "pointer"
|
42
|
+
<%= pb_rails("icon", props: { id: "advanced-table_close_icon", icon: "circle-play-down", cursor: "pointer" }) %>
|
43
43
|
</button>
|
44
44
|
<% end %>
|
45
45
|
<% end %>
|
46
|
-
<%= pb_rails("flex/flex_item") do %>
|
46
|
+
<%= pb_rails("flex/flex_item") do %>
|
47
47
|
<% if column[:custom_renderer].present? %>
|
48
48
|
<%= raw(column[:custom_renderer].call(object.row, custom_renderer_value(column, index))) %>
|
49
49
|
<% elsif index.zero? %>
|
@@ -6,8 +6,6 @@ module Playbook
|
|
6
6
|
prop :error, type: Playbook::Props::Boolean, default: false
|
7
7
|
prop :checked, type: Playbook::Props::Boolean, default: false
|
8
8
|
prop :indeterminate_main, type: Playbook::Props::Boolean, default: false
|
9
|
-
prop :indeterminate_main_labels, type: Playbook::Props::Array,
|
10
|
-
default: []
|
11
9
|
prop :indeterminate_parent
|
12
10
|
prop :text
|
13
11
|
prop :value
|
@@ -51,19 +49,10 @@ module Playbook
|
|
51
49
|
end
|
52
50
|
|
53
51
|
def data
|
54
|
-
|
52
|
+
Hash(prop(:data)).merge(
|
55
53
|
pb_checkbox_indeterminate_main: indeterminate_main,
|
56
54
|
pb_checkbox_indeterminate_parent: indeterminate_parent
|
57
55
|
)
|
58
|
-
|
59
|
-
if indeterminate_main && indeterminate_main_labels.size == 2
|
60
|
-
base_data.merge!(
|
61
|
-
pb_checkbox_indeterminate_main_label_check: indeterminate_main_labels[0],
|
62
|
-
pb_checkbox_indeterminate_main_label_uncheck: indeterminate_main_labels[1]
|
63
|
-
)
|
64
|
-
end
|
65
|
-
|
66
|
-
base_data
|
67
56
|
end
|
68
57
|
|
69
58
|
private
|
@@ -9,10 +9,10 @@
|
|
9
9
|
<tr>
|
10
10
|
<th>
|
11
11
|
<%= pb_rails("checkbox", props: {
|
12
|
+
text: "Uncheck All",
|
12
13
|
value: "checkbox-value",
|
13
14
|
name: "main-checkbox",
|
14
15
|
indeterminate_main: true,
|
15
|
-
indeterminate_main_labels: ["Check All Ice Cream", "Uncheck All Ice Cream"],
|
16
16
|
id: "indeterminate-checkbox"
|
17
17
|
}) %>
|
18
18
|
</th>
|
@@ -1,2 +1 @@
|
|
1
|
-
If you want to use indeterminate, "check/uncheck all" checkboxes, add `indeterminate_main: true` and an `id` to the main checkbox. Then, add an `indeterminate_parent` prop with the main checkbox's `id` to the children checkboxes.
|
2
|
-
If you want to customize the main checkbox labels, set an array `indeterminate_main_labels` with "Check All" and "Uncheck All" labels.
|
1
|
+
If you want to use indeterminate, "check/uncheck all" checkboxes, add `indeterminate_main: true` and an `id` to the main checkbox. Then, add an `indeterminate_parent` prop with the main checkbox's `id` to the children checkboxes.
|
@@ -23,9 +23,7 @@ export default class PbCheckbox extends PbEnhancedElement {
|
|
23
23
|
mainCheckbox.checked = checkedCount > 0;
|
24
24
|
|
25
25
|
// Determine the main checkbox label based on the number of checked checkboxes
|
26
|
-
const
|
27
|
-
const uncheckAllLabel = mainCheckboxWrapper.dataset.pbCheckboxIndeterminateMainLabelUncheck ?? 'Uncheck All'
|
28
|
-
const text = checkedCount === 0 ? checkAllLabel : uncheckAllLabel;
|
26
|
+
const text = checkedCount === 0 ? 'Check All' : 'Uncheck All';
|
29
27
|
|
30
28
|
// Determine the icon class to add and remove based on the number of checked checkboxes
|
31
29
|
const iconClassToAdd = checkedCount === 0 ? 'pb_checkbox_checkmark' : 'pb_checkbox_indeterminate';
|
@@ -8,7 +8,6 @@
|
|
8
8
|
@import "../pb_textarea/textarea_mixin";
|
9
9
|
|
10
10
|
@import "./scss_partials/dropdown_animation";
|
11
|
-
@import "dropdown_mixin";
|
12
11
|
|
13
12
|
[class*="pb_dropdown"] {
|
14
13
|
.dropdown_wrapper {
|
@@ -99,23 +98,9 @@
|
|
99
98
|
[class^="pb_title_kit"], a {
|
100
99
|
color: $white !important;
|
101
100
|
}
|
102
|
-
border-bottom: 1px solid $border_light;
|
103
101
|
&:hover {
|
104
|
-
background-color: $product_1_background;
|
105
|
-
}
|
106
|
-
|
107
|
-
// activeStyle font color map
|
108
|
-
@each $name, $color in $font-colors {
|
109
|
-
&.font-#{$name} {
|
110
|
-
@include apply-font-color($color);
|
111
|
-
}
|
102
|
+
background-color: $product_1_background !important;
|
112
103
|
}
|
113
|
-
// activeStyle background color map (no difference between selected and selected+hover custom colors)
|
114
|
-
@each $name, $bg in $background-colors {
|
115
|
-
&.bg-#{$name} {
|
116
|
-
background-color: $bg;
|
117
|
-
}
|
118
|
-
}
|
119
104
|
}
|
120
105
|
}
|
121
106
|
|
@@ -282,7 +267,6 @@
|
|
282
267
|
}
|
283
268
|
&[class*="selected"] {
|
284
269
|
background-color: $primary;
|
285
|
-
border-bottom: rgba($white, 0.15);
|
286
270
|
}
|
287
271
|
}
|
288
272
|
}
|
@@ -39,10 +39,6 @@ type DropdownProps = {
|
|
39
39
|
options: GenericObject;
|
40
40
|
separators?: boolean;
|
41
41
|
variant?: "default" | "subtle";
|
42
|
-
activeStyle?: {
|
43
|
-
backgroundColor?: string;
|
44
|
-
fontColor?: string;
|
45
|
-
};
|
46
42
|
};
|
47
43
|
|
48
44
|
interface DropdownComponent
|
@@ -73,7 +69,6 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
|
|
73
69
|
options,
|
74
70
|
separators = true,
|
75
71
|
variant = "default",
|
76
|
-
activeStyle,
|
77
72
|
} = props;
|
78
73
|
|
79
74
|
const ariaProps = buildAriaProps(aria);
|
@@ -256,7 +251,6 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
|
|
256
251
|
>
|
257
252
|
<DropdownContext.Provider
|
258
253
|
value={{
|
259
|
-
activeStyle,
|
260
254
|
autocomplete,
|
261
255
|
dropdownContainerRef,
|
262
256
|
filteredOptions,
|
@@ -18,7 +18,6 @@ const DropdownCustomRadioOptions = (props) => {
|
|
18
18
|
return (
|
19
19
|
<div>
|
20
20
|
<Dropdown
|
21
|
-
activeStyle={{ backgroundColor: "bg_light", fontColor: "text_lt_default" }}
|
22
21
|
label="Select Item"
|
23
22
|
onSelect={(selectedItem) => setSelectedValue(selectedItem?.value)}
|
24
23
|
options={options}
|
@@ -1 +1 @@
|
|
1
|
-
Radio inputs can be used inside `Dropdown.Option` for a custom layout that mimics form-like selection within a dropdown.
|
1
|
+
Radio inputs can be used inside `Dropdown.Option` for a custom layout that mimics form-like selection within a dropdown.
|
@@ -16,7 +16,7 @@ examples:
|
|
16
16
|
- dropdown_with_search_rails: Custom Trigger Dropdown with Search
|
17
17
|
- dropdown_with_custom_padding: Custom Option Padding
|
18
18
|
- dropdown_with_custom_icon_options: Custom Icon Options
|
19
|
-
# - dropdown_with_custom_radio_options: Custom Radio Options # TODO: Update and publish doc ex in
|
19
|
+
# - dropdown_with_custom_radio_options: Custom Radio Options # TODO: Update and publish doc ex in [PLAY-2146](https://runway.powerhrg.com/backlog_items/PLAY-2146) (remove this comment afterwards)
|
20
20
|
- dropdown_error: Dropdown with Error
|
21
21
|
- dropdown_default_value: Default Value
|
22
22
|
- dropdown_multi_select_with_default: Multi Select Default Value
|
@@ -39,9 +39,8 @@ examples:
|
|
39
39
|
- dropdown_with_custom_trigger: Custom Trigger
|
40
40
|
- dropdown_with_search: Custom Trigger Dropdown with Search
|
41
41
|
- dropdown_with_custom_padding: Custom Option Padding
|
42
|
-
- dropdown_with_custom_active_style_options: Custom Active Style Options
|
43
42
|
- dropdown_with_custom_icon_options: Custom Icon Options
|
44
|
-
- dropdown_with_custom_radio_options: Custom Radio Options
|
43
|
+
# - dropdown_with_custom_radio_options: Custom Radio Options # TODO: Update and publish doc ex in [PLAY-2146](https://runway.powerhrg.com/backlog_items/PLAY-2146) (remove this comment afterwards)
|
45
44
|
- dropdown_error: Dropdown with Error
|
46
45
|
- dropdown_default_value: Default Value
|
47
46
|
- dropdown_multi_select_with_default: Multi Select Default Value
|
@@ -21,5 +21,4 @@ export { default as DropdownMultiSelectWithAutocomplete } from './_dropdown_mult
|
|
21
21
|
export { default as DropdownMultiSelectWithDefault } from './_dropdown_multi_select_with_default.jsx'
|
22
22
|
export { default as DropdownMultiSelectWithCustomOptions } from './_dropdown_multi_select_with_custom_options.jsx'
|
23
23
|
export {default as DropdownWithCustomIconOptions} from './_dropdown_with_custom_icon_options.jsx'
|
24
|
-
export {default as DropdownWithCustomRadioOptions} from './_dropdown_with_custom_radio_options.jsx'
|
25
|
-
export {default as DropdownWithCustomActiveStyleOptions} from './_dropdown_with_custom_active_style_options.jsx'
|
24
|
+
export {default as DropdownWithCustomRadioOptions} from './_dropdown_with_custom_radio_options.jsx'
|
@@ -369,28 +369,4 @@ test("defaultValue works with multiSelect", () => {
|
|
369
369
|
const option2 = Array.from(kit.querySelectorAll(".pb_dropdown_option_list"));
|
370
370
|
const firstOpt = options[0].label
|
371
371
|
expect(option2[0]).not.toHaveTextContent(firstOpt)
|
372
|
-
})
|
373
|
-
|
374
|
-
test("applies activeStyle backgroundColor and fontColor when selected", () => {
|
375
|
-
render(
|
376
|
-
<Dropdown
|
377
|
-
activeStyle={{
|
378
|
-
backgroundColor: "bg_light",
|
379
|
-
fontColor: "primary",
|
380
|
-
}}
|
381
|
-
data={{ testid: testId }}
|
382
|
-
options={options}
|
383
|
-
/>
|
384
|
-
)
|
385
|
-
|
386
|
-
const kit = screen.getByTestId(testId)
|
387
|
-
const option = kit.querySelectorAll(".pb_dropdown_option_list")[1]
|
388
|
-
|
389
|
-
fireEvent.click(option)
|
390
|
-
|
391
|
-
const selected = kit.querySelector(".pb_dropdown_option_selected")
|
392
|
-
|
393
|
-
expect(selected).toBeInTheDocument()
|
394
|
-
expect(selected).toHaveClass("bg-bg_light")
|
395
|
-
expect(selected).toHaveClass("font-primary")
|
396
372
|
})
|
@@ -41,7 +41,6 @@ const DropdownOption = (props: DropdownOptionProps) => {
|
|
41
41
|
} = props;
|
42
42
|
|
43
43
|
const {
|
44
|
-
activeStyle,
|
45
44
|
filteredOptions,
|
46
45
|
filterItem,
|
47
46
|
focusedOptionIndex,
|
@@ -60,6 +59,7 @@ const DropdownOption = (props: DropdownOptionProps) => {
|
|
60
59
|
? selected.some((item) => item.label === option?.label)
|
61
60
|
: (selected as GenericObject)?.label === option?.label;
|
62
61
|
|
62
|
+
|
63
63
|
if (!isItemMatchingFilter(option) || (multiSelect && isSelected)) {
|
64
64
|
return null;
|
65
65
|
}
|
@@ -70,14 +70,6 @@ const DropdownOption = (props: DropdownOptionProps) => {
|
|
70
70
|
|
71
71
|
const selectedClass = isSelected ? "selected" : "list";
|
72
72
|
|
73
|
-
|
74
|
-
const bgTokenClass = activeStyle?.backgroundColor
|
75
|
-
? `bg-${activeStyle.backgroundColor}`
|
76
|
-
: "";
|
77
|
-
const fontTokenClass = activeStyle?.fontColor
|
78
|
-
? `font-${activeStyle.fontColor}`
|
79
|
-
: "";
|
80
|
-
|
81
73
|
const ariaProps = buildAriaProps(aria);
|
82
74
|
const dataProps = buildDataProps(data);
|
83
75
|
const htmlProps = buildHtmlProps(htmlOptions);
|
@@ -87,8 +79,6 @@ const DropdownOption = (props: DropdownOptionProps) => {
|
|
87
79
|
selectedClass,
|
88
80
|
focusedClass,
|
89
81
|
),
|
90
|
-
bgTokenClass,
|
91
|
-
fontTokenClass,
|
92
82
|
globalProps(props),
|
93
83
|
className
|
94
84
|
);
|
@@ -24,9 +24,7 @@ module Playbook
|
|
24
24
|
prop :validation_message, type: Playbook::Props::String, default: ""
|
25
25
|
|
26
26
|
def classnames
|
27
|
-
|
28
|
-
.reject(&:empty?)
|
29
|
-
.join(" ")
|
27
|
+
classname + inline_class + compact_class + show_arrow_class
|
30
28
|
end
|
31
29
|
|
32
30
|
def all_attributes
|
@@ -46,7 +44,7 @@ module Playbook
|
|
46
44
|
end
|
47
45
|
|
48
46
|
def inline_class
|
49
|
-
inline ? "inline" : ""
|
47
|
+
inline ? " inline " : " "
|
50
48
|
end
|
51
49
|
|
52
50
|
def compact_class
|
File without changes
|