1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-01-01 00:08:27 +01:00
unleash.unleash/frontend/src/hooks/useConditionallyHiddenColumns.ts
Nuno Góis 4167a60588
feat: biome lint frontend (#4903)
Follows up on https://github.com/Unleash/unleash/pull/4853 to add Biome
to the frontend as well.


![image](https://github.com/Unleash/unleash/assets/14320932/1906faf1-fc29-4172-a4d4-b2716d72cd65)

Added a few `biome-ignore` to speed up the process but we may want to
check and fix them in the future.
2023-10-02 13:25:46 +01:00

37 lines
1.1 KiB
TypeScript

import { useEffect } from 'react';
interface IConditionallyHiddenColumns {
condition: boolean;
columns: string[];
}
export const useConditionallyHiddenColumns = (
conditionallyHiddenColumns: IConditionallyHiddenColumns[],
setHiddenColumns: (
columns: string[] | ((columns: string[]) => string[]),
) => void,
columnsDefinition: unknown[],
) => {
useEffect(() => {
const columnsToHide = conditionallyHiddenColumns
.filter(({ condition }) => condition)
.flatMap(({ columns }) => columns);
const columnsToShow = conditionallyHiddenColumns
.flatMap(({ columns }) => columns)
.filter((column) => !columnsToHide.includes(column));
setHiddenColumns((columns) => [
...new Set(
[...columns, ...columnsToHide].filter(
(column) => !columnsToShow.includes(column),
),
),
]);
}, [
...conditionallyHiddenColumns.map(({ condition }) => condition),
setHiddenColumns,
columnsDefinition,
]);
};