diff --git a/changes/changelog.d/1134.enhancement b/changes/changelog.d/1134.enhancement new file mode 100644 index 0000000000000000000000000000000000000000..3e04439a19f7967cdfc95319916757ec83ca52b1 --- /dev/null +++ b/changes/changelog.d/1134.enhancement @@ -0,0 +1 @@ +Use role=alert on forms/toast message to improve accessibility (#1134) diff --git a/front/src/components/RemoteSearchForm.vue b/front/src/components/RemoteSearchForm.vue index 6235e15f80f4487188fcea9c2b2d41f980a3d583..b65389de07e6d4316a37c3e3cdb8c9e54d40a304 100644 --- a/front/src/components/RemoteSearchForm.vue +++ b/front/src/components/RemoteSearchForm.vue @@ -1,7 +1,7 @@ <template> <div> <form id="remote-search" :class="['ui', {loading: isLoading}, 'form']" @submit.stop.prevent="submit"> - <div v-if="errors.length > 0" class="ui negative message"> + <div v-if="errors.length > 0" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Content/*/Error message.Title">Error while fetching object</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> @@ -23,7 +23,7 @@ <translate translate-context="Content/Search/Input.Label/Noun">Search</translate> </button> </form> - <div v-if="!isLoading && fetch && fetch.status === 'finished' && !redirectRoute" class="ui warning message"> + <div v-if="!isLoading && fetch && fetch.status === 'finished' && !redirectRoute" role="alert" class="ui warning message"> <p><translate translate-context="Content/*/Error message.Title">This kind of object isn't supported yet</translate></p> </div> </div> diff --git a/front/src/components/SetInstanceModal.vue b/front/src/components/SetInstanceModal.vue index a5ff00f8a4f13806ff6a168c3af8d02e7eed628a..da8079645e14f3d67802251b31a0b3dd1ff828ce 100644 --- a/front/src/components/SetInstanceModal.vue +++ b/front/src/components/SetInstanceModal.vue @@ -2,7 +2,7 @@ <modal @update:show="$emit('update:show', $event); isError = false" :show="show"> <div class="header"><translate translate-context="Popup/Instance/Title">Choose your instance</translate></div> <div class="scrolling content"> - <div v-if="isError" class="ui negative message"> + <div v-if="isError" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Popup/Instance/Error message.Title">It is not possible to connect to the given URL</translate></div> <ul class="list"> <li><translate translate-context="Popup/Instance/Error message.List item">The server might be down</translate></li> diff --git a/front/src/components/admin/SettingsGroup.vue b/front/src/components/admin/SettingsGroup.vue index 2362d046eb59bcd8bbd1e898d124a66487d71127..5babfedad213e38582ca04b0de9b448b6276a94e 100644 --- a/front/src/components/admin/SettingsGroup.vue +++ b/front/src/components/admin/SettingsGroup.vue @@ -2,7 +2,7 @@ <form :id="group.id" class="ui form" @submit.prevent="save"> <div class="ui divider" /> <h3 class="ui header">{{ group.label }}</h3> - <div v-if="errors.length > 0" class="ui negative message"> + <div v-if="errors.length > 0" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Content/*/Error message.Title">Error while saving settings</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> diff --git a/front/src/components/audio/ChannelForm.vue b/front/src/components/audio/ChannelForm.vue index 7b6f323aee2e6fd89ca25060737f9335e84de4cc..bc3da7b8e16e2db9020c860a37acc92e49acbf5d 100644 --- a/front/src/components/audio/ChannelForm.vue +++ b/front/src/components/audio/ChannelForm.vue @@ -1,6 +1,6 @@ <template> <form class="ui form" @submit.prevent.stop="submit"> - <div v-if="errors.length > 0" class="ui negative message"> + <div v-if="errors.length > 0" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Content/*/Error message.Title">Error while saving channel</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> diff --git a/front/src/components/audio/EmbedWizard.vue b/front/src/components/audio/EmbedWizard.vue index eb470b35a0261afa319e6f8fe747b1e5d3499d17..29b4fe9bf7a52f1721ebc602d762d9a2f0236e91 100644 --- a/front/src/components/audio/EmbedWizard.vue +++ b/front/src/components/audio/EmbedWizard.vue @@ -1,6 +1,6 @@ <template> <div> - <div class="ui warning message" v-if="!anonymousCanListen"> + <div role="alert" class="ui warning message" v-if="!anonymousCanListen"> <p> <strong> <translate translate-context="Content/Embed/Message">Sharing will not work because this pod doesn't allow anonymous users to access content.</translate> diff --git a/front/src/components/auth/ApplicationForm.vue b/front/src/components/auth/ApplicationForm.vue index b8427357ad464e8ea32cf942ded347009f8847f9..606828272f8bd4375426173cfd901c11a6389a77 100644 --- a/front/src/components/auth/ApplicationForm.vue +++ b/front/src/components/auth/ApplicationForm.vue @@ -1,7 +1,7 @@ <template> <form class="ui form" @submit.prevent="submit()"> - <div v-if="errors.length > 0" class="ui negative message"> + <div v-if="errors.length > 0" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Content/*/Error message.Title">We cannot save your changes</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> diff --git a/front/src/components/auth/Authorize.vue b/front/src/components/auth/Authorize.vue index dd9bf6eebfddc2cc993401fdd31d94cce2892e40..75ba300eb8114b66564b6d165409780057153a27 100644 --- a/front/src/components/auth/Authorize.vue +++ b/front/src/components/auth/Authorize.vue @@ -3,7 +3,7 @@ <section class="ui vertical stripe segment"> <div class="ui small text container"> <h2><i class="lock open icon"></i><translate translate-context="Content/Auth/Title/Verb">Authorize third-party app</translate></h2> - <div v-if="errors.length > 0" class="ui negative message"> + <div v-if="errors.length > 0" role="alert" class="ui negative message"> <div v-if="application" class="header"><translate translate-context="Popup/Moderation/Error message">Error while authorizing application</translate></div> <div v-else class="header"><translate translate-context="Popup/Moderation/Error message">Error while fetching application data</translate></div> <ul class="list"> diff --git a/front/src/components/auth/LoginForm.vue b/front/src/components/auth/LoginForm.vue index d14d893dcf513d593ae912f8c354cfe89fa6f6e1..b2ac9847ceeb43a1a1f0dce50e59b806bc4b5643 100644 --- a/front/src/components/auth/LoginForm.vue +++ b/front/src/components/auth/LoginForm.vue @@ -1,6 +1,6 @@ <template> <form class="ui form" @submit.prevent="submit()"> - <div v-if="error" class="ui negative message"> + <div v-if="error" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Content/Login/Error message.Title">We cannot log you in</translate></div> <ul class="list"> <li v-if="error == 'invalid_credentials' && $store.state.instance.settings.moderation.signup_approval_enabled.value"> diff --git a/front/src/components/auth/Settings.vue b/front/src/components/auth/Settings.vue index 588c1c4e10501085c648f9a3a7eb68c10359394b..12400c6d1cb1da2ed33b0d26636e38c231a75288 100644 --- a/front/src/components/auth/Settings.vue +++ b/front/src/components/auth/Settings.vue @@ -11,7 +11,7 @@ <translate translate-context="Content/Settings/Message">Settings updated</translate> </div> </div> - <div v-if="settings.errors.length > 0" class="ui negative message"> + <div v-if="settings.errors.length > 0" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Content/Settings/Error message.Title">Your settings can't be updated</translate></div> <ul class="list"> <li v-for="error in settings.errors">{{ error }}</li> @@ -36,7 +36,7 @@ <translate translate-context="Content/Settings/Title">Avatar</translate> </h2> <div class="ui form"> - <div v-if="avatarErrors.length > 0" class="ui negative message"> + <div v-if="avatarErrors.length > 0" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Content/Settings/Error message.Title">Your avatar cannot be saved</translate></div> <ul class="list"> <li v-for="error in avatarErrors">{{ error }}</li> @@ -63,7 +63,7 @@ <translate translate-context="Content/Settings/Paragraph'">Changing your password will also change your Subsonic API password if you have requested one.</translate> <translate translate-context="Content/Settings/Paragraph">You will have to update your password on your clients that use this password.</translate> </div> <form class="ui form" @submit.prevent="submitPassword()"> - <div v-if="passwordError" class="ui negative message"> + <div v-if="passwordError" role="alert" class="ui negative message"> <div class="header"> <translate translate-context="Content/Settings/Error message.Title">Your password cannot be changed</translate> </div> @@ -268,11 +268,11 @@ <p> <translate translate-context="Content/Settings/Paragraph'">You can permanently and irreversibly delete your account and all the associated data using the form below. You will be asked for confirmation.</translate> </p> - <div class="ui warning message"> + <div role="alert" class="ui warning message"> <translate translate-context="Content/Settings/Paragraph'">Your account will be deleted from our servers within a few minutes. We will also notify other servers who may have a copy of some of your data so they can proceed to deletion. Please note that some of these servers may be offline or unwilling to comply though.</translate> </div> <div class="ui form"> - <div v-if="accountDeleteErrors.length > 0" class="ui negative message"> + <div v-if="accountDeleteErrors.length > 0" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Content/Settings/Error message.Title">We cannot delete your account</translate></div> <ul class="list"> <li v-for="error in accountDeleteErrors">{{ error }}</li> diff --git a/front/src/components/auth/SignupForm.vue b/front/src/components/auth/SignupForm.vue index d78ac4351f948d661798ecb61e7ecb1e710d4bc1..8450e776c8a3f712bde4948d40131c405fc204d1 100644 --- a/front/src/components/auth/SignupForm.vue +++ b/front/src/components/auth/SignupForm.vue @@ -25,7 +25,7 @@ <rendered-description :content="formCustomization.help_text" :fetch-html="fetchDescriptionHtml" :permissive="true"></rendered-description> <div class="ui hidden divider"></div> </template> - <div v-if="errors.length > 0" class="ui negative message"> + <div v-if="errors.length > 0" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Content/Signup/Form/Paragraph">Your account cannot be created.</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> diff --git a/front/src/components/auth/SubsonicTokenForm.vue b/front/src/components/auth/SubsonicTokenForm.vue index 67621bf8dc2e6001a98def6dc56c3abebd01ad7c..a25d698eceb758c2301e3df614bb5d22d8da7907 100644 --- a/front/src/components/auth/SubsonicTokenForm.vue +++ b/front/src/components/auth/SubsonicTokenForm.vue @@ -16,7 +16,7 @@ <div v-if="success" class="ui positive message"> <div class="header">{{ successMessage }}</div> </div> - <div v-if="subsonicEnabled && errors.length > 0" class="ui negative message"> + <div v-if="subsonicEnabled && errors.length > 0" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Content/*/Error message.Title">Error</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> diff --git a/front/src/components/channels/AlbumForm.vue b/front/src/components/channels/AlbumForm.vue index a904a546cfa8a353d2ddf265b7839e29211647da..b01361403fd17fc134e7eb0da6aea529b360864f 100644 --- a/front/src/components/channels/AlbumForm.vue +++ b/front/src/components/channels/AlbumForm.vue @@ -1,6 +1,6 @@ <template> <form @submit.stop.prevent :class="['ui', {loading: isLoading}, 'form']"> - <div v-if="errors.length > 0" class="ui negative message"> + <div v-if="errors.length > 0" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Content/*/Error message.Title">Error while creating</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> diff --git a/front/src/components/channels/UploadForm.vue b/front/src/components/channels/UploadForm.vue index 95105437869d3be7f0f56567e4322b4fbfe0f38f..c389861fab540a477fd6db2d3a29bd9d6837bbac 100644 --- a/front/src/components/channels/UploadForm.vue +++ b/front/src/components/channels/UploadForm.vue @@ -1,6 +1,6 @@ <template> <form @submit.stop.prevent :class="['ui', {loading: isLoadingStep1}, 'form']"> - <div v-if="errors.length > 0" class="ui negative message"> + <div v-if="errors.length > 0" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Content/*/Error message.Title">Error while publishing</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> @@ -26,7 +26,7 @@ </div> </div> <template v-if="step >= 2 && step < 4"> - <div class="ui warning message" v-if="remainingSpace === 0"> + <div role="alert" class="ui warning message" v-if="remainingSpace === 0"> <div class="content"> <p> <i class="warning icon"></i> diff --git a/front/src/components/common/ActionTable.vue b/front/src/components/common/ActionTable.vue index 83033138218a2ddaaed94243d6b47278caf7a7cf..3155760431bb0cfacf1dbe173945b4c92284cdb5 100644 --- a/front/src/components/common/ActionTable.vue +++ b/front/src/components/common/ActionTable.vue @@ -90,7 +90,7 @@ </template> </div> </div> - <div v-if="actionErrors.length > 0" class="ui negative message"> + <div v-if="actionErrors.length > 0" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Content/*/Error message/Header">Error while applying action</translate></div> <ul class="list"> <li v-for="error in actionErrors">{{ error }}</li> diff --git a/front/src/components/common/AttachmentInput.vue b/front/src/components/common/AttachmentInput.vue index dccb4eaa16a90916331c711b41eb75cb097ec93c..cf891399d8f4a9e20f5ac09b628632658866b59f 100644 --- a/front/src/components/common/AttachmentInput.vue +++ b/front/src/components/common/AttachmentInput.vue @@ -1,6 +1,6 @@ <template> <div class="ui form"> - <div v-if="errors.length > 0" class="ui negative message"> + <div v-if="errors.length > 0" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Content/*/Error message.Title">Your attachment cannot be saved</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> diff --git a/front/src/components/common/Message.vue b/front/src/components/common/Message.vue index e837faa4e3417438fe766fba69f6bf1c37e323c1..9bf713f9565b815856aa9bdabda11e875d5a6467 100644 --- a/front/src/components/common/Message.vue +++ b/front/src/components/common/Message.vue @@ -20,6 +20,8 @@ export default { ...this.message, } $("body").toast(params) + + $(".ui.toast.visible").last().attr('role', 'alert') } } </script> diff --git a/front/src/components/common/RenderedDescription.vue b/front/src/components/common/RenderedDescription.vue index cf90aebdbc8a3a9d1e59816e5878bd24762386f0..d295a0931c2af7887be2165384c83870b9a9daa1 100644 --- a/front/src/components/common/RenderedDescription.vue +++ b/front/src/components/common/RenderedDescription.vue @@ -24,7 +24,7 @@ </span> </template> <form v-if="isUpdating" class="ui form" @submit.prevent="submit()"> - <div v-if="errors.length > 0" class="ui negative message"> + <div v-if="errors.length > 0" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Content/Channels/Error message.Title">Error while updating description</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> diff --git a/front/src/components/federation/FetchButton.vue b/front/src/components/federation/FetchButton.vue index c31111ea4ed18881d46b3b78722a9055c9f9388c..846fcdbfbb40504cc78e905a1ff035dc0512082a 100644 --- a/front/src/components/federation/FetchButton.vue +++ b/front/src/components/federation/FetchButton.vue @@ -70,13 +70,13 @@ <translate translate-context="Popup/*/Loading.Title">Waiting for result…</translate> </div> </div> - <div v-if="errors.length > 0" class="ui negative message"> + <div v-if="errors.length > 0" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Content/*/Error message.Title">Error while saving settings</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> </ul> </div> - <div v-else-if="fetch && fetch.status === 'pending' && pollsCount >= maxPolls" class="ui warning message"> + <div v-else-if="fetch && fetch.status === 'pending' && pollsCount >= maxPolls" role="alert" class="ui warning message"> <div class="header"><translate translate-context="Popup/*/Message.Title">Refresh pending</translate></div> <p><translate translate-context="Popup/*/Message.Content">Refresh request wasn't proceed in time by our server. It will be processed later.</translate></p> </div> diff --git a/front/src/components/library/EditForm.vue b/front/src/components/library/EditForm.vue index d58de5051a6c14c49dfbbb6f5af495de7b836351..8f2b74782eb355e67c059a5dbad84a4890a01387 100644 --- a/front/src/components/library/EditForm.vue +++ b/front/src/components/library/EditForm.vue @@ -43,7 +43,7 @@ </edit-list> <form class="ui form" @submit.prevent="submit()"> <div class="ui hidden divider"></div> - <div v-if="errors.length > 0" class="ui negative message"> + <div v-if="errors.length > 0" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Content/Library/Error message.Title">Error while submitting edit</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> diff --git a/front/src/components/library/ImportStatusModal.vue b/front/src/components/library/ImportStatusModal.vue index 1750e2213602878a0565162caeeb62f8bc3adc6f..7a3741d80e24621bb1185c9c1eef9240c4074f73 100644 --- a/front/src/components/library/ImportStatusModal.vue +++ b/front/src/components/library/ImportStatusModal.vue @@ -12,7 +12,7 @@ <div class="ui success message" v-if="upload.import_status === 'finished'"> <translate translate-context="Popup/Import/Message">Upload was successfully processed by the server.</translate> </div> - <div class="ui warning message" v-if="upload.import_status === 'skipped'"> + <div role="alert" class="ui warning message" v-if="upload.import_status === 'skipped'"> <translate translate-context="Popup/Import/Message">Upload was skipped because a similar one is already available in one of your libraries.</translate> </div> <div class="ui error message" v-if="upload.import_status === 'errored'"> diff --git a/front/src/components/manage/moderation/InstancePolicyForm.vue b/front/src/components/manage/moderation/InstancePolicyForm.vue index f6b554d00d45999aca4e1be9d9cac1640a0e93a2..8bdebbedd66a58ec0220bf859b5c750cb412604f 100644 --- a/front/src/components/manage/moderation/InstancePolicyForm.vue +++ b/front/src/components/manage/moderation/InstancePolicyForm.vue @@ -4,7 +4,7 @@ <translate translate-context="Content/Moderation/Card.Title/Verb" v-if="object" key="1">Edit moderation rule</translate> <translate translate-context="Content/Moderation/Card.Button.Label/Verb" v-else key="2">Add a new moderation rule</translate> </h3> - <div v-if="errors && errors.length > 0" class="ui negative message"> + <div v-if="errors && errors.length > 0" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Content/Moderation/Error message.Title">Error while creating rule</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> diff --git a/front/src/components/manage/moderation/NoteForm.vue b/front/src/components/manage/moderation/NoteForm.vue index d4cc3355fe0fc20ac22a5a7a8d29eaad1a0e51b4..5758d8acda653f3c72dba7f19aef720d0eb5c202 100644 --- a/front/src/components/manage/moderation/NoteForm.vue +++ b/front/src/components/manage/moderation/NoteForm.vue @@ -1,6 +1,6 @@ <template> <form class="ui form" @submit.prevent="submit()"> - <div v-if="errors.length > 0" class="ui negative message"> + <div v-if="errors.length > 0" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Content/Moderation/Error message.Title">Error while submitting note</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> diff --git a/front/src/components/manage/moderation/ReportCard.vue b/front/src/components/manage/moderation/ReportCard.vue index 5d167c9ac66a00795c50e6dcdc73b29694217e45..d32d19a9ca7391899357472fd8c90bf72c8db9df 100644 --- a/front/src/components/manage/moderation/ReportCard.vue +++ b/front/src/components/manage/moderation/ReportCard.vue @@ -117,7 +117,7 @@ <h3> <translate translate-context="Content/*/*/Short">Reported object</translate> </h3> - <div v-if="!obj.target" class="ui warning message"> + <div v-if="!obj.target" role="alert" class="ui warning message"> <translate translate-context="Content/Moderation/Message">The object associated with this report was deleted.</translate> </div> <router-link class="ui basic button" v-if="target && configs[target.type].urls.getDetail" :to="configs[target.type].urls.getDetail(obj.target_state)"> diff --git a/front/src/components/manage/users/InvitationForm.vue b/front/src/components/manage/users/InvitationForm.vue index 1d7023652d0ecd2155cb90c26a4a6787343641ef..8c00e2cc5691c553b654767e49411ea91c563740 100644 --- a/front/src/components/manage/users/InvitationForm.vue +++ b/front/src/components/manage/users/InvitationForm.vue @@ -1,7 +1,7 @@ <template> <div> <form class="ui form" @submit.prevent="submit"> - <div v-if="errors.length > 0" class="ui negative message"> + <div v-if="errors.length > 0" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Content/Admin/Error message.Title">Error while creating invitation</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> diff --git a/front/src/components/moderation/FilterModal.vue b/front/src/components/moderation/FilterModal.vue index bad0b2a23655b2c016fda6b4e9b1375cadd57bc2..b6d3c297a6a8c01ef94b83b023696d1f5ec192d8 100644 --- a/front/src/components/moderation/FilterModal.vue +++ b/front/src/components/moderation/FilterModal.vue @@ -10,7 +10,7 @@ <div class="scrolling content"> <div class="description"> - <div v-if="errors.length > 0" class="ui negative message"> + <div v-if="errors.length > 0" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Popup/Moderation/Error message">Error while creating filter</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> diff --git a/front/src/components/moderation/ReportModal.vue b/front/src/components/moderation/ReportModal.vue index 103cb203dadd6d99020cd65758680692c98b5e6c..745b0dcb792fec5d0a2ec63508bf28077c023201 100644 --- a/front/src/components/moderation/ReportModal.vue +++ b/front/src/components/moderation/ReportModal.vue @@ -8,7 +8,7 @@ </h2> <div class="scrolling content"> <div class="description"> - <div v-if="errors.length > 0" class="ui negative message"> + <div v-if="errors.length > 0" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Popup/Moderation/Error message">Error while submitting report</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> @@ -64,7 +64,7 @@ <div v-else-if="isLoadingReportTypes" class="ui inline active loader"> </div> - <div v-else class="ui warning message"> + <div v-else role="alert" class="ui warning message"> <div class="header"> <translate translate-context="Popup/Moderation/Error message">Anonymous reports are disabled, please sign-in to submit a report.</translate> </div> diff --git a/front/src/components/playlists/Editor.vue b/front/src/components/playlists/Editor.vue index bb732301f66689fa8a57db40b0d819e56db55908..26056fecf04e52cc21b3b59803138e96757aacf9 100644 --- a/front/src/components/playlists/Editor.vue +++ b/front/src/components/playlists/Editor.vue @@ -12,13 +12,13 @@ <template v-else-if="status === 'errored'"> <i class="red close icon"></i> <translate translate-context="Content/Playlist/Error message.Title">An error occurred while saving your changes</translate> - <div v-if="errors.length > 0" class="ui negative message"> + <div v-if="errors.length > 0" role="alert" class="ui negative message"> <ul class="list"> <li v-for="error in errors">{{ error }}</li> </ul> </div> </template> - <div v-else-if="status === 'confirmDuplicateAdd'" class="ui warning message"> + <div v-else-if="status === 'confirmDuplicateAdd'" role="alert" class="ui warning message"> <p translate-context="Content/Playlist/Paragraph" v-translate="{playlist: playlist.name}">Some tracks in your queue are already in this playlist:</p> <ul id="duplicateTrackList" class="ui relaxed divided list"> diff --git a/front/src/components/playlists/Form.vue b/front/src/components/playlists/Form.vue index 4fc905fc6aeb66427771c75164ff5fba519b387f..9e4fec2e71e2be8da51d9daea71ae766102c61d2 100644 --- a/front/src/components/playlists/Form.vue +++ b/front/src/components/playlists/Form.vue @@ -11,7 +11,7 @@ </template> </div> </div> - <div v-if="errors.length > 0" class="ui negative message"> + <div v-if="errors.length > 0" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Content/Playlist/Error message.Title">The playlist could not be created</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> diff --git a/front/src/components/playlists/PlaylistModal.vue b/front/src/components/playlists/PlaylistModal.vue index 567ee572c2d2ac7ebd49a6559a5f2b23cc564c58..2870c94ed09c9fb7f8bd352c7db1b1aadcc96861 100644 --- a/front/src/components/playlists/PlaylistModal.vue +++ b/front/src/components/playlists/PlaylistModal.vue @@ -19,7 +19,7 @@ <playlist-form :key="formKey"></playlist-form> <div class="ui divider"></div> <div v-if="playlists.length > 0"> - <div v-if="showDuplicateTrackAddConfirmation" class="ui warning message"> + <div v-if="showDuplicateTrackAddConfirmation" role="alert" class="ui warning message"> <p translate-context="Popup/Playlist/Paragraph" v-translate="{track: track.title, playlist: duplicateTrackAddInfo.playlist_name}" :translate-params="{track: track.title, playlist: duplicateTrackAddInfo.playlist_name}"><strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>.</p> @@ -32,7 +32,7 @@ @click="addToPlaylist(lastSelectedPlaylist, true)"> <translate translate-context="*/Playlist/Button.Label/Verb">Add anyways</translate></button> </div> - <div v-if="errors.length > 0" class="ui negative message"> + <div v-if="errors.length > 0" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Popup/Playlist/Error message.Title">The track can't be added to a playlist</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> diff --git a/front/src/store/ui.js b/front/src/store/ui.js index 5c6ca20de4b142f5e2b75a9f8af6b98d8d54ebf3..7d120dafca23afed4e0489768919d9c2f6153edc 100644 --- a/front/src/store/ui.js +++ b/front/src/store/ui.js @@ -10,7 +10,7 @@ export default { momentLocale: 'en', lastDate: new Date(), maxMessages: 100, - messageDisplayDuration: 5 * 1000, + messageDisplayDuration: 5 * 10000, supportedExtensions: ["flac", "ogg", "mp3", "opus", "aac", "m4a"], messages: [], theme: 'light', diff --git a/front/src/views/admin/moderation/DomainsList.vue b/front/src/views/admin/moderation/DomainsList.vue index b42d4b228640898c8c138b8088bce6f56995f9ea..ea876f93b81db9172bd9a0e48b31915a99888fbf 100644 --- a/front/src/views/admin/moderation/DomainsList.vue +++ b/front/src/views/admin/moderation/DomainsList.vue @@ -3,7 +3,7 @@ <section class="ui vertical stripe segment"> <h2 class="ui left floated header"><translate translate-context="*/Moderation/*/Noun">Domains</translate></h2> <form class="ui right floated form" @submit.prevent="createDomain"> - <div v-if="errors && errors.length > 0" class="ui negative message"> + <div v-if="errors && errors.length > 0" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Content/Moderation/Message.Title">Error while creating domain</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> diff --git a/front/src/views/auth/EmailConfirm.vue b/front/src/views/auth/EmailConfirm.vue index 466a13c9fa899b15816c077882a3b524880342fe..ddb965c44a069349c5b6bd107459eb894c764ac7 100644 --- a/front/src/views/auth/EmailConfirm.vue +++ b/front/src/views/auth/EmailConfirm.vue @@ -4,7 +4,7 @@ <div class="ui small text container"> <h2>{{ labels.confirm }}</h2> <form v-if="!success" class="ui form" @submit.prevent="submit()"> - <div v-if="errors.length > 0" class="ui negative message"> + <div v-if="errors.length > 0" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Content/Signup/Paragraph">Could not confirm your e-mail address</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> diff --git a/front/src/views/auth/PasswordReset.vue b/front/src/views/auth/PasswordReset.vue index b60a411463f9f0aad72af77ece8760f6eb3b7c8b..0df7c4a5e0ddb1d0b7d561e7c70d703cb57cb00a 100644 --- a/front/src/views/auth/PasswordReset.vue +++ b/front/src/views/auth/PasswordReset.vue @@ -4,7 +4,7 @@ <div class="ui small text container"> <h2><translate translate-context="*/Login/*/Verb">Reset your password</translate></h2> <form class="ui form" @submit.prevent="submit()"> - <div v-if="errors.length > 0" class="ui negative message"> + <div v-if="errors.length > 0" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Content/Signup/Card.Title">Error while asking for a password reset</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> diff --git a/front/src/views/auth/PasswordResetConfirm.vue b/front/src/views/auth/PasswordResetConfirm.vue index 025458ba1f8e51021d24ff46f8baacee1e8433ac..95af41075614c7fa68643a73130608d08a220520 100644 --- a/front/src/views/auth/PasswordResetConfirm.vue +++ b/front/src/views/auth/PasswordResetConfirm.vue @@ -4,7 +4,7 @@ <div class="ui small text container"> <h2>{{ labels.changePassword }}</h2> <form v-if="!success" class="ui form" @submit.prevent="submit()"> - <div v-if="errors.length > 0" class="ui negative message"> + <div v-if="errors.length > 0" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Content/Signup/Card.Title">Error while changing your password</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> diff --git a/front/src/views/content/libraries/Form.vue b/front/src/views/content/libraries/Form.vue index 9918eb42d9c67e4034c2f03494aeef7b6d04d2bb..6b100a51339b43cd7b726b06e2e26d352c017ad1 100644 --- a/front/src/views/content/libraries/Form.vue +++ b/front/src/views/content/libraries/Form.vue @@ -1,7 +1,7 @@ <template> <form class="ui form" @submit.prevent="submit"> <p v-if="!library"><translate translate-context="Content/Library/Paragraph">Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family.</translate></p> - <div v-if="errors.length > 0" class="ui negative message"> + <div v-if="errors.length > 0" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Content/*/Error message.Title">Error</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> diff --git a/front/src/views/content/remote/ScanForm.vue b/front/src/views/content/remote/ScanForm.vue index 9a3ee9ae8db2f2dfdc9a066a719fb2de3c00a770..a3c87de71c08058d75b8e4acf7eddde7e2080fe0 100644 --- a/front/src/views/content/remote/ScanForm.vue +++ b/front/src/views/content/remote/ScanForm.vue @@ -1,6 +1,6 @@ <template> <form class="ui form" @submit.prevent="scan"> - <div v-if="errors.length > 0" class="ui negative message"> + <div v-if="errors.length > 0" role="alert" class="ui negative message"> <div class="header"><translate translate-context="Content/Library/Error message.Title">Could not fetch remote library</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li>