jws-frontend/src/pages/09_task-order/expansion/AdditionalFileExpansion.vue
Aif 75d5c7dfe8
Some checks failed
Spell Check / Spell Check with Typos (push) Failing after 5s
feat: unique id attributes to UI components
2025-11-11 11:01:36 +07:00

58 lines
1.5 KiB
Vue

<script lang="ts" setup>
import UploadFileSection from 'src/components/upload-file/UploadFileSection.vue';
defineProps<{
readonly?: boolean;
transformUrl?: (url: string) => string | Promise<string>;
}>();
const emit = defineEmits<{
(e: 'fetchFileList'): void;
(e: 'upload', file: FileList): void;
(e: 'remove', name: string): void;
}>();
const fileData = defineModel<
{
name: string;
progress: number;
loaded: number;
total: number;
url?: string;
placeholder?: boolean;
}[]
>('fileData', { default: [] });
</script>
<template>
<q-expansion-item
id="expansion-additional-file"
dense
class="overflow-hidden bordered full-width"
switch-toggle-side
style="border-radius: var(--radius-2)"
expand-icon="mdi-chevron-down-circle"
header-class="surface-1 q-py-sm text-medium text-body1"
@after-show="() => $emit('fetchFileList')"
>
<template #header>
<span>
{{ $t('quotation.additionalFile') }}
</span>
</template>
<main class="q-px-md q-py-sm surface-1">
<UploadFileSection
id="upload-additional-file"
multiple
:layout="$q.screen.gt.sm ? 'column' : 'row'"
:readonly
:label="$t('general.upload', { msg: $t('general.attachment') })"
:transform-url="transformUrl"
v-model:file-data="fileData"
@update:file="(f) => $emit('upload', f as unknown as FileList)"
@close="(v) => $emit('remove', v)"
/>
</main>
</q-expansion-item>
</template>
<style scoped></style>