From 74533fc401479689d2a630f6ba7cc924921a1df8 Mon Sep 17 00:00:00 2001 From: Rebeka Dekany <50901361+rebekadekany@users.noreply.github.com> Date: Mon, 25 Aug 2025 10:59:22 +0200 Subject: [PATCH] Replace placeholders with labels (#26811) * Replace placeholders for labels * Remove redundant aria-label and update labels with `.visually-hidden` * Change "Invite more members" to a label * Fix helper text for group members and fix responsiveness * Change error message to an error notification * Use label and helper text instead of a placeholder * Remove redundant label and use the placeholder text instead for the admin user searchbar * Extract translations GitOrigin-RevId: a504fda9779da82920b57c7b8aad38a8b027d09a --- server-ce/test/filestore-migration.spec.ts | 2 +- server-ce/test/helpers/project.ts | 6 +- server-ce/test/history.spec.ts | 4 +- services/web/app/views/admin/index.pug | 18 ++--- services/web/app/views/user/login.pug | 10 ++- services/web/app/views/user/passwordReset.pug | 1 - services/web/app/views/user/reconfirm.pug | 4 +- .../web/frontend/extracted-translations.json | 8 +- .../chat/components/message-input.tsx | 2 +- .../clone-project-modal-content.tsx | 1 - .../modals/file-tree-modal-create-folder.tsx | 24 +++--- .../components/group-members.tsx | 46 +++++------ .../components/managers-table.tsx | 26 +++--- .../change-list/add-label-modal.tsx | 5 +- .../components/modals/edit-tag-modal.tsx | 7 +- .../components/modals/manage-tag-modal.tsx | 7 +- .../modals/rename-project-modal.tsx | 1 - .../modal-content-new-project-form.tsx | 18 +++-- .../settings/components/leave/modal-form.tsx | 2 - .../components/add-collaborators.tsx | 6 +- .../components/select-collaborators.tsx | 19 ++--- .../file-sources/figure-modal-url-source.tsx | 1 - .../stories/ui/form/form-input.stories.tsx | 81 +++++-------------- .../stylesheets/pages/editor/tags-input.scss | 4 - services/web/locales/en.json | 17 ++-- .../frontend/js/components/register-form.jsx | 43 ++++++---- .../js/components/user-activate-register.jsx | 19 +++-- .../js/components/register-form.test.jsx | 4 +- .../user-activate-register.test.jsx | 10 +-- .../editor-left-menu.spec.tsx | 6 +- .../chat/components/message-input.test.tsx | 2 +- .../components/clone-project-modal.test.tsx | 2 +- .../components/actions-copy-project.test.tsx | 4 +- .../components/group-managers.spec.tsx | 12 ++- .../components/group-members.spec.tsx | 8 +- .../components/institution-managers.spec.tsx | 12 ++- .../components/managed-group-members.spec.tsx | 4 +- .../components/publisher-managers.spec.tsx | 12 ++- .../history/components/change-list.spec.tsx | 2 +- .../components/new-project-button.test.tsx | 4 +- .../modal-content-new-project-form.test.tsx | 8 +- .../components/project-list-root.test.tsx | 6 +- .../components/sidebar/tags-list.test.tsx | 2 +- .../copy-project-button.test.tsx | 2 +- .../rename-project-button.test.tsx | 2 +- .../rename-project-modal.test.tsx | 4 +- .../components/share-project-modal.test.tsx | 12 +-- 47 files changed, 244 insertions(+), 256 deletions(-) diff --git a/server-ce/test/filestore-migration.spec.ts b/server-ce/test/filestore-migration.spec.ts index 68dbb9b72a..ed55c71986 100644 --- a/server-ce/test/filestore-migration.spec.ts +++ b/server-ce/test/filestore-migration.spec.ts @@ -106,7 +106,7 @@ describe('filestore migration', function () { name: /Create First Project|New Project/, }).click() cy.findByRole('link', { name: 'Example Project' }).click() - cy.findByPlaceholderText('Project Name').type(projectName) + cy.findByLabelText(/Project name/i).type(projectName) cy.findByRole('button', { name: 'Create' }).click() cy.url() .should('match', /\/project\/[a-fA-F0-9]{24}/) diff --git a/server-ce/test/helpers/project.ts b/server-ce/test/helpers/project.ts index c43e4825ac..7f15b959e8 100644 --- a/server-ce/test/helpers/project.ts +++ b/server-ce/test/helpers/project.ts @@ -106,8 +106,10 @@ function shareProjectByEmail( openProjectByName(projectName) cy.findByText('Share').click() cy.findByRole('dialog').within(() => { - cy.findByLabelText('Add people', { selector: 'input' }).type(`${email},`) - cy.findByLabelText('Add people', { selector: 'input' }) + cy.findByLabelText('Add email address', { selector: 'input' }).type( + `${email},` + ) + cy.findByLabelText('Add email address', { selector: 'input' }) .parents('form') .within(() => { cy.findByTestId('add-collaborator-select') diff --git a/server-ce/test/history.spec.ts b/server-ce/test/history.spec.ts index f0d7e74fb3..485f7c8c58 100644 --- a/server-ce/test/history.spec.ts +++ b/server-ce/test/history.spec.ts @@ -21,7 +21,9 @@ describe('History', function () { cy.findByText('Label this version').click() }) cy.findByRole('dialog').within(() => { - cy.get('input[placeholder="New label name"]').type(`${name}{enter}`) + cy.findByLabelText(/New label name/i) + .as('input') + .type(`${name}{enter}`) }) } diff --git a/services/web/app/views/admin/index.pug b/services/web/app/views/admin/index.pug index 7a284d1f41..6cd0b9a410 100644 --- a/services/web/app/views/admin/index.pug +++ b/services/web/app/views/admin/index.pug @@ -28,11 +28,10 @@ block content form(method='post' action='/admin/messages') input(name='_csrf' type='hidden' value=csrfToken) .form-group - label.form-label(for='content') - input.form-control( + label.form-label(for='system-message') Message + input#system-message.form-control( name='content' type='text' - placeholder='Message…' required ) button.btn.btn-primary(type='submit') Post Message @@ -79,11 +78,11 @@ block content form.col-xs-6(method='post' action='/admin/flushProjectToTpds') input(name='_csrf' type='hidden' value=csrfToken) .form-group - label.form-label(for='project_id') project_id + label.form-label(for='project-id') project_id input.form-control( name='project_id' + id='project-id' type='text' - placeholder='project_id' required ) .form-group @@ -94,12 +93,7 @@ block content form.col-xs-6(method='post' action='/admin/pollDropboxForUser') input(name='_csrf' type='hidden' value=csrfToken) .form-group - label.form-label(for='user_id') user_id - input.form-control( - name='user_id' - type='text' - placeholder='user_id' - required - ) + label.form-label(for='user-id') user_id + input.form-control(name='user_id' id='user-id' type='text' required) .form-group button.btn-primary.btn(type='submit') Poll diff --git a/services/web/app/views/user/login.pug b/services/web/app/views/user/login.pug index 03112a0e16..621d5f7020 100644 --- a/services/web/app/views/user/login.pug +++ b/services/web/app/views/user/login.pug @@ -22,19 +22,21 @@ block content +customFormMessageNewStyle('password-compromised') | !{translate('password_compromised_try_again_or_use_known_device_or_reset', {}, [{name: 'a', attrs: {href: 'https://haveibeenpwned.com/passwords', rel: 'noopener noreferrer', target: '_blank'}}, {name: 'a', attrs: {href: '/user/password/reset', target: '_blank'}}])}. .form-group - input.form-control( + label(for='email') #{translate("email")} + input#email.form-control( name='email' type='email' required - placeholder='email@example.com' autofocus='true' + autocomplete='username' ) .form-group - input.form-control( + label(for='password') #{translate("password")} + input#password.form-control( name='password' type='password' + autocomplete='current-password' required - placeholder='********' ) .actions button.btn-primary.btn(type='submit' data-ol-disabled-inflight) diff --git a/services/web/app/views/user/passwordReset.pug b/services/web/app/views/user/passwordReset.pug index f498baff23..ca2483c9a8 100644 --- a/services/web/app/views/user/passwordReset.pug +++ b/services/web/app/views/user/passwordReset.pug @@ -56,7 +56,6 @@ block content label.form-label(for='email') #{translate("email")} input#email.form-control( name='email' - aria-label='email' type='email' required autocomplete='username' diff --git a/services/web/app/views/user/reconfirm.pug b/services/web/app/views/user/reconfirm.pug index 876c28edaf..f78332e866 100644 --- a/services/web/app/views/user/reconfirm.pug +++ b/services/web/app/views/user/reconfirm.pug @@ -45,11 +45,9 @@ block content input(name='_csrf' type='hidden' value=csrfToken) .form-group.mb-3 label.form-label(for='email') #{translate("please_enter_email")} - input.form-control( + input#email.form-control( name='email' - aria-label='email' type='email' - placeholder='email@example.com' required autofocus value=email diff --git a/services/web/frontend/extracted-translations.json b/services/web/frontend/extracted-translations.json index ee29392495..e47af1c3b4 100644 --- a/services/web/frontend/extracted-translations.json +++ b/services/web/frontend/extracted-translations.json @@ -82,12 +82,11 @@ "add_files": "", "add_more_collaborators": "", "add_more_licenses_to_my_plan": "", - "add_more_managers": "", + "add_more_manager_emails": "", "add_new_email": "", "add_on": "", "add_ons": "", "add_or_remove_project_from_tag": "", - "add_people": "", "add_role_and_department": "", "add_to_dictionary": "", "add_to_tag": "", @@ -491,6 +490,7 @@ "edit_figure": "", "edit_sso_configuration": "", "edit_tag": "", + "edit_tag_name": "", "edit_your_custom_dictionary": "", "editing": "", "editing_captions": "", @@ -536,7 +536,6 @@ "end_of_document": "", "ensure_recover_account": "", "enter_any_size_including_units_or_valid_latex_command": "", - "enter_image_url": "", "enter_the_code": "", "enter_the_confirmation_code": "", "enter_the_number_of_licenses_youd_like_to_add_to_see_the_cost_breakdown": "", @@ -604,6 +603,7 @@ "fixed_width_wrap_text": "", "fold_line": "", "folder_location": "", + "folder_name": "", "following_paths_conflict": "", "font_family": "", "font_size": "", @@ -1019,6 +1019,7 @@ "manage_publisher_managers": "", "manage_sessions": "", "manage_subscription": "", + "manage_tag": "", "manage_your_ai_assist_add_on": "", "managed": "", "managed_user_accounts": "", @@ -1096,7 +1097,6 @@ "new_navigation_introducing_left_hand_side_rail_and_top_menus": "", "new_password": "", "new_project": "", - "new_project_name": "", "new_subscription_will_be_billed_immediately": "", "new_tag": "", "new_tag_name": "", diff --git a/services/web/frontend/js/features/chat/components/message-input.tsx b/services/web/frontend/js/features/chat/components/message-input.tsx index b0c2312af9..e781b72d55 100644 --- a/services/web/frontend/js/features/chat/components/message-input.tsx +++ b/services/web/frontend/js/features/chat/components/message-input.tsx @@ -27,7 +27,7 @@ function MessageInput({ resetUnreadMessages, sendMessage }: MessageInputProps) { return (