From a59dbff9f1b42c26350186e40e9a87672ab7eca8 Mon Sep 17 00:00:00 2001 From: Sebastian Krupinski Date: Tue, 3 Mar 2026 21:55:48 -0500 Subject: [PATCH] refactor: standardize design Signed-off-by: Sebastian Krupinski --- composer.json | 6 +- lib/Module.php | 20 +- package.json | 2 +- src/components/FileActionsMenu.vue | 29 +- src/components/FilesInfoPanel.vue | 40 +-- src/components/index.ts | 3 + src/components/viewer/FileViewerDialog.vue | 293 +++++++++++++++++++++ src/components/viewer/index.ts | 1 + src/components/views/FilesDetailsView.vue | 42 +-- src/components/views/FilesGridView.vue | 36 +-- src/components/views/FilesListView.vue | 38 +-- src/composables/index.ts | 2 + src/composables/useFileManager.ts | 139 +++++----- src/composables/useFileSelection.ts | 104 +++----- src/composables/useFileUpload.ts | 31 ++- src/composables/useFileViewer.ts | 81 ++++++ src/integrations.ts | 6 +- src/pages/FilesPage.vue | 145 ++++++++-- src/routes.ts | 4 +- src/stores/documentsStore.ts | 222 ++++++++++++++++ src/stores/index.ts | 1 + src/types/index.ts | 20 ++ src/utils/fileHelpers.ts | 21 +- tsconfig.app.json | 4 +- vite.config.ts | 10 +- 25 files changed, 994 insertions(+), 306 deletions(-) create mode 100644 src/components/viewer/FileViewerDialog.vue create mode 100644 src/components/viewer/index.ts create mode 100644 src/composables/useFileViewer.ts create mode 100644 src/stores/documentsStore.ts create mode 100644 src/stores/index.ts diff --git a/composer.json b/composer.json index 6aaa1c5..b2e9ea6 100644 --- a/composer.json +++ b/composer.json @@ -1,11 +1,11 @@ { - "name": "ktrix/files", - "description": "File browser interface module", + "name": "ktrix/documents", + "description": "Documents interface module", "type": "ktrix-module", "license": "AGPL-3.0-or-later", "autoload": { "psr-4": { - "KTXM\\Files\\": "lib/" + "KTXM\\Documents\\": "lib/" } }, "require": {} diff --git a/lib/Module.php b/lib/Module.php index 9a245ef..2d37c7c 100644 --- a/lib/Module.php +++ b/lib/Module.php @@ -1,12 +1,12 @@ [ - 'label' => 'Access Files', - 'description' => 'View and access the file browser module', - 'group' => 'File Management' + 'documents' => [ + 'label' => 'Access Documents', + 'description' => 'View and access the documents module', + 'group' => 'Document Management' ], ]; } @@ -54,7 +54,7 @@ class Module extends ModuleInstanceAbstract implements ModuleBrowserInterface { return [ 'handle' => $this->handle(), - 'namespace' => 'Files', + 'namespace' => 'Documents', 'version' => $this->version(), 'label' => $this->label(), 'author' => $this->author(), diff --git a/package.json b/package.json index 8f287af..9316fc1 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "files", + "name": "documents", "version": "0.0.1", "private": true, "license": "AGPL-3.0-or-later", diff --git a/src/components/FileActionsMenu.vue b/src/components/FileActionsMenu.vue index 28309df..be2dcab 100644 --- a/src/components/FileActionsMenu.vue +++ b/src/components/FileActionsMenu.vue @@ -1,29 +1,32 @@ @@ -52,6 +55,10 @@ function isEntity(item: FileCollectionObject | FileEntityObject): item is FileEn /> + + + Open + Details diff --git a/src/components/FilesInfoPanel.vue b/src/components/FilesInfoPanel.vue index 839c3ea..f121b03 100644 --- a/src/components/FilesInfoPanel.vue +++ b/src/components/FilesInfoPanel.vue @@ -1,11 +1,11 @@ + + + + diff --git a/src/components/viewer/index.ts b/src/components/viewer/index.ts new file mode 100644 index 0000000..a6f2e3b --- /dev/null +++ b/src/components/viewer/index.ts @@ -0,0 +1 @@ +export { default as FileViewerDialog } from './FileViewerDialog.vue' diff --git a/src/components/views/FilesDetailsView.vue b/src/components/views/FilesDetailsView.vue index 8196488..986ea74 100644 --- a/src/components/views/FilesDetailsView.vue +++ b/src/components/views/FilesDetailsView.vue @@ -1,27 +1,28 @@ @@ -56,18 +57,19 @@ function isCollection(wrapped: ItemWithType): wrapped is { item: FileCollectionO
mdi-folder - {{ wrapped.item.label }} + {{ wrapped.item.properties.label || String(wrapped.item.identifier ?? '') }}
-
{{ formatDate(wrapped.item.modifiedOn) }}
+
{{ formatDate(wrapped.item.modified) }}
- {{ getFileIcon(wrapped.item as FileEntityObject) }} - {{ wrapped.item.label }} + {{ getFileIcon(wrapped.item as EntityObject) }} + {{ wrapped.item.properties.label || String(wrapped.item.identifier ?? '') }}
-
{{ formatSize((wrapped.item as FileEntityObject).size) }}
-
{{ formatDate(wrapped.item.modifiedOn) }}
+
{{ formatSize(wrapped.item.properties.size) }}
+
{{ formatDate(wrapped.item.modified) }}
-import { FileCollectionObject } from '@FilesManager/models/collection' -import { FileEntityObject } from '@FilesManager/models/entity' +import { CollectionObject } from '@DocumentsManager/models/collection' +import { EntityObject } from '@DocumentsManager/models/entity' import { getFileIcon, formatSize } from '@/utils/fileHelpers' import { FileActionsMenu } from '@/components' defineProps<{ - collections: FileCollectionObject[] - entities: FileEntityObject[] + collections: CollectionObject[] + entities: EntityObject[] selectedIds: Set }>() const emit = defineEmits<{ - 'item-click': [item: FileCollectionObject | FileEntityObject, event: MouseEvent | KeyboardEvent] - 'rename': [item: FileCollectionObject | FileEntityObject] - 'delete': [item: FileCollectionObject | FileEntityObject] - 'download': [item: FileCollectionObject | FileEntityObject] - 'show-details': [item: FileCollectionObject | FileEntityObject] + 'item-click': [item: CollectionObject | EntityObject, event: MouseEvent | KeyboardEvent] + 'open': [item: CollectionObject | EntityObject] + 'rename': [item: CollectionObject | EntityObject] + 'delete': [item: CollectionObject | EntityObject] + 'download': [item: CollectionObject | EntityObject] + 'show-details': [item: CollectionObject | EntityObject] }>() @@ -24,9 +25,9 @@ const emit = defineEmits<{
@@ -34,6 +35,7 @@ const emit = defineEmits<{ :item="folder" size="x-small" button-class="action-btn" + @open="emit('open', $event)" @rename="emit('rename', $event)" @delete="emit('delete', $event)" @download="emit('download', $event)" @@ -41,22 +43,24 @@ const emit = defineEmits<{ />
mdi-folder -
{{ folder.label }}
+
{{ folder.properties.label || String(folder.identifier ?? '') }}
{{ getFileIcon(entity) }} -
{{ entity.label }}
-
{{ formatSize(entity.size) }}
+
{{ entity.properties.label || String(entity.identifier ?? '') }}
+
{{ formatSize(entity.properties.size) }}
diff --git a/src/components/views/FilesListView.vue b/src/components/views/FilesListView.vue index f06caa0..0512fb8 100644 --- a/src/components/views/FilesListView.vue +++ b/src/components/views/FilesListView.vue @@ -1,27 +1,28 @@ @@ -45,16 +46,17 @@ function isCollection(wrapped: ItemWithType): wrapped is { item: FileCollectionO - {{ wrapped.item.label }} + {{ wrapped.item.properties.label || String(wrapped.item.identifier ?? '') }}