Skip to content

Commit 86a64e2

Browse files
chore: expose the controls label for localization within Table
1 parent 77479ae commit 86a64e2

File tree

7 files changed

+33
-27
lines changed

7 files changed

+33
-27
lines changed

packages/big-design/src/components/Table/Actions/Actions.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export interface ActionsProps<T> {
1919
selectedItems: Set<T>;
2020
stickyHeader?: boolean;
2121
tableId: string;
22+
label: string;
2223
}
2324

2425
const InternalActions = <T extends TableItem>({
@@ -31,6 +32,7 @@ const InternalActions = <T extends TableItem>({
3132
selectedItems,
3233
stickyHeader,
3334
tableId,
35+
label,
3436
...props
3537
}: ActionsProps<T>) => {
3638
const isSelectable = typeof onSelectionChange === 'function';
@@ -59,7 +61,7 @@ const InternalActions = <T extends TableItem>({
5961
<StyledFlex
6062
alignItems="center"
6163
aria-controls={tableId}
62-
aria-label="Table Controls"
64+
aria-label={label}
6365
flexDirection="row"
6466
justifyContent="stretch"
6567
ref={forwardedRef}

packages/big-design/src/components/Table/Table.tsx

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,12 @@ import { HeaderCell } from './HeaderCell';
1313
import { DragIconHeaderCell, HeaderCheckboxCell } from './HeaderCell/HeaderCell';
1414
import { Row } from './Row';
1515
import { StyledTable, StyledTableFigure } from './styled';
16-
import { TableColumn, TableItem, TableProps } from './types';
16+
import { Localization, TableColumn, TableItem, TableProps } from './types';
1717

18-
interface Localization {
19-
ascendingOrder: string;
20-
descendingOrder: string;
21-
}
22-
23-
const defaultLocalization: Localization = {
18+
const defaultLocalization: Required<Localization> = {
2419
ascendingOrder: 'Ascending order',
2520
descendingOrder: 'Descending order',
21+
controlsLabel: 'Table Controls',
2622
};
2723

2824
const InternalTable = <T extends TableItem>(
@@ -38,7 +34,7 @@ const InternalTable = <T extends TableItem>(
3834
itemName,
3935
items,
4036
keyField = 'id',
41-
localization = defaultLocalization,
37+
localization: customLocalization,
4238
onRowDrop,
4339
pagination: undiscriminatedPagination,
4440
selectable,
@@ -47,7 +43,10 @@ const InternalTable = <T extends TableItem>(
4743
style,
4844
...rest
4945
} = props;
50-
46+
const localization = useMemo(
47+
() => ({ ...defaultLocalization, ...customLocalization }),
48+
[customLocalization],
49+
);
5150
const pagination = useMemo(
5251
() => undiscriminatedPagination && discriminatePagination(undiscriminatedPagination),
5352
[undiscriminatedPagination],
@@ -258,6 +257,7 @@ const InternalTable = <T extends TableItem>(
258257
forwardedRef={actionsRef}
259258
itemName={itemName}
260259
items={items}
260+
label={localization.controlsLabel}
261261
onSelectionChange={selectable?.onSelectionChange}
262262
pagination={pagination}
263263
selectedItems={selectedItems}

packages/big-design/src/components/Table/types.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,10 @@ export type TablePaginationProps =
5151
| WithoutMarginProps<OffsetPaginationProps>
5252
| WithoutMarginProps<StatelessPaginationPropsWithItemTotal>;
5353

54-
interface Localization {
55-
ascendingOrder: string;
56-
descendingOrder: string;
54+
export interface Localization {
55+
ascendingOrder?: string;
56+
descendingOrder?: string;
57+
controlsLabel?: string;
5758
}
5859

5960
export interface TableProps<T> extends ComponentPropsWithoutRef<'table'> {

packages/big-design/src/components/TableNext/Actions/Actions.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ export interface ActionsProps<T> {
3030
setSelectedParentRowsCrossPages: Dispatch<SetStateAction<Set<string>>>;
3131
selectedParentRowsCrossPages: Set<string>;
3232
isChildrenRowsSelectable?: boolean;
33+
label: string;
3334
}
3435

3536
const InternalActions = <T extends TableItem>({
@@ -47,6 +48,7 @@ const InternalActions = <T extends TableItem>({
4748
setSelectedParentRowsCrossPages,
4849
selectedParentRowsCrossPages,
4950
isChildrenRowsSelectable,
51+
label,
5052
...props
5153
}: ActionsProps<T>) => {
5254
const isSelectable = typeof onSelectionChange === 'function';
@@ -75,7 +77,7 @@ const InternalActions = <T extends TableItem>({
7577
<StyledFlex
7678
alignItems="center"
7779
aria-controls={tableId}
78-
aria-label="Table Controls"
80+
aria-label={label}
7981
flexDirection="row"
8082
justifyContent="stretch"
8183
ref={forwardedRef}

packages/big-design/src/components/TableNext/TableNext.tsx

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,12 @@ import { getPagedIndex } from './helpers';
1818
import { useExpandable, useSelectable } from './hooks';
1919
import { RowContainer } from './RowContainer';
2020
import { StyledTable, StyledTableFigure } from './styled';
21-
import { TableColumn, TableItem, TableProps } from './types';
21+
import { Localization, TableColumn, TableItem, TableProps } from './types';
2222

23-
interface Localization {
24-
ascendingOrder: string;
25-
descendingOrder: string;
26-
}
27-
28-
const defaultLocalization: Localization = {
23+
const defaultLocalization: Required<Localization> = {
2924
ascendingOrder: 'Ascending order',
3025
descendingOrder: 'Descending order',
26+
controlsLabel: 'Table Controls',
3127
};
3228

3329
const InternalTableNext = <T extends TableItem>(
@@ -44,7 +40,7 @@ const InternalTableNext = <T extends TableItem>(
4440
itemName,
4541
items,
4642
keyField = 'id',
47-
localization = defaultLocalization,
43+
localization: customLocalization,
4844
pagination: undiscriminatedPagination,
4945
selectable,
5046
sortable,
@@ -60,7 +56,10 @@ const InternalTableNext = <T extends TableItem>(
6056
},
6157
...rest
6258
} = props;
63-
59+
const localization = useMemo(
60+
() => ({ ...defaultLocalization, ...customLocalization }),
61+
[customLocalization],
62+
);
6463
const pagination = useMemo(
6564
() => undiscriminatedPagination && discriminatePagination(undiscriminatedPagination),
6665
[undiscriminatedPagination],
@@ -288,6 +287,7 @@ const InternalTableNext = <T extends TableItem>(
288287
isChildrenRowsSelectable={isChildrenRowsSelectable}
289288
itemName={itemName}
290289
items={items}
290+
label={localization.controlsLabel}
291291
onSelectionChange={selectable?.onSelectionChange}
292292
pagination={pagination}
293293
selectedItems={selectedItems}

packages/big-design/src/components/TableNext/types.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,10 @@ export type TablePaginationProps =
6767
| WithoutMarginProps<OffsetPaginationProps>
6868
| WithoutMarginProps<StatelessPaginationPropsWithItemTotal>;
6969

70-
interface Localization {
71-
ascendingOrder: string;
72-
descendingOrder: string;
70+
export interface Localization {
71+
ascendingOrder?: string;
72+
descendingOrder?: string;
73+
controlsLabel?: string;
7374
}
7475

7576
export interface TableProps<T> extends ComponentPropsWithoutRef<'table'> {

packages/docs/PropTables/TablePropTable.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ const tableProps: Prop[] = [
113113
},
114114
{
115115
name: 'localization',
116-
types: '{ ascendingOrder: string, descendingOrder: string }',
116+
types: '{ ascendingOrder?: string, descendingOrder?: string, controlsLabel?: string }',
117117
description: 'Overrides the labels with localized text.',
118118
},
119119
];

0 commit comments

Comments
 (0)