playbook_ui 14.16.0.pre.alpha.PLAY1938completetooltipfloatinguitransition6830 → 14.16.0.pre.alpha.play1960buttonkitdisablenotworkingdanger6850
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/pb_advanced_table/_advanced_table.scss +34 -2
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.html.erb +2 -2
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.rb +10 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows.html.erb +39 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_no_subrows.html.erb +33 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_no_subrows_rails.md +1 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_rails.md +6 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_advanced_table/index.js +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/table_body.rb +4 -2
- data/app/pb_kits/playbook/pb_advanced_table/table_header.html.erb +19 -9
- data/app/pb_kits/playbook/pb_advanced_table/table_header.rb +38 -1
- data/app/pb_kits/playbook/pb_advanced_table/table_row.html.erb +49 -37
- data/app/pb_kits/playbook/pb_advanced_table/table_row.rb +39 -0
- data/app/pb_kits/playbook/pb_button/_button.scss +5 -5
- data/app/pb_kits/playbook/pb_tooltip/floating_ui.js +282 -0
- data/app/pb_kits/playbook/pb_tooltip/index.js +57 -184
- data/dist/chunks/{_typeahead-BEyzuDQy.js → _typeahead-HN7DWIZV.js} +3 -3
- data/dist/chunks/{_weekday_stacked-BWYgED9z.js → _weekday_stacked-DpwdSQoj.js} +1 -1
- data/dist/chunks/lib-Co5y3V4K.js +29 -0
- data/dist/chunks/{pb_form_validation-CJD-PyIw.js → pb_form_validation-DMajaRt3.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/version.rb +1 -1
- metadata +12 -7
- data/dist/chunks/lib-BgzBJfYr.js +0 -29
- /data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_selectable_rows_no_subrows.md → _advanced_table_selectable_rows_no_subrows_react.md} +0 -0
- /data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_selectable_rows.md → _advanced_table_selectable_rows_react.md} +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ec0875c5557cec086ec99ae1cbaf9f47361e3a4584e4b677136fd3ce394db55d
|
4
|
+
data.tar.gz: 456a8945cc951c32c481c638e66ee8a685902e1a1b02b75bcd8fb6e5709a5c2e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7d30f5a21e8502edb67813757f015e1c7b95a1f19cbc435e5e5e553fd0c3477c82fba61713834accd60a58286f500c03623d062183485b6f9a5c98b84b2ceb6a
|
7
|
+
data.tar.gz: 67b9bac93175b4881f236ea5f2ceef4023a6eeefea241dc5503ec8e7c27a5d3a128fdc90aa73bde6a8dabc02648ed7450e0fc62e3f75a9a666c65a3b17024215
|
@@ -101,6 +101,15 @@
|
|
101
101
|
border-top-left-radius: 0px !important;
|
102
102
|
border-top-right-radius: 0px !important;
|
103
103
|
}
|
104
|
+
// Right align header content of first data column in selectable row no subrow setup
|
105
|
+
&.selectable-rows-enabled {
|
106
|
+
tr {
|
107
|
+
th:nth-child(2),
|
108
|
+
.pb_flex_kit_orientation_row_justify_content_start_align_items_center_spacing_none.gap_none {
|
109
|
+
justify-content: flex-end;
|
110
|
+
}
|
111
|
+
}
|
112
|
+
}
|
104
113
|
|
105
114
|
// Set fixed width for header cells to match table body
|
106
115
|
th {
|
@@ -112,7 +121,8 @@
|
|
112
121
|
}
|
113
122
|
|
114
123
|
// Set fixed width for checkbox column
|
115
|
-
&.table-header-cells-custom
|
124
|
+
&.table-header-cells-custom,
|
125
|
+
&.checkbox-cell.checkbox-cell-header {
|
116
126
|
width: 40px !important;
|
117
127
|
min-width: 40px !important;
|
118
128
|
box-sizing: border-box !important;
|
@@ -168,6 +178,15 @@
|
|
168
178
|
text-align: right;
|
169
179
|
}
|
170
180
|
}
|
181
|
+
// Right align row content of first data column in selectable row no subrow setup
|
182
|
+
&.selectable-rows-enabled {
|
183
|
+
tr {
|
184
|
+
td:nth-child(2),
|
185
|
+
.pb_flex_kit_orientation_row_justify_content_start_align_items_center_spacing_none {
|
186
|
+
justify-content: end;
|
187
|
+
}
|
188
|
+
}
|
189
|
+
}
|
171
190
|
}
|
172
191
|
|
173
192
|
.table-header-cells-active:first-child {
|
@@ -262,7 +281,8 @@
|
|
262
281
|
.table-header-cells:first-child,
|
263
282
|
.table-header-cells-custom:first-child,
|
264
283
|
td:first-child,
|
265
|
-
.pb_table_td:first-child
|
284
|
+
.pb_table_td:first-child,
|
285
|
+
.checkbox-cell.checkbox-cell-header:first-child {
|
266
286
|
box-shadow: 1px 0px 0px 0px $border_light !important;
|
267
287
|
}
|
268
288
|
|
@@ -318,6 +338,7 @@
|
|
318
338
|
.table-header-cells:first-child,
|
319
339
|
td:first-child,
|
320
340
|
.pb_table_td:first-child,
|
341
|
+
.checkbox-cell.checkbox-cell-header:first-child,
|
321
342
|
[class*="pinned-left"] {
|
322
343
|
background-color: $white;
|
323
344
|
box-shadow: $shadow_deep !important;
|
@@ -435,6 +456,16 @@
|
|
435
456
|
) !important;
|
436
457
|
}
|
437
458
|
}
|
459
|
+
|
460
|
+
// Vertical separator
|
461
|
+
.table-header-cells:first-child,
|
462
|
+
.table-header-cells-custom:first-child,
|
463
|
+
td:first-child,
|
464
|
+
.pb_table_td:first-child,
|
465
|
+
.checkbox-cell.checkbox-cell-header:first-child {
|
466
|
+
box-shadow: 1px 0px 0px 0px $border_dark !important;
|
467
|
+
}
|
468
|
+
|
438
469
|
// Dark Mode Responsive Styles
|
439
470
|
@media only screen and (max-width: $screen-xl-min) {
|
440
471
|
&[class*="advanced-table-responsive-scroll"] {
|
@@ -459,6 +490,7 @@
|
|
459
490
|
.table-header-cells:first-child,
|
460
491
|
td:first-child,
|
461
492
|
.pb_table_td:first-child,
|
493
|
+
.checkbox-cell.checkbox-cell-header:first-child,
|
462
494
|
[class*="pinned-left"] {
|
463
495
|
background: $bg_dark_card;
|
464
496
|
border-right: $border_dark;
|
@@ -3,8 +3,8 @@
|
|
3
3
|
<% if content.present? %>
|
4
4
|
<% content.presence %>
|
5
5
|
<% else %>
|
6
|
-
<%= pb_rails("advanced_table/table_header", props: { column_definitions: object.column_definitions, enable_toggle_expansion: object.enable_toggle_expansion, responsive: object.responsive, loading: object.loading }) %>
|
7
|
-
<%= pb_rails("advanced_table/table_body", props: { id: object.id, table_data: object.table_data, column_definitions: object.column_definitions, responsive: object.responsive, loading: object.loading }) %>
|
6
|
+
<%= pb_rails("advanced_table/table_header", props: { column_definitions: object.column_definitions, enable_toggle_expansion: object.enable_toggle_expansion, responsive: object.responsive, loading: object.loading, selectable_rows: object.selectable_rows }) %>
|
7
|
+
<%= pb_rails("advanced_table/table_body", props: { id: object.id, table_data: object.table_data, column_definitions: object.column_definitions, responsive: object.responsive, loading: object.loading, selectable_rows: object.selectable_rows, enable_toggle_expansion: object.enable_toggle_expansion }) %>
|
8
8
|
<% end %>
|
9
9
|
<% end %>
|
10
10
|
<% end %>
|
@@ -20,6 +20,8 @@ module Playbook
|
|
20
20
|
prop :max_height, type: Playbook::Props::Enum,
|
21
21
|
values: %w[auto xs sm md lg xl xxl xxxl],
|
22
22
|
default: "auto"
|
23
|
+
prop :selectable_rows, type: Playbook::Props::Boolean,
|
24
|
+
default: false
|
23
25
|
|
24
26
|
def classname
|
25
27
|
generate_classname("pb_advanced_table", responsive_classname, max_height_classname, separator: " ")
|
@@ -32,6 +34,14 @@ module Playbook
|
|
32
34
|
def max_height_classname
|
33
35
|
max_height.present? ? "advanced-table-max-height-#{max_height}" : ""
|
34
36
|
end
|
37
|
+
|
38
|
+
def selected_rows
|
39
|
+
@selected_rows ||= []
|
40
|
+
end
|
41
|
+
|
42
|
+
def selected_rows_length
|
43
|
+
selected_rows.length
|
44
|
+
end
|
35
45
|
end
|
36
46
|
end
|
37
47
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
<% column_definitions = [
|
2
|
+
{
|
3
|
+
accessor: "year",
|
4
|
+
label: "Year",
|
5
|
+
cellAccessors: ["quarter", "month", "day"],
|
6
|
+
},
|
7
|
+
{
|
8
|
+
accessor: "newEnrollments",
|
9
|
+
label: "New Enrollments",
|
10
|
+
},
|
11
|
+
{
|
12
|
+
accessor: "scheduledMeetings",
|
13
|
+
label: "Scheduled Meetings",
|
14
|
+
},
|
15
|
+
{
|
16
|
+
accessor: "attendanceRate",
|
17
|
+
label: "Attendance Rate",
|
18
|
+
},
|
19
|
+
{
|
20
|
+
accessor: "completedClasses",
|
21
|
+
label: "Completed Classes",
|
22
|
+
},
|
23
|
+
{
|
24
|
+
accessor: "classCompletionRate",
|
25
|
+
label: "Class Completion Rate",
|
26
|
+
},
|
27
|
+
{
|
28
|
+
accessor: "graduatedStudents",
|
29
|
+
label: "Graduated Students",
|
30
|
+
}
|
31
|
+
]
|
32
|
+
|
33
|
+
subrow_headers = ["Quarter", "Month", "Day"]
|
34
|
+
%>
|
35
|
+
|
36
|
+
<%= pb_rails("advanced_table", props: { id: "selectable_rows", table_data: @table_data_with_id, column_definitions: column_definitions, selectable_rows: true }) do %>
|
37
|
+
<%= pb_rails("advanced_table/table_header", props: { column_definitions: column_definitions, selectable_rows: true }) %>
|
38
|
+
<%= pb_rails("advanced_table/table_body", props: { id: "selectable_rows", table_data: @table_data_with_id, column_definitions: column_definitions, subrow_headers: subrow_headers, enable_toggle_expansion: "all", selectable_rows: true }) %>
|
39
|
+
<% end %>
|
data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_no_subrows.html.erb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
<% column_definitions = [
|
2
|
+
{
|
3
|
+
accessor: "year",
|
4
|
+
label: "Year",
|
5
|
+
cellAccessors: ["quarter", "month", "day"],
|
6
|
+
},
|
7
|
+
{
|
8
|
+
accessor: "newEnrollments",
|
9
|
+
label: "New Enrollments",
|
10
|
+
},
|
11
|
+
{
|
12
|
+
accessor: "scheduledMeetings",
|
13
|
+
label: "Scheduled Meetings",
|
14
|
+
},
|
15
|
+
{
|
16
|
+
accessor: "attendanceRate",
|
17
|
+
label: "Attendance Rate",
|
18
|
+
},
|
19
|
+
{
|
20
|
+
accessor: "completedClasses",
|
21
|
+
label: "Completed Classes",
|
22
|
+
},
|
23
|
+
{
|
24
|
+
accessor: "classCompletionRate",
|
25
|
+
label: "Class Completion Rate",
|
26
|
+
},
|
27
|
+
{
|
28
|
+
accessor: "graduatedStudents",
|
29
|
+
label: "Graduated Students",
|
30
|
+
}
|
31
|
+
] %>
|
32
|
+
|
33
|
+
<%= pb_rails("advanced_table", props: { id: "selectable_rows_no_subrows", table_data: @table_data_no_subrows, column_definitions: column_definitions, selectable_rows: true, enable_toggle_expansion: "none", }) %>
|
data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_no_subrows_rails.md
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
`selectable_rows` can also be used with tables without nested row data. Set `enable_toggle_expansion: none` to adjust the Advanced Table styling to fit a table without subrows.
|
@@ -0,0 +1,6 @@
|
|
1
|
+
`selectable_rows` is a boolean prop that if present will add checkboxes to all rows that will allow for selecting rows.
|
2
|
+
|
3
|
+
When a parent row is clicked, it will check all nested children rows, Children rows can be manually checked or unchecked as well.
|
4
|
+
|
5
|
+
__ALERT TO DEVS__: UPDATE THIS PARAGRAPH IN THE FOLLOW UP STORY WHEN CHECKBOX FUNCTIONALITY IS SET PLEASE
|
6
|
+
The `onRowSelectionChange` prop returns an array of ids of all Rows that have been selected. Open the console on this example and check and uncheck checkboxes to see this is action! __NOTE__: Each object within the `tableData`Array must contain a unique id in order to attach an id to all Rows for this to function.
|
@@ -11,6 +11,8 @@ examples:
|
|
11
11
|
- advanced_table_custom_cell_rails: Custom Components for Cells
|
12
12
|
- advanced_table_column_headers: Multi-Header Columns
|
13
13
|
- advanced_table_column_headers_multiple: Multi-Header Columns (Multiple Levels)
|
14
|
+
# - advanced_table_selectable_rows: Selectable Rows
|
15
|
+
# - advanced_table_selectable_rows_no_subrows: Selectable Rows (No Subrows)
|
14
16
|
|
15
17
|
|
16
18
|
react:
|
@@ -21,6 +21,8 @@ module Playbook
|
|
21
21
|
prop :responsive, type: Playbook::Props::Enum,
|
22
22
|
values: %w[none scroll],
|
23
23
|
default: "scroll"
|
24
|
+
prop :selectable_rows, type: Playbook::Props::Boolean,
|
25
|
+
default: false
|
24
26
|
|
25
27
|
def flatten_columns(columns)
|
26
28
|
columns.flat_map do |col|
|
@@ -56,7 +58,7 @@ module Playbook
|
|
56
58
|
current_data_attributes = current_depth.zero? ? { row_depth: 0 } : table_data_attributes
|
57
59
|
|
58
60
|
# Additional class and data attributes needed for toggle logic
|
59
|
-
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 })
|
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
62
|
|
61
63
|
if row[:children].present?
|
62
64
|
row[:children].each do |child_row|
|
@@ -81,7 +83,7 @@ module Playbook
|
|
81
83
|
def classname
|
82
84
|
additional_classes = []
|
83
85
|
additional_classes << "advanced-table-responsive-#{responsive} pinned-left" if responsive == "scroll"
|
84
|
-
|
86
|
+
additional_classes << "selectable-rows-enabled" if selectable_rows && enable_toggle_expansion == "none"
|
85
87
|
generate_classname("pb_advanced_table_body", *additional_classes, separator: " ")
|
86
88
|
end
|
87
89
|
|
@@ -1,19 +1,29 @@
|
|
1
1
|
<%= pb_content_tag(:thead) do %>
|
2
2
|
<% object.header_rows.each_with_index do |header_row, row_index| %>
|
3
3
|
<%= pb_rails("table/table_row") do %>
|
4
|
+
<% if row_index == 0 && object.selectable_rows && object.enable_toggle_expansion == "none" %>
|
5
|
+
<%= object.render_select_all_header %>
|
6
|
+
<% end %>
|
4
7
|
<% header_row.each_with_index do |cell, cell_index| %>
|
5
8
|
<% header_id = cell[:accessor].present? ? cell[:accessor] : "header_#{row_index}_#{cell_index}" %>
|
6
9
|
<%= pb_rails("table/table_header", props: { id: header_id, colspan: cell[:colspan], classname: [object.th_classname(is_first_column: cell_index.zero?), ('last-header-cell' if cell[:is_last_in_group] && cell_index != 0)].compact.join(' '), sort_menu: cell[:accessor] ? cell[:sort_menu] : nil }) do %>
|
7
10
|
<%= pb_rails("flex", props: { align: "center", justify: cell_index.zero? ? "start" : row_index === header_rows.size - 1 ? "end" : "center", text_align: "end" }) do %>
|
8
|
-
<% if cell_index.zero? &&
|
9
|
-
<% if
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
11
|
+
<% if cell_index.zero? && row_index === header_rows.size - 1 %>
|
12
|
+
<% if object.selectable_rows && object.enable_toggle_expansion != "none" %>
|
13
|
+
<%= pb_rails("flex/flex_item", props: { padding_right: "xs" }) do %>
|
14
|
+
<%= object.render_select_all_checkbox %>
|
15
|
+
<% end %>
|
16
|
+
<% end %>
|
17
|
+
<% if object.enable_toggle_expansion == "header" || object.enable_toggle_expansion == "all" %>
|
18
|
+
<% if loading %>
|
19
|
+
<div class="<%= object.loading ? 'loading-toggle-icon' : '' %>"></div>
|
20
|
+
<% else %>
|
21
|
+
<button
|
22
|
+
class="gray-icon toggle-all-icon"
|
23
|
+
onclick="expandAllRows(this); event.preventDefault();">
|
24
|
+
<%= pb_rails("icon", props: { icon: "arrows-from-line", cursor: "pointer", fixed_width: true, padding_right: "xs" }) %>
|
25
|
+
</button>
|
26
|
+
<% end %>
|
17
27
|
<% end %>
|
18
28
|
<% end %>
|
19
29
|
<%= cell[:label] %>
|
@@ -13,17 +13,20 @@ module Playbook
|
|
13
13
|
prop :responsive, type: Playbook::Props::Enum,
|
14
14
|
values: %w[none scroll],
|
15
15
|
default: "scroll"
|
16
|
+
prop :selectable_rows, type: Playbook::Props::Boolean,
|
17
|
+
default: false
|
16
18
|
|
17
19
|
def classname
|
18
20
|
additional_classes = []
|
19
21
|
additional_classes << "advanced-table-responsive-#{responsive} pinned-left" if responsive == "scroll"
|
22
|
+
additional_classes << "selectable-rows-enabled" if selectable_rows && enable_toggle_expansion == "none"
|
20
23
|
|
21
24
|
generate_classname("pb_advanced_table_header", "pb_table_thead", *additional_classes, separator: " ")
|
22
25
|
end
|
23
26
|
|
24
27
|
def th_classname(is_first_column: false)
|
25
28
|
additional_classes = []
|
26
|
-
additional_classes << "pinned-left" if is_first_column && responsive == "scroll"
|
29
|
+
additional_classes << "pinned-left" if is_first_column && responsive == "scroll" && !selectable_rows
|
27
30
|
|
28
31
|
generate_classname("table-header-cells", *additional_classes, separator: " ")
|
29
32
|
end
|
@@ -38,6 +41,40 @@ module Playbook
|
|
38
41
|
rows
|
39
42
|
end
|
40
43
|
|
44
|
+
# Selectable Rows No Subrows - checkboxes in their own first cell
|
45
|
+
def render_select_all_header
|
46
|
+
if selectable_rows
|
47
|
+
additional_classes = []
|
48
|
+
additional_classes << "table-header-cells-custom"
|
49
|
+
additional_classes << "checkbox-cell-header"
|
50
|
+
additional_classes << "pinned-left" if responsive == "scroll"
|
51
|
+
pb_rails("table/table_header", props: {
|
52
|
+
classname: additional_classes.join(" "),
|
53
|
+
}) do
|
54
|
+
pb_rails("checkbox", props: {
|
55
|
+
id: "select-all-rows",
|
56
|
+
name: "select-all-rows",
|
57
|
+
data: {
|
58
|
+
action: "click->pb-advanced-table#toggleAllRowSelection",
|
59
|
+
},
|
60
|
+
})
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
# Selectable Rows w/ Subrows - checkboxes part of toggleable first cell
|
66
|
+
def render_select_all_checkbox
|
67
|
+
if selectable_rows
|
68
|
+
pb_rails("checkbox", props: {
|
69
|
+
id: "select-all-rows",
|
70
|
+
name: "select-all-rows",
|
71
|
+
data: {
|
72
|
+
action: "click->pb-advanced-table#toggleAllRowSelection",
|
73
|
+
},
|
74
|
+
})
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
41
78
|
private
|
42
79
|
|
43
80
|
def compute_max_depth(columns)
|
@@ -1,48 +1,60 @@
|
|
1
1
|
<%= pb_content_tag(:tr) do %>
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
2
|
+
<% has_separate_checkbox = object.selectable_rows && object.enable_toggle_expansion == "none" %>
|
3
|
+
<% if has_separate_checkbox %>
|
4
|
+
<%= object.render_checkbox_cell %>
|
5
|
+
<% end %>
|
6
|
+
<% object.column_definitions.each_with_index do |column, index| %>
|
7
|
+
<% next unless column[:accessor].present? %>
|
8
|
+
<%= pb_rails("table/table_cell", props: { classname:object.td_classname(column, index)}) do %>
|
9
|
+
<%= pb_rails("flex", props:{ align: "center", justify: index.zero? ? "start" : "end", classname: object.loading ? "loading-cell" : "" }) do %>
|
10
|
+
<% if collapsible_trail && index.zero? %>
|
11
|
+
<% (1..depth).each do |i| %>
|
12
|
+
<% additional_offset = i > 1 ? (i - 1) * 0.25 : 0 %>
|
13
|
+
<% left_offset = i * 1.0 + additional_offset %>
|
14
|
+
<div class="collapsible-trail" style="left: <%= left_offset %>em"></div>
|
12
15
|
<% end %>
|
16
|
+
<% end %>
|
13
17
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
<%= pb_rails("icon", props: { id: "advanced-table_close_icon", display: "none", icon: "circle-play", cursor: "pointer", rotation: 90 }) %>
|
23
|
-
</button>
|
18
|
+
<div style="padding-left: <%= depth * 1.25 %>em">
|
19
|
+
<%= pb_rails("flex", props:{align: "center", column_gap: "xs"}) do %>
|
20
|
+
<% if index.zero? %>
|
21
|
+
<% has_integrated_checkbox = object.selectable_rows && object.enable_toggle_expansion != "none" %>
|
22
|
+
<% if has_integrated_checkbox %>
|
23
|
+
<%= pb_rails("flex/flex_item", props: { padding_right: "xs" }) do %>
|
24
|
+
<%= object.render_row_checkbox %>
|
25
|
+
<% end %>
|
24
26
|
<% end %>
|
25
|
-
|
26
|
-
|
27
|
-
<%=
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
27
|
+
<% if object.row[:children].present? %>
|
28
|
+
<button
|
29
|
+
id="<%= "#{object.id}_#{object.row.object_id}" %>"
|
30
|
+
class="gray-icon expand-toggle-icon"
|
31
|
+
data-advanced-table="true">
|
32
|
+
<%= pb_rails("icon", props: { id: "advanced-table_open_icon", icon: "circle-play", cursor: "pointer" }) %>
|
33
|
+
<%= pb_rails("icon", props: { id: "advanced-table_close_icon", display: "none", icon: "circle-play", cursor: "pointer", rotation: 90 }) %>
|
34
|
+
</button>
|
35
|
+
<% end %>
|
36
|
+
<% end %>
|
37
|
+
<%= pb_rails("flex/flex_item", props:{padding_left: index.zero? && (object.row[:children].present? || has_integrated_checkbox) ? "none" : "xs"}) do %>
|
38
|
+
<% if column[:custom_renderer].present? %>
|
39
|
+
<%= raw(column[:custom_renderer].call(object.row, custom_renderer_value(column, index))) %>
|
40
|
+
<% elsif index.zero? %>
|
41
|
+
<% if object.depth.zero? %>
|
42
|
+
<%= object.row[column[:accessor].to_sym] %>
|
43
|
+
<% else %>
|
44
|
+
<% object.depth_accessors.each_with_index do |item, accessor_index| %>
|
45
|
+
<% if object.depth - 1 == accessor_index %>
|
46
|
+
<% key = item.to_sym %>
|
47
|
+
<%= object.row[key] %>
|
37
48
|
<% end %>
|
38
49
|
<% end %>
|
39
|
-
<% else %>
|
40
|
-
<%= object.row[column[:accessor].to_sym] %>
|
41
50
|
<% end %>
|
51
|
+
<% else %>
|
52
|
+
<%= object.row[column[:accessor].to_sym] %>
|
42
53
|
<% end %>
|
43
54
|
<% end %>
|
44
|
-
|
45
|
-
|
55
|
+
<% end %>
|
56
|
+
</div>
|
46
57
|
<% end %>
|
47
58
|
<% end %>
|
48
|
-
<% end %>
|
59
|
+
<% end %>
|
60
|
+
<% end %>
|
@@ -20,6 +20,13 @@ module Playbook
|
|
20
20
|
default: "scroll"
|
21
21
|
prop :is_pinned_left, type: Playbook::Props::Boolean,
|
22
22
|
default: false
|
23
|
+
prop :selectable_rows, type: Playbook::Props::Boolean,
|
24
|
+
default: false
|
25
|
+
prop :row_id, type: Playbook::Props::String,
|
26
|
+
default: ""
|
27
|
+
prop :enable_toggle_expansion, type: Playbook::Props::Enum,
|
28
|
+
values: %w[all header none],
|
29
|
+
default: "header"
|
23
30
|
|
24
31
|
def data
|
25
32
|
Hash(prop(:data)).merge(table_data_attributes)
|
@@ -42,6 +49,38 @@ module Playbook
|
|
42
49
|
end.compact
|
43
50
|
end
|
44
51
|
|
52
|
+
# Selectable Rows No Subrows - checkboxes in their own first cell
|
53
|
+
def render_checkbox_cell
|
54
|
+
if selectable_rows
|
55
|
+
pb_rails("table/table_cell", props: {
|
56
|
+
classname: "checkbox-cell",
|
57
|
+
}) do
|
58
|
+
pb_rails("checkbox", props: {
|
59
|
+
id: "select-row-#{row_id || row.object_id}",
|
60
|
+
name: "select-row-#{row_id || row.object_id}",
|
61
|
+
data: {
|
62
|
+
row_id: row_id || row.object_id.to_s,
|
63
|
+
action: "click->pb-advanced-table#toggleRowSelection",
|
64
|
+
},
|
65
|
+
})
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
# Selectable Rows w/ Subrows - checkboxes part of toggleable first cell
|
71
|
+
def render_row_checkbox
|
72
|
+
if selectable_rows
|
73
|
+
pb_rails("checkbox", props: {
|
74
|
+
id: "select-row-#{row_id || row.object_id}",
|
75
|
+
name: "select-row-#{row_id || row.object_id}",
|
76
|
+
data: {
|
77
|
+
row_id: row_id || row.object_id.to_s,
|
78
|
+
action: "click->pb-advanced-table#toggleRowSelection",
|
79
|
+
},
|
80
|
+
})
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
45
84
|
private
|
46
85
|
|
47
86
|
def custom_renderer_value(column, index)
|
@@ -63,11 +63,6 @@ $pb_button_sizes: (
|
|
63
63
|
color: $text_lt_lighter;
|
64
64
|
}
|
65
65
|
|
66
|
-
// Disabled =================
|
67
|
-
&[class*=_disabled] {
|
68
|
-
@include pb_button_disabled;
|
69
|
-
}
|
70
|
-
|
71
66
|
// Block ====================
|
72
67
|
&[class*=_block] {
|
73
68
|
@include pb_button_block;
|
@@ -83,6 +78,11 @@ $pb_button_sizes: (
|
|
83
78
|
@include pb_button_danger;
|
84
79
|
}
|
85
80
|
|
81
|
+
// Disabled =================
|
82
|
+
&[class*=_disabled] {
|
83
|
+
@include pb_button_disabled;
|
84
|
+
}
|
85
|
+
|
86
86
|
// Dark Variants =============
|
87
87
|
&.dark {
|
88
88
|
&[class*=_primary] {
|