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 @@
+
+
+
+
+
+
+
+
+
+
+ {{ t('files', 'Clear filter') }}
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+ {{ preset.label }}
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+ {{ status.label }}
+
+
+
+
+
+
+
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
+}