Files
speckle-server/packages/frontend-2/lib/form/composables/fileUpload.ts
T
Kristaps Fabians Geikins f80a7189a0 chore(fe2): upgrade to nuxt 3.8.2 (#1887)
* chore(fe2): upgrade to nuxt 3.8.2

* fix tailwind-theme build

* readme update

* removing storybook from fe2 :(

* fix(fe2): codegen schema url resolution
2023-11-29 10:22:17 +02: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: `${item ? item.progress : 0}%`
}
})
return { errorMessage, progressBarClasses, progressBarStyle }
}