playbook_ui 14.19.0.pre.alpha.borderfixadvancedtable7816 → 14.19.0.pre.alpha.play1997dropdownenablepillsinselection7702
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/Components/RegularTableView.tsx +1 -11
- data/app/pb_kits/playbook/pb_advanced_table/Components/TableActionBar.tsx +15 -148
- data/app/pb_kits/playbook/pb_advanced_table/Components/TableHeaderCell.tsx +3 -20
- data/app/pb_kits/playbook/pb_advanced_table/Hooks/useTableState.ts +13 -23
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +3 -10
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +2 -7
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.html.erb +8 -16
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.rb +0 -9
- data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +0 -6
- data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +1 -5
- data/app/pb_kits/playbook/pb_advanced_table/index.js +52 -355
- data/app/pb_kits/playbook/pb_advanced_table/scss_partials/advanced_table_sticky_mixin.scss +0 -1
- data/app/pb_kits/playbook/pb_advanced_table/table_header.rb +0 -4
- data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownContainer.tsx +2 -2
- data/app/pb_kits/playbook/pb_file_upload/_file_upload.scss +0 -13
- data/app/pb_kits/playbook/pb_file_upload/_file_upload.tsx +1 -11
- data/app/pb_kits/playbook/pb_file_upload/docs/example.yml +0 -2
- data/app/pb_kits/playbook/pb_file_upload/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_file_upload/file_upload.html.erb +0 -1
- data/app/pb_kits/playbook/pb_file_upload/file_upload.rb +1 -7
- data/app/pb_kits/playbook/pb_file_upload/fileupload.test.js +0 -18
- data/app/pb_kits/playbook/pb_form_group/_error_state_mixin.scss +2 -2
- data/app/pb_kits/playbook/pb_form_pill/_form_pill.scss +12 -19
- data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.tsx +7 -13
- data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +2 -2
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_color.html.erb +11 -11
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_color.jsx +11 -11
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_default.html.erb +11 -11
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_default.jsx +11 -11
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled.html.erb +11 -11
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled.jsx +11 -11
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options.html.erb +11 -11
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options.jsx +11 -11
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_default.html.erb +11 -11
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_default.jsx +11 -11
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_parent.html.erb +11 -11
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_parent.jsx +11 -11
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_parent_default.html.erb +11 -11
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_parent_default.jsx +11 -11
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_error.html.erb +11 -11
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_error.jsx +11 -11
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_label.html.erb +11 -11
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_label.jsx +11 -11
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_react_hook.jsx +11 -11
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_reset.html.erb +11 -11
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_return_all_selected.html.erb +11 -11
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_return_all_selected.jsx +11 -11
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids.html.erb +11 -11
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids.md +0 -2
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids_react.jsx +11 -11
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids_react.md +1 -3
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single.html.erb +22 -22
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single.jsx +22 -22
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single_children_only.html.erb +22 -22
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single_children_only.jsx +22 -22
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children.jsx +11 -11
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children_with_radios.jsx +11 -11
- data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_form.html.erb +11 -11
- data/app/pb_kits/playbook/pb_person/_person.tsx +2 -12
- data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.scss +9 -9
- data/app/pb_kits/playbook/pb_section_separator/_section_separator.tsx +2 -2
- data/app/pb_kits/playbook/pb_text_input/_text_input.scss +2 -4
- data/dist/chunks/_typeahead-BQV04mOl.js +22 -0
- data/dist/chunks/_weekday_stacked-BdaYw6Ra.js +45 -0
- data/dist/chunks/{lib-B20MXZcW.js → lib-DwFasxbk.js} +2 -2
- data/dist/chunks/{pb_form_validation-WWvUXPKD.js → pb_form_validation-nnXW3T-3.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 +6 -23
- data/app/pb_kits/playbook/pb_advanced_table/Utilities/VisibilityTree.ts +0 -47
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility.jsx +0 -57
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility.md +0 -4
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_custom.jsx +0 -62
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_custom.md +0 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_multi.jsx +0 -82
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_multi.md +0 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_with_state.jsx +0 -65
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_with_state.md +0 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_actions_rails.html.erb +0 -137
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_actions_rails.md +0 -3
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_header_rails.html.erb +0 -40
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_header_rails.md +0 -1
- data/app/pb_kits/playbook/pb_advanced_table/table_action_bar.html.erb +0 -23
- data/app/pb_kits/playbook/pb_advanced_table/table_action_bar.rb +0 -19
- data/app/pb_kits/playbook/pb_file_upload/docs/_file_upload_error.html.erb +0 -1
- data/app/pb_kits/playbook/pb_file_upload/docs/_file_upload_error.jsx +0 -41
- data/dist/chunks/_typeahead-B9-s4j4U.js +0 -22
- data/dist/chunks/_weekday_stacked-CvzpmXD5.js +0 -45
data/lib/playbook/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: playbook_ui
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 14.19.0.pre.alpha.
|
4
|
+
version: 14.19.0.pre.alpha.play1997dropdownenablepillsinselection7702
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Power UX
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2025-05-
|
12
|
+
date: 2025-05-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: actionpack
|
@@ -278,7 +278,6 @@ files:
|
|
278
278
|
- app/pb_kits/playbook/pb_advanced_table/Utilities/IconHelpers.tsx
|
279
279
|
- app/pb_kits/playbook/pb_advanced_table/Utilities/RowUtils.ts
|
280
280
|
- app/pb_kits/playbook/pb_advanced_table/Utilities/TableContainerStyles.ts
|
281
|
-
- app/pb_kits/playbook/pb_advanced_table/Utilities/VisibilityTree.ts
|
282
281
|
- app/pb_kits/playbook/pb_advanced_table/Utilities/types.ts
|
283
282
|
- app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss
|
284
283
|
- app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx
|
@@ -306,14 +305,6 @@ files:
|
|
306
305
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers_multiple.html.erb
|
307
306
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers_multiple.jsx
|
308
307
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers_multiple.md
|
309
|
-
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility.jsx
|
310
|
-
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility.md
|
311
|
-
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_custom.jsx
|
312
|
-
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_custom.md
|
313
|
-
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_multi.jsx
|
314
|
-
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_multi.md
|
315
|
-
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_with_state.jsx
|
316
|
-
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_with_state.md
|
317
308
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_custom_cell.jsx
|
318
309
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_custom_cell.md
|
319
310
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_custom_cell_rails.html.erb
|
@@ -347,12 +338,8 @@ files:
|
|
347
338
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows.md
|
348
339
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_actions.jsx
|
349
340
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_actions.md
|
350
|
-
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_actions_rails.html.erb
|
351
|
-
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_actions_rails.md
|
352
341
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_header.jsx
|
353
342
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_header.md
|
354
|
-
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_header_rails.html.erb
|
355
|
-
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_header_rails.md
|
356
343
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_no_subrows_rails.html.erb
|
357
344
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_no_subrows_rails.md
|
358
345
|
- app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_no_subrows_react.jsx
|
@@ -397,8 +384,6 @@ files:
|
|
397
384
|
- app/pb_kits/playbook/pb_advanced_table/scss_partials/_loading.scss
|
398
385
|
- app/pb_kits/playbook/pb_advanced_table/scss_partials/_pseudo_states.scss
|
399
386
|
- app/pb_kits/playbook/pb_advanced_table/scss_partials/advanced_table_sticky_mixin.scss
|
400
|
-
- app/pb_kits/playbook/pb_advanced_table/table_action_bar.html.erb
|
401
|
-
- app/pb_kits/playbook/pb_advanced_table/table_action_bar.rb
|
402
387
|
- app/pb_kits/playbook/pb_advanced_table/table_body.html.erb
|
403
388
|
- app/pb_kits/playbook/pb_advanced_table/table_body.rb
|
404
389
|
- app/pb_kits/playbook/pb_advanced_table/table_header.html.erb
|
@@ -1422,8 +1407,6 @@ files:
|
|
1422
1407
|
- app/pb_kits/playbook/pb_file_upload/docs/_file_upload_custom_message.jsx
|
1423
1408
|
- app/pb_kits/playbook/pb_file_upload/docs/_file_upload_default.html.erb
|
1424
1409
|
- app/pb_kits/playbook/pb_file_upload/docs/_file_upload_default.jsx
|
1425
|
-
- app/pb_kits/playbook/pb_file_upload/docs/_file_upload_error.html.erb
|
1426
|
-
- app/pb_kits/playbook/pb_file_upload/docs/_file_upload_error.jsx
|
1427
1410
|
- app/pb_kits/playbook/pb_file_upload/docs/_file_upload_max_size.jsx
|
1428
1411
|
- app/pb_kits/playbook/pb_file_upload/docs/example.yml
|
1429
1412
|
- app/pb_kits/playbook/pb_file_upload/docs/index.js
|
@@ -3573,11 +3556,11 @@ files:
|
|
3573
3556
|
- app/pb_kits/playbook/utilities/test/globalProps/truncate.test.js
|
3574
3557
|
- app/pb_kits/playbook/utilities/text.ts
|
3575
3558
|
- app/pb_kits/playbook/utilities/validEmojiChecker.ts
|
3576
|
-
- dist/chunks/_typeahead-
|
3577
|
-
- dist/chunks/_weekday_stacked-
|
3559
|
+
- dist/chunks/_typeahead-BQV04mOl.js
|
3560
|
+
- dist/chunks/_weekday_stacked-BdaYw6Ra.js
|
3578
3561
|
- dist/chunks/lazysizes-B7xYodB-.js
|
3579
|
-
- dist/chunks/lib-
|
3580
|
-
- dist/chunks/pb_form_validation-
|
3562
|
+
- dist/chunks/lib-DwFasxbk.js
|
3563
|
+
- dist/chunks/pb_form_validation-nnXW3T-3.js
|
3581
3564
|
- dist/chunks/vendor.js
|
3582
3565
|
- dist/menu.yml
|
3583
3566
|
- dist/playbook-doc.js
|
@@ -1,47 +0,0 @@
|
|
1
|
-
export interface VisibilityNode {
|
2
|
-
id: string;
|
3
|
-
label: string;
|
4
|
-
children?: VisibilityNode[];
|
5
|
-
}
|
6
|
-
export const buildVisibilityTree = (
|
7
|
-
defs: any[],
|
8
|
-
allowed?: string[] | null
|
9
|
-
): VisibilityNode[] =>
|
10
|
-
defs
|
11
|
-
.map((def) => {
|
12
|
-
const isGroup = Array.isArray(def.columns) && def.columns.length > 0;
|
13
|
-
|
14
|
-
// No filter at all → keep it
|
15
|
-
if (!allowed?.length) {
|
16
|
-
return isGroup
|
17
|
-
? {
|
18
|
-
id: def.id,
|
19
|
-
label: def.label,
|
20
|
-
children: buildVisibilityTree(def.columns, allowed),
|
21
|
-
}
|
22
|
-
: { id: def.id, label: def.label };
|
23
|
-
}
|
24
|
-
|
25
|
-
// 1️⃣ If *this* ID is explicitly allowed → keep it & all its children
|
26
|
-
if (allowed.includes(def.id)) {
|
27
|
-
return isGroup
|
28
|
-
? {
|
29
|
-
id: def.id,
|
30
|
-
label: def.label,
|
31
|
-
children: buildVisibilityTree(def.columns, null),
|
32
|
-
}
|
33
|
-
: { id: def.id, label: def.label };
|
34
|
-
}
|
35
|
-
|
36
|
-
// Otherwise, if it’s a group, recurse & keep only if kids survive
|
37
|
-
if (isGroup) {
|
38
|
-
const kids = buildVisibilityTree(def.columns, allowed).filter(Boolean);
|
39
|
-
return kids.length
|
40
|
-
? { id: def.id, label: def.label, children: kids }
|
41
|
-
: null;
|
42
|
-
}
|
43
|
-
|
44
|
-
// Leaf not allowed → drop it
|
45
|
-
return null;
|
46
|
-
})
|
47
|
-
.filter(Boolean);
|
@@ -1,57 +0,0 @@
|
|
1
|
-
import React from "react"
|
2
|
-
import AdvancedTable from '../../pb_advanced_table/_advanced_table'
|
3
|
-
import MOCK_DATA from "./advanced_table_mock_data.json"
|
4
|
-
|
5
|
-
const AdvancedTableColumnVisibility = (props) => {
|
6
|
-
const columnDefinitions = [
|
7
|
-
{
|
8
|
-
accessor: "year",
|
9
|
-
label: "Year",
|
10
|
-
cellAccessors: ["quarter", "month", "day"],
|
11
|
-
id: "year"
|
12
|
-
},
|
13
|
-
{
|
14
|
-
accessor: "newEnrollments",
|
15
|
-
label: "New Enrollments",
|
16
|
-
id: "newEnrollments"
|
17
|
-
},
|
18
|
-
{
|
19
|
-
accessor: "scheduledMeetings",
|
20
|
-
label: "Scheduled Meetings",
|
21
|
-
id: "scheduledMeetings"
|
22
|
-
},
|
23
|
-
{
|
24
|
-
accessor: "attendanceRate",
|
25
|
-
label: "Attendance Rate",
|
26
|
-
id: "attendanceRate"
|
27
|
-
},
|
28
|
-
{
|
29
|
-
accessor: "completedClasses",
|
30
|
-
label: "Completed Classes",
|
31
|
-
id: "completedClasses"
|
32
|
-
},
|
33
|
-
{
|
34
|
-
accessor: "classCompletionRate",
|
35
|
-
label: "Class Completion Rate",
|
36
|
-
id: "classCompletionRate"
|
37
|
-
},
|
38
|
-
{
|
39
|
-
accessor: "graduatedStudents",
|
40
|
-
label: "Graduated Students",
|
41
|
-
id: "graduatedStudents"
|
42
|
-
},
|
43
|
-
]
|
44
|
-
|
45
|
-
return (
|
46
|
-
<div>
|
47
|
-
<AdvancedTable
|
48
|
-
columnDefinitions={columnDefinitions}
|
49
|
-
columnVisibilityControl={{default: true}}
|
50
|
-
tableData={MOCK_DATA}
|
51
|
-
{...props}
|
52
|
-
/>
|
53
|
-
</div>
|
54
|
-
)
|
55
|
-
}
|
56
|
-
|
57
|
-
export default AdvancedTableColumnVisibility
|
@@ -1,4 +0,0 @@
|
|
1
|
-
The `columnVisibilityControl` prop allows users to toggle the visibility of table columns dynamically.
|
2
|
-
|
3
|
-
The default can be enabled simply by passing `{ default:true }` to the prop as shown. This will render the header with the icon enabled dropdown. The dropdown contains all columns present in the Table and any can be toggled on or off via the checkboxes.
|
4
|
-
**NOTE**: The first column will not be shown in the dropdown as an option since all the expansion logic/functionality lives there and it should always be visible.
|
data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_custom.jsx
DELETED
@@ -1,62 +0,0 @@
|
|
1
|
-
import React from "react"
|
2
|
-
import AdvancedTable from '../../pb_advanced_table/_advanced_table'
|
3
|
-
import MOCK_DATA from "./advanced_table_mock_data.json"
|
4
|
-
|
5
|
-
const AdvancedTableColumnVisibilityCustom = (props) => {
|
6
|
-
const columnDefinitions = [
|
7
|
-
{
|
8
|
-
accessor: "year",
|
9
|
-
label: "Year",
|
10
|
-
cellAccessors: ["quarter", "month", "day"],
|
11
|
-
id: "year"
|
12
|
-
},
|
13
|
-
{
|
14
|
-
accessor: "newEnrollments",
|
15
|
-
label: "New Enrollments",
|
16
|
-
id: "newEnrollments"
|
17
|
-
},
|
18
|
-
{
|
19
|
-
accessor: "scheduledMeetings",
|
20
|
-
label: "Scheduled Meetings",
|
21
|
-
id: "scheduledMeetings"
|
22
|
-
},
|
23
|
-
{
|
24
|
-
accessor: "attendanceRate",
|
25
|
-
label: "Attendance Rate",
|
26
|
-
id: "attendanceRate"
|
27
|
-
},
|
28
|
-
{
|
29
|
-
accessor: "completedClasses",
|
30
|
-
label: "Completed Classes",
|
31
|
-
id: "completedClasses"
|
32
|
-
},
|
33
|
-
{
|
34
|
-
accessor: "classCompletionRate",
|
35
|
-
label: "Class Completion Rate",
|
36
|
-
id: "classCompletionRate"
|
37
|
-
},
|
38
|
-
{
|
39
|
-
accessor: "graduatedStudents",
|
40
|
-
label: "Graduated Students",
|
41
|
-
id: "graduatedStudents"
|
42
|
-
},
|
43
|
-
]
|
44
|
-
|
45
|
-
const columnVisibilityControl = {
|
46
|
-
// This is the list of column ids that will be included in the column visibility control
|
47
|
-
includeIds:["newEnrollments", "scheduledMeetings", "attendanceRate", "completedClasses"],
|
48
|
-
}
|
49
|
-
|
50
|
-
return (
|
51
|
-
<div>
|
52
|
-
<AdvancedTable
|
53
|
-
columnDefinitions={columnDefinitions}
|
54
|
-
columnVisibilityControl={columnVisibilityControl}
|
55
|
-
tableData={MOCK_DATA}
|
56
|
-
{...props}
|
57
|
-
/>
|
58
|
-
</div>
|
59
|
-
)
|
60
|
-
}
|
61
|
-
|
62
|
-
export default AdvancedTableColumnVisibilityCustom
|
data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_custom.md
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
By using the `includeIds` key/value pair as shown within the `columnVisibilityControl` prop, you can control which columns show up as options in the columnVisibility dropdown.
|
data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_multi.jsx
DELETED
@@ -1,82 +0,0 @@
|
|
1
|
-
import React from "react"
|
2
|
-
import AdvancedTable from '../../pb_advanced_table/_advanced_table'
|
3
|
-
import MOCK_DATA from "./advanced_table_mock_data.json"
|
4
|
-
|
5
|
-
const AdvancedTableColumnVisibilityMulti = (props) => {
|
6
|
-
const columnDefinitions = [
|
7
|
-
{
|
8
|
-
accessor: "year",
|
9
|
-
label: "Year",
|
10
|
-
id: "year",
|
11
|
-
cellAccessors: ["quarter", "month", "day"],
|
12
|
-
},
|
13
|
-
{
|
14
|
-
label: "Enrollment Data",
|
15
|
-
id: "enrollmentData",
|
16
|
-
columns: [
|
17
|
-
{
|
18
|
-
label: "Enrollment Stats",
|
19
|
-
id: "enrollmentStats",
|
20
|
-
columns: [
|
21
|
-
{
|
22
|
-
accessor: "newEnrollments",
|
23
|
-
label: "New Enrollments",
|
24
|
-
id: "newEnrollments",
|
25
|
-
},
|
26
|
-
{
|
27
|
-
accessor: "scheduledMeetings",
|
28
|
-
label: "Scheduled Meetings",
|
29
|
-
id: "scheduledMeetings",
|
30
|
-
},
|
31
|
-
],
|
32
|
-
},
|
33
|
-
],
|
34
|
-
},
|
35
|
-
{
|
36
|
-
label: "Performance Data",
|
37
|
-
id: "performanceData",
|
38
|
-
columns: [
|
39
|
-
{
|
40
|
-
label: "Completion Metrics",
|
41
|
-
id: "completionMetrics",
|
42
|
-
columns: [
|
43
|
-
{
|
44
|
-
accessor: "completedClasses",
|
45
|
-
label: "Completed Classes",
|
46
|
-
id: "completedClasses",
|
47
|
-
},
|
48
|
-
{
|
49
|
-
accessor: "classCompletionRate",
|
50
|
-
label: "Class Completion Rate",
|
51
|
-
id: "classCompletionRate",
|
52
|
-
},
|
53
|
-
],
|
54
|
-
},
|
55
|
-
{
|
56
|
-
label: "Attendance",
|
57
|
-
id: "attendance",
|
58
|
-
columns: [
|
59
|
-
{
|
60
|
-
accessor: "attendanceRate",
|
61
|
-
label: "Attendance Rate",
|
62
|
-
id: "attendanceRate",
|
63
|
-
},
|
64
|
-
],
|
65
|
-
},
|
66
|
-
],
|
67
|
-
},
|
68
|
-
];
|
69
|
-
|
70
|
-
return (
|
71
|
-
<div>
|
72
|
-
<AdvancedTable
|
73
|
-
columnDefinitions={columnDefinitions}
|
74
|
-
columnVisibilityControl={{default: true}}
|
75
|
-
tableData={MOCK_DATA}
|
76
|
-
{...props}
|
77
|
-
/>
|
78
|
-
</div>
|
79
|
-
)
|
80
|
-
}
|
81
|
-
|
82
|
-
export default AdvancedTableColumnVisibilityMulti
|
@@ -1 +0,0 @@
|
|
1
|
-
The `columnVisibilityControl` prop can also be used with multi-header columns as shown.
|
data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_with_state.jsx
DELETED
@@ -1,65 +0,0 @@
|
|
1
|
-
import React, { useState } from "react"
|
2
|
-
import AdvancedTable from '../../pb_advanced_table/_advanced_table'
|
3
|
-
import MOCK_DATA from "./advanced_table_mock_data.json"
|
4
|
-
|
5
|
-
const AdvancedTableColumnVisibilityWithState = (props) => {
|
6
|
-
const columnDefinitions = [
|
7
|
-
{
|
8
|
-
accessor: "year",
|
9
|
-
label: "Year",
|
10
|
-
cellAccessors: ["quarter", "month", "day"],
|
11
|
-
id: "year"
|
12
|
-
},
|
13
|
-
{
|
14
|
-
accessor: "newEnrollments",
|
15
|
-
label: "New Enrollments",
|
16
|
-
id: "newEnrollments"
|
17
|
-
},
|
18
|
-
{
|
19
|
-
accessor: "scheduledMeetings",
|
20
|
-
label: "Scheduled Meetings",
|
21
|
-
id: "scheduledMeetings"
|
22
|
-
},
|
23
|
-
{
|
24
|
-
accessor: "attendanceRate",
|
25
|
-
label: "Attendance Rate",
|
26
|
-
id: "attendanceRate"
|
27
|
-
},
|
28
|
-
{
|
29
|
-
accessor: "completedClasses",
|
30
|
-
label: "Completed Classes",
|
31
|
-
id: "completedClasses"
|
32
|
-
},
|
33
|
-
{
|
34
|
-
accessor: "classCompletionRate",
|
35
|
-
label: "Class Completion Rate",
|
36
|
-
id: "classCompletionRate"
|
37
|
-
},
|
38
|
-
{
|
39
|
-
accessor: "graduatedStudents",
|
40
|
-
label: "Graduated Students",
|
41
|
-
id: "graduatedStudents"
|
42
|
-
},
|
43
|
-
]
|
44
|
-
|
45
|
-
const [columnVisibility, setColumnVisibility] = useState({
|
46
|
-
newEnrollments: false
|
47
|
-
})
|
48
|
-
|
49
|
-
const columnVisibilityControl = {
|
50
|
-
value: columnVisibility,
|
51
|
-
onChange: setColumnVisibility,
|
52
|
-
}
|
53
|
-
return (
|
54
|
-
<div>
|
55
|
-
<AdvancedTable
|
56
|
-
columnDefinitions={columnDefinitions}
|
57
|
-
columnVisibilityControl={columnVisibilityControl}
|
58
|
-
tableData={MOCK_DATA}
|
59
|
-
{...props}
|
60
|
-
/>
|
61
|
-
</div>
|
62
|
-
)
|
63
|
-
}
|
64
|
-
|
65
|
-
export default AdvancedTableColumnVisibilityWithState
|
data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_with_state.md
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
The `columnVisibilityControl` prop also allows for greater control over the columnVisibility state. Devs can manage state themselves by passing in `value` and `onChange` as shown.
|
@@ -1,137 +0,0 @@
|
|
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
|
-
actions = [
|
34
|
-
pb_rails("circle_icon_button", props: {
|
35
|
-
icon: "file-csv",
|
36
|
-
variant: "link",
|
37
|
-
id: "export-selected-rows-btn",
|
38
|
-
data: {
|
39
|
-
action_type: "export"
|
40
|
-
}
|
41
|
-
}),
|
42
|
-
pb_rails("circle_icon_button", props: {
|
43
|
-
icon: "trash-alt",
|
44
|
-
variant: "link",
|
45
|
-
id: "delete-selected-rows-btn",
|
46
|
-
data: {
|
47
|
-
action_type: "delete"
|
48
|
-
}
|
49
|
-
})
|
50
|
-
]
|
51
|
-
%>
|
52
|
-
|
53
|
-
<%= pb_rails("advanced_table", props: {
|
54
|
-
id: "selectable_rows_with_actions",
|
55
|
-
table_data: @table_data_no_subrows,
|
56
|
-
column_definitions: column_definitions,
|
57
|
-
selectable_rows: true,
|
58
|
-
enable_toggle_expansion: "none",
|
59
|
-
actions: actions
|
60
|
-
}) %>
|
61
|
-
|
62
|
-
<script>
|
63
|
-
// Handle action clicks using the data-selected-rows attribute
|
64
|
-
window.handleActionClick = function(actionType) {
|
65
|
-
const tableContainer = document.getElementById('selectable_rows_with_actions');
|
66
|
-
if (!tableContainer) return;
|
67
|
-
|
68
|
-
// Get selected rows from the data attribute
|
69
|
-
const selectedRowsJSON = tableContainer.getAttribute('data-selected-rows');
|
70
|
-
let selectedRowIds = [];
|
71
|
-
|
72
|
-
try {
|
73
|
-
// Parse the JSON string from the data attribute
|
74
|
-
if (selectedRowsJSON) {
|
75
|
-
selectedRowIds = JSON.parse(selectedRowsJSON);
|
76
|
-
}
|
77
|
-
} catch (e) {
|
78
|
-
// Fallback if JSON parsing fails
|
79
|
-
const checkboxes = tableContainer.querySelectorAll('input[type="checkbox"]:checked');
|
80
|
-
const selectedCheckboxes = Array.from(checkboxes).filter(checkbox =>
|
81
|
-
checkbox.id !== 'select-all-rows' &&
|
82
|
-
!checkbox.closest('#select-all-rows')
|
83
|
-
);
|
84
|
-
selectedRowIds = selectedCheckboxes.map(checkbox => checkbox.id);
|
85
|
-
}
|
86
|
-
|
87
|
-
// Show appropriate message
|
88
|
-
if (!selectedRowIds || selectedRowIds.length === 0) {
|
89
|
-
alert('No Selection Made');
|
90
|
-
} else {
|
91
|
-
if (actionType === 'export') {
|
92
|
-
alert(`Row ids ${selectedRowIds.join(', ')} will be exported!`);
|
93
|
-
} else if (actionType === 'delete') {
|
94
|
-
alert(`Row ids ${selectedRowIds.join(', ')} will be deleted!`);
|
95
|
-
}
|
96
|
-
}
|
97
|
-
};
|
98
|
-
|
99
|
-
// Add event listeners when the DOM is ready
|
100
|
-
document.addEventListener('DOMContentLoaded', function() {
|
101
|
-
// Get the buttons
|
102
|
-
const exportBtn = document.getElementById('export-selected-rows-btn');
|
103
|
-
const deleteBtn = document.getElementById('delete-selected-rows-btn');
|
104
|
-
|
105
|
-
// Add click event listeners
|
106
|
-
if (exportBtn) {
|
107
|
-
exportBtn.addEventListener('click', function(e) {
|
108
|
-
e.preventDefault();
|
109
|
-
window.handleActionClick('export');
|
110
|
-
});
|
111
|
-
}
|
112
|
-
|
113
|
-
if (deleteBtn) {
|
114
|
-
deleteBtn.addEventListener('click', function(e) {
|
115
|
-
e.preventDefault();
|
116
|
-
window.handleActionClick('delete');
|
117
|
-
});
|
118
|
-
}
|
119
|
-
|
120
|
-
// Optional: Event delegation through the action bar
|
121
|
-
const actionBar = document.querySelector('.row-selection-actions-card');
|
122
|
-
if (actionBar) {
|
123
|
-
actionBar.addEventListener('click', function(e) {
|
124
|
-
const exportButton = e.target.closest('#export-selected-rows-btn');
|
125
|
-
const deleteButton = e.target.closest('#delete-selected-rows-btn');
|
126
|
-
|
127
|
-
if (exportButton) {
|
128
|
-
e.preventDefault();
|
129
|
-
window.handleActionClick('export');
|
130
|
-
} else if (deleteButton) {
|
131
|
-
e.preventDefault();
|
132
|
-
window.handleActionClick('delete');
|
133
|
-
}
|
134
|
-
});
|
135
|
-
}
|
136
|
-
});
|
137
|
-
</script>
|
data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_actions_rails.md
DELETED
@@ -1,3 +0,0 @@
|
|
1
|
-
Custom actions content can be rendered within the Actions Bar as shown in this doc example. The component passed to `actions` will be rendered on the right of the actionsBar.
|
2
|
-
|
3
|
-
You can utilize script tags with your actions to provide your buttons with any clickable events needed.
|
@@ -1,40 +0,0 @@
|
|
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: {
|
34
|
-
id: "selectable_rows_with_actions",
|
35
|
-
table_data: @table_data_no_subrows,
|
36
|
-
column_definitions: column_definitions,
|
37
|
-
selectable_rows: true,
|
38
|
-
enable_toggle_expansion: "none",
|
39
|
-
show_actions_bar: false
|
40
|
-
}) %>
|
data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_header_rails.md
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
`show_actions_bar` is an optional prop that renders the header at the top showing the row count. This is set to `true` by default but can be toggled off by setting it to `false`
|
@@ -1,23 +0,0 @@
|
|
1
|
-
<%= pb_rails("card", props: {
|
2
|
-
border_none: object.is_visible,
|
3
|
-
classname: object.classname,
|
4
|
-
padding: object.is_visible ? "xs" : "none",
|
5
|
-
data: {
|
6
|
-
action_bar: true
|
7
|
-
}
|
8
|
-
}) do %>
|
9
|
-
<%= pb_rails("flex", props: { align_items: "center", justify: "between" }) do %>
|
10
|
-
<%= pb_rails("caption", props: { color: "light", padding_left: "xs", size: "xs" }) do %>
|
11
|
-
<span class="selected-count"><%= object.selected_count %> Selected</span>
|
12
|
-
<% end %>
|
13
|
-
<%= pb_rails("flex/flex_item") do %>
|
14
|
-
<%= pb_rails("flex") do %>
|
15
|
-
<% if object.actions.present? %>
|
16
|
-
<% object.actions.each do |action| %>
|
17
|
-
<%= action %>
|
18
|
-
<% end %>
|
19
|
-
<% end %>
|
20
|
-
<% end %>
|
21
|
-
<% end %>
|
22
|
-
<% end %>
|
23
|
-
<% end %>
|
@@ -1,19 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Playbook
|
4
|
-
module PbAdvancedTable
|
5
|
-
class TableActionBar < Playbook::KitBase
|
6
|
-
prop :actions, type: Playbook::Props::Array,
|
7
|
-
default: []
|
8
|
-
prop :is_visible, type: Playbook::Props::Boolean,
|
9
|
-
default: false
|
10
|
-
prop :selected_count, type: Playbook::Props::Number,
|
11
|
-
default: 0
|
12
|
-
|
13
|
-
def classname
|
14
|
-
# Just use row-selection-actions-card as the base class
|
15
|
-
generate_classname("row-selection-actions-card", separator: " ")
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
<%= pb_rails("file_upload", props: {id: "error", error: raw(pb_rails("icon", props: { icon: "warning" }) + " Please upload a valid file")}) %>
|