diff --git a/biome.json b/biome.json index 0af1521..430d7ec 100644 --- a/biome.json +++ b/biome.json @@ -7,7 +7,7 @@ }, "files": { "ignoreUnknown": true, - "includes": ["**/*.ts", "**/*.vue"] + "includes": ["**/*.ts", "**/*.vue", "!**/*.d.ts"] }, "formatter": { "enabled": true, diff --git a/frontend/.biomelintrc-auto-import.json b/frontend/.biomelintrc-auto-import.json index 86140a5..39353d3 100644 --- a/frontend/.biomelintrc-auto-import.json +++ b/frontend/.biomelintrc-auto-import.json @@ -31,21 +31,6 @@ "DropTargetType", "DropValidation", "DropZoneConfig", - "DropdownMenu", - "DropdownMenuCheckboxItem", - "DropdownMenuContent", - "DropdownMenuGroup", - "DropdownMenuItem", - "DropdownMenuLabel", - "DropdownMenuPortal", - "DropdownMenuRadioGroup", - "DropdownMenuRadioItem", - "DropdownMenuSeparator", - "DropdownMenuShortcut", - "DropdownMenuSub", - "DropdownMenuSubContent", - "DropdownMenuSubTrigger", - "DropdownMenuTrigger", "EffectScope", "ExtendedError", "ExtendedErrorCode", @@ -54,12 +39,10 @@ "ExtractPublicPropTypes", "FileRemoveEvent", "FileSelectEvent", - "FileUploadUploaderEvent", "FrontendErrorCode", "InjectionKey", "Input", "ItemSchema", - "Label", "MaybeRef", "MaybeRefOrGetter", "MenuItem", diff --git a/frontend/auto-imports.d.ts b/frontend/auto-imports.d.ts index 043c0e4..ef6c2d0 100644 --- a/frontend/auto-imports.d.ts +++ b/frontend/auto-imports.d.ts @@ -16,26 +16,8 @@ declare global { const BreadcrumbPage: typeof import('./src/components/ui/breadcrumb/index')['BreadcrumbPage'] const BreadcrumbSeparator: typeof import('./src/components/ui/breadcrumb/index')['BreadcrumbSeparator'] const Button: typeof import('./src/components/ui/button/index')['Button'] - const DropdownMenu: typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenu'] - const DropdownMenuCheckboxItem: typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuCheckboxItem'] - const DropdownMenuContent: typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuContent'] - const DropdownMenuGroup: typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuGroup'] - const DropdownMenuItem: typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuItem'] - const DropdownMenuLabel: typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuLabel'] - const DropdownMenuPortal: typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuPortal'] - const DropdownMenuRadioGroup: typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuRadioGroup'] - const DropdownMenuRadioItem: typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuRadioItem'] - const DropdownMenuSeparator: typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuSeparator'] - const DropdownMenuShortcut: typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuShortcut'] - const DropdownMenuSub: typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuSub'] - const DropdownMenuSubContent: typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuSubContent'] - const DropdownMenuSubTrigger: typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuSubTrigger'] - const DropdownMenuTrigger: typeof import('./src/components/ui/dropdown-menu/index')['DropdownMenuTrigger'] const EffectScope: typeof import('vue')['EffectScope'] const Input: typeof import('./src/components/ui/input/index')['Input'] - const Label: typeof import('./src/components/ui/label/index')['Label'] - const MenuItem: typeof import('primevue/menuitem')['MenuItem'] - const RefreshCcw: typeof import('lucide-vue-next')['RefreshCcw'] const SIDEBAR_COOKIE_MAX_AGE: typeof import('./src/components/ui/sidebar/utils')['SIDEBAR_COOKIE_MAX_AGE'] const SIDEBAR_COOKIE_NAME: typeof import('./src/components/ui/sidebar/utils')['SIDEBAR_COOKIE_NAME'] const SIDEBAR_KEYBOARD_SHORTCUT: typeof import('./src/components/ui/sidebar/utils')['SIDEBAR_KEYBOARD_SHORTCUT'] @@ -431,9 +413,6 @@ declare global { export type { Component, Slot, Slots, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, ShallowRef, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue' import('vue') // @ts-ignore - export type { FileUploadUploaderEvent } from 'primevue/fileupload' - import('primevue/fileupload') - // @ts-ignore export type { MenuItem } from 'primevue/menuitem' import('primevue/menuitem') // @ts-ignore @@ -501,24 +480,8 @@ declare module 'vue' { readonly BreadcrumbPage: UnwrapRef readonly BreadcrumbSeparator: UnwrapRef readonly Button: UnwrapRef - readonly DropdownMenu: UnwrapRef - readonly DropdownMenuCheckboxItem: UnwrapRef - readonly DropdownMenuContent: UnwrapRef - readonly DropdownMenuGroup: UnwrapRef - readonly DropdownMenuItem: UnwrapRef - readonly DropdownMenuLabel: UnwrapRef - readonly DropdownMenuPortal: UnwrapRef - readonly DropdownMenuRadioGroup: UnwrapRef - readonly DropdownMenuRadioItem: UnwrapRef - readonly DropdownMenuSeparator: UnwrapRef - readonly DropdownMenuShortcut: UnwrapRef - readonly DropdownMenuSub: UnwrapRef - readonly DropdownMenuSubContent: UnwrapRef - readonly DropdownMenuSubTrigger: UnwrapRef - readonly DropdownMenuTrigger: UnwrapRef readonly EffectScope: UnwrapRef readonly Input: UnwrapRef - readonly Label: UnwrapRef readonly SIDEBAR_COOKIE_MAX_AGE: UnwrapRef readonly SIDEBAR_COOKIE_NAME: UnwrapRef readonly SIDEBAR_KEYBOARD_SHORTCUT: UnwrapRef diff --git a/frontend/components.d.ts b/frontend/components.d.ts index 4e5d380..8e25c8b 100644 --- a/frontend/components.d.ts +++ b/frontend/components.d.ts @@ -32,27 +32,10 @@ declare module 'vue' { DataTabPanel: typeof import('./src/features/data-processing/components/DataTabPanel.vue')['default'] DefaultLayout: typeof import('./src/core/layouts/DefaultLayout.vue')['default'] Dialog: typeof import('primevue/dialog')['default'] - Divider: typeof import('primevue/divider')['default'] - DropdownMenu: typeof import('./src/components/ui/dropdown-menu/DropdownMenu.vue')['default'] - DropdownMenuCheckboxItem: typeof import('./src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue')['default'] - DropdownMenuContent: typeof import('./src/components/ui/dropdown-menu/DropdownMenuContent.vue')['default'] - DropdownMenuGroup: typeof import('./src/components/ui/dropdown-menu/DropdownMenuGroup.vue')['default'] - DropdownMenuItem: typeof import('./src/components/ui/dropdown-menu/DropdownMenuItem.vue')['default'] - DropdownMenuLabel: typeof import('./src/components/ui/dropdown-menu/DropdownMenuLabel.vue')['default'] - DropdownMenuRadioGroup: typeof import('./src/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue')['default'] - DropdownMenuRadioItem: typeof import('./src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue')['default'] - DropdownMenuSeparator: typeof import('./src/components/ui/dropdown-menu/DropdownMenuSeparator.vue')['default'] - DropdownMenuShortcut: typeof import('./src/components/ui/dropdown-menu/DropdownMenuShortcut.vue')['default'] - DropdownMenuSub: typeof import('./src/components/ui/dropdown-menu/DropdownMenuSub.vue')['default'] - DropdownMenuSubContent: typeof import('./src/components/ui/dropdown-menu/DropdownMenuSubContent.vue')['default'] - DropdownMenuSubTrigger: typeof import('./src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue')['default'] - DropdownMenuTrigger: typeof import('./src/components/ui/dropdown-menu/DropdownMenuTrigger.vue')['default'] DropZone: typeof import('./src/features/wikibase-schema/components/DropZone.vue')['default'] - FileUpload: typeof import('primevue/fileupload')['default'] Header: typeof import('./src/shared/components/Header.vue')['default'] Input: typeof import('./src/components/ui/input/Input.vue')['default'] InputText: typeof import('primevue/inputtext')['default'] - Label: typeof import('./src/components/ui/label/Label.vue')['default'] MainContent: typeof import('./src/shared/components/MainContent.vue')['default'] OpenProject: typeof import('./src/features/project-management/pages/OpenProject.vue')['default'] Paginator: typeof import('primevue/paginator')['default'] diff --git a/frontend/src/components/ui/dropdown-menu/DropdownMenu.vue b/frontend/src/components/ui/dropdown-menu/DropdownMenu.vue deleted file mode 100644 index c46a282..0000000 --- a/frontend/src/components/ui/dropdown-menu/DropdownMenu.vue +++ /dev/null @@ -1,18 +0,0 @@ - - - diff --git a/frontend/src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue b/frontend/src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue deleted file mode 100644 index d403529..0000000 --- a/frontend/src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +++ /dev/null @@ -1,33 +0,0 @@ - - - diff --git a/frontend/src/components/ui/dropdown-menu/DropdownMenuContent.vue b/frontend/src/components/ui/dropdown-menu/DropdownMenuContent.vue deleted file mode 100644 index f62795a..0000000 --- a/frontend/src/components/ui/dropdown-menu/DropdownMenuContent.vue +++ /dev/null @@ -1,31 +0,0 @@ - - - diff --git a/frontend/src/components/ui/dropdown-menu/DropdownMenuGroup.vue b/frontend/src/components/ui/dropdown-menu/DropdownMenuGroup.vue deleted file mode 100644 index ab71e1a..0000000 --- a/frontend/src/components/ui/dropdown-menu/DropdownMenuGroup.vue +++ /dev/null @@ -1,15 +0,0 @@ - - - diff --git a/frontend/src/components/ui/dropdown-menu/DropdownMenuItem.vue b/frontend/src/components/ui/dropdown-menu/DropdownMenuItem.vue deleted file mode 100644 index 6c8109c..0000000 --- a/frontend/src/components/ui/dropdown-menu/DropdownMenuItem.vue +++ /dev/null @@ -1,36 +0,0 @@ - - - diff --git a/frontend/src/components/ui/dropdown-menu/DropdownMenuLabel.vue b/frontend/src/components/ui/dropdown-menu/DropdownMenuLabel.vue deleted file mode 100644 index 8422029..0000000 --- a/frontend/src/components/ui/dropdown-menu/DropdownMenuLabel.vue +++ /dev/null @@ -1,25 +0,0 @@ - - - diff --git a/frontend/src/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue b/frontend/src/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue deleted file mode 100644 index 49209eb..0000000 --- a/frontend/src/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue +++ /dev/null @@ -1,18 +0,0 @@ - - - diff --git a/frontend/src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue b/frontend/src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue deleted file mode 100644 index 90ef5ca..0000000 --- a/frontend/src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +++ /dev/null @@ -1,34 +0,0 @@ - - - diff --git a/frontend/src/components/ui/dropdown-menu/DropdownMenuSeparator.vue b/frontend/src/components/ui/dropdown-menu/DropdownMenuSeparator.vue deleted file mode 100644 index e8145de..0000000 --- a/frontend/src/components/ui/dropdown-menu/DropdownMenuSeparator.vue +++ /dev/null @@ -1,23 +0,0 @@ - - - diff --git a/frontend/src/components/ui/dropdown-menu/DropdownMenuShortcut.vue b/frontend/src/components/ui/dropdown-menu/DropdownMenuShortcut.vue deleted file mode 100644 index 0bb5f23..0000000 --- a/frontend/src/components/ui/dropdown-menu/DropdownMenuShortcut.vue +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/frontend/src/components/ui/dropdown-menu/DropdownMenuSub.vue b/frontend/src/components/ui/dropdown-menu/DropdownMenuSub.vue deleted file mode 100644 index 7d896c6..0000000 --- a/frontend/src/components/ui/dropdown-menu/DropdownMenuSub.vue +++ /dev/null @@ -1,15 +0,0 @@ - - - diff --git a/frontend/src/components/ui/dropdown-menu/DropdownMenuSubContent.vue b/frontend/src/components/ui/dropdown-menu/DropdownMenuSubContent.vue deleted file mode 100644 index c83ab90..0000000 --- a/frontend/src/components/ui/dropdown-menu/DropdownMenuSubContent.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - diff --git a/frontend/src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue b/frontend/src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue deleted file mode 100644 index 14ec72e..0000000 --- a/frontend/src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +++ /dev/null @@ -1,29 +0,0 @@ - - - diff --git a/frontend/src/components/ui/dropdown-menu/DropdownMenuTrigger.vue b/frontend/src/components/ui/dropdown-menu/DropdownMenuTrigger.vue deleted file mode 100644 index 39be3ff..0000000 --- a/frontend/src/components/ui/dropdown-menu/DropdownMenuTrigger.vue +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/frontend/src/components/ui/dropdown-menu/index.ts b/frontend/src/components/ui/dropdown-menu/index.ts deleted file mode 100644 index d351cfd..0000000 --- a/frontend/src/components/ui/dropdown-menu/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -export { DropdownMenuPortal } from 'reka-ui' -export { default as DropdownMenu } from './DropdownMenu.vue' -export { default as DropdownMenuCheckboxItem } from './DropdownMenuCheckboxItem.vue' -export { default as DropdownMenuContent } from './DropdownMenuContent.vue' -export { default as DropdownMenuGroup } from './DropdownMenuGroup.vue' -export { default as DropdownMenuItem } from './DropdownMenuItem.vue' -export { default as DropdownMenuLabel } from './DropdownMenuLabel.vue' -export { default as DropdownMenuRadioGroup } from './DropdownMenuRadioGroup.vue' -export { default as DropdownMenuRadioItem } from './DropdownMenuRadioItem.vue' -export { default as DropdownMenuSeparator } from './DropdownMenuSeparator.vue' -export { default as DropdownMenuShortcut } from './DropdownMenuShortcut.vue' -export { default as DropdownMenuSub } from './DropdownMenuSub.vue' -export { default as DropdownMenuSubContent } from './DropdownMenuSubContent.vue' -export { default as DropdownMenuSubTrigger } from './DropdownMenuSubTrigger.vue' -export { default as DropdownMenuTrigger } from './DropdownMenuTrigger.vue' diff --git a/frontend/src/components/ui/label/Label.vue b/frontend/src/components/ui/label/Label.vue deleted file mode 100644 index e376b79..0000000 --- a/frontend/src/components/ui/label/Label.vue +++ /dev/null @@ -1,26 +0,0 @@ - - - diff --git a/frontend/src/components/ui/label/index.ts b/frontend/src/components/ui/label/index.ts deleted file mode 100644 index 572c2f0..0000000 --- a/frontend/src/components/ui/label/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as Label } from './Label.vue' diff --git a/frontend/src/features/project-management/composables/useProjectCreationComposable.ts b/frontend/src/features/project-management/composables/useProjectCreationComposable.ts index 9fb4110..6843c27 100644 --- a/frontend/src/features/project-management/composables/useProjectCreationComposable.ts +++ b/frontend/src/features/project-management/composables/useProjectCreationComposable.ts @@ -2,70 +2,59 @@ import type { ApiErrors } from '@backend/types/error-schemas' export const useProjectCreationComposable = () => { const router = useRouter() - const { setIsCreating } = useCreateProjectStore() + const store = useCreateProjectStore() const { showError } = useErrorHandling() - const createProject = async (event: FileUploadUploaderEvent) => { - const eventFiles = Array.isArray(event.files) ? event.files : [event.files] - - if (eventFiles.length === 0) { + const createProject = async () => { + if (!store.fileToUpload) { showError([ { - code: 'VALIDATION', - message: 'Please add files first.', - }, - ]) - return - } - - const fileToUpload = eventFiles[0] - if (!fileToUpload) { - showError([ - { - code: 'VALIDATION', - message: 'No file selected for upload', + code: 'PROJECT_CREATION_FAILED', + message: 'Please select a file to upload.', }, ]) return } - setIsCreating(true) + store.setIsCreating(true) const { data, error } = await api().project.import.post({ - file: fileToUpload, + file: store.fileToUpload, }) - setIsCreating(false) + store.setIsCreating(false) + store.setFileToUpload(undefined) if (error) { showError(error.value as ApiErrors) return } - if (data?.data?.id) { - setTimeout(() => { - router - .push({ - name: 'ProjectView', - params: { id: data.data.id, tab: 'data' }, - }) - .catch(() => { - showError([ - { - code: 'PROJECT_CREATION_FAILED', - message: 'Failed to update URL.', - }, - ]) - }) - }, 1000) - } else { + if (!data?.data?.id) { showError([ { code: 'PROJECT_CREATION_FAILED', message: 'Failed to create project. Please try again.', }, ]) + return } + + setTimeout(() => { + router + .push({ + name: 'ProjectView', + params: { id: data.data.id, tab: 'data' }, + }) + .catch(() => { + showError([ + { + code: 'PROJECT_CREATION_FAILED', + message: 'Failed to update URL.', + }, + ]) + }) + }, 1000) } return { diff --git a/frontend/src/features/project-management/pages/CreateProject.vue b/frontend/src/features/project-management/pages/CreateProject.vue index 9899320..1c6acfc 100644 --- a/frontend/src/features/project-management/pages/CreateProject.vue +++ b/frontend/src/features/project-management/pages/CreateProject.vue @@ -1,7 +1,17 @@