@@ -467,13 +467,13 @@ exports[`RoleDropdown for file shares when no existing role is present renders a
@@ -531,19 +531,19 @@ exports[`RoleDropdown for file shares when no existing role is present renders a
Custom permissions
-
+
-
+
-
+
-
+
-
+
diff --git a/packages/web-app-search/src/portals/SearchBar.vue b/packages/web-app-search/src/portals/SearchBar.vue
index 569ce202fcb..29e8a795a8e 100644
--- a/packages/web-app-search/src/portals/SearchBar.vue
+++ b/packages/web-app-search/src/portals/SearchBar.vue
@@ -155,23 +155,26 @@ export default defineComponent({
term() {
this.debouncedSearch(this)
},
- searchResults() {
- this.activePreviewIndex = null
+ searchResults: {
+ handler() {
+ this.activePreviewIndex = null
- this.$nextTick(() => {
- if (this.showNoResults) {
- return
- }
- if (this.$refs.optionsDrop) {
- this.markInstance = new Mark(this.$refs.optionsDrop.$refs.drop)
- this.markInstance.unmark()
- this.markInstance.mark(this.term, {
- element: 'span',
- className: 'highlight-mark',
- exclude: ['.provider-details *']
- })
- }
- })
+ this.$nextTick(() => {
+ if (this.showNoResults) {
+ return
+ }
+ if (this.$refs.optionsDrop) {
+ this.markInstance = new Mark(this.$refs.optionsDrop.$refs.drop)
+ this.markInstance.unmark()
+ this.markInstance.mark(this.term, {
+ element: 'span',
+ className: 'highlight-mark',
+ exclude: ['.provider-details *']
+ })
+ }
+ })
+ },
+ deep: true
},
$route: {
handler(r) {
diff --git a/packages/web-pkg/src/components/AppTopBar.vue b/packages/web-pkg/src/components/AppTopBar.vue
index 7cdbfe02e0f..aafa9cd71d1 100644
--- a/packages/web-pkg/src/components/AppTopBar.vue
+++ b/packages/web-pkg/src/components/AppTopBar.vue
@@ -31,7 +31,8 @@ export default defineComponent({
type: Object,
default: null
}
- }
+ },
+ emits: ['close']
})
diff --git a/packages/web-pkg/src/components/QuotaSelect.vue b/packages/web-pkg/src/components/QuotaSelect.vue
index 59ded6b957e..b860429d3e3 100644
--- a/packages/web-pkg/src/components/QuotaSelect.vue
+++ b/packages/web-pkg/src/components/QuotaSelect.vue
@@ -52,6 +52,7 @@ export default {
default: 0
}
},
+ emits: ['selectedOptionChange'],
data: function () {
return {
selectedOption: undefined,
diff --git a/packages/web-pkg/src/components/sideBar/CompareSaveDialog.vue b/packages/web-pkg/src/components/sideBar/CompareSaveDialog.vue
index 67ef5d81af5..d2188e768e9 100644
--- a/packages/web-pkg/src/components/sideBar/CompareSaveDialog.vue
+++ b/packages/web-pkg/src/components/sideBar/CompareSaveDialog.vue
@@ -49,6 +49,7 @@ export default defineComponent({
}
}
},
+ emits: ['confirm', 'revert'],
setup() {
const saved = ref(false)
let savedEventToken
diff --git a/packages/web-pkg/src/components/sideBar/SideBar.vue b/packages/web-pkg/src/components/sideBar/SideBar.vue
index 0bd0ce15bd1..ae2e8757009 100644
--- a/packages/web-pkg/src/components/sideBar/SideBar.vue
+++ b/packages/web-pkg/src/components/sideBar/SideBar.vue
@@ -62,7 +62,7 @@
@@ -139,6 +139,7 @@ export default defineComponent({
default: false
}
},
+ emits: ['close', 'selectPanel'],
data() {
return {
@@ -193,7 +194,6 @@ export default defineComponent({
immediate: true
}
},
-
beforeUnmount() {
visibilityObserver.disconnect()
hiddenObserver.disconnect()
diff --git a/packages/web-pkg/src/composables/appDefaults/useDocumentTitle.ts b/packages/web-pkg/src/composables/appDefaults/useDocumentTitle.ts
index 46870336de0..8962d4f446b 100755
--- a/packages/web-pkg/src/composables/appDefaults/useDocumentTitle.ts
+++ b/packages/web-pkg/src/composables/appDefaults/useDocumentTitle.ts
@@ -28,6 +28,6 @@ export function useDocumentTitle({ titleSegments, store, eventBus }: DocumentTit
eventBus.publish('runtime.documentTitle.changed', payload)
},
- { immediate: true }
+ { immediate: true, deep: true }
)
}
diff --git a/packages/web-pkg/src/composables/driveResolver/useDriveResolver.ts b/packages/web-pkg/src/composables/driveResolver/useDriveResolver.ts
index 397cee07bda..8a07e6a2a50 100644
--- a/packages/web-pkg/src/composables/driveResolver/useDriveResolver.ts
+++ b/packages/web-pkg/src/composables/driveResolver/useDriveResolver.ts
@@ -102,7 +102,7 @@ export const useDriveResolver = (options: DriveResolverOptions = {}): DriveResol
leadingSlash: true
})
},
- { immediate: true }
+ { immediate: true, deep: true }
)
watch(
space,
diff --git a/packages/web-pkg/src/composables/sideBar/useSideBar.ts b/packages/web-pkg/src/composables/sideBar/useSideBar.ts
index 55ebff88283..cf5388126aa 100644
--- a/packages/web-pkg/src/composables/sideBar/useSideBar.ts
+++ b/packages/web-pkg/src/composables/sideBar/useSideBar.ts
@@ -28,14 +28,14 @@ export const useSideBar = (options?: SideBarOptions): SideBarResult => {
})
const openSideBarWithPanelToken = eventBus.subscribe(
SideBarEventTopics.openWithPanel,
- (panelName) => {
+ (panelName: string) => {
sideBarOpen.value = true
sideBarActivePanel.value = panelName
}
)
const setActiveSideBarPanelToken = eventBus.subscribe(
SideBarEventTopics.setActivePanel,
- (panelName) => {
+ (panelName: string) => {
sideBarActivePanel.value = panelName
}
)
diff --git a/packages/web-runtime/package.json b/packages/web-runtime/package.json
index eed546c9684..0075edff273 100644
--- a/packages/web-runtime/package.json
+++ b/packages/web-runtime/package.json
@@ -18,8 +18,8 @@
"axios": "^0.27.2",
"easygettext": "https://github.com/owncloud/easygettext/archive/refs/tags/v2.18.1-oc.tar.gz",
"filesize": "^9.0.11",
- "focus-trap": "^6.4.0",
- "focus-trap-vue": "^1.1.1",
+ "focus-trap": "^7.2.0",
+ "focus-trap-vue": "^4.0.1",
"fuse.js": "^6.5.3",
"lodash-es": "^4.17.21",
"luxon": "^2.4.0",
diff --git a/packages/web-runtime/src/App.vue b/packages/web-runtime/src/App.vue
index 19c27a755f6..0cf58a75a8c 100644
--- a/packages/web-runtime/src/App.vue
+++ b/packages/web-runtime/src/App.vue
@@ -120,6 +120,7 @@ export default defineComponent({
},
capabilities: {
immediate: true,
+ deep: true,
handler: function (caps) {
if (!caps?.notifications) {
return
diff --git a/packages/web-runtime/src/compatConfig.ts b/packages/web-runtime/src/compatConfig.ts
index dcd9a3877ab..a506a3c9f19 100644
--- a/packages/web-runtime/src/compatConfig.ts
+++ b/packages/web-runtime/src/compatConfig.ts
@@ -2,47 +2,47 @@ import { configureCompat } from 'vue'
type CompatConfig = Parameters[0]
export const compatConfig: CompatConfig = {
- MODE: 2
- // ATTR_ENUMERATED_COERCION: false,
- // ATTR_FALSE_VALUE: false,
- // COMPONENT_ASYNC: false,
- // COMPONENT_FUNCTIONAL: false,
- // COMPONENT_V_MODEL: false,
- // CONFIG_DEVTOOLS: false,
- // CONFIG_IGNORED_ELEMENTS: false,
- // CONFIG_KEY_CODES: false,
- // CONFIG_OPTION_MERGE_STRATS: false,
- // CONFIG_PRODUCTION_TIP: false,
- // CONFIG_SILENT: false,
- // CONFIG_WHITESPACE: false,
- // CUSTOM_DIR: false,
- // FILTERS: false,
- // GLOBAL_DELETE: false,
- // GLOBAL_EXTEND: false,
- // GLOBAL_MOUNT: false,
- // GLOBAL_MOUNT_CONTAINER: false,
- // GLOBAL_OBSERVABLE: false,
- // GLOBAL_PRIVATE_UTIL: false,
- // GLOBAL_PROTOTYPE: false,
- // GLOBAL_SET: false,
- // INSTANCE_ATTRS_CLASS_STYLE: false,
- // INSTANCE_CHILDREN: false,
- // INSTANCE_DELETE: false,
- // INSTANCE_DESTROY: false,
- // INSTANCE_EVENT_EMITTER: false,
- // INSTANCE_EVENT_HOOKS: false,
- // INSTANCE_LISTENERS: false,
- // INSTANCE_SCOPED_SLOTS: false,
- // INSTANCE_SET: false,
- // OPTIONS_BEFORE_DESTROY: false,
- // OPTIONS_DATA_FN: false,
- // OPTIONS_DATA_MERGE: false,
- // OPTIONS_DESTROYED: false,
- // PRIVATE_APIS: false,
- // PROPS_DEFAULT_THIS: false,
- // RENDER_FUNCTION: false // comment in when vue-router, vue-gettext, ... are fixed/updated
- // TRANSITION_CLASSES: false,
- // TRANSITION_GROUP_ROOT: false,
- // V_ON_KEYCODE_MODIFIER: false,
- // WATCH_ARRAY: false,
+ MODE: 3,
+ ATTR_ENUMERATED_COERCION: false,
+ ATTR_FALSE_VALUE: 'suppress-warning',
+ COMPONENT_ASYNC: false,
+ COMPONENT_FUNCTIONAL: false,
+ COMPONENT_V_MODEL: false,
+ CONFIG_DEVTOOLS: false,
+ CONFIG_IGNORED_ELEMENTS: false,
+ CONFIG_KEY_CODES: false,
+ CONFIG_OPTION_MERGE_STRATS: false,
+ CONFIG_PRODUCTION_TIP: false,
+ CONFIG_SILENT: false,
+ CONFIG_WHITESPACE: 'suppress-warning',
+ CUSTOM_DIR: false,
+ FILTERS: false,
+ GLOBAL_DELETE: false,
+ GLOBAL_EXTEND: false,
+ GLOBAL_MOUNT: false,
+ GLOBAL_MOUNT_CONTAINER: false,
+ GLOBAL_OBSERVABLE: false,
+ GLOBAL_PRIVATE_UTIL: false,
+ GLOBAL_PROTOTYPE: false,
+ GLOBAL_SET: false,
+ INSTANCE_ATTRS_CLASS_STYLE: false,
+ INSTANCE_CHILDREN: false,
+ INSTANCE_DELETE: false,
+ INSTANCE_DESTROY: false,
+ INSTANCE_EVENT_EMITTER: false,
+ INSTANCE_EVENT_HOOKS: false,
+ INSTANCE_LISTENERS: false,
+ INSTANCE_SCOPED_SLOTS: false,
+ INSTANCE_SET: false,
+ OPTIONS_BEFORE_DESTROY: false,
+ OPTIONS_DATA_FN: false,
+ OPTIONS_DATA_MERGE: false,
+ OPTIONS_DESTROYED: false,
+ PRIVATE_APIS: false,
+ PROPS_DEFAULT_THIS: false,
+ RENDER_FUNCTION: false,
+ TRANSITION_CLASSES: false,
+ TRANSITION_GROUP_ROOT: false,
+ V_ON_KEYCODE_MODIFIER: false,
+ WATCH_ARRAY: false
}
diff --git a/packages/web-runtime/src/components/EditPasswordModal.vue b/packages/web-runtime/src/components/EditPasswordModal.vue
index 123a63a6962..1e8e9cc3cb0 100644
--- a/packages/web-runtime/src/components/EditPasswordModal.vue
+++ b/packages/web-runtime/src/components/EditPasswordModal.vue
@@ -38,6 +38,7 @@ import { defineComponent } from 'vue'
export default defineComponent({
name: 'EditPasswordModal',
+ emits: ['cancel', 'confirm'],
data: function () {
return {
currentPassword: '',
diff --git a/packages/web-runtime/src/components/MessageBar.vue b/packages/web-runtime/src/components/MessageBar.vue
index 327c7f247eb..5079cae364e 100644
--- a/packages/web-runtime/src/components/MessageBar.vue
+++ b/packages/web-runtime/src/components/MessageBar.vue
@@ -35,6 +35,7 @@ export default defineComponent({
return this.activeMessages ? this.activeMessages.slice(0, 5) : []
}
},
+ emits: ['deleteMessage'],
methods: {
deleteMessage(item) {
this.$emit('deleteMessage', item)
diff --git a/packages/web-runtime/tests/unit/components/Topbar/__snapshots__/ApplicationsMenu.spec.ts.snap b/packages/web-runtime/tests/unit/components/Topbar/__snapshots__/ApplicationsMenu.spec.ts.snap
index 544ee734ac8..0898aeed853 100644
--- a/packages/web-runtime/tests/unit/components/Topbar/__snapshots__/ApplicationsMenu.spec.ts.snap
+++ b/packages/web-runtime/tests/unit/components/Topbar/__snapshots__/ApplicationsMenu.spec.ts.snap
@@ -8,7 +8,7 @@ exports[`ApplicationsMenu component should render navigation with button and men
-
+
@@ -17,7 +17,7 @@ exports[`ApplicationsMenu component should render navigation with button and men
-
+
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index fe87d01d455..54ab9e9db68 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -60,8 +60,6 @@ importers:
ejs: 3.1.8
eslint: 8.31.0
flush-promises: 1.0.2
- focus-trap: 6.9.4
- focus-trap-vue: 1.1.1
git-repo-info: 2.1.1
jest: 29.3.1
jest-axe: 5.0.1
@@ -154,8 +152,6 @@ importers:
ejs: 3.1.8
eslint: 8.31.0
flush-promises: 1.0.2
- focus-trap: 6.9.4
- focus-trap-vue: 1.1.1_kdeyb7xlqs3c3yfjn6vdsdsiza
git-repo-info: 2.1.1
jest: 29.3.1_35bb52e3ngsl3trrvg3csiponq
jest-axe: 5.0.1
@@ -221,8 +217,8 @@ importers:
depcheck: ^1.3.1
file-loader: ^6.2.0
filesize: ^9.0.11
- focus-trap: ^6.4.0
- focus-trap-vue: ^1.1.1
+ focus-trap: ^7.2.0
+ focus-trap-vue: ^4.0.1
fuse.js: ^6.4.6
glob: ^8.0.3
html-loader: ^1.3.2
@@ -306,8 +302,8 @@ importers:
depcheck: 1.4.3
file-loader: 6.2.0_webpack@4.46.0
filesize: 9.0.11
- focus-trap: 6.9.4
- focus-trap-vue: 1.1.1_kdeyb7xlqs3c3yfjn6vdsdsiza
+ focus-trap: 7.2.0
+ focus-trap-vue: 4.0.1_nn2zg2o47bujavotzgw5cgkzcu
fuse.js: 6.5.3
glob: 8.0.3
html-loader: 1.3.2_webpack@4.46.0
@@ -626,8 +622,8 @@ importers:
axios: ^0.27.2
easygettext: https://github.com/owncloud/easygettext/archive/refs/tags/v2.18.1-oc.tar.gz
filesize: ^9.0.11
- focus-trap: ^6.4.0
- focus-trap-vue: ^1.1.1
+ focus-trap: ^7.2.0
+ focus-trap-vue: ^4.0.1
fuse.js: ^6.5.3
lodash-es: ^4.17.21
luxon: ^2.4.0
@@ -673,8 +669,8 @@ importers:
axios: 0.27.2
easygettext: '@github.com/owncloud/easygettext/archive/refs/tags/v2.18.1-oc.tar.gz'
filesize: 9.0.11
- focus-trap: 6.9.0
- focus-trap-vue: 1.1.1_py3sdzkm4m37vgnfmkoyooqlle
+ focus-trap: 7.2.0
+ focus-trap-vue: 4.0.1_nn2zg2o47bujavotzgw5cgkzcu
fuse.js: 6.5.3
lodash-es: 4.17.21
luxon: 2.4.0
@@ -8194,7 +8190,7 @@ packages:
minipass-pipeline: 1.2.4
mkdirp: 1.0.4
p-map: 4.0.0
- promise-inflight: 1.0.1_bluebird@3.7.2
+ promise-inflight: 1.0.1
rimraf: 3.0.2
ssri: 8.0.1
tar: 6.1.13
@@ -12069,37 +12065,19 @@ packages:
readable-stream: 2.3.7
dev: true
- /focus-trap-vue/1.1.1_kdeyb7xlqs3c3yfjn6vdsdsiza:
- resolution: {integrity: sha512-N+M4d4uYymCogct417gUL7wWSMIW/oUcCicfg3eRdo+gz7jlQnIGwUwViFxPkKV7iyzpc81g6JeSxRWiYWU3eQ==}
+ /focus-trap-vue/4.0.1_nn2zg2o47bujavotzgw5cgkzcu:
+ resolution: {integrity: sha512-2iqOeoSvgq7Um6aL+255a/wXPskj6waLq2oKCa4gOnMORPo15JX7wN6J5bl1SMhMlTlkHXGSrQ9uJPJLPZDl5w==}
peerDependencies:
- focus-trap: ^6.0.1
- vue: ^2.6.0
+ focus-trap: ^7.0.0
+ vue: ^3.0.0
dependencies:
- focus-trap: 6.9.4
+ focus-trap: 7.2.0
vue: 3.2.45
- dev: true
- /focus-trap-vue/1.1.1_py3sdzkm4m37vgnfmkoyooqlle:
- resolution: {integrity: sha512-N+M4d4uYymCogct417gUL7wWSMIW/oUcCicfg3eRdo+gz7jlQnIGwUwViFxPkKV7iyzpc81g6JeSxRWiYWU3eQ==}
- peerDependencies:
- focus-trap: ^6.0.1
- vue: ^2.6.0
+ /focus-trap/7.2.0:
+ resolution: {integrity: sha512-v4wY6HDDYvzkBy4735kW5BUEuw6Yz9ABqMYLuTNbzAFPcBOGiGHwwcNVMvUz4G0kgSYh13wa/7TG3XwTeT4O/A==}
dependencies:
- focus-trap: 6.9.0
- vue: 3.2.45
- dev: false
-
- /focus-trap/6.9.0:
- resolution: {integrity: sha512-Yv3ieSeAPbfjzjU6xIuF1yAGw0kIKO5EkEJL9o/8MYfBcr99cV7dE6rJM4slk1itDHHeEhoNorQVzvEIT1rNsw==}
- dependencies:
- tabbable: 5.3.1
- dev: false
-
- /focus-trap/6.9.4:
- resolution: {integrity: sha512-v2NTsZe2FF59Y+sDykKY+XjqZ0cPfhq/hikWVL88BqLivnNiEffAsac6rP6H45ff9wG9LL5ToiDqrLEP9GX9mw==}
- dependencies:
- tabbable: 5.3.3
- dev: true
+ tabbable: 6.0.1
/follow-redirects/1.15.1:
resolution: {integrity: sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==}
@@ -18455,6 +18433,15 @@ packages:
engines: {node: '>=0.4.0'}
dev: true
+ /promise-inflight/1.0.1:
+ resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==}
+ peerDependencies:
+ bluebird: '*'
+ peerDependenciesMeta:
+ bluebird:
+ optional: true
+ dev: true
+
/promise-inflight/1.0.1_bluebird@3.7.2:
resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==}
peerDependencies:
@@ -20968,13 +20955,8 @@ packages:
resolution: {integrity: sha512-k8uzYIkIVwmT+TcglpdN50pS2y1BDcUnBPK9iJeGu0Pl1lOI8pD6wtzgw91Pjpe+RxtTncw32tLxs/R0yNL2Mg==}
dev: true
- /tabbable/5.3.1:
- resolution: {integrity: sha512-NtO7I7eoAHR+JwwcNsi/PipamtAEebYDnur/k9wM6n238HHy/+1O4+7Zx7e/JaDAbKJPlIFYsfsV/6tPqTOQvg==}
- dev: false
-
- /tabbable/5.3.3:
- resolution: {integrity: sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==}
- dev: true
+ /tabbable/6.0.1:
+ resolution: {integrity: sha512-SYJSIgeyXW7EuX1ytdneO5e8jip42oHWg9xl/o3oTYhmXusZVgiA+VlPvjIN+kHii9v90AmzTZEBcsEvuAY+TA==}
/table/6.8.1:
resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==}