import { PermissionAction } from '@supabase/shared-types/out/constants' import { useParams } from 'common' import { ArrowUp, ChevronDown, FileText } from 'lucide-react' import { Button, cn, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from 'ui' import { ShortcutBadge } from '@/components/ui/ShortcutBadge' import { useSendEventMutation } from '@/data/telemetry/send-event-mutation' import { useAsyncCheckPermissions } from '@/hooks/misc/useCheckPermissions' import { useSelectedOrganizationQuery } from '@/hooks/misc/useSelectedOrganization' import { SHORTCUT_IDS } from '@/state/shortcuts/registry' import { useShortcut } from '@/state/shortcuts/useShortcut' import { useTableEditorStateSnapshot } from '@/state/table-editor' import { useTableEditorTableStateSnapshot } from '@/state/table-editor-table' export const InsertButton = () => { const { ref: projectRef } = useParams() const { data: org } = useSelectedOrganizationQuery() const snap = useTableEditorTableStateSnapshot() const tableEditorSnap = useTableEditorStateSnapshot() const { can: canCreateColumns } = useAsyncCheckPermissions( PermissionAction.TENANT_SQL_ADMIN_WRITE, 'columns' ) const { mutate: sendEvent } = useSendEventMutation() const onAddRow = snap.editable && (snap.table.columns ?? []).length > 0 ? tableEditorSnap.onAddRow : undefined const onAddColumn = snap.editable ? tableEditorSnap.onAddColumn : undefined const onImportData = snap.editable ? tableEditorSnap.onImportData : undefined const canAddNew = onAddRow !== undefined || onAddColumn !== undefined useShortcut(SHORTCUT_IDS.TABLE_EDITOR_INSERT_ROW, () => onAddRow?.(), { registerInCommandMenu: true, enabled: onAddRow !== undefined && canAddNew && canCreateColumns, }) useShortcut(SHORTCUT_IDS.TABLE_EDITOR_INSERT_COLUMN, () => onAddColumn?.(), { registerInCommandMenu: true, enabled: onAddColumn !== undefined && canAddNew && canCreateColumns, }) useShortcut(SHORTCUT_IDS.TABLE_EDITOR_IMPORT_CSV, () => onImportData?.(), { registerInCommandMenu: true, enabled: onImportData !== undefined && canAddNew && canCreateColumns, }) if (!canAddNew || !canCreateColumns) return null return ( {[ ...(onAddRow !== undefined ? [

Insert row

, ] : []), ...(onAddColumn !== undefined ? [

Insert column

, ] : []), ...(onImportData !== undefined ? [ { onImportData() sendEvent({ action: 'import_data_button_clicked', properties: { tableType: 'Existing Table' }, groups: { project: projectRef ?? 'Unknown', organization: org?.slug ?? 'Unknown', }, }) }} >

Import data from CSV

, ] : []), ]} ) }