import { createColumnHelper } from '@tanstack/react-table'; import { Lock } from 'lucide-react'; import { SecretViewModel } from '@CE/docker/models/secret'; import { isoDate } from '@CE/portainer/filters/filters'; import { Authorized, useAuthorizations } from '@CE/react/hooks/useUser'; import { buildNameColumn } from '@@CE/datatables/buildNameColumn'; import { Datatable, TableSettingsMenu } from '@@CE/datatables'; import { BasicTableSettings, RefreshableTableSettings, createPersistedStore, refreshableSettings, } from '@@CE/datatables/types'; import { useTableState } from '@@CE/datatables/useTableState'; import { TableSettingsMenuAutoRefresh } from '@@CE/datatables/TableSettingsMenuAutoRefresh'; import { AddButton } from '@@CE/buttons'; import { useRepeater } from '@@CE/datatables/useRepeater'; import { DeleteButton } from '@@CE/buttons/DeleteButton'; import { createOwnershipColumn } from '../../components/datatable/createOwnershipColumn'; const columnHelper = createColumnHelper(); const columns = [ buildNameColumn('Name', '.secret', 'docker-secrets-name'), columnHelper.accessor((item) => isoDate(item.CreatedAt), { header: 'Creation Date', }), createOwnershipColumn(), ]; interface TableSettings extends BasicTableSettings, RefreshableTableSettings {} const storageKey = 'docker-secrets'; const store = createPersistedStore( storageKey, undefined, (set) => ({ ...refreshableSettings(set), }) ); export function SecretsDatatable({ dataset, onRemove, onRefresh, }: { dataset?: Array; onRemove(items: Array): void; onRefresh(): Promise; }) { const tableState = useTableState(store, storageKey); useRepeater(tableState.autoRefreshRate, onRefresh); const hasWriteAccessQuery = useAuthorizations([ 'DockerSecretCreate', 'DockerSecretDelete', ]); return ( hasWriteAccessQuery.authorized && ( ) } renderTableSettings={() => ( tableState.setAutoRefreshRate(value)} /> )} /> ); } function TableActions({ selectedItems, onRemove, }: { selectedItems: Array; onRemove(items: Array): void; }) { return (
onRemove(selectedItems)} confirmMessage="Do you want to remove the selected secret(s)?" data-cy="secret-removeSecretButton" /> Add secret
); }