Files
speckle-server/packages/frontend-2/lib/form/composables/fileUpload.ts
T
Kristaps Fabians Geikins 5b7f28925c fix(fe2): fixed model upload validation & bunch of other things (#4961)
* FE validation before model creation

* minor fix

* testing UI change in cardview

* a bunch of fixes

* table improvements

* undid test thing
2025-06-19 16:23:17 +03:00

44 lines
1.2 KiB
TypeScript

import type { MaybeRef } from '@vueuse/core'
import type { MaybeNullOrUndefined } from '@speckle/shared'
import type { CSSProperties } from 'vue'
import type { UploadFileItem, UploadableFileItem } from '@speckle/ui-components'
export type { UploadFileItem, UploadableFileItem }
export function useFileUploadProgressCore(params: {
item: MaybeRef<MaybeNullOrUndefined<UploadFileItem>>
}) {
const errorMessage = computed(() => {
const item = unref(params.item)
if (!item) return null
const itemError = item.error
if (itemError) return itemError.message
const uploadError = item.result?.uploadError
if (uploadError) return uploadError
return null
})
const progressBarColorClass = computed(() => {
const item = unref(params.item)
if (errorMessage.value) return 'bg-danger'
if (item && item.progress >= 100) return 'bg-success'
return 'bg-primary'
})
const progressBarClasses = computed(() => {
return ['h-1', progressBarColorClass.value].join(' ')
})
const progressBarStyle = computed((): CSSProperties => {
const item = unref(params.item)
return {
width: `${Math.max(item ? item.progress : 0, 1)}%`
}
})
return { errorMessage, progressBarClasses, progressBarStyle }
}