Files
classroomio/apps/dashboard/src/lib/features/course/components/lesson/content-actions.svelte
T

74 lines
2.2 KiB
Svelte
Raw Normal View History

2026-03-09 11:18:22 +01:00
<script lang="ts">
import EllipsisVerticalIcon from '@lucide/svelte/icons/ellipsis-vertical';
import * as DropdownMenu from '@cio/ui/base/dropdown-menu';
import { Button } from '@cio/ui/base/button';
import { RoleBasedSecurity } from '$features/ui';
import { t } from '$lib/utils/functions/translations';
interface Props {
isEditing?: boolean;
disabled?: boolean;
isSaving?: boolean;
lockLabel?: string;
showLock?: boolean;
showDelete?: boolean;
onEdit: () => void;
onSave: () => void;
onCancel: () => void;
onDelete: () => void;
onToggleLock: () => void;
}
let {
isEditing = false,
disabled = false,
isSaving = false,
lockLabel = '',
showLock = true,
showDelete = true,
onEdit,
onSave,
onCancel,
onDelete,
onToggleLock
}: Props = $props();
</script>
<RoleBasedSecurity allowedRoles={[1, 2]}>
<div class="flex items-center gap-1">
{#if isEditing}
<Button variant="outline" onclick={onCancel} disabled={isSaving}>
{$t('course.navItem.lessons.add_lesson.cancel')}
</Button>
<Button onclick={onSave} loading={isSaving} disabled={isSaving}>
{$t('course.navItem.lessons.add_lesson.save')}
</Button>
{:else}
<DropdownMenu.Root>
<DropdownMenu.Trigger>
<Button variant="ghost" size="icon" class="h-8 w-8" {disabled}>
<EllipsisVerticalIcon class="h-5 w-5" />
<span class="sr-only">Open menu</span>
</Button>
</DropdownMenu.Trigger>
<DropdownMenu.Content align="end">
{#if showLock}
<DropdownMenu.Item onclick={onToggleLock} {disabled}>
{lockLabel}
</DropdownMenu.Item>
{/if}
<DropdownMenu.Item onclick={onEdit} {disabled}>
{$t('course.navItem.lessons.add_lesson.edit')}
</DropdownMenu.Item>
{#if showDelete}
<DropdownMenu.Separator />
<DropdownMenu.Item class="text-red-600 focus:text-red-600 dark:text-red-400" onclick={onDelete} {disabled}>
{$t('course.navItem.lessons.add_lesson.delete')}
</DropdownMenu.Item>
{/if}
</DropdownMenu.Content>
</DropdownMenu.Root>
{/if}
</div>
</RoleBasedSecurity>