mirror of https://github.com/portainer/portainer
49 lines
1.1 KiB
TypeScript
49 lines
1.1 KiB
TypeScript
|
import { Checkbox } from '@@/form-components/Checkbox';
|
||
|
|
||
|
import { useTableSettings } from './useTableSettings';
|
||
|
|
||
|
export interface Action {
|
||
|
id: string;
|
||
|
label: string;
|
||
|
}
|
||
|
|
||
|
interface Props {
|
||
|
actions: Action[];
|
||
|
}
|
||
|
|
||
|
export interface QuickActionsSettingsType {
|
||
|
hiddenQuickActions: string[];
|
||
|
}
|
||
|
|
||
|
export function QuickActionsSettings({ actions }: Props) {
|
||
|
const { settings, setTableSettings } =
|
||
|
useTableSettings<QuickActionsSettingsType>();
|
||
|
|
||
|
return (
|
||
|
<>
|
||
|
{actions.map(({ id, label }) => (
|
||
|
<Checkbox
|
||
|
key={id}
|
||
|
label={label}
|
||
|
id={`quick-actions-${id}`}
|
||
|
checked={!settings.hiddenQuickActions.includes(id)}
|
||
|
onChange={(e) => toggleAction(id, e.target.checked)}
|
||
|
/>
|
||
|
))}
|
||
|
</>
|
||
|
);
|
||
|
|
||
|
function toggleAction(key: string, value: boolean) {
|
||
|
setTableSettings(({ hiddenQuickActions = [], ...settings }) => ({
|
||
|
...settings,
|
||
|
hiddenQuickActions: value
|
||
|
? hiddenQuickActions.filter((id) => id !== key)
|
||
|
: [...hiddenQuickActions, key],
|
||
|
}));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export function buildAction(id: string, label: string): Action {
|
||
|
return { id, label };
|
||
|
}
|