<template>
<li :class="clsx('border-b list-none', themeClasses('border-neutral-200', 'border-neutral-600'))">
<div
:class="
clsx(
'cursor-pointer flex flex-row items-center gap-xs p-2xs pl-4 border text-sm border-transparent',
themeClasses('hover:border-action-500', 'hover:border-action-300'),
selected
? themeClasses('bg-action-100 border-action-500', 'bg-action-900 border-action-300')
: themeClasses('border-neutral-800', ''),
)
"
@click="emit('clickItem', item, $event)"
>
<StatusIndicatorIcon type="management" :status="status" />
<TruncateWithTooltip class="grow">{{ item.functionDisplayName ?? item.functionName }}</TruncateWithTooltip>
<Timestamp
:date="item.updatedAt"
:timeClasses="themeClasses('text-neutral-500', 'text-neutral-400')"
class="text-xs"
dateClasses="font-bold"
showTimeIfToday
size="long"
/>
<FuncRunTabDropdown :funcRunId="item.id" @menuClick="(id, slug) => emit('history', id, slug)" />
</div>
</li>
</template>
<script lang="ts" setup>
import { computed } from "vue";
import clsx from "clsx";
import { themeClasses, TruncateWithTooltip, Timestamp } from "@si/vue-lib/design-system";
import { funcRunStatus } from "@/store/func_runs.store";
import { ManagementHistoryItem } from "@/store/management_runs.store";
import StatusIndicatorIcon from "../StatusIndicatorIcon.vue";
import FuncRunTabDropdown from "../FuncRunTabDropdown.vue";
const props = defineProps<{
item: ManagementHistoryItem;
selected?: boolean;
}>();
// We're hijacking the action status here since that's what we store in the FuncRun
const status = computed(() => funcRunStatus(props.item));
const emit = defineEmits<{
(e: "history", id: string, tabSlug: string): void;
(e: "clickItem", item: ManagementHistoryItem, event: MouseEvent): void;
}>();
</script>