diff --git a/changelog/unreleased/enhancement-create-link-modal b/changelog/unreleased/enhancement-create-link-modal
index dc8ba0b2fba..8e2e2eda4fd 100644
--- a/changelog/unreleased/enhancement-create-link-modal
+++ b/changelog/unreleased/enhancement-create-link-modal
@@ -4,3 +4,5 @@ When creating a link while passwords are enfoced, Web will now display a modal t
https://github.com/owncloud/web/pull/10104
https://github.com/owncloud/web/pull/10145
+https://github.com/owncloud/web/pull/10159
+https://github.com/owncloud/web/issues/10157
diff --git a/packages/web-pkg/src/components/CreateLinkModal.vue b/packages/web-pkg/src/components/CreateLinkModal.vue
index 8240c04b9aa..32b4d9a38a2 100644
--- a/packages/web-pkg/src/components/CreateLinkModal.vue
+++ b/packages/web-pkg/src/components/CreateLinkModal.vue
@@ -40,6 +40,7 @@
import { DateTime } from 'luxon'
+import { v4 as uuidV4 } from 'uuid'
import { useGettext } from 'vue3-gettext'
import {
computed,
@@ -207,6 +209,7 @@ export default defineComponent({
const isFolder = computed(() => props.resources.every(({ isFolder }) => isFolder))
+ const passwordInputKey = ref(uuidV4())
const roleRefs = ref>({})
const password = reactive({ value: '', error: undefined })
@@ -348,7 +351,11 @@ export default defineComponent({
selectedRole.value = role
if (unref(selectedRoleIsInternal)) {
password.value = ''
+ password.error = ''
selectedExpiry.value = undefined
+
+ // re-render password because it's the only way to remove policy messages
+ passwordInputKey.value = uuidV4()
}
}
@@ -369,6 +376,7 @@ export default defineComponent({
passwordEnforced,
passwordPolicy,
generatePasswordMethod: () => passwordPolicyService.generatePassword(),
+ passwordInputKey,
selectedExpiry,
expirationDateTooltip,
expirationRules,