Files
web/app/components/inventory/InventoryRow.vue
2026-05-05 11:06:49 +07:00

55 lines
1.5 KiB
Vue

<script setup>
const props = defineProps({
invItem: Object,
selected: Boolean,
});
const emit = defineEmits(["selectInvItem", "unselect"]);
const { $dayjs } = useNuxtApp();
</script>
<template>
<tr
:class="['is-clickable', selected && 'is-selected']"
@click="selected ? emit('unselect') : emit('selectInvItem', invItem.id)"
>
<td>
<div>
<p class="fs-14">{{ invItem.name }}</p>
<p class="fs-12 has-text-grey">{{ invItem.category }}</p>
</div>
</td>
<td class="is-family-monospace fs-12">{{ invItem.sku }}</td>
<td>{{ invItem.storage }}</td>
<td class="is-family-monospace fs-12">{{ invItem.storage__position }}</td>
<td class="has-text-right">{{ invItem.stock }}</td>
<td class="has-text-right">{{ invItem.preorder }}</td>
<td :class="['has-text-right', invItem.status === 'OK' ? 'has-text-success-30' : 'has-text-warning-30']">
{{ invItem.available }}
</td>
<td class="is-family-monospace fs-12">{{ invItem.batch }}</td>
<td>{{ $dayjs(invItem.expired).format("L") }}</td>
<td>
<span
:class="[
'tag is-rounded',
invItem.status === 'OK'
? 'has-background-success-soft has-text-success-bold'
: 'has-background-warning-soft has-text-warning-bold',
]"
>{{ invItem.status }}</span
>
</td>
</tr>
</template>
<style scoped>
tr.is-selected {
--bulma-table-row-active-background-color: var(--bulma-primary-95);
color: unset;
}
td {
vertical-align: middle;
--bulma-table-cell-padding: 0.75em;
}
</style>