playbook_ui 13.20.0.pre.alpha.PBNTR225advancedtablefeedback2375 → 13.20.0.pre.alpha.play1247htmloptions2403
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/index.js +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/Components/CollapsibleTrail.tsx +6 -1
- data/app/pb_kits/playbook/pb_advanced_table/Components/CustomCell.tsx +19 -21
- data/app/pb_kits/playbook/pb_advanced_table/Components/SortIconButton.tsx +3 -6
- data/app/pb_kits/playbook/pb_advanced_table/Components/SubRowHeaderRow.tsx +8 -12
- data/app/pb_kits/playbook/pb_advanced_table/Components/TableHeaderCell.tsx +9 -14
- data/app/pb_kits/playbook/pb_advanced_table/Components/ToggleIconButton.tsx +5 -9
- data/app/pb_kits/playbook/pb_advanced_table/SubKits/TableBody.tsx +12 -14
- data/app/pb_kits/playbook/pb_advanced_table/SubKits/TableHeader.tsx +10 -12
- data/app/pb_kits/playbook/pb_advanced_table/Utilities/ExpansionControlHelpers.tsx +2 -3
- data/app/pb_kits/playbook/pb_advanced_table/Utilities/types.ts +2 -0
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +54 -2
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +81 -82
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +54 -54
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_collapsible_trail.jsx +7 -7
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_default.jsx +7 -7
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_expanded_control.jsx +7 -7
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_inline_row_loading.jsx +7 -7
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_inline_row_loading.md +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_loading.jsx +7 -7
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sort.jsx +7 -7
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sort_control.jsx +7 -7
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_subrow_headers.jsx +7 -7
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_options.jsx +7 -7
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props.jsx +7 -7
- data/app/pb_kits/playbook/pb_advanced_table/docs/_mock_data.js +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_mock_data_inline_loading.js +1 -1
- data/app/pb_kits/playbook/pb_avatar/avatar.html.erb +2 -1
- data/app/pb_kits/playbook/pb_avatar_action_button/avatar_action_button.html.erb +2 -1
- data/app/pb_kits/playbook/pb_background/background.html.erb +2 -1
- data/app/pb_kits/playbook/pb_badge/badge.html.erb +2 -1
- data/app/pb_kits/playbook/pb_body/body.html.erb +2 -1
- data/app/pb_kits/playbook/pb_bread_crumbs/bread_crumb_item.html.erb +2 -1
- data/app/pb_kits/playbook/pb_bread_crumbs/bread_crumbs.html.erb +2 -1
- data/app/pb_kits/playbook/pb_button/button.html.erb +2 -1
- data/app/pb_kits/playbook/pb_button_toolbar/button_toolbar.html.erb +2 -1
- data/app/pb_kits/playbook/pb_caption/caption.html.erb +2 -1
- data/app/pb_kits/playbook/pb_card/card.html.erb +2 -1
- data/app/pb_kits/playbook/pb_card/card_body.html.erb +2 -1
- data/app/pb_kits/playbook/pb_card/card_header.html.erb +2 -1
- data/app/pb_kits/playbook/pb_checkbox/checkbox.html.erb +3 -1
- data/app/pb_kits/playbook/pb_circle_icon_button/circle_icon_button.html.erb +2 -1
- data/app/pb_kits/playbook/pb_collapsible/collapsible.html.erb +2 -1
- data/app/pb_kits/playbook/pb_collapsible/collapsible_content.html.erb +2 -1
- data/app/pb_kits/playbook/pb_collapsible/collapsible_main.html.erb +2 -1
- data/app/pb_kits/playbook/pb_contact/contact.html.erb +2 -1
- data/app/pb_kits/playbook/pb_currency/currency.html.erb +2 -1
- data/app/pb_kits/playbook/pb_dashboard_value/dashboard_value.html.erb +2 -1
- data/app/pb_kits/playbook/pb_date/date.html.erb +2 -1
- data/app/pb_kits/playbook/pb_date/docs/_date_alignment_swift.md +26 -6
- data/app/pb_kits/playbook/pb_date/docs/_date_default_swift.md +27 -8
- data/app/pb_kits/playbook/pb_date_picker/date_picker.html.erb +3 -2
- data/app/pb_kits/playbook/pb_date_range_inline/date_range_inline.html.erb +2 -1
- data/app/pb_kits/playbook/pb_date_range_stacked/date_range_stacked.html.erb +2 -1
- data/app/pb_kits/playbook/pb_date_stacked/date_stacked.html.erb +2 -1
- data/app/pb_kits/playbook/pb_date_time/date_time.html.erb +2 -1
- data/app/pb_kits/playbook/pb_date_time_stacked/date_time_stacked.html.erb +3 -2
- data/app/pb_kits/playbook/pb_date_year_stacked/date_year_stacked.html.erb +2 -1
- data/app/pb_kits/playbook/pb_detail/detail.html.erb +2 -1
- data/app/pb_kits/playbook/pb_dialog/dialog.html.erb +2 -1
- data/app/pb_kits/playbook/pb_dialog/dialog_body.html.erb +3 -2
- data/app/pb_kits/playbook/pb_dialog/dialog_footer.html.erb +2 -1
- data/app/pb_kits/playbook/pb_dialog/dialog_header.html.erb +3 -2
- data/app/pb_kits/playbook/pb_file_upload/file_upload.html.erb +2 -1
- data/app/pb_kits/playbook/pb_filter/filter.html.erb +2 -1
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.html.erb +2 -1
- data/app/pb_kits/playbook/pb_flex/flex.html.erb +2 -1
- data/app/pb_kits/playbook/pb_flex/flex_item.html.erb +2 -1
- data/app/pb_kits/playbook/pb_form_group/form_group.html.erb +2 -1
- data/app/pb_kits/playbook/pb_form_pill/form_pill.html.erb +2 -2
- data/app/pb_kits/playbook/pb_hashtag/hashtag.html.erb +2 -1
- data/app/pb_kits/playbook/pb_highlight/highlight.html.erb +2 -1
- data/app/pb_kits/playbook/pb_home_address_street/home_address_street.html.erb +2 -1
- data/app/pb_kits/playbook/pb_icon/icon.html.erb +2 -1
- data/app/pb_kits/playbook/pb_icon_circle/icon_circle.html.erb +2 -1
- data/app/pb_kits/playbook/pb_icon_stat_value/icon_stat_value.html.erb +2 -1
- data/app/pb_kits/playbook/pb_icon_value/icon_value.html.erb +2 -1
- data/app/pb_kits/playbook/pb_image/image.html.erb +2 -1
- data/app/pb_kits/playbook/pb_label_pill/label_pill.html.erb +2 -1
- data/app/pb_kits/playbook/pb_label_value/label_value.html.erb +3 -2
- data/app/pb_kits/playbook/pb_layout/body.html.erb +2 -1
- data/app/pb_kits/playbook/pb_layout/footer.html.erb +2 -1
- data/app/pb_kits/playbook/pb_layout/header.html.erb +2 -1
- data/app/pb_kits/playbook/pb_layout/item.html.erb +2 -1
- data/app/pb_kits/playbook/pb_layout/layout.html.erb +2 -1
- data/app/pb_kits/playbook/pb_layout/sidebar.html.erb +2 -1
- data/app/pb_kits/playbook/pb_legend/legend.html.erb +2 -1
- data/app/pb_kits/playbook/pb_list/item.html.erb +2 -1
- data/app/pb_kits/playbook/pb_list/list.html.erb +2 -1
- data/app/pb_kits/playbook/pb_loading_inline/loading_inline.html.erb +2 -1
- data/app/pb_kits/playbook/pb_message/docs/_description.md +1 -1
- data/app/pb_kits/playbook/pb_message/message.html.erb +2 -1
- data/app/pb_kits/playbook/pb_message/message_mention.html.erb +3 -2
- data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.html.erb +2 -1
- data/app/pb_kits/playbook/pb_multiple_users/multiple_users.html.erb +2 -1
- data/app/pb_kits/playbook/pb_multiple_users_stacked/multiple_users_stacked.html.erb +2 -1
- data/app/pb_kits/playbook/pb_nav/item.html.erb +4 -2
- data/app/pb_kits/playbook/pb_nav/nav.html.erb +2 -1
- data/app/pb_kits/playbook/pb_online_status/online_status.html.erb +2 -1
- data/app/pb_kits/playbook/pb_pagination/pagination.html.erb +2 -1
- data/app/pb_kits/playbook/pb_passphrase/passphrase.html.erb +1 -1
- data/app/pb_kits/playbook/pb_person/person.html.erb +2 -1
- data/app/pb_kits/playbook/pb_person_contact/person_contact.html.erb +2 -1
- data/app/pb_kits/playbook/pb_pill/pill.html.erb +2 -1
- data/app/pb_kits/playbook/pb_popover/popover.html.erb +2 -1
- data/app/pb_kits/playbook/pb_progress_pills/progress_pills.html.erb +2 -1
- data/app/pb_kits/playbook/pb_progress_simple/progress_simple.html.erb +2 -1
- data/app/pb_kits/playbook/pb_progress_step/progress_step.html.erb +2 -1
- data/app/pb_kits/playbook/pb_progress_step/progress_step_item.html.erb +2 -1
- data/app/pb_kits/playbook/pb_radio/radio.html.erb +2 -1
- data/app/pb_kits/playbook/pb_section_separator/section_separator.html.erb +2 -1
- data/app/pb_kits/playbook/pb_select/select.html.erb +2 -1
- data/app/pb_kits/playbook/pb_selectable_card/selectable_card.html.erb +2 -1
- data/app/pb_kits/playbook/pb_selectable_card_icon/selectable_card_icon.html.erb +2 -1
- data/app/pb_kits/playbook/pb_selectable_icon/selectable_icon.html.erb +2 -1
- data/app/pb_kits/playbook/pb_selectable_list/selectable_list.html.erb +2 -1
- data/app/pb_kits/playbook/pb_selectable_list/selectable_list_item.html.erb +2 -1
- data/app/pb_kits/playbook/pb_source/source.html.erb +2 -1
- data/app/pb_kits/playbook/pb_star_rating/star_rating.html.erb +2 -1
- data/app/pb_kits/playbook/pb_stat_change/stat_change.html.erb +2 -1
- data/app/pb_kits/playbook/pb_stat_value/stat_value.html.erb +2 -1
- data/app/pb_kits/playbook/pb_table/_table.tsx +13 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_side_highlight.jsx +24 -25
- data/app/pb_kits/playbook/pb_table/docs/_table_with_subcomponents.jsx +47 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_with_subcomponents.md +5 -5
- data/app/pb_kits/playbook/pb_table/docs/_table_with_subcomponents_as_divs.jsx +48 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_with_subcomponents_rails.md +7 -0
- data/app/pb_kits/playbook/pb_table/docs/example.yml +4 -3
- data/app/pb_kits/playbook/pb_table/docs/index.js +2 -0
- data/app/pb_kits/playbook/pb_table/subcomponents/_table_body.tsx +64 -0
- data/app/pb_kits/playbook/pb_table/subcomponents/_table_cell.tsx +66 -0
- data/app/pb_kits/playbook/pb_table/subcomponents/_table_head.tsx +64 -0
- data/app/pb_kits/playbook/pb_table/subcomponents/_table_header.tsx +66 -0
- data/app/pb_kits/playbook/pb_table/subcomponents/_table_row.tsx +74 -0
- data/app/pb_kits/playbook/pb_table/subcomponents/index.tsx +5 -0
- data/app/pb_kits/playbook/pb_table/table.html.erb +4 -2
- data/app/pb_kits/playbook/pb_table/table.test.js +142 -1
- data/app/pb_kits/playbook/pb_table/table_body.html.erb +5 -3
- data/app/pb_kits/playbook/pb_table/table_cell.html.erb +5 -3
- data/app/pb_kits/playbook/pb_table/table_head.html.erb +5 -3
- data/app/pb_kits/playbook/pb_table/table_header.html.erb +5 -3
- data/app/pb_kits/playbook/pb_table/table_row.html.erb +5 -3
- data/app/pb_kits/playbook/pb_text_input/text_input.html.erb +2 -1
- data/app/pb_kits/playbook/pb_textarea/textarea.html.erb +2 -1
- data/app/pb_kits/playbook/pb_time/time.html.erb +2 -1
- data/app/pb_kits/playbook/pb_time_range_inline/time_range_inline.html.erb +3 -2
- data/app/pb_kits/playbook/pb_time_stacked/time_stacked.html.erb +2 -1
- data/app/pb_kits/playbook/pb_timeline/item.html.erb +2 -1
- data/app/pb_kits/playbook/pb_timeline/timeline.html.erb +2 -1
- data/app/pb_kits/playbook/pb_timestamp/timestamp.html.erb +2 -1
- data/app/pb_kits/playbook/pb_title/title.html.erb +3 -2
- data/app/pb_kits/playbook/pb_title_count/title_count.html.erb +2 -1
- data/app/pb_kits/playbook/pb_title_detail/title_detail.html.erb +2 -1
- data/app/pb_kits/playbook/pb_toggle/toggle.html.erb +2 -1
- data/app/pb_kits/playbook/pb_tooltip/tooltip.html.erb +2 -1
- data/app/pb_kits/playbook/pb_typeahead/typeahead.html.erb +2 -1
- data/app/pb_kits/playbook/pb_user/user.html.erb +2 -1
- data/app/pb_kits/playbook/pb_user_badge/user_badge.html.erb +2 -1
- data/app/pb_kits/playbook/pb_weekday_stacked/weekday_stacked.html.erb +2 -1
- data/app/pb_kits/playbook/utilities/_positioning.scss +48 -7
- data/app/pb_kits/playbook/utilities/globalProps.ts +23 -1
- data/dist/playbook-rails.js +6 -6
- data/lib/playbook/bottom.rb +33 -0
- data/lib/playbook/classnames.rb +4 -0
- data/lib/playbook/kit_base.rb +26 -0
- data/lib/playbook/left.rb +33 -0
- data/lib/playbook/right.rb +33 -0
- data/lib/playbook/top.rb +33 -0
- data/lib/playbook/version.rb +1 -1
- metadata +16 -5
- data/app/pb_kits/playbook/pb_advanced_table/scss_partials/_chrome_styles.scss +0 -13
- data/app/pb_kits/playbook/pb_table/_table_row.tsx +0 -47
- /data/app/pb_kits/playbook/pb_table/docs/{_table_with_subcomponents.html.erb → _table_with_subcomponents_rails.html.erb} +0 -0
@@ -1,8 +1,8 @@
|
|
1
|
-
import React, { useState, useEffect, useCallback } from "react"
|
2
|
-
import classnames from "classnames"
|
3
|
-
|
4
|
-
import {
|
5
|
-
|
1
|
+
import React, { useState, useEffect, useCallback } from "react";
|
2
|
+
import classnames from "classnames";
|
3
|
+
import { buildAriaProps, buildCss, buildDataProps, buildHtmlProps } from "../utilities/props";
|
4
|
+
import { globalProps, GlobalProps } from "../utilities/globalProps";
|
5
|
+
import Table from "../pb_table/_table";
|
6
6
|
import {
|
7
7
|
createColumnHelper,
|
8
8
|
getCoreRowModel,
|
@@ -11,42 +11,39 @@ import {
|
|
11
11
|
Row,
|
12
12
|
useReactTable,
|
13
13
|
Getter,
|
14
|
-
} from "@tanstack/react-table"
|
15
|
-
|
16
|
-
import { buildAriaProps, buildCss, buildDataProps, buildHtmlProps } from "../utilities/props"
|
17
|
-
import { globalProps, GlobalProps } from "../utilities/globalProps"
|
14
|
+
} from "@tanstack/react-table";
|
18
15
|
|
19
|
-
import
|
16
|
+
import { updateExpandAndCollapseState } from "./Utilities/ExpansionControlHelpers";
|
20
17
|
|
21
|
-
import
|
18
|
+
import { CustomCell } from "./Components/CustomCell";
|
19
|
+
import AdvancedTableContext from "./Context/AdvancedTableContext";
|
20
|
+
import { TableHeader } from "./SubKits/TableHeader";
|
21
|
+
import { TableBody } from "./SubKits/TableBody";
|
22
22
|
|
23
|
-
import {
|
24
|
-
|
25
|
-
import { CustomCell } from "./Components/CustomCell"
|
26
|
-
import { TableHeader } from "./SubKits/TableHeader"
|
27
|
-
import { TableBody } from "./SubKits/TableBody"
|
23
|
+
import { DataType } from "./Utilities/types";
|
28
24
|
|
29
25
|
type AdvancedTableProps = {
|
30
|
-
aria?: { [key: string]: string }
|
31
|
-
children?: React.ReactNode | React.ReactNode[]
|
32
|
-
className?: string
|
33
|
-
columnDefinitions:
|
34
|
-
|
35
|
-
|
36
|
-
|
26
|
+
aria?: { [key: string]: string };
|
27
|
+
children?: React.ReactNode | React.ReactNode[];
|
28
|
+
className?: string;
|
29
|
+
columnDefinitions: DataType[];
|
30
|
+
dark?: boolean,
|
31
|
+
data?: { [key: string]: string };
|
32
|
+
enableToggleExpansion?: "all" | "header" | "none";
|
33
|
+
expandedControl?: DataType;
|
37
34
|
htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
|
38
|
-
id?: string
|
39
|
-
initialLoadingRowsCount?: number
|
40
|
-
inlineRowLoading?: boolean
|
41
|
-
loading?: boolean | string
|
42
|
-
onRowToggleClick?: (arg: Row<
|
43
|
-
onToggleExpansionClick?: (arg: Row<
|
44
|
-
sortControl?:
|
45
|
-
tableData:
|
46
|
-
tableOptions?:
|
47
|
-
tableProps?:
|
48
|
-
toggleExpansionIcon?: string | string[]
|
49
|
-
} & GlobalProps
|
35
|
+
id?: string;
|
36
|
+
initialLoadingRowsCount?: number;
|
37
|
+
inlineRowLoading?: boolean;
|
38
|
+
loading?: boolean | string;
|
39
|
+
onRowToggleClick?: (arg: Row<DataType>) => void;
|
40
|
+
onToggleExpansionClick?: (arg: Row<DataType>) => void;
|
41
|
+
sortControl?: DataType;
|
42
|
+
tableData: DataType[];
|
43
|
+
tableOptions?: DataType;
|
44
|
+
tableProps?: DataType;
|
45
|
+
toggleExpansionIcon?: string | string[];
|
46
|
+
} & GlobalProps;
|
50
47
|
|
51
48
|
const AdvancedTable = (props: AdvancedTableProps) => {
|
52
49
|
const {
|
@@ -54,6 +51,7 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
54
51
|
children,
|
55
52
|
className,
|
56
53
|
columnDefinitions,
|
54
|
+
dark = false,
|
57
55
|
data = {},
|
58
56
|
enableToggleExpansion = "header",
|
59
57
|
expandedControl,
|
@@ -69,22 +67,22 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
69
67
|
tableOptions,
|
70
68
|
tableProps,
|
71
69
|
toggleExpansionIcon = "arrows-from-line",
|
72
|
-
} = props
|
70
|
+
} = props;
|
73
71
|
|
74
72
|
const [loadingStateRowCount, setLoadingStateRowCount] = useState(
|
75
73
|
initialLoadingRowsCount
|
76
|
-
)
|
74
|
+
);
|
77
75
|
|
78
76
|
// Create a local state for expanded and setExpanded if expandedControl not used
|
79
|
-
const [localExpanded, setLocalExpanded] = useState({})
|
77
|
+
const [localExpanded, setLocalExpanded] = useState({});
|
80
78
|
|
81
79
|
// Determine whether to use the prop or the local state
|
82
|
-
const expanded = expandedControl ? expandedControl.value : localExpanded
|
80
|
+
const expanded = expandedControl ? expandedControl.value : localExpanded;
|
83
81
|
const setExpanded = expandedControl
|
84
82
|
? expandedControl.onChange
|
85
|
-
: setLocalExpanded
|
83
|
+
: setLocalExpanded;
|
86
84
|
|
87
|
-
const columnHelper = createColumnHelper()
|
85
|
+
const columnHelper = createColumnHelper();
|
88
86
|
|
89
87
|
//Create cells for first columns
|
90
88
|
const createCellFunction = (cellAccessors: string[]) => {
|
@@ -92,10 +90,10 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
92
90
|
row,
|
93
91
|
getValue,
|
94
92
|
}: {
|
95
|
-
row: Row<
|
96
|
-
getValue: Getter<string
|
93
|
+
row: Row<DataType>;
|
94
|
+
getValue: Getter<string>;
|
97
95
|
}) => {
|
98
|
-
const rowData = row.original
|
96
|
+
const rowData = row.original;
|
99
97
|
|
100
98
|
switch (row.depth) {
|
101
99
|
case 0: {
|
@@ -105,12 +103,12 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
105
103
|
onRowToggleClick={onRowToggleClick}
|
106
104
|
row={row}
|
107
105
|
/>
|
108
|
-
)
|
106
|
+
);
|
109
107
|
}
|
110
108
|
default: {
|
111
109
|
// Handle other depths based on cellAccessors
|
112
|
-
const depthAccessor = cellAccessors[row.depth - 1] // Adjust index for depth
|
113
|
-
const accessorValue = rowData[depthAccessor]
|
110
|
+
const depthAccessor = cellAccessors[row.depth - 1]; // Adjust index for depth
|
111
|
+
const accessorValue = rowData[depthAccessor];
|
114
112
|
return accessorValue ? (
|
115
113
|
<CustomCell
|
116
114
|
onRowToggleClick={onRowToggleClick}
|
@@ -119,13 +117,13 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
119
117
|
/>
|
120
118
|
) : (
|
121
119
|
"N/A"
|
122
|
-
)
|
120
|
+
);
|
123
121
|
}
|
124
122
|
}
|
125
|
-
}
|
123
|
+
};
|
126
124
|
|
127
|
-
return columnCells
|
128
|
-
}
|
125
|
+
return columnCells;
|
126
|
+
};
|
129
127
|
|
130
128
|
//Create column array in format needed by Tanstack
|
131
129
|
const columns =
|
@@ -136,12 +134,12 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
136
134
|
...columnHelper.accessor(column.accessor, {
|
137
135
|
header: column.label,
|
138
136
|
}),
|
139
|
-
}
|
137
|
+
};
|
140
138
|
if (column.cellAccessors) {
|
141
|
-
columnStructure.cell = createCellFunction(column.cellAccessors)
|
139
|
+
columnStructure.cell = createCellFunction(column.cellAccessors);
|
142
140
|
}
|
143
|
-
return columnStructure
|
144
|
-
})
|
141
|
+
return columnStructure;
|
142
|
+
});
|
145
143
|
|
146
144
|
//Syntax for sorting Array if we want to manage state ourselves
|
147
145
|
const sorting = [
|
@@ -152,22 +150,22 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
152
150
|
? !sortControl.value.desc
|
153
151
|
: false,
|
154
152
|
},
|
155
|
-
]
|
153
|
+
];
|
156
154
|
|
157
155
|
const expandAndSortState = () => {
|
158
156
|
if (sortControl) {
|
159
|
-
return { state: { expanded, sorting } }
|
157
|
+
return { state: { expanded, sorting } };
|
160
158
|
} else {
|
161
|
-
return { state: { expanded } }
|
159
|
+
return { state: { expanded } };
|
162
160
|
}
|
163
|
-
}
|
161
|
+
};
|
164
162
|
|
165
163
|
//initialize table
|
166
164
|
const table = useReactTable({
|
167
165
|
data: loading ? Array(loadingStateRowCount).fill({}) : tableData,
|
168
166
|
columns,
|
169
167
|
onExpandedChange: setExpanded,
|
170
|
-
getSubRows: (row:
|
168
|
+
getSubRows: (row: DataType) => row.children,
|
171
169
|
getCoreRowModel: getCoreRowModel(),
|
172
170
|
getExpandedRowModel: getExpandedRowModel(),
|
173
171
|
getSortedRowModel: getSortedRowModel(),
|
@@ -175,42 +173,42 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
175
173
|
sortDescFirst: true,
|
176
174
|
...expandAndSortState(),
|
177
175
|
...tableOptions,
|
178
|
-
})
|
176
|
+
});
|
179
177
|
|
180
|
-
const tableRows = table.getRowModel()
|
178
|
+
const tableRows = table.getRowModel();
|
181
179
|
|
182
180
|
// Set table row count for loading state
|
183
181
|
const updateLoadingStateRowCount = useCallback(() => {
|
184
|
-
const rowsCount = table.getRowModel().rows.length
|
182
|
+
const rowsCount = table.getRowModel().rows.length;
|
185
183
|
if (rowsCount !== loadingStateRowCount && rowsCount !== 0) {
|
186
|
-
setLoadingStateRowCount(rowsCount)
|
184
|
+
setLoadingStateRowCount(rowsCount);
|
187
185
|
}
|
188
|
-
}, [tableData, loadingStateRowCount])
|
186
|
+
}, [tableData, loadingStateRowCount]);
|
189
187
|
|
190
188
|
useEffect(() => {
|
191
189
|
if (!loading) {
|
192
|
-
updateLoadingStateRowCount()
|
190
|
+
updateLoadingStateRowCount();
|
193
191
|
}
|
194
|
-
}, [loading, updateLoadingStateRowCount])
|
192
|
+
}, [loading, updateLoadingStateRowCount]);
|
195
193
|
|
196
|
-
const handleExpandOrCollapse = (row: Row<
|
197
|
-
onToggleExpansionClick && onToggleExpansionClick(row)
|
194
|
+
const handleExpandOrCollapse = (row: Row<DataType>) => {
|
195
|
+
onToggleExpansionClick && onToggleExpansionClick(row);
|
198
196
|
|
199
|
-
const expandedState = expanded
|
200
|
-
const targetParent = row?.parentId
|
197
|
+
const expandedState = expanded;
|
198
|
+
const targetParent = row?.parentId;
|
201
199
|
return setExpanded(
|
202
200
|
updateExpandAndCollapseState(tableRows, expandedState, targetParent)
|
203
|
-
)
|
204
|
-
}
|
201
|
+
);
|
202
|
+
};
|
205
203
|
|
206
|
-
const ariaProps = buildAriaProps(aria)
|
207
|
-
const dataProps = buildDataProps(data)
|
208
|
-
const htmlProps = buildHtmlProps(htmlOptions)
|
204
|
+
const ariaProps = buildAriaProps(aria);
|
205
|
+
const dataProps = buildDataProps(data);
|
206
|
+
const htmlProps = buildHtmlProps(htmlOptions);
|
209
207
|
const classes = classnames(
|
210
208
|
buildCss("pb_advanced_table"),
|
211
209
|
globalProps(props),
|
212
210
|
className
|
213
|
-
)
|
211
|
+
);
|
214
212
|
|
215
213
|
return (
|
216
214
|
<div {...ariaProps}
|
@@ -235,6 +233,7 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
235
233
|
>
|
236
234
|
<Table
|
237
235
|
className={`${loading ? "content-loading" : ""}`}
|
236
|
+
dark={dark}
|
238
237
|
dataTable
|
239
238
|
numberSpacing="tabular"
|
240
239
|
responsive="none"
|
@@ -251,10 +250,10 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
251
250
|
</Table>
|
252
251
|
</AdvancedTableContext.Provider>
|
253
252
|
</div>
|
254
|
-
)
|
255
|
-
}
|
253
|
+
);
|
254
|
+
};
|
256
255
|
|
257
|
-
AdvancedTable.Header = TableHeader
|
258
|
-
AdvancedTable.Body = TableBody
|
256
|
+
AdvancedTable.Header = TableHeader;
|
257
|
+
AdvancedTable.Body = TableBody;
|
259
258
|
|
260
|
-
export default AdvancedTable
|
259
|
+
export default AdvancedTable;
|
@@ -1,7 +1,7 @@
|
|
1
|
-
import React, {useState} from "react"
|
2
|
-
import { render, screen } from "../utilities/test-utils"
|
1
|
+
import React, {useState} from "react";
|
2
|
+
import { render, screen } from "../utilities/test-utils";
|
3
3
|
|
4
|
-
import { AdvancedTable } from "../"
|
4
|
+
import { AdvancedTable } from "../";
|
5
5
|
|
6
6
|
const MOCK_DATA = [
|
7
7
|
{
|
@@ -40,7 +40,7 @@ const MOCK_DATA = [
|
|
40
40
|
},
|
41
41
|
],
|
42
42
|
},
|
43
|
-
]
|
43
|
+
];
|
44
44
|
|
45
45
|
const MOCK_DATA_LOADING = [
|
46
46
|
{
|
@@ -70,7 +70,7 @@ const MOCK_DATA_LOADING = [
|
|
70
70
|
},
|
71
71
|
],
|
72
72
|
},
|
73
|
-
]
|
73
|
+
];
|
74
74
|
|
75
75
|
const columnDefinitions = [
|
76
76
|
{
|
@@ -86,11 +86,11 @@ const columnDefinitions = [
|
|
86
86
|
accessor: "scheduledMeetings",
|
87
87
|
label: "Scheduled Meetings",
|
88
88
|
},
|
89
|
-
]
|
89
|
+
];
|
90
90
|
|
91
91
|
const subRowHeaders = ["Quarter"]
|
92
92
|
|
93
|
-
const testId = "advanced_table"
|
93
|
+
const testId = "advanced_table";
|
94
94
|
|
95
95
|
const AdvancedTableExpandControl = () => {
|
96
96
|
const [expanded, setExpanded] = useState({'0': true})
|
@@ -109,7 +109,7 @@ return (
|
|
109
109
|
tableData={MOCK_DATA}
|
110
110
|
/>
|
111
111
|
</div>
|
112
|
-
)
|
112
|
+
);
|
113
113
|
}
|
114
114
|
|
115
115
|
const AdvancedTableSortControl = () => {
|
@@ -132,7 +132,7 @@ return (
|
|
132
132
|
<AdvancedTable.Body />
|
133
133
|
</AdvancedTable>
|
134
134
|
</div>
|
135
|
-
)
|
135
|
+
);
|
136
136
|
}
|
137
137
|
|
138
138
|
const tableOptions = {
|
@@ -158,12 +158,12 @@ test("Generates default kit and classname", () => {
|
|
158
158
|
data={{ testid: testId }}
|
159
159
|
tableData={MOCK_DATA}
|
160
160
|
/>
|
161
|
-
)
|
161
|
+
);
|
162
162
|
|
163
|
-
const kit = screen.getByTestId(testId)
|
164
|
-
expect(kit).toBeInTheDocument()
|
163
|
+
const kit = screen.getByTestId(testId);
|
164
|
+
expect(kit).toBeInTheDocument();
|
165
165
|
expect(kit).toHaveClass('pb_advanced_table')
|
166
|
-
})
|
166
|
+
});
|
167
167
|
|
168
168
|
test("Generates aria label", () => {
|
169
169
|
render(
|
@@ -173,11 +173,11 @@ test("Generates aria label", () => {
|
|
173
173
|
data={{ testid: testId }}
|
174
174
|
tableData={MOCK_DATA}
|
175
175
|
/>
|
176
|
-
)
|
176
|
+
);
|
177
177
|
|
178
|
-
const kit = screen.getByTestId(testId)
|
178
|
+
const kit = screen.getByTestId(testId);
|
179
179
|
expect(kit).toHaveAttribute('aria-label', testId)
|
180
|
-
})
|
180
|
+
});
|
181
181
|
|
182
182
|
test("Row toggle button exists and toggles subrows open and closed", () => {
|
183
183
|
render(
|
@@ -186,9 +186,9 @@ test("Row toggle button exists and toggles subrows open and closed", () => {
|
|
186
186
|
data={{ testid: testId }}
|
187
187
|
tableData={MOCK_DATA}
|
188
188
|
/>
|
189
|
-
)
|
189
|
+
);
|
190
190
|
|
191
|
-
const kit = screen.getByTestId(testId)
|
191
|
+
const kit = screen.getByTestId(testId);
|
192
192
|
const rowButton = kit.querySelector(".gray-icon.expand-toggle-icon")
|
193
193
|
expect(rowButton).toBeInTheDocument()
|
194
194
|
const subRow1 = kit.querySelector(".bg-white.depth-sub-row-1")
|
@@ -196,7 +196,7 @@ test("Row toggle button exists and toggles subrows open and closed", () => {
|
|
196
196
|
rowButton.click()
|
197
197
|
const subRow = kit.querySelector(".bg-white.depth-sub-row-1")
|
198
198
|
expect(subRow).toBeInTheDocument()
|
199
|
-
})
|
199
|
+
});
|
200
200
|
|
201
201
|
test("toggleExpansionAll button exists and toggles subrows open and closed", () => {
|
202
202
|
render(
|
@@ -205,9 +205,9 @@ test("toggleExpansionAll button exists and toggles subrows open and closed", ()
|
|
205
205
|
data={{ testid: testId }}
|
206
206
|
tableData={MOCK_DATA}
|
207
207
|
/>
|
208
|
-
)
|
208
|
+
);
|
209
209
|
|
210
|
-
const kit = screen.getByTestId(testId)
|
210
|
+
const kit = screen.getByTestId(testId);
|
211
211
|
const toggleButton = kit.querySelector(".gray-icon.toggle-all-icon")
|
212
212
|
expect(toggleButton).toBeInTheDocument()
|
213
213
|
const subRow1 = kit.querySelector(".bg-white.depth-sub-row-1")
|
@@ -215,7 +215,7 @@ test("toggleExpansionAll button exists and toggles subrows open and closed", ()
|
|
215
215
|
toggleButton.click()
|
216
216
|
const subRow = kit.querySelector(".bg-white.depth-sub-row-1")
|
217
217
|
expect(subRow).toBeInTheDocument()
|
218
|
-
})
|
218
|
+
});
|
219
219
|
|
220
220
|
test("loading state + initialLoadingRowCount prop", () => {
|
221
221
|
render(
|
@@ -226,16 +226,16 @@ test("loading state + initialLoadingRowCount prop", () => {
|
|
226
226
|
loading
|
227
227
|
tableData={MOCK_DATA}
|
228
228
|
/>
|
229
|
-
)
|
229
|
+
);
|
230
230
|
|
231
|
-
const kit = screen.getByTestId(testId)
|
231
|
+
const kit = screen.getByTestId(testId);
|
232
232
|
const table = kit.querySelector('table')
|
233
233
|
expect(table).toHaveClass('pb_table table-sm table-responsive-none table-card data_table ns_tabular content-loading')
|
234
234
|
|
235
235
|
const tableBody = kit.querySelector('tbody')
|
236
236
|
const tableRows = tableBody.getElementsByTagName('tr')
|
237
237
|
expect(tableRows).toHaveLength(13)
|
238
|
-
})
|
238
|
+
});
|
239
239
|
|
240
240
|
test("subRowHeaders are rendered", () => {
|
241
241
|
render(
|
@@ -247,21 +247,21 @@ test("subRowHeaders are rendered", () => {
|
|
247
247
|
<AdvancedTable.Header />
|
248
248
|
<AdvancedTable.Body subRowHeaders={subRowHeaders}/>
|
249
249
|
</AdvancedTable>
|
250
|
-
)
|
250
|
+
);
|
251
251
|
|
252
|
-
const kit = screen.getByTestId(testId)
|
252
|
+
const kit = screen.getByTestId(testId);
|
253
253
|
|
254
254
|
const rowButton = kit.querySelector(".gray-icon.expand-toggle-icon")
|
255
255
|
rowButton.click()
|
256
256
|
|
257
257
|
const subRowHeader = kit.querySelector(".custom-row.bg-silver")
|
258
258
|
expect(subRowHeader).toBeInTheDocument()
|
259
|
-
})
|
259
|
+
});
|
260
260
|
|
261
261
|
test("expandControl prop works as expected", () => {
|
262
262
|
render (<AdvancedTableExpandControl/>)
|
263
263
|
|
264
|
-
const kit = screen.getByTestId(testId)
|
264
|
+
const kit = screen.getByTestId(testId);
|
265
265
|
const subRow = kit.querySelector(".bg-white.depth-sub-row-1")
|
266
266
|
expect(subRow).toBeInTheDocument()
|
267
267
|
})
|
@@ -274,13 +274,13 @@ test("tableOptions prop functions as expected", () => {
|
|
274
274
|
tableData={MOCK_DATA}
|
275
275
|
tableOptions={tableOptions}
|
276
276
|
/>
|
277
|
-
)
|
277
|
+
);
|
278
278
|
|
279
|
-
const kit = screen.getByTestId(testId)
|
279
|
+
const kit = screen.getByTestId(testId);
|
280
280
|
const row1 = kit.getElementsByTagName('tr')[1]
|
281
281
|
|
282
282
|
expect(row1.id).toBe("1-1-0-row")
|
283
|
-
})
|
283
|
+
});
|
284
284
|
|
285
285
|
test("tableProps prop functions as expected", () => {
|
286
286
|
render(
|
@@ -290,12 +290,12 @@ test("tableProps prop functions as expected", () => {
|
|
290
290
|
tableData={MOCK_DATA}
|
291
291
|
tableProps={tableProps}
|
292
292
|
/>
|
293
|
-
)
|
293
|
+
);
|
294
294
|
|
295
|
-
const kit = screen.getByTestId(testId)
|
295
|
+
const kit = screen.getByTestId(testId);
|
296
296
|
const table = kit.querySelector('table')
|
297
297
|
expect(table).toHaveClass("pb_table table-sm table-responsive-none data_table sticky-header ns_tabular")
|
298
|
-
})
|
298
|
+
});
|
299
299
|
|
300
300
|
test("enableExpansionIcon changes icon", () => {
|
301
301
|
render(
|
@@ -306,13 +306,13 @@ test("enableExpansionIcon changes icon", () => {
|
|
306
306
|
tableProps={tableProps}
|
307
307
|
toggleExpansionIcon= "chevron-up"
|
308
308
|
/>
|
309
|
-
)
|
309
|
+
);
|
310
310
|
|
311
|
-
const kit = screen.getByTestId(testId)
|
311
|
+
const kit = screen.getByTestId(testId);
|
312
312
|
const tableHead = kit.querySelector('table')
|
313
313
|
const toggleIcon= tableHead.querySelector(".pb_icon_kit")
|
314
314
|
expect(toggleIcon).toHaveClass("fa-chevron-up")
|
315
|
-
})
|
315
|
+
});
|
316
316
|
|
317
317
|
test("sortIcon changes icon", () => {
|
318
318
|
render(
|
@@ -328,18 +328,18 @@ test("sortIcon changes icon", () => {
|
|
328
328
|
/>
|
329
329
|
<AdvancedTable.Body />
|
330
330
|
</AdvancedTable>
|
331
|
-
)
|
331
|
+
);
|
332
332
|
|
333
|
-
const kit = screen.getByTestId(testId)
|
333
|
+
const kit = screen.getByTestId(testId);
|
334
334
|
const sortIcon = kit.querySelector('.sort-button-icon')
|
335
335
|
const icon= sortIcon.querySelector(".pb_icon_kit")
|
336
336
|
expect(icon).toHaveClass("fa-chevron-down")
|
337
|
-
})
|
337
|
+
});
|
338
338
|
|
339
339
|
test("Sort icon renders with enableSorting + sortControl works as expected", () => {
|
340
340
|
render (<AdvancedTableSortControl/>)
|
341
341
|
|
342
|
-
const kit = screen.getByTestId(testId)
|
342
|
+
const kit = screen.getByTestId(testId);
|
343
343
|
const sortIcon = kit.querySelector(".sort-button-icon")
|
344
344
|
expect(sortIcon).toBeInTheDocument()
|
345
345
|
|
@@ -358,9 +358,9 @@ test("sort button exists and sorts column data", () => {
|
|
358
358
|
<AdvancedTable.Header enableSorting />
|
359
359
|
<AdvancedTable.Body />
|
360
360
|
</AdvancedTable>
|
361
|
-
)
|
361
|
+
);
|
362
362
|
|
363
|
-
const kit = screen.getByTestId(testId)
|
363
|
+
const kit = screen.getByTestId(testId);
|
364
364
|
|
365
365
|
const sortButton= kit.querySelector(".pb_flex_kit_orientation_row_justify_content_between_align_items_top_spacing_none.pl_xxs.cursor_pointer.header-sort-button.pb_th_link")
|
366
366
|
expect(sortButton).toBeInTheDocument()
|
@@ -372,7 +372,7 @@ test("sort button exists and sorts column data", () => {
|
|
372
372
|
|
373
373
|
const row2 = kit.getElementsByTagName('tr')[2]
|
374
374
|
expect(row2.id).toBe("0-0-0-row")
|
375
|
-
})
|
375
|
+
});
|
376
376
|
|
377
377
|
test("Generates Table.Header default + custom classname", () => {
|
378
378
|
render(
|
@@ -385,12 +385,12 @@ test("Generates Table.Header default + custom classname", () => {
|
|
385
385
|
<AdvancedTable.Body />
|
386
386
|
|
387
387
|
</AdvancedTable>
|
388
|
-
)
|
388
|
+
);
|
389
389
|
|
390
|
-
const kit = screen.getByTestId(testId)
|
390
|
+
const kit = screen.getByTestId(testId);
|
391
391
|
const tableHeader = kit.querySelector('thead')
|
392
392
|
expect(tableHeader).toHaveClass('pb_advanced_table_header custom-header')
|
393
|
-
})
|
393
|
+
});
|
394
394
|
|
395
395
|
test("Generates Table.Body default + custom classname", () => {
|
396
396
|
render(
|
@@ -403,12 +403,12 @@ test("Generates Table.Body default + custom classname", () => {
|
|
403
403
|
<AdvancedTable.Body className="custom-body-classname"/>
|
404
404
|
|
405
405
|
</AdvancedTable>
|
406
|
-
)
|
406
|
+
);
|
407
407
|
|
408
|
-
const kit = screen.getByTestId(testId)
|
408
|
+
const kit = screen.getByTestId(testId);
|
409
409
|
const tableHeader = kit.querySelector('tbody')
|
410
410
|
expect(tableHeader).toHaveClass('pb_advanced_table_body custom-body-classname')
|
411
|
-
})
|
411
|
+
});
|
412
412
|
|
413
413
|
test("inlineRowLoading prop renders inline loading if true", () => {
|
414
414
|
render(
|
@@ -418,12 +418,12 @@ test("inlineRowLoading prop renders inline loading if true", () => {
|
|
418
418
|
inlineRowLoading
|
419
419
|
tableData={MOCK_DATA_LOADING}
|
420
420
|
/>
|
421
|
-
)
|
421
|
+
);
|
422
422
|
|
423
|
-
const kit = screen.getByTestId(testId)
|
423
|
+
const kit = screen.getByTestId(testId);
|
424
424
|
const rowButton = kit.querySelector(".gray-icon.expand-toggle-icon")
|
425
425
|
expect(rowButton).toBeInTheDocument()
|
426
426
|
rowButton.click()
|
427
427
|
const inlineLoading = kit.querySelector(".fa-spinner")
|
428
428
|
expect(inlineLoading).toBeInTheDocument()
|
429
|
-
})
|
429
|
+
});
|
@@ -1,6 +1,6 @@
|
|
1
|
-
import React from "react"
|
2
|
-
import { AdvancedTable } from "../../"
|
3
|
-
import { MOCK_DATA } from "./_mock_data"
|
1
|
+
import React from "react";
|
2
|
+
import { AdvancedTable } from "../../";
|
3
|
+
import { MOCK_DATA } from "./_mock_data";
|
4
4
|
|
5
5
|
const AdvancedTableCollapsibleTrail = (props) => {
|
6
6
|
const columnDefinitions = [
|
@@ -33,7 +33,7 @@ const AdvancedTableCollapsibleTrail = (props) => {
|
|
33
33
|
accessor: "graduatedStudents",
|
34
34
|
label: "Graduated Students",
|
35
35
|
},
|
36
|
-
]
|
36
|
+
];
|
37
37
|
|
38
38
|
return (
|
39
39
|
<div>
|
@@ -46,7 +46,7 @@ const AdvancedTableCollapsibleTrail = (props) => {
|
|
46
46
|
<AdvancedTable.Body collapsibleTrail={false} />
|
47
47
|
</AdvancedTable>
|
48
48
|
</div>
|
49
|
-
)
|
50
|
-
}
|
49
|
+
);
|
50
|
+
};
|
51
51
|
|
52
|
-
export default AdvancedTableCollapsibleTrail
|
52
|
+
export default AdvancedTableCollapsibleTrail;
|
@@ -1,6 +1,6 @@
|
|
1
|
-
import React from "react"
|
2
|
-
import { AdvancedTable } from "../../"
|
3
|
-
import { MOCK_DATA } from "./_mock_data"
|
1
|
+
import React from "react";
|
2
|
+
import { AdvancedTable } from "../../";
|
3
|
+
import { MOCK_DATA } from "./_mock_data";
|
4
4
|
|
5
5
|
const AdvancedTableDefault = (props) => {
|
6
6
|
const columnDefinitions = [
|
@@ -33,7 +33,7 @@ const AdvancedTableDefault = (props) => {
|
|
33
33
|
accessor: "graduatedStudents",
|
34
34
|
label: "Graduated Students",
|
35
35
|
},
|
36
|
-
]
|
36
|
+
];
|
37
37
|
|
38
38
|
return (
|
39
39
|
<div>
|
@@ -43,7 +43,7 @@ const AdvancedTableDefault = (props) => {
|
|
43
43
|
{...props}
|
44
44
|
/>
|
45
45
|
</div>
|
46
|
-
)
|
47
|
-
}
|
46
|
+
);
|
47
|
+
};
|
48
48
|
|
49
|
-
export default AdvancedTableDefault
|
49
|
+
export default AdvancedTableDefault;
|