Set focus style for contenteditable elements #41200
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
It's important to make sure
contenteditable
elements also have a focus style, just like other interactive elements. Some elements, like buttons, don’t get a focus style when they’re madecontenteditable
, which can hurt the user experience. Now, allcontenteditable
elements will behave the same way and get a focus style, just like other elements that can be focused. Sincecontenteditable
acts like an input field, it makes sense to give it a focus style too.Some Examples:
Button Component
![chrome_QDUqyMOYFZ](https://private-user-images.githubusercontent.com/139472418/408865323-3670df57-35c7-4f45-a290-f7ec98bc0b26.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxNTMyNTEsIm5iZiI6MTczOTE1Mjk1MSwicGF0aCI6Ii8xMzk0NzI0MTgvNDA4ODY1MzIzLTM2NzBkZjU3LTM1YzctNGY0NS1hMjkwLWY3ZWM5OGJjMGIyNi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjEwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMFQwMjAyMzFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0xZDIzZjVjY2E5YzA4NzU5NzEyNjBmOWNlMmFjZDUxNzgwYzc3NTVmZTBlMGNhNGUwODg4ZmQ0MzU5MjQ4ZmE1JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.OHeR1eXVbqX5mIC54MFwOh_A1wKrsbYng5Of1EhEPHs)
Before:
After:
![chrome_IiwCYTqF9s](https://private-user-images.githubusercontent.com/139472418/408865196-736ec4bf-6db7-410f-8843-797ea5b97aee.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxNTMyNTEsIm5iZiI6MTczOTE1Mjk1MSwicGF0aCI6Ii8xMzk0NzI0MTgvNDA4ODY1MTk2LTczNmVjNGJmLTZkYjctNDEwZi04ODQzLTc5N2VhNWI5N2FlZS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjEwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMFQwMjAyMzFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT01MGM5NTc2NDlkMzQ1YmU1ZWI3NTE3MzQzYjFjNjk5MDRmOTBhMjQ1NWE4YzJiMjI3MzdhYjliNzlkZDQxY2U4JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.6W85ZB7GnDo9rUjhBGrt7qxqr9DUhlyXb-wNwLvdsuI)
Card Component
![chrome_FyR4Jw46KY](https://private-user-images.githubusercontent.com/139472418/408865929-a27ae95a-7e41-4f92-8750-73eb48a3c439.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxNTMyNTEsIm5iZiI6MTczOTE1Mjk1MSwicGF0aCI6Ii8xMzk0NzI0MTgvNDA4ODY1OTI5LWEyN2FlOTVhLTdlNDEtNGY5Mi04NzUwLTczZWI0OGEzYzQzOS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjEwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMFQwMjAyMzFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT02ZWU2NTZmYzA4NDA3MGQ2NTgwOTM3ZjMyYTgxMjYxZjFmNGZkMzI5NzQzOTQ3OTIxNGZmMzNmYTkzMzYyZTU4JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.WahZ5sbaM5mgVThMXvyZ5sVosW7dt2fiLF5ZqmYoOQA)
Before:
After:
![chrome_T9cwcBUGro](https://private-user-images.githubusercontent.com/139472418/409531387-36da2b69-5530-4647-8fa3-0d1053ea29cc.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxNTMyNTEsIm5iZiI6MTczOTE1Mjk1MSwicGF0aCI6Ii8xMzk0NzI0MTgvNDA5NTMxMzg3LTM2ZGEyYjY5LTU1MzAtNDY0Ny04ZmEzLTBkMTA1M2VhMjljYy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjEwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMFQwMjAyMzFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1kMTE2MDFmMzhiZDVlNGM3OTZkODhiNTA4NWIyYTBkYTMxYTYyMmYxNmVlNWRkMzA5ODM3ZGMyZDRhODFmNmIyJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.u6VELiHNAPDFq7ID-ITEx7MbJXfAUD66YH_DNrziEaU)
Motivation & Context
To improve consistency, ensuring that all contenteditable elements receive a focus style enhances the user experience across the site
Type of changes
Checklist
npm run lint
)Live previews
To test the functionality, add the contenteditable attribute to the element you want to make editable, e.g., from the DevTools.