playbook_ui 14.19.0.pre.alpha.play2125phonenumberinputcountrysearcherrorstylefix7698 → 14.19.0.pre.rc.0
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/_advanced_table.scss +21 -304
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +1 -5
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.rb +1 -6
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_beta.md +6 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_selectable_rows_no_subrows_react.jsx → _advanced_table_selectable_rows_no_subrows.jsx} +2 -2
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_no_subrows_rails.md +1 -5
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_rails.md +2 -3
- data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +5 -6
- data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +2 -3
- data/app/pb_kits/playbook/pb_advanced_table/index.js +11 -228
- data/app/pb_kits/playbook/pb_advanced_table/table_body.rb +1 -9
- data/app/pb_kits/playbook/pb_advanced_table/table_header.rb +3 -0
- data/app/pb_kits/playbook/pb_advanced_table/table_row.rb +2 -1
- data/app/pb_kits/playbook/pb_avatar/_avatar.scss +0 -4
- data/app/pb_kits/playbook/pb_avatar/_avatar.tsx +0 -3
- data/app/pb_kits/playbook/pb_avatar/avatar.html.erb +3 -3
- data/app/pb_kits/playbook/pb_avatar/avatar.rb +0 -2
- data/app/pb_kits/playbook/pb_avatar/avatar.test.js +0 -18
- data/app/pb_kits/playbook/pb_avatar/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_avatar/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_card/card.html.erb +1 -1
- data/app/pb_kits/playbook/pb_card/card.rb +0 -12
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_error.html.erb +2 -2
- data/app/pb_kits/playbook/pb_draggable/docs/example.yml +1 -4
- data/app/pb_kits/playbook/pb_draggable/docs/index.js +1 -2
- data/app/pb_kits/playbook/pb_draggable/draggable.rb +1 -9
- data/app/pb_kits/playbook/pb_draggable/draggable_container.rb +1 -11
- data/app/pb_kits/playbook/pb_draggable/draggable_item.rb +1 -11
- data/app/pb_kits/playbook/pb_draggable/index.js +142 -141
- data/app/pb_kits/playbook/pb_draggable/subcomponents/DraggableItem.tsx +5 -33
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +0 -5
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.tsx +16 -5
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_error.html.erb +2 -5
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete.jsx +64 -17
- data/app/pb_kits/playbook/pb_dropdown/docs/{_dropdown_with_autocomplete_with_subcomponents.jsx → _dropdown_with_autocomplete_and_custom_display.jsx} +25 -11
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete_and_custom_display.md +1 -0
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_hook.jsx +79 -0
- data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +4 -7
- data/app/pb_kits/playbook/pb_dropdown/docs/index.js +2 -2
- data/app/pb_kits/playbook/pb_dropdown/dropdown.html.erb +2 -2
- data/app/pb_kits/playbook/pb_dropdown/dropdown.rb +0 -4
- data/app/pb_kits/playbook/pb_dropdown/dropdown.test.jsx +1 -45
- data/app/pb_kits/playbook/pb_dropdown/dropdown_container.html.erb +0 -10
- data/app/pb_kits/playbook/pb_dropdown/dropdown_container.rb +0 -3
- data/app/pb_kits/playbook/pb_dropdown/dropdown_trigger.html.erb +2 -12
- data/app/pb_kits/playbook/pb_dropdown/dropdown_trigger.rb +1 -3
- data/app/pb_kits/playbook/pb_dropdown/index.js +0 -57
- data/app/pb_kits/playbook/pb_dropdown/keyboard_accessibility.js +0 -26
- data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownContainer.tsx +2 -1
- data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownTrigger.tsx +4 -4
- data/app/pb_kits/playbook/pb_empty_state/_empty_state.scss +1 -8
- data/app/pb_kits/playbook/pb_empty_state/docs/example.yml +1 -5
- data/app/pb_kits/playbook/pb_filter/docs/example.yml +0 -1
- data/app/pb_kits/playbook/pb_form_group/_error_state_mixin.scss +18 -22
- data/app/pb_kits/playbook/pb_gantt_chart/_gantt_chart.scss +3 -0
- data/app/pb_kits/playbook/pb_gantt_chart/_gantt_chart.tsx +72 -0
- data/app/pb_kits/playbook/pb_gantt_chart/docs/_gantt_chart_default.jsx +53 -0
- data/app/pb_kits/playbook/pb_gantt_chart/docs/example.yml +7 -0
- data/app/pb_kits/playbook/pb_gantt_chart/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_gantt_chart/gantt_chart.test.jsx +19 -0
- data/app/pb_kits/playbook/pb_line_graph/docs/example.yml +0 -1
- data/app/pb_kits/playbook/pb_line_graph/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_message/_message.tsx +0 -3
- data/app/pb_kits/playbook/pb_message/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_message/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_message/message.html.erb +1 -2
- data/app/pb_kits/playbook/pb_message/message.rb +0 -1
- data/app/pb_kits/playbook/pb_overlay/_overlay.scss +1 -2
- data/app/pb_kits/playbook/pb_overlay/docs/_overlay_vertical_dynamic_multi_directional.jsx +1 -1
- data/app/pb_kits/playbook/pb_overlay/subcomponents/_overlay_token.tsx +4 -5
- data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.scss +8 -21
- data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +1 -3
- data/app/pb_kits/playbook/pb_phone_number_input/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_phone_number_input/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_phone_number_input/phone_number_input.rb +0 -3
- data/app/pb_kits/playbook/pb_phone_number_input/phone_number_input.test.js +0 -19
- data/app/pb_kits/playbook/pb_popover/docs/example.yml +0 -1
- data/app/pb_kits/playbook/pb_popover/index.ts +1 -13
- data/app/pb_kits/playbook/pb_popover/popover.rb +0 -2
- data/app/pb_kits/playbook/pb_select/_select.scss +0 -10
- data/app/pb_kits/playbook/pb_select/docs/_select_error.html.erb +1 -1
- data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click.jsx +7 -7
- data/app/pb_kits/playbook/pb_table/subcomponents/_table_row.tsx +5 -5
- data/app/pb_kits/playbook/pb_text_input/_text_input.scss +2 -4
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_error.html.erb +1 -1
- data/app/pb_kits/playbook/pb_textarea/docs/_textarea_error.html.erb +1 -5
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_error_state.html.erb +1 -8
- data/app/pb_kits/playbook/pb_user/_user.tsx +0 -3
- data/app/pb_kits/playbook/pb_user/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_user/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_user/user.html.erb +1 -2
- data/app/pb_kits/playbook/pb_user/user.rb +0 -1
- data/dist/chunks/_typeahead-BX8IifKY.js +22 -0
- data/dist/chunks/_weekday_stacked-DfMD7HJz.js +45 -0
- data/dist/chunks/{lib-DwFasxbk.js → lib-96_ZmvAo.js} +1 -1
- data/dist/chunks/{pb_form_validation-nnXW3T-3.js → pb_form_validation-Vv2TqXVC.js} +1 -1
- data/dist/chunks/vendor.js +1 -1
- data/dist/menu.yml +14 -6
- data/dist/playbook-doc.js +2 -2
- 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/version.rb +2 -2
- metadata +23 -58
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_border_color.jsx +0 -80
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_border_color.md +0 -3
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_border_color_rails.html.erb +0 -58
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_border_color_rails.md +0 -3
- data/app/pb_kits/playbook/pb_advanced_table/flat_advanced_table.js +0 -106
- data/app/pb_kits/playbook/pb_avatar/docs/_avatar_grayscale.html.erb +0 -5
- data/app/pb_kits/playbook/pb_avatar/docs/_avatar_grayscale.jsx +0 -16
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones.html.erb +0 -64
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_colors.html.erb +0 -55
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_colors_rails.md +0 -1
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_line.html.erb +0 -55
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_line_rails.md +0 -5
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_rails.md +0 -5
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_event_listeners.jsx +0 -59
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_event_listeners_react.md +0 -1
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete.html.erb +0 -28
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete_with_subcomponents.html.erb +0 -58
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete_with_subcomponents.md +0 -1
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_external_control.md +0 -1
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_search.jsx +0 -61
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_search.md +0 -2
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_search_rails.html.erb +0 -52
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_search_rails.md +0 -2
- data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_alignment.html.erb +0 -27
- data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_default.html.erb +0 -7
- data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_orientation.html.erb +0 -12
- data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_size.html.erb +0 -23
- data/app/pb_kits/playbook/pb_empty_state/empty_state.html.erb +0 -19
- data/app/pb_kits/playbook/pb_empty_state/empty_state.rb +0 -123
- data/app/pb_kits/playbook/pb_filter/docs/_filter_within_turbo_frames.html.erb +0 -41
- data/app/pb_kits/playbook/pb_filter/docs/_filter_within_turbo_frames.md +0 -1
- data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_pb_styles.jsx +0 -52
- data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_pb_styles.md +0 -1
- data/app/pb_kits/playbook/pb_line_graph/lineGraphTheme.ts +0 -110
- data/app/pb_kits/playbook/pb_message/docs/_message_grayscale.html.erb +0 -9
- data/app/pb_kits/playbook/pb_message/docs/_message_grayscale.jsx +0 -21
- data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_country_search.html.erb +0 -10
- data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_country_search.jsx +0 -20
- data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_country_search.md +0 -1
- data/app/pb_kits/playbook/pb_popover/docs/_popover_append_to.html.erb +0 -46
- data/app/pb_kits/playbook/pb_popover/docs/_popover_append_to.md +0 -1
- data/app/pb_kits/playbook/pb_user/docs/_user_grayscale.html.erb +0 -6
- data/app/pb_kits/playbook/pb_user/docs/_user_grayscale.jsx +0 -16
- data/dist/chunks/_typeahead-BQV04mOl.js +0 -22
- data/dist/chunks/_weekday_stacked-CVwWr8B2.js +0 -45
- /data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_selectable_rows_rails.html.erb → _advanced_table_selectable_rows.html.erb} +0 -0
- /data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_selectable_rows_no_subrows_rails.html.erb → _advanced_table_selectable_rows_no_subrows.html.erb} +0 -0
- /data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_selectable_rows.md → _advanced_table_selectable_rows_react.md} +0 -0
- /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_drop_zones_react.md → _draggable_drop_zones.md} +0 -0
- /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_drop_zones_colors_react.md → _draggable_drop_zones_colors.md} +0 -0
- /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_drop_zones_line_react.md → _draggable_drop_zones_line.md} +0 -0
- /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_event_listeners_rails.md → _draggable_event_listeners.md} +0 -0
@@ -9,182 +9,12 @@ export default class PbAdvancedTable extends PbEnhancedElement {
|
|
9
9
|
return ADVANCED_TABLE_SELECTOR;
|
10
10
|
}
|
11
11
|
|
12
|
-
updateTableSelectedRowsAttribute() {
|
13
|
-
const mainTable = this.element.closest(".pb_advanced_table");
|
14
|
-
mainTable.dataset.selectedRows = JSON.stringify(Array.from(PbAdvancedTable.selectedRows));
|
15
|
-
}
|
16
|
-
|
17
|
-
// Check if the row is expanded or collapsed
|
18
|
-
// This is used to determine the background color of the row
|
19
|
-
// when the checkbox is checked or unchecked
|
20
|
-
isRowExpanded(rowEl) {
|
21
|
-
const closeIcon = rowEl.querySelector(UP_ARROW_SELECTOR);
|
22
|
-
return closeIcon?.style.display === "none" || !closeIcon;
|
23
|
-
}
|
24
|
-
|
25
|
-
updateParentCheckboxes(checkbox) {
|
26
|
-
const rowEl = checkbox.closest("tr");
|
27
|
-
if (!rowEl) return;
|
28
|
-
|
29
|
-
const table = rowEl.closest("table");
|
30
|
-
if (!table) return;
|
31
|
-
|
32
|
-
const contentTrail = rowEl.dataset.advancedTableContent;
|
33
|
-
if (!contentTrail) return;
|
34
|
-
|
35
|
-
const ancestorIds = contentTrail.split("-").slice(0, -1);
|
36
|
-
|
37
|
-
ancestorIds.reverse();
|
38
|
-
ancestorIds.forEach((ancestorId) => {
|
39
|
-
const parentRowSelector = `[data-advanced-table-content$="${ancestorId}"]`;
|
40
|
-
const parentRow = table.querySelector(parentRowSelector);
|
41
|
-
if (!parentRow) return;
|
42
|
-
|
43
|
-
const parentLabel = parentRow.querySelector("label[data-row-id]");
|
44
|
-
if (!parentLabel) return;
|
45
|
-
|
46
|
-
const parentCheckbox = parentLabel.querySelector(
|
47
|
-
"input[type='checkbox']"
|
48
|
-
);
|
49
|
-
if (!parentCheckbox) return;
|
50
|
-
|
51
|
-
// Find all immediate children of parent linked to ancestor Id, filter our subrow headers
|
52
|
-
const children = Array.from(
|
53
|
-
table.querySelectorAll(`tr[data-row-parent$="_${ancestorId}"]`)
|
54
|
-
).filter((child) => {
|
55
|
-
const content = child.dataset.advancedTableContent;
|
56
|
-
return !(content && content.endsWith("sr"));
|
57
|
-
});
|
58
|
-
|
59
|
-
const allChildrenChecked = Array.from(children).every((child) => {
|
60
|
-
const childLabel = child.querySelector("label[data-row-id]");
|
61
|
-
if (!childLabel) return false;
|
62
|
-
const childCheckbox = childLabel.querySelector(
|
63
|
-
"input[type='checkbox']"
|
64
|
-
);
|
65
|
-
if (!childCheckbox) return false;
|
66
|
-
return childCheckbox.checked;
|
67
|
-
});
|
68
|
-
|
69
|
-
// Update parent checkbox
|
70
|
-
parentCheckbox.checked = allChildrenChecked;
|
71
|
-
|
72
|
-
const parentCheckboxId = parentCheckbox.id;
|
73
|
-
if (allChildrenChecked) {
|
74
|
-
PbAdvancedTable.selectedRows.add(parentCheckboxId);
|
75
|
-
parentRow.classList.add("bg-row-selection");
|
76
|
-
parentRow.classList.remove("bg-white", "bg-silver");
|
77
|
-
} else {
|
78
|
-
PbAdvancedTable.selectedRows.delete(parentCheckboxId);
|
79
|
-
}
|
80
|
-
if (!allChildrenChecked) {
|
81
|
-
parentRow.classList.remove("bg-row-selection");
|
82
|
-
|
83
|
-
if (this.isRowExpanded(parentRow)) {
|
84
|
-
parentRow.classList.remove("bg-silver");
|
85
|
-
parentRow.classList.add("bg-white");
|
86
|
-
} else {
|
87
|
-
parentRow.classList.remove("bg-white");
|
88
|
-
parentRow.classList.add("bg-silver");
|
89
|
-
}
|
90
|
-
}
|
91
|
-
});
|
92
|
-
}
|
93
|
-
|
94
|
-
handleCheckboxClick(event) {
|
95
|
-
const checkbox = event.currentTarget;
|
96
|
-
const rowId = checkbox.id;
|
97
|
-
const isChecked = checkbox.checked;
|
98
|
-
const rowEl = checkbox.closest("tr");
|
99
|
-
|
100
|
-
if (isChecked) {
|
101
|
-
PbAdvancedTable.selectedRows.add(rowId);
|
102
|
-
rowEl.classList.add("bg-row-selection");
|
103
|
-
rowEl.classList.remove("bg-white", "bg-silver");
|
104
|
-
} else {
|
105
|
-
PbAdvancedTable.selectedRows.delete(rowId);
|
106
|
-
}
|
107
|
-
// Update background color on row
|
108
|
-
if (!isChecked) {
|
109
|
-
rowEl.classList.remove("bg-row-selection");
|
110
|
-
|
111
|
-
if (this.isRowExpanded(rowEl)) {
|
112
|
-
rowEl.classList.remove("bg-silver");
|
113
|
-
rowEl.classList.add("bg-white");
|
114
|
-
} else {
|
115
|
-
rowEl.classList.remove("bg-white");
|
116
|
-
rowEl.classList.add("bg-silver");
|
117
|
-
}
|
118
|
-
}
|
119
|
-
if (rowEl) {
|
120
|
-
const table = rowEl.closest("table");
|
121
|
-
const rowContent = rowEl.dataset.advancedTableContent;
|
122
|
-
|
123
|
-
if (rowContent) {
|
124
|
-
const childRows = table.querySelectorAll(
|
125
|
-
`[data-advanced-table-content^="${rowContent}-"]`
|
126
|
-
);
|
127
|
-
|
128
|
-
childRows.forEach((childRow) => {
|
129
|
-
const label = childRow.querySelector("label[data-row-id]");
|
130
|
-
if (!label) return;
|
131
|
-
|
132
|
-
const childCheckbox = label.querySelector("input[type='checkbox']");
|
133
|
-
if (!childCheckbox) return;
|
134
|
-
|
135
|
-
childCheckbox.checked = isChecked;
|
136
|
-
|
137
|
-
const childRowId = childCheckbox.id;
|
138
|
-
const childRowEl = childCheckbox.closest("tr");
|
139
|
-
if (isChecked) {
|
140
|
-
PbAdvancedTable.selectedRows.add(childRowId);
|
141
|
-
childRowEl?.classList.add("bg-row-selection");
|
142
|
-
childRowEl?.classList.remove("bg-white", "bg-silver");
|
143
|
-
} else {
|
144
|
-
PbAdvancedTable.selectedRows.delete(childRowId);
|
145
|
-
}
|
146
|
-
if (!isChecked) {
|
147
|
-
childRowEl?.classList.remove("bg-row-selection");
|
148
|
-
|
149
|
-
if (this.isRowExpanded(childRowEl)) {
|
150
|
-
childRowEl?.classList.remove("bg-silver");
|
151
|
-
childRowEl?.classList.add("bg-white");
|
152
|
-
} else {
|
153
|
-
childRowEl?.classList.remove("bg-white");
|
154
|
-
childRowEl?.classList.add("bg-silver");
|
155
|
-
}
|
156
|
-
}
|
157
|
-
});
|
158
|
-
}
|
159
|
-
}
|
160
|
-
|
161
|
-
this.updateParentCheckboxes(checkbox);
|
162
|
-
|
163
|
-
this.updateTableSelectedRowsAttribute();
|
164
|
-
|
165
|
-
const table = checkbox.closest("table");
|
166
|
-
const selectAllCheckbox = table.querySelector("#select-all-rows");
|
167
|
-
|
168
|
-
if (selectAllCheckbox) {
|
169
|
-
const allCheckboxes = table.querySelectorAll(
|
170
|
-
"label[data-row-id] input[type='checkbox']"
|
171
|
-
);
|
172
|
-
const allChecked = Array.from(allCheckboxes).every((cb) => cb.checked);
|
173
|
-
|
174
|
-
const selectAllInput = selectAllCheckbox.querySelector(
|
175
|
-
'input[type="checkbox"]'
|
176
|
-
);
|
177
|
-
selectAllInput.checked = allChecked;
|
178
|
-
}
|
179
|
-
}
|
180
|
-
|
181
12
|
get target() {
|
182
13
|
const table = this.element.closest("table");
|
183
14
|
return table.querySelectorAll(`[data-row-parent="${this.element.id}"]`);
|
184
15
|
}
|
185
16
|
|
186
17
|
static expandedRows = new Set();
|
187
|
-
static selectedRows = new Set();
|
188
18
|
static isCollapsing = false;
|
189
19
|
|
190
20
|
connect() {
|
@@ -201,31 +31,17 @@ export default class PbAdvancedTable extends PbEnhancedElement {
|
|
201
31
|
this.toggleElement(this.target);
|
202
32
|
}
|
203
33
|
});
|
204
|
-
|
205
|
-
this.hideCloseIcon()
|
206
|
-
|
207
|
-
const
|
208
|
-
|
209
|
-
|
210
|
-
if (table.dataset.pbAdvancedTableInitialized) return;
|
211
|
-
table.dataset.pbAdvancedTableInitialized = "true";
|
212
|
-
|
213
|
-
// Bind checkbox change handlers for all row checkboxes
|
214
|
-
const checkboxLabels = table.querySelectorAll("label[data-row-id]");
|
215
|
-
checkboxLabels.forEach((label) => {
|
216
|
-
const checkbox = label.querySelector("input[type='checkbox']");
|
217
|
-
if (!checkbox) return;
|
218
|
-
checkbox.addEventListener("change", (event) => {
|
219
|
-
this.handleCheckboxClick(event);
|
220
|
-
});
|
221
|
-
});
|
222
|
-
|
223
|
-
// Bind nested row expansion logic
|
224
|
-
const nestedButtons = table.querySelectorAll("[data-advanced-table]");
|
34
|
+
|
35
|
+
this.hideCloseIcon()
|
36
|
+
|
37
|
+
const nestedButtons = this.element
|
38
|
+
.closest("table")
|
39
|
+
.querySelectorAll("[data-advanced-table]");
|
225
40
|
nestedButtons.forEach((button) => {
|
226
41
|
button.addEventListener("click", () => {
|
227
42
|
const isExpanded =
|
228
|
-
button.querySelector(UP_ARROW_SELECTOR).style.display ===
|
43
|
+
button.querySelector(UP_ARROW_SELECTOR).style.display ===
|
44
|
+
"inline-block";
|
229
45
|
if (isExpanded) {
|
230
46
|
PbAdvancedTable.expandedRows.add(button.id);
|
231
47
|
} else {
|
@@ -233,46 +49,12 @@ export default class PbAdvancedTable extends PbEnhancedElement {
|
|
233
49
|
}
|
234
50
|
});
|
235
51
|
});
|
236
|
-
|
237
|
-
// Bind select-all logic for this table
|
238
|
-
const selectAllCheckbox = table.querySelector("#select-all-rows");
|
239
|
-
if (selectAllCheckbox) {
|
240
|
-
selectAllCheckbox.addEventListener("change", () => {
|
241
|
-
const checkboxInput = selectAllCheckbox.querySelector('input[type="checkbox"]');
|
242
|
-
const checkAll = checkboxInput.checked;
|
243
|
-
|
244
|
-
const checkboxes = Array.from(
|
245
|
-
table.querySelectorAll("label[data-row-id] input[type='checkbox']")
|
246
|
-
);
|
247
|
-
|
248
|
-
checkboxes.forEach((cb) => {
|
249
|
-
cb.checked = checkAll;
|
250
|
-
const rowId = cb.id;
|
251
|
-
const rowEl = cb.closest("tr");
|
252
|
-
|
253
|
-
if (checkAll) {
|
254
|
-
PbAdvancedTable.selectedRows.add(rowId);
|
255
|
-
rowEl?.classList.add("bg-row-selection");
|
256
|
-
rowEl?.classList.remove("bg-white", "bg-silver");
|
257
|
-
} else {
|
258
|
-
PbAdvancedTable.selectedRows.delete(rowId);
|
259
|
-
rowEl?.classList.remove("bg-row-selection");
|
260
|
-
rowEl?.classList.add("bg-white");
|
261
|
-
}
|
262
|
-
});
|
263
|
-
|
264
|
-
checkboxes.forEach((cb) => this.updateParentCheckboxes(cb));
|
265
|
-
|
266
|
-
this.updateTableSelectedRowsAttribute();
|
267
|
-
});
|
268
|
-
}
|
269
52
|
}
|
270
|
-
|
271
53
|
|
272
54
|
hideCloseIcon() {
|
273
55
|
const closeIcon = this.element.querySelector(UP_ARROW_SELECTOR);
|
274
56
|
closeIcon.style.display = "none";
|
275
|
-
|
57
|
+
}
|
276
58
|
|
277
59
|
showElement(elements) {
|
278
60
|
elements.forEach((elem) => {
|
@@ -369,6 +151,7 @@ export default class PbAdvancedTable extends PbEnhancedElement {
|
|
369
151
|
}
|
370
152
|
}
|
371
153
|
|
154
|
+
|
372
155
|
displayDownArrow() {
|
373
156
|
this.element.querySelector(DOWN_ARROW_SELECTOR).style.display =
|
374
157
|
"inline-block";
|
@@ -455,4 +238,4 @@ window.expandAllRows = (element) => {
|
|
455
238
|
|
456
239
|
window.expandAllSubRows = (element, rowDepth) => {
|
457
240
|
PbAdvancedTable.handleToggleAllSubRows(element, rowDepth);
|
458
|
-
};
|
241
|
+
};
|
@@ -55,15 +55,7 @@ module Playbook
|
|
55
55
|
# Subrow header if applicable
|
56
56
|
output << pb_rails("advanced_table/table_subrow_header", props: { row: row, column_definitions: leaf_columns, depth: current_depth, subrow_header: subrow_headers[current_depth - 1], collapsible_trail: collapsible_trail, classname: "toggle-content", responsive: responsive, subrow_data_attributes: subrow_data_attributes }) if is_first_child_of_subrow && enable_toggle_expansion == "all"
|
57
57
|
|
58
|
-
current_data_attributes =
|
59
|
-
{
|
60
|
-
row_depth: 0,
|
61
|
-
advanced_table_content: row.object_id.to_s,
|
62
|
-
row_parent: nil,
|
63
|
-
}
|
64
|
-
else
|
65
|
-
table_data_attributes
|
66
|
-
end
|
58
|
+
current_data_attributes = current_depth.zero? ? { row_depth: 0 } : table_data_attributes
|
67
59
|
|
68
60
|
# Additional class and data attributes needed for toggle logic
|
69
61
|
output << pb_rails("advanced_table/table_row", props: { id: id, row: row, column_definitions: leaf_columns, depth: current_depth, collapsible_trail: collapsible_trail, classname: additional_classes, table_data_attributes: current_data_attributes, responsive: responsive, loading: loading, selectable_rows: selectable_rows, row_id: row[:id], enable_toggle_expansion: enable_toggle_expansion })
|
@@ -60,7 +60,7 @@ module Playbook
|
|
60
60
|
name: "select-row-#{row_id || row.object_id}",
|
61
61
|
data: {
|
62
62
|
row_id: row_id || row.object_id.to_s,
|
63
|
-
|
63
|
+
action: "click->pb-advanced-table#toggleRowSelection",
|
64
64
|
},
|
65
65
|
})
|
66
66
|
end
|
@@ -75,6 +75,7 @@ module Playbook
|
|
75
75
|
name: "select-row-#{row_id || row.object_id}",
|
76
76
|
data: {
|
77
77
|
row_id: row_id || row.object_id.to_s,
|
78
|
+
action: "click->pb-advanced-table#toggleRowSelection",
|
78
79
|
},
|
79
80
|
})
|
80
81
|
end
|
@@ -25,7 +25,6 @@ export type AvatarProps = {
|
|
25
25
|
},
|
26
26
|
dark?: boolean,
|
27
27
|
data?: {[key: string]: string},
|
28
|
-
grayscale?: boolean,
|
29
28
|
htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
|
30
29
|
id?: string,
|
31
30
|
imageAlt?: string,
|
@@ -48,7 +47,6 @@ const Avatar = (props: AvatarProps): React.ReactElement => {
|
|
48
47
|
htmlOptions = {},
|
49
48
|
name = undefined,
|
50
49
|
componentOverlay,
|
51
|
-
grayscale = false,
|
52
50
|
id = '',
|
53
51
|
imageAlt = '',
|
54
52
|
imageUrl,
|
@@ -157,7 +155,6 @@ const Avatar = (props: AvatarProps): React.ReactElement => {
|
|
157
155
|
{canShowImage && (
|
158
156
|
<Image
|
159
157
|
alt={imageAlt ? imageAlt : name}
|
160
|
-
className={grayscale ? "grayscale" : ""}
|
161
158
|
onError={handleError}
|
162
159
|
url={imageUrl}
|
163
160
|
/>
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<% if object.component_overlay && object.component_overlay[:component] == "icon_circle" %>
|
4
4
|
<%= pb_rails("flex", props: { display: "display_inline_block", position: "relative" }) do %>
|
5
5
|
<%= content_tag(:div, data: { initials: object.initials }, class: "avatar_wrapper") do %>
|
6
|
-
<%= pb_rails("image", props: { alt: object.alt_text, url: object.image_url, on_error: object.handle_img_error
|
6
|
+
<%= pb_rails("image", props: { alt: object.alt_text, url: object.image_url, on_error: object.handle_img_error }) if object.image_url.present? %>
|
7
7
|
<% end %>
|
8
8
|
<%= pb_rails("card", props: { border_none: true, border_radius: "rounded", dark: object.dark, position: "absolute" }.merge(specific_placement_style)) do %>
|
9
9
|
|
@@ -13,7 +13,7 @@
|
|
13
13
|
<% elsif object.component_overlay && object.component_overlay[:component] == "badge" %>
|
14
14
|
<%= pb_rails("flex", props: { display: "display_inline_block", position: "relative" }) do %>
|
15
15
|
<%= content_tag(:div, data: { initials: object.initials }, class: "avatar_wrapper") do %>
|
16
|
-
<%= pb_rails("image", props: { alt: object.alt_text, url: object.image_url, on_error: object.handle_img_error
|
16
|
+
<%= pb_rails("image", props: { alt: object.alt_text, url: object.image_url, on_error: object.handle_img_error }) if object.image_url.present? %>
|
17
17
|
<% end %>
|
18
18
|
<%= pb_rails("card", props: { border_none: true, border_radius: "rounded", dark: object.dark, padding: "none", position: "absolute" }.merge(specific_placement_style)) do %>
|
19
19
|
<%= pb_rails("badge", props: { dark: object.dark, rounded: true, text: object.component_overlay[:text], variant: object.component_overlay[:variant] }) %>
|
@@ -21,7 +21,7 @@
|
|
21
21
|
<% end %>
|
22
22
|
<% else %>
|
23
23
|
<%= content_tag(:div, data: { initials: object.initials }, class: "avatar_wrapper") do %>
|
24
|
-
<%= pb_rails("image", props: { alt: object.alt_text, url: object.image_url, on_error: object.handle_img_error
|
24
|
+
<%= pb_rails("image", props: { alt: object.alt_text, url: object.image_url, on_error: object.handle_img_error }) if object.image_url.present? %>
|
25
25
|
<% end %>
|
26
26
|
<%= pb_rails("online_status", props: object.online_status_props) if object.status %>
|
27
27
|
<% end %>
|
@@ -106,21 +106,3 @@ test('renders with online status', () => {
|
|
106
106
|
const onlineStatus = onlineStatusAvatar.querySelector('.pb_online_status_kit_online_size_md')
|
107
107
|
expect(onlineStatus).toBeInTheDocument();
|
108
108
|
});
|
109
|
-
|
110
|
-
test('renders with grayscale filter', () => {
|
111
|
-
render(
|
112
|
-
<Avatar
|
113
|
-
data={{ testid: testId }}
|
114
|
-
grayscale
|
115
|
-
imageAlt={imageAlt}
|
116
|
-
imageUrl={imageUrl}
|
117
|
-
name={name}
|
118
|
-
/>
|
119
|
-
);
|
120
|
-
|
121
|
-
const grayscaleAvatar = screen.getByTestId(testId);
|
122
|
-
expect(grayscaleAvatar).toBeInTheDocument();
|
123
|
-
|
124
|
-
const grayscaleImage = grayscaleAvatar.querySelector('.grayscale')
|
125
|
-
expect(grayscaleImage).toBeInTheDocument();
|
126
|
-
});
|
@@ -6,7 +6,6 @@ examples:
|
|
6
6
|
- avatar_status: Status
|
7
7
|
- avatar_circle_icon_component_overlay: Icon Circle Component Overlay
|
8
8
|
- avatar_badge_component_overlay: Badge Component Overlay
|
9
|
-
- avatar_grayscale: Grayscale
|
10
9
|
react:
|
11
10
|
- avatar_default: Default
|
12
11
|
- avatar_monogram: Monogram
|
@@ -14,7 +13,6 @@ examples:
|
|
14
13
|
- avatar_status: Status
|
15
14
|
- avatar_circle_icon_component_overlay: Icon Circle Component Overlay
|
16
15
|
- avatar_badge_component_overlay: Badge Component Overlay
|
17
|
-
- avatar_grayscale: Grayscale
|
18
16
|
swift:
|
19
17
|
- avatar_default_swift: Default
|
20
18
|
- avatar_monogram_swift: Monogram
|
@@ -4,4 +4,3 @@ export { default as AvatarStatus } from './_avatar_status.jsx'
|
|
4
4
|
export { default as AvatarNoImage } from './_avatar_no_image.jsx'
|
5
5
|
export { default as AvatarCircleIconComponentOverlay } from './_avatar_circle_icon_component_overlay.jsx'
|
6
6
|
export { default as AvatarBadgeComponentOverlay } from './_avatar_badge_component_overlay.jsx'
|
7
|
-
export { default as AvatarGrayscale } from './_avatar_grayscale.jsx'
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<% if object.draggable_item %>
|
2
|
-
<%= pb_rails("draggable/draggable_item", props:{drag_id: object.drag_id
|
2
|
+
<%= pb_rails("draggable/draggable_item", props:{drag_id: object.drag_id}) do %>
|
3
3
|
<%= pb_content_tag(object.tag) do %>
|
4
4
|
<% if object.draggable_item %>
|
5
5
|
<%= pb_rails("flex", props: { align: "center" }) do %>
|
@@ -24,9 +24,6 @@ module Playbook
|
|
24
24
|
default: true
|
25
25
|
prop :items, type: Playbook::Props::Array,
|
26
26
|
default: []
|
27
|
-
prop :drop_zone_line_color, type: Playbook::Props::Enum,
|
28
|
-
values: ["primary", "purple", nil],
|
29
|
-
default: nil
|
30
27
|
|
31
28
|
def classname
|
32
29
|
generate_classname("pb_card_kit",
|
@@ -63,15 +60,6 @@ module Playbook
|
|
63
60
|
def border_radius_class
|
64
61
|
border_radius != "md" ? "border_radius_#{border_radius}" : nil
|
65
62
|
end
|
66
|
-
|
67
|
-
def line_color_class
|
68
|
-
case drop_zone_line_color
|
69
|
-
when "primary"
|
70
|
-
"drop_zone_color_primary"
|
71
|
-
when "purple"
|
72
|
-
"drop_zone_color_purple"
|
73
|
-
end
|
74
|
-
end
|
75
63
|
end
|
76
64
|
end
|
77
65
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<%= pb_rails("date_picker", props: {
|
2
|
-
error:
|
1
|
+
<%= pb_rails("date_picker", props: {
|
2
|
+
error: "Invalid date. Please pick a valid date.",
|
3
3
|
picker_id: "date-picker-error"
|
4
4
|
}) %>
|
@@ -9,7 +9,6 @@ examples:
|
|
9
9
|
- draggable_drop_zones: Draggable Drop Zones
|
10
10
|
- draggable_drop_zones_colors: Draggable Drop Zones Colors
|
11
11
|
- draggable_drop_zones_line: Draggable Drop Zones Line
|
12
|
-
- draggable_event_listeners: Draggable Event Listeners
|
13
12
|
|
14
13
|
rails:
|
15
14
|
- draggable_default: Default
|
@@ -18,7 +17,5 @@ examples:
|
|
18
17
|
- draggable_with_cards: Draggable with Cards
|
19
18
|
- draggable_with_table: Draggable with Table
|
20
19
|
- draggable_multiple_containers: Dragging Across Multiple Containers
|
21
|
-
- draggable_drop_zones: Draggable Drop Zones
|
22
|
-
- draggable_drop_zones_colors: Draggable Drop Zones Colors
|
23
|
-
- draggable_drop_zones_line: Draggable Drop Zones Line
|
24
20
|
- draggable_event_listeners: Draggable Event Listeners
|
21
|
+
|
@@ -6,5 +6,4 @@ export { default as DraggableMultipleContainers } from './_draggable_multiple_co
|
|
6
6
|
export { default as DraggableWithTable } from './_draggable_with_table.jsx'
|
7
7
|
export { default as DraggableDropZones } from './_draggable_drop_zones.jsx'
|
8
8
|
export { default as DraggableDropZonesColors } from './_draggable_drop_zones_colors.jsx'
|
9
|
-
export { default as DraggableDropZonesLine } from './_draggable_drop_zones_line.jsx'
|
10
|
-
export { default as DraggableEventListeners } from './_draggable_event_listeners.jsx'
|
9
|
+
export { default as DraggableDropZonesLine } from './_draggable_drop_zones_line.jsx'
|
@@ -5,17 +5,9 @@ module Playbook
|
|
5
5
|
class Draggable < ::Playbook::KitBase
|
6
6
|
prop :initial_items, type: Playbook::Props::Array,
|
7
7
|
default: []
|
8
|
-
prop :drop_zone_type, type: Playbook::Props::Enum,
|
9
|
-
values: %w[ghost shadow outline line],
|
10
|
-
default: "ghost"
|
11
|
-
prop :drop_zone_color, type: Playbook::Props::Enum,
|
12
|
-
values: %w[neutral primary purple],
|
13
|
-
default: "neutral"
|
14
8
|
|
15
9
|
def data
|
16
|
-
Hash(prop(:data)).merge(pb_draggable: true
|
17
|
-
drop_zone_type: drop_zone_type,
|
18
|
-
drop_zone_color: drop_zone_color)
|
10
|
+
Hash(prop(:data)).merge(pb_draggable: true)
|
19
11
|
end
|
20
12
|
|
21
13
|
def classname
|
@@ -7,23 +7,13 @@ module Playbook
|
|
7
7
|
default: "div"
|
8
8
|
prop :container, type: Playbook::Props::String,
|
9
9
|
default: ""
|
10
|
-
prop :drop_zone_direction, type: Playbook::Props::Enum,
|
11
|
-
values: ["horizontal", "vertical", nil],
|
12
|
-
default: nil
|
13
10
|
|
14
11
|
def data
|
15
12
|
Hash(prop(:data)).merge(pb_draggable_container: true)
|
16
13
|
end
|
17
14
|
|
18
15
|
def classname
|
19
|
-
|
20
|
-
when "horizontal"
|
21
|
-
"line_horizontal"
|
22
|
-
when "vertical"
|
23
|
-
"line_vertical"
|
24
|
-
end
|
25
|
-
|
26
|
-
generate_classname("pb_draggable_container", direction_class, separator: " ")
|
16
|
+
generate_classname("pb_draggable_container")
|
27
17
|
end
|
28
18
|
end
|
29
19
|
end
|
@@ -9,23 +9,13 @@ module Playbook
|
|
9
9
|
default: "div"
|
10
10
|
prop :container, type: Playbook::Props::String,
|
11
11
|
default: ""
|
12
|
-
prop :drop_zone_line_color, type: Playbook::Props::Enum,
|
13
|
-
values: ["primary", "purple", nil],
|
14
|
-
default: nil
|
15
12
|
|
16
13
|
def data
|
17
14
|
Hash(prop(:data)).merge(pb_draggable_item: true)
|
18
15
|
end
|
19
16
|
|
20
17
|
def classname
|
21
|
-
|
22
|
-
when "primary"
|
23
|
-
"drop_zone_color_primary"
|
24
|
-
when "purple"
|
25
|
-
"drop_zone_color_purple"
|
26
|
-
end
|
27
|
-
|
28
|
-
generate_classname("pb_draggable_item", line_color_class, separator: " ")
|
18
|
+
generate_classname("pb_draggable_item")
|
29
19
|
end
|
30
20
|
end
|
31
21
|
end
|