diff --git a/changes/changelog.d/686.enhancement b/changes/changelog.d/686.enhancement new file mode 100644 index 0000000000000000000000000000000000000000..c346a9ab4622de6359dd9057cb8a1dad5dd9e7c7 --- /dev/null +++ b/changes/changelog.d/686.enhancement @@ -0,0 +1 @@ +Added name attributes on all inputs to improve UX, especially with password managers (#686) diff --git a/front/src/components/admin/SettingsGroup.vue b/front/src/components/admin/SettingsGroup.vue index c732213e2ce4833837e3df2652bc4c076c31f7be..85bb9eeaee5243a60d4841c264ea8947f9918fce 100644 --- a/front/src/components/admin/SettingsGroup.vue +++ b/front/src/components/admin/SettingsGroup.vue @@ -19,24 +19,28 @@ </template> <input :id="setting.identifier" + :name="setting.identifier" v-if="setting.field.widget.class === 'PasswordInput'" type="password" class="ui input" v-model="values[setting.identifier]" /> <input :id="setting.identifier" + :name="setting.identifier" v-if="setting.field.widget.class === 'TextInput'" type="text" class="ui input" v-model="values[setting.identifier]" /> <input :id="setting.identifier" + :name="setting.identifier" v-if="setting.field.class === 'IntegerField'" type="number" class="ui input" v-model.number="values[setting.identifier]" /> <textarea :id="setting.identifier" + :name="setting.identifier" v-else-if="setting.field.widget.class === 'Textarea'" type="text" class="ui input" @@ -120,7 +124,6 @@ export default { <!-- Add "scoped" attribute to limit CSS to this component only --> <style scoped> - .ui.checkbox p { margin-top: 1rem; } diff --git a/front/src/components/audio/SearchBar.vue b/front/src/components/audio/SearchBar.vue index 25a3b1823054ee1701598490b3b325047e8549f2..534ac0ac4f3862170a9b2a649a1746bba783cb0e 100644 --- a/front/src/components/audio/SearchBar.vue +++ b/front/src/components/audio/SearchBar.vue @@ -1,7 +1,7 @@ <template> <div class="ui fluid category search"> <slot></slot><div class="ui icon input"> - <input class="prompt" :placeholder="labels.placeholder" type="text"> + <input class="prompt" name="search" :placeholder="labels.placeholder" type="text"> <i class="search icon"></i> </div> <div class="results"></div> @@ -110,5 +110,4 @@ export default { <!-- Add "scoped" attribute to limit CSS to this component only --> <style scoped> - </style> diff --git a/front/src/components/auth/Login.vue b/front/src/components/auth/Login.vue index 3bfba25e5bc78f0c6941f5aae3728249d54b42f0..09a9c6c29d5bb690b5c6eac3cbabd24883295b3d 100644 --- a/front/src/components/auth/Login.vue +++ b/front/src/components/auth/Login.vue @@ -22,6 +22,7 @@ ref="username" tabindex="1" required + name="username" type="text" autofocus :placeholder="labels.usernamePlaceholder" diff --git a/front/src/components/auth/Signup.vue b/front/src/components/auth/Signup.vue index 35bb2f6eb5531464fb75eabe5d5241952fa6838c..815f0253a72b697ea663801dff4ba43f5909988d 100644 --- a/front/src/components/auth/Signup.vue +++ b/front/src/components/auth/Signup.vue @@ -20,6 +20,7 @@ <label><translate>Username</translate></label> <input ref="username" + name="username" required type="text" autofocus @@ -30,6 +31,7 @@ <label><translate>Email</translate></label> <input ref="email" + name="email" required type="email" :placeholder="labels.emailPlaceholder" @@ -44,6 +46,7 @@ <input required type="text" + name="invitation" :placeholder="labels.placeholder" v-model="invitation"> </div> diff --git a/front/src/components/forms/PasswordInput.vue b/front/src/components/forms/PasswordInput.vue index 377b2d3e4b111b38ea242e9e729dc29eb326499b..26454048e41ff328bf26e9288af6091fe9c8e050 100644 --- a/front/src/components/forms/PasswordInput.vue +++ b/front/src/components/forms/PasswordInput.vue @@ -2,6 +2,7 @@ <div class="ui action input"> <input required + name="password" :tabindex="index" :type="passwordInputType" @input="$emit('input', $event.target.value)" diff --git a/front/src/components/library/Artists.vue b/front/src/components/library/Artists.vue index 93312ec2ef0830edede9498617805d7a3628211f..ca7e2a5a03cdbc3df968f2043d133a6e1a107e82 100644 --- a/front/src/components/library/Artists.vue +++ b/front/src/components/library/Artists.vue @@ -10,7 +10,7 @@ <label> <translate>Search</translate> </label> - <input type="text" v-model="query" :placeholder="labels.searchPlaceholder"/> + <input type="text" name="search" v-model="query" :placeholder="labels.searchPlaceholder"/> </div> <div class="field"> <label><translate>Ordering</translate></label> diff --git a/front/src/components/library/FileUpload.vue b/front/src/components/library/FileUpload.vue index 7c4628511e2172a06d344d13881f0ad72db2aa51..e385384b4e8d205d8c66a52e3f5003bcd367c042 100644 --- a/front/src/components/library/FileUpload.vue +++ b/front/src/components/library/FileUpload.vue @@ -51,7 +51,7 @@ <div class="ui four wide field"> <label><translate>Import reference</translate></label> <p><translate>This reference will be used to group imported files together.</translate></p> - <input type="text" v-model="importReference" /> + <input name="import-ref" type="text" v-model="importReference" /> </div> </div> diff --git a/front/src/components/library/Radios.vue b/front/src/components/library/Radios.vue index 6b8051cd9bc0db1a76e16c8887f3c8c6ecfffc78..7aec1d61b01ea1da0203861b1450d829fc3d01f8 100644 --- a/front/src/components/library/Radios.vue +++ b/front/src/components/library/Radios.vue @@ -28,7 +28,7 @@ <div class="fields"> <div class="field"> <label><translate>Search</translate></label> - <input type="text" v-model="query" :placeholder="labels.searchPlaceholder"/> + <input name="search" type="text" v-model="query" :placeholder="labels.searchPlaceholder"/> </div> <div class="field"> <label><translate>Ordering</translate></label> diff --git a/front/src/components/library/radios/Builder.vue b/front/src/components/library/radios/Builder.vue index 0a86958634b71c794fe44242b26b918fcaf4f13a..77a63b86d8af952cf6eb01db8a43622ac9cd8d6e 100644 --- a/front/src/components/library/radios/Builder.vue +++ b/front/src/components/library/radios/Builder.vue @@ -20,7 +20,7 @@ <div class=""> <div class="field"> <label for="name"><translate>Radio name</translate></label> - <input id="name" type="text" v-model="radioName" :placeholder="labels.placeholder.name" /> + <input id="name" name="name" type="text" v-model="radioName" :placeholder="labels.placeholder.name" /> </div> <div class="field"> <label for="description"><translate>Description</translate></label> diff --git a/front/src/components/manage/library/FilesTable.vue b/front/src/components/manage/library/FilesTable.vue index 430291a21c2587bf7cac5712fb61b287762608e0..23f33d0f350922d450a56944f976f077a0063648 100644 --- a/front/src/components/manage/library/FilesTable.vue +++ b/front/src/components/manage/library/FilesTable.vue @@ -4,7 +4,7 @@ <div class="fields"> <div class="ui field"> <label><translate>Search</translate></label> - <input type="text" v-model="search" :placeholder="labels.searchPlaceholder" /> + <input name="search" type="text" v-model="search" :placeholder="labels.searchPlaceholder" /> </div> <div class="field"> <label><translate>Ordering</translate></label> diff --git a/front/src/components/manage/moderation/AccountsTable.vue b/front/src/components/manage/moderation/AccountsTable.vue index d8050ecb5f1ddda804df94860fedccca5619dcf6..1e97ebaf7eeed4e24ef8a42d0a5782d5e5930842 100644 --- a/front/src/components/manage/moderation/AccountsTable.vue +++ b/front/src/components/manage/moderation/AccountsTable.vue @@ -5,7 +5,7 @@ <div class="ui six wide field"> <label><translate>Search</translate></label> <form @submit.prevent="search.query = $refs.search.value"> - <input ref="search" type="text" :value="search.query" :placeholder="labels.searchPlaceholder" /> + <input name="search" ref="search" type="text" :value="search.query" :placeholder="labels.searchPlaceholder" /> </form> </div> <div class="field"> diff --git a/front/src/components/manage/moderation/DomainsTable.vue b/front/src/components/manage/moderation/DomainsTable.vue index 835b04db585427dc66904bccb870366ca2f1e98c..28698ba625c9f54089b0b97e97b74279b7c76e37 100644 --- a/front/src/components/manage/moderation/DomainsTable.vue +++ b/front/src/components/manage/moderation/DomainsTable.vue @@ -4,7 +4,7 @@ <div class="fields"> <div class="ui field"> <label><translate>Search</translate></label> - <input type="text" v-model="search" :placeholder="labels.searchPlaceholder" /> + <input name="search" type="text" v-model="search" :placeholder="labels.searchPlaceholder" /> </div> <div class="field"> <label><translate>Ordering</translate></label> diff --git a/front/src/components/manage/users/InvitationForm.vue b/front/src/components/manage/users/InvitationForm.vue index 8ee5d0525e5894547f54cd0aa9c3ca07b7282fb9..02cfba5a949734d7dd0c5f88dd54a58a10fe5f55 100644 --- a/front/src/components/manage/users/InvitationForm.vue +++ b/front/src/components/manage/users/InvitationForm.vue @@ -10,7 +10,7 @@ <div class="inline fields"> <div class="ui field"> <label><translate>Invitation code</translate></label> - <input type="text" v-model="code" :placeholder="labels.placeholder" /> + <input name="code" type="text" v-model="code" :placeholder="labels.placeholder" /> </div> <div class="ui field"> <button :class="['ui', {loading: isLoading}, 'button']" :disabled="isLoading" type="submit"> diff --git a/front/src/components/manage/users/InvitationsTable.vue b/front/src/components/manage/users/InvitationsTable.vue index 2fb767ad0a0011570ad0705772e2f213f8124d13..ee9eb503501cee9541c6c9bf2d32cdaf1625ec10 100644 --- a/front/src/components/manage/users/InvitationsTable.vue +++ b/front/src/components/manage/users/InvitationsTable.vue @@ -4,7 +4,7 @@ <div class="fields"> <div class="ui field"> <label><translate>Search</translate></label> - <input type="text" v-model="search" :placeholder="labels.searchPlaceholder" /> + <input name="search" type="text" v-model="search" :placeholder="labels.searchPlaceholder" /> </div> <div class="field"> <label><translate>Ordering</translate></label> diff --git a/front/src/components/manage/users/UsersTable.vue b/front/src/components/manage/users/UsersTable.vue index f44ae89a07e541431f8c859d769d55b190a87f76..d76634a331d186677db00c943e23483890739196 100644 --- a/front/src/components/manage/users/UsersTable.vue +++ b/front/src/components/manage/users/UsersTable.vue @@ -4,7 +4,7 @@ <div class="fields"> <div class="ui field"> <label><translate>Search</translate></label> - <input type="text" v-model="search" :placeholder="labels.searchPlaceholder" /> + <input name="search" type="text" v-model="search" :placeholder="labels.searchPlaceholder" /> </div> <div class="field"> <label><translate>Ordering</translate></label> diff --git a/front/src/components/playlists/Form.vue b/front/src/components/playlists/Form.vue index 34c75eb97747d822470ffc10a336af126071b455..1fe9740654192adcdbbc22872dbae38217d976d7 100644 --- a/front/src/components/playlists/Form.vue +++ b/front/src/components/playlists/Form.vue @@ -20,7 +20,7 @@ <div class="three fields"> <div class="field"> <label><translate>Playlist name</translate></label> - <input v-model="name" required type="text" :placeholder="labels.placeholder" /> + <input name="name" v-model="name" required type="text" :placeholder="labels.placeholder" /> </div> <div class="field"> <label><translate>Playlist visibility</translate></label> diff --git a/front/src/views/admin/moderation/DomainsList.vue b/front/src/views/admin/moderation/DomainsList.vue index 259d05f0cecbdb1019d59201d38d374cbe155447..8872c2cdcc1372f5348dd1ae95d2d96dc177ee52 100644 --- a/front/src/views/admin/moderation/DomainsList.vue +++ b/front/src/views/admin/moderation/DomainsList.vue @@ -12,7 +12,7 @@ <div class="inline fields"> <div class="field"> <label for="domain"><translate>Add a domain</translate></label> - <input type="text" id="domain" v-model="domainName"> + <input type="text" name="domain" id="domain" v-model="domainName"> </div> <div class="field"> <button :class="['ui', {'loading': isCreating}, 'green', 'button']" type="submit" :disabled="isCreating"> diff --git a/front/src/views/auth/EmailConfirm.vue b/front/src/views/auth/EmailConfirm.vue index 6389b4535bf987f7801a9b6d8e84ace2932ac226..fd509272d813594fa153c6d0f25856dd94191a28 100644 --- a/front/src/views/auth/EmailConfirm.vue +++ b/front/src/views/auth/EmailConfirm.vue @@ -12,7 +12,7 @@ </div> <div class="field"> <label><translate>Confirmation code</translate></label> - <input type="text" required v-model="key" /> + <input name="confirmation-code" type="text" required v-model="key" /> </div> <router-link :to="{path: '/login'}"> <translate>Return to login</translate> diff --git a/front/src/views/auth/PasswordReset.vue b/front/src/views/auth/PasswordReset.vue index e7759113c33b80676983ce64d51acfbaf519855e..7940c170f0fcd427e3edcdbcc69c9d6b013696ed 100644 --- a/front/src/views/auth/PasswordReset.vue +++ b/front/src/views/auth/PasswordReset.vue @@ -17,6 +17,7 @@ required ref="email" type="email" + name="email" autofocus :placeholder="labels.placeholder" v-model="email"> diff --git a/front/src/views/content/libraries/FilesTable.vue b/front/src/views/content/libraries/FilesTable.vue index 6d076193b69fe31b09a7fe43e64d86879645bd14..d63ad6cee88a3814c1baa915f6a62f5101e9293a 100644 --- a/front/src/views/content/libraries/FilesTable.vue +++ b/front/src/views/content/libraries/FilesTable.vue @@ -5,7 +5,7 @@ <div class="ui six wide field"> <label><translate>Search</translate></label> <form @submit.prevent="search.query = $refs.search.value"> - <input ref="search" type="text" :value="search.query" :placeholder="labels.searchPlaceholder" /> + <input name="search" ref="search" type="text" :value="search.query" :placeholder="labels.searchPlaceholder" /> </form> </div> <div class="field"> diff --git a/front/src/views/content/libraries/Form.vue b/front/src/views/content/libraries/Form.vue index 96d28829ab2b16dc1953f28f748ebfa9fb2d7c6d..d197e4d5b9c11ef0c699649d0ae8d517fe5a6d98 100644 --- a/front/src/views/content/libraries/Form.vue +++ b/front/src/views/content/libraries/Form.vue @@ -9,7 +9,7 @@ </div> <div class="required field"> <label><translate>Name</translate></label> - <input v-model="currentName" :placeholder="labels.namePlaceholder" required maxlength="100"> + <input name="name" v-model="currentName" :placeholder="labels.namePlaceholder" required maxlength="100"> </div> <div class="field"> <label><translate>Description</translate></label> diff --git a/front/src/views/content/remote/ScanForm.vue b/front/src/views/content/remote/ScanForm.vue index 44cb19cf8edd9039bd3d60d403a761f9ed54b3d7..dc1b2b78b730a98ed8a7940e69c135a863390389 100644 --- a/front/src/views/content/remote/ScanForm.vue +++ b/front/src/views/content/remote/ScanForm.vue @@ -9,7 +9,7 @@ <div class="ui field"> <label><translate>Search a remote library</translate></label> <div :class="['ui', 'action', {loading: isLoading}, 'input']"> - <input v-model="query" :placeholder="labels.placeholder" type="url"> + <input name="url" v-model="query" :placeholder="labels.placeholder" type="url"> <button type="submit" class="ui icon button"> <i class="search icon"></i> </button> diff --git a/front/src/views/playlists/List.vue b/front/src/views/playlists/List.vue index be63953064576a86c744be44f727f53d326f3d2d..15cc94be431efd6fe67336718b7423c3628d1c67 100644 --- a/front/src/views/playlists/List.vue +++ b/front/src/views/playlists/List.vue @@ -12,7 +12,7 @@ <div class="fields"> <div class="field"> <label><translate>Search</translate></label> - <input type="text" v-model="query" :placeholder="labels.searchPlaceholder"/> + <input type="text" name="search" v-model="query" :placeholder="labels.searchPlaceholder"/> </div> <div class="field"> <label><translate>Ordering</translate></label>