Skip to content

Commit

Permalink
fix(@clayui/core): remove hiddenColumns API in favor of `visibleCol…
Browse files Browse the repository at this point in the history
…umns`
  • Loading branch information
matuzalemsteles committed Mar 6, 2024
1 parent 34614f8 commit 5c05be4
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 51 deletions.
22 changes: 11 additions & 11 deletions packages/clay-core/src/table/Head.tsx
Expand Up @@ -54,22 +54,22 @@ function HeadInner<T extends Record<string, any>>(
) {
const {
columnsVisibility,
hiddenColumns,
messages,
onHeadCellsChange,
onHiddenColumnsChange,
onVisibleColumnsChange,
visibleColumns,
} = useTable();

const collection = useCollection<T>({
children,
items,
suppressTextValueWarning: false,
visibleKeys: new Set(hiddenColumns.keys()),
visibleKeys: new Set(visibleColumns.keys()),
});

useMemo(() => {
if (hiddenColumns.size === 0) {
onHiddenColumnsChange(collection.getItems(), 0);
if (visibleColumns.size === 0) {
onVisibleColumnsChange(collection.getItems(), 0);
}
onHeadCellsChange(collection.getSize());
}, []);
Expand Down Expand Up @@ -127,7 +127,7 @@ function HeadInner<T extends Record<string, any>>(
<Item
key={item}
onClick={() =>
onHiddenColumnsChange(
onVisibleColumnsChange(
item,
collection.getItem(item)
.index
Expand All @@ -153,16 +153,16 @@ function HeadInner<T extends Record<string, any>>(
},
}}
disabled={
hiddenColumns.has(
visibleColumns.has(
item
) &&
hiddenColumns.size ===
visibleColumns.size ===
1
}
onChange={(event) => {
event.stopPropagation();

onHiddenColumnsChange(
onVisibleColumnsChange(
item,
collection.getItem(
item
Expand All @@ -172,7 +172,7 @@ function HeadInner<T extends Record<string, any>>(
onKeyDown={(event) => {
switch (event.key) {
case 'Enter':
onHiddenColumnsChange(
onVisibleColumnsChange(
item,
collection.getItem(
item
Expand All @@ -184,7 +184,7 @@ function HeadInner<T extends Record<string, any>>(
}
}}
sizing="sm"
toggled={hiddenColumns.has(
toggled={visibleColumns.has(
item
)}
/>
Expand Down
6 changes: 3 additions & 3 deletions packages/clay-core/src/table/Row.tsx
Expand Up @@ -110,10 +110,10 @@ function RowInner<T extends Record<string, any>>(
columnsVisibility,
expandedKeys,
headCellsCount,
hiddenColumns,
onExpandedChange,
onLoadMore,
treegrid,
visibleColumns,
} = useTable();
const {insert} = useBody();
const [isFocused, setIsFocused] = useState(false);
Expand Down Expand Up @@ -154,8 +154,8 @@ function RowInner<T extends Record<string, any>>(
const ref = useForwardRef(outRef);

const visibleKeys = useMemo(
() => Array.from(hiddenColumns.values()),
[hiddenColumns]
() => Array.from(visibleColumns.values()),
[visibleColumns]
);

const collection = useCollection({
Expand Down
70 changes: 35 additions & 35 deletions packages/clay-core/src/table/Table.tsx
Expand Up @@ -34,19 +34,19 @@ export type Props = {
defaultSort?: Sorting | null;

/**
* Default value for hidden columns in the table (uncontrolled).
* Default value for visible columns in the table (uncontrolled).
*/
defaultHiddenColumns?: Map<React.Key, number>;
defaultVisibleColumns?: Map<React.Key, number>;

/**
* The currently expanded keys in the collection (controlled).
*/
expandedKeys?: Set<React.Key>;

/**
* Defines which columns are hidden in the table (controlled).
* Defines which columns are visible in the table (controlled).
*/
hiddenColumns?: Map<React.Key, number>;
visibleColumns?: Map<React.Key, number>;

/**
* Texts used for assertive messages to SRs.
Expand Down Expand Up @@ -81,7 +81,7 @@ export type Props = {
/**
* Callback called when columns visibility changes (controlled).
*/
onHiddenColumnsChange?: (columns: Map<React.Key, number>) => void;
onVisibleColumnsChange?: (columns: Map<React.Key, number>) => void;

/**
* Current state of sort (controlled).
Expand Down Expand Up @@ -114,7 +114,7 @@ export const Table = React.forwardRef<HTMLDivElement, Props>(
className,
defaultExpandedKeys = defaultSet,
defaultSort,
defaultHiddenColumns = new Map(),
defaultVisibleColumns = new Map(),
expandedKeys: externalExpandedKeys,
messages = {
columnsVisibility: 'Manage Columns Visibility',
Expand All @@ -125,9 +125,9 @@ export const Table = React.forwardRef<HTMLDivElement, Props>(
sortDescription: 'sortable column',
sorting: 'sorted by column {0} in {1} order',
},
hiddenColumns: externalHiddenColumns,
visibleColumns: externalVisibleColumns,
onExpandedChange,
onHiddenColumnsChange,
onVisibleColumnsChange,
onLoadMore,
onSortChange,
size,
Expand Down Expand Up @@ -157,13 +157,13 @@ export const Table = React.forwardRef<HTMLDivElement, Props>(
value: externalSort,
});

const [hidden, setHidden] = useControlledState({
defaultName: 'defaultSort',
defaultValue: defaultHiddenColumns,
handleName: 'onHiddenColumnsChange',
name: 'hiddenColumns',
onChange: onHiddenColumnsChange,
value: externalHiddenColumns,
const [visibleColumns, setVisibleColumns] = useControlledState({
defaultName: 'defaultVisibleColumns',
defaultValue: defaultVisibleColumns,
handleName: 'onVisibleColumnsChange',
name: 'visibleColumns',
onChange: onVisibleColumnsChange,
value: externalVisibleColumns,
});

const ref = useForwardRef(outRef);
Expand Down Expand Up @@ -206,18 +206,30 @@ export const Table = React.forwardRef<HTMLDivElement, Props>(
columnsVisibility,
expandedKeys,
headCellsCount,
hiddenColumns: hidden,
messages,
nestedKey,
onExpandedChange: setExpandedKeys,
onHeadCellsChange: setHeadCellsCount,
onHiddenColumnsChange: useCallback(
onLoadMore,
onSortChange: useCallback(
(sort, textValue) => {
announcerAPI.current!.announce(
sub(messages!.sorting, [
textValue,
sort!.direction,
])
);
setSorting(sort);
},
[setSorting]
),
onVisibleColumnsChange: useCallback(
(
column: React.Key | Array<React.Key>,
index: number
) => {
if (Array.isArray(column)) {
const columns = new Map(hidden);
const columns = new Map(visibleColumns);

column.forEach((value, index) => {
if (columns.has(value)) {
Expand All @@ -227,39 +239,27 @@ export const Table = React.forwardRef<HTMLDivElement, Props>(
}
});

setHidden(columns);
setVisibleColumns(columns);

return;
}

const columns = new Map(hidden);
const columns = new Map(visibleColumns);

if (columns.has(column)) {
columns.delete(column);
} else {
columns.set(column, index);
}

setHidden(columns);
setVisibleColumns(columns);
},
[setHidden, hidden]
),
onLoadMore,
onSortChange: useCallback(
(sort, textValue) => {
announcerAPI.current!.announce(
sub(messages!.sorting, [
textValue,
sort!.direction,
])
);
setSorting(sort);
},
[setSorting]
[setVisibleColumns, visibleColumns]
),
sort,
sortDescriptionId,
treegrid: !!nestedKey,
visibleColumns,
}}
>
{children}
Expand Down
4 changes: 2 additions & 2 deletions packages/clay-core/src/table/context.tsx
Expand Up @@ -14,14 +14,14 @@ type Context = {
columnsVisibility: boolean;
expandedKeys: Set<React.Key>;
headCellsCount: number;
hiddenColumns: Map<React.Key, number>;
visibleColumns: Map<React.Key, number>;
messages: Record<string, string>;
nestedKey?: string;
onExpandedChange: (keys: Set<React.Key>) => void;
onHeadCellsChange: (value: number) => void;
onLoadMore?: (item: unknown) => Promise<Array<any> | undefined>;
onSortChange: (sorting: Sorting | null, textValue: string) => void;
onHiddenColumnsChange: (
onVisibleColumnsChange: (
column: React.Key | Array<React.Key>,
index: number
) => void;
Expand Down

0 comments on commit 5c05be4

Please sign in to comment.