diff --git a/package-lock.json b/package-lock.json index bac2ed55a..1c9556a7e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,8 @@ "@fontsource/dancing-script": "^5.1.0", "@libresign/vue-pdf-editor": "^1.2.7", "@marionebl/option": "^1.0.8", + "@mdi/js": "^7.4.47", + "@mdi/svg": "^7.4.47", "@nextcloud/auth": "^2.4.0", "@nextcloud/axios": "^2.5.1", "@nextcloud/dialogs": "^5.3.7", @@ -2953,6 +2955,12 @@ "integrity": "sha512-KPnNOtm5i2pMabqZxpUz7iQf+mfrYZyKCZ8QNz85czgEt7cuHcGorWfdzUMWYA0SD+a6Hn4FmJ+YhzzzjkTZrQ==", "license": "Apache-2.0" }, + "node_modules/@mdi/svg": { + "version": "7.4.47", + "resolved": "https://registry.npmjs.org/@mdi/svg/-/svg-7.4.47.tgz", + "integrity": "sha512-WQ2gDll12T9WD34fdRFgQVgO8bag3gavrAgJ0frN4phlwdJARpE6gO1YvLEMJR0KKgoc+/Ea/A0Pp11I00xBvw==", + "license": "Apache-2.0" + }, "node_modules/@nextcloud/auth": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/@nextcloud/auth/-/auth-2.4.0.tgz", diff --git a/package.json b/package.json index cb066bd3f..29dac671d 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,8 @@ "@fontsource/dancing-script": "^5.1.0", "@libresign/vue-pdf-editor": "^1.2.7", "@marionebl/option": "^1.0.8", + "@mdi/js": "^7.4.47", + "@mdi/svg": "^7.4.47", "@nextcloud/auth": "^2.4.0", "@nextcloud/axios": "^2.5.1", "@nextcloud/dialogs": "^5.3.7", diff --git a/src/helpers/logger.js b/src/helpers/logger.js new file mode 100644 index 000000000..c9565f4ba --- /dev/null +++ b/src/helpers/logger.js @@ -0,0 +1,11 @@ +/** + * SPDX-FileCopyrightText: 2020-2024 LibreCode coop and contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import { getLoggerBuilder } from '@nextcloud/logger' + +export default getLoggerBuilder() + .setApp('libresign') + .detectUser() + .build() diff --git a/src/router/router.js b/src/router/router.js index 56691d25b..806af21f8 100644 --- a/src/router/router.js +++ b/src/router/router.js @@ -158,6 +158,11 @@ const router = new Router({ name: 'timeline', component: () => import('../views/Timeline/Timeline.vue'), }, + { + path: '/f/filelist/sign', + name: 'fileslist', + component: () => import('../views/FilesList/FilesList.vue'), + }, { path: '/f/request', name: 'requestFiles', diff --git a/src/store/filters.js b/src/store/filters.js new file mode 100644 index 000000000..c081bc0ef --- /dev/null +++ b/src/store/filters.js @@ -0,0 +1,27 @@ +/** + * SPDX-FileCopyrightText: 2020-2024 LibreCode coop and contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import { defineStore } from 'pinia' +import logger from '../helpers/logger.js' + +export const useFiltersStore = defineStore('filter', { + state: () => ({ + chips: {}, + }), + + getters: { + activeChips(state) { + return Object.values(state.chips).flat() + }, + }, + + actions: { + onFilterUpdateChips(event) { + this.chips = { ...this.chips, [event.id]: [...event.detail] } + + logger.debug('File list filter chips updated', { chips: event.detail }) + }, + }, +}) diff --git a/src/views/FilesList/FileListFilter/FileListFilter.vue b/src/views/FilesList/FileListFilter/FileListFilter.vue new file mode 100644 index 000000000..776461d3e --- /dev/null +++ b/src/views/FilesList/FileListFilter/FileListFilter.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/src/views/FilesList/FileListFilter/FileListFilterModified.vue b/src/views/FilesList/FileListFilter/FileListFilterModified.vue new file mode 100644 index 000000000..7e355d864 --- /dev/null +++ b/src/views/FilesList/FileListFilter/FileListFilterModified.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/src/views/FilesList/FileListFilter/FileListFilterStatus.vue b/src/views/FilesList/FileListFilter/FileListFilterStatus.vue new file mode 100644 index 000000000..538785574 --- /dev/null +++ b/src/views/FilesList/FileListFilter/FileListFilterStatus.vue @@ -0,0 +1,136 @@ + + + + + diff --git a/src/views/FilesList/FileListFilters.vue b/src/views/FilesList/FileListFilters.vue new file mode 100644 index 000000000..48d174122 --- /dev/null +++ b/src/views/FilesList/FileListFilters.vue @@ -0,0 +1,74 @@ + + + + + diff --git a/src/views/FilesList/FilesList.vue b/src/views/FilesList/FilesList.vue new file mode 100644 index 000000000..b654ef6a2 --- /dev/null +++ b/src/views/FilesList/FilesList.vue @@ -0,0 +1,232 @@ + + + + + diff --git a/src/views/FilesList/FilesListVirtual.vue b/src/views/FilesList/FilesListVirtual.vue new file mode 100644 index 000000000..2a0e385d6 --- /dev/null +++ b/src/views/FilesList/FilesListVirtual.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/src/views/FilesList/VirtualList.vue b/src/views/FilesList/VirtualList.vue new file mode 100644 index 000000000..941ddf47b --- /dev/null +++ b/src/views/FilesList/VirtualList.vue @@ -0,0 +1,13 @@ + + + diff --git a/tsconfig.json b/tsconfig.json index 4176c09e0..3d0d2e676 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,4 +12,4 @@ "vueCompilerOptions": { "target": 2.7, } -} \ No newline at end of file +}