Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix text direction for URL and email fields in block editor for RTL languages #68188

Open
wants to merge 12 commits into
base: trunk
Choose a base branch
from

Conversation

im3dabasia
Copy link
Contributor

Closes : #65893

What?

Adds direction: ltr for URL and email input fields in the block editor to ensure correct text alignment, especially for RTL languages.

Why?

Screenshots or screencast

Here are a few samples which I tested out.

Embed Block

Before After
image image

RSS Block

Before After
image image

Audio Block which uses url-popover component

Before After
image image

Copy link

github-actions bot commented Dec 20, 2024

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.

Co-authored-by: im3dabasia <[email protected]>
Co-authored-by: t-hamano <[email protected]>
Co-authored-by: mirka <[email protected]>
Co-authored-by: tyxla <[email protected]>

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

@im3dabasia im3dabasia marked this pull request as draft December 20, 2024 11:40
@im3dabasia im3dabasia marked this pull request as ready for review December 25, 2024 10:20
@im3dabasia
Copy link
Contributor Author

Hey @t-hamano ,

Thank you for pointing out this #65893. When you have a moment, could you please check this PR and provide your feedback?

Copy link
Contributor

@t-hamano t-hamano left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR!

I think the purpose of this PR is reasonable, but it is not desirable to write styles for input elements in the stylesheet of a specific block (Form Input block).

In my opinion, it might be better to solve this problem at the component level.

That is, add direction:ltr here in the InputControl component if the type is email or url.

Also, if we want to solve a similar problem with the Textcontrol component, I think we would need to add CSS here.

@t-hamano t-hamano added [Type] Bug An existing feature does not function as intended l10n Localization and translations best practices labels Dec 26, 2024
@t-hamano t-hamano requested a review from a team December 26, 2024 02:47
@im3dabasia
Copy link
Contributor Author

im3dabasia commented Dec 26, 2024

Also, if we want to solve a similar problem with the Textcontrol component, I think we would need to add CSS here.

Hi @t-hamano,

For the TextControl component, we’ll need to add the type prop wherever the input type is set to url or email. Currently, the type prop isn't passed, which is why the CSS is not being applied. I’ve compiled a list of places where this prop can be added. Could you please review it and let me know if I've missed any?

form

<TextControl
__nextHasNoMarginBottom
__next40pxDefaultSize
autoComplete="off"
label={ __( 'Email for form submissions' ) }
value={ email }
required
onChange={ ( value ) => {
setAttributes( { email: value } );
setAttributes( {
action: `mailto:${ value }`,
} );
setAttributes( { method: 'post' } );
} }
help={ __(
'The email address where form submissions will be sent. Separate multiple email addresses with a comma.'
) }
/>

<TextControl
__next40pxDefaultSize
__nextHasNoMarginBottom
autoComplete="off"
label={ __( 'Form action' ) }
value={ action }
onChange={ ( newVal ) => {
setAttributes( {
action: newVal,
} );
} }
help={ __(
'The URL where the form should be submitted.'
) }
/>

navigation-link

<TextControl
__nextHasNoMarginBottom
__next40pxDefaultSize
label={ __( 'Link' ) }
value={ url ? safeDecodeURI( url ) : '' }
onChange={ ( urlValue ) => {
updateAttributes(
{ url: urlValue },
setAttributes,
attributes
);
} }
autoComplete="off"
/>

navigation-submenu

<TextControl
__nextHasNoMarginBottom
__next40pxDefaultSize
value={ url || '' }
onChange={ ( urlValue ) => {
setAttributes( { url: urlValue } );
} }
label={ __( 'Link' ) }
autoComplete="off"
/>

There are several places where the rel attribute is used for links. I'm not entirely sure if the type prop is necessary in these cases. Could you please clarify if adding type="url" is required here?

Sample Link rel

<TextControl
__next40pxDefaultSize
__nextHasNoMarginBottom
label={ __( 'Link rel' ) }
value={ rel }
onChange={ ( newRel ) =>
setAttributes( { rel: newRel } )
}
/>

Screenshots for navigation-link

Before After
Screenshot 2024-12-26 at 7 36 21 PM Screenshot 2024-12-26 at 7 42 31 PM

@im3dabasia im3dabasia requested a review from t-hamano December 26, 2024 14:24
Copy link
Contributor

@t-hamano t-hamano left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the update!

Sorry, I'm starting to think that since the TextControl component is so widely used, it might be better to address it in a separate PR. Can this PR address just the InputControl component?

Comment on lines +291 to +295
&[type='email'],
&[type='url'] {
/* rtl:ignore */
direction: ltr;
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you reference the props directly, you should be able to output CSS conditionally. A possible approach would be something like this:

Details
diff --git a/packages/components/src/input-control/styles/input-control-styles.tsx b/packages/components/src/input-control/styles/input-control-styles.tsx
index 39eea8fdb0..ece01451db 100644
--- a/packages/components/src/input-control/styles/input-control-styles.tsx
+++ b/packages/components/src/input-control/styles/input-control-styles.tsx
@@ -4,7 +4,7 @@
 import type { SerializedStyles } from '@emotion/react';
 import { css } from '@emotion/react';
 import styled from '@emotion/styled';
-import type { CSSProperties, ReactNode } from 'react';
+import type { CSSProperties, ReactNode, HTMLInputTypeAttribute } from 'react';
 
 /**
  * Internal dependencies
@@ -141,6 +141,7 @@ type InputProps = {
        dragCursor?: CSSProperties[ 'cursor' ];
        paddingInlineStart?: CSSProperties[ 'paddingInlineStart' ];
        paddingInlineEnd?: CSSProperties[ 'paddingInlineEnd' ];
+       type?: HTMLInputTypeAttribute;
 };
 
 const disabledStyles = ( { disabled }: InputProps ) => {
@@ -262,6 +263,15 @@ const dragStyles = ( { isDragging, dragCursor }: InputProps ) => {
        `;
 };
 
+const directionStyles = ( { type }: InputProps ) => {
+       if ( type !== 'url' && type !== 'email' ) {
+               return '';
+       }
+       return css`
+               direction: ltr;
+       `;
+};
+
 // TODO: Resolve need to use &&& to increase specificity
 // https://github.com/WordPress/gutenberg/issues/18483
 
@@ -283,6 +293,7 @@ export const Input = styled.input< InputProps >`
                ${ fontSizeStyles }
                ${ sizeStyles }
                ${ customPaddings }
+               ${ directionStyles }
 
                &::-webkit-input-placeholder {
                        line-height: normal;

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any reason why we would prefer this over plain CSS selectors? I think in general we should use plain CSS instead of JS when possible, since it will be simpler both in terms of lines of code and runtime work. Another reason is that we are actually planning to move off of CSS-in-JS (#66806).

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any reason why we would prefer this over plain CSS selectors?

I did it for consistency with existing approaches (sizeStyles, customPaddings, etc.). But if we are planning to move off of CSS-in-JS, I think the plain CSS is better.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @t-hamano , I have reverted back to using CSS. Please review my work once again.

@im3dabasia
Copy link
Contributor Author

im3dabasia commented Dec 27, 2024

Hey @t-hamano ,

Thank you for your insightful suggestions on conditionally implementing the CSS. I truly appreciate the feedback, and I’m learning a lot from it.

I have made the changes you requested and have created this PR specifically to incorporate the updates to the <InputControl> component. However, there are two instances where I’m unsure if type="url" is strictly necessary. The code suggests it’s for handling URL-related input, but I would appreciate your input on whether it's needed in these cases.

Looking forward to your thoughts!

InputControl component

<InputControl
__next40pxDefaultSize
prefix={
<InputControlPrefixWrapper>
/
</InputControlPrefixWrapper>
}
suffix={
<Button
__next40pxDefaultSize
icon={ copySmall }
ref={ copyButtonRef }
label={ __( 'Copy' ) }
/>
}
label={ __( 'Link' ) }
hideLabelFromVision
value={ slug }
autoComplete="off"
spellCheck="false"
type="text"
className="fields-controls__slug-input"
onChange={ ( newValue?: string ) => {
onChangeControl( newValue );
} }
onBlur={ () => {
if ( slug === '' ) {
onChangeControl( originalSlugRef.current );
}
} }
aria-describedby={ postUrlSlugDescriptionId }
/>

<InputControl
__next40pxDefaultSize
prefix={
<InputControlPrefixWrapper>
/
</InputControlPrefixWrapper>
}
suffix={
<InputControlSuffixWrapper variant="control">
<Button
icon={ copySmall }
ref={ copyButtonRef }
size="small"
label="Copy"
/>
</InputControlSuffixWrapper>
}
label={ __( 'Slug' ) }
hideLabelFromVision
value={ forceEmptyField ? '' : postSlug }
autoComplete="off"
spellCheck="false"
type="text"
className="editor-post-url__input"
onChange={ ( newValue ) => {
editPost( { slug: newValue } );
// When we delete the field the permalink gets
// reverted to the original value.
// The forceEmptyField logic allows the user to have
// the field temporarily empty while typing.
if ( ! newValue ) {
if ( ! forceEmptyField ) {
setForceEmptyField( true );
}
return;
}
if ( forceEmptyField ) {
setForceEmptyField( false );
}
} }
onBlur={ ( event ) => {
editPost( {
slug: cleanForSlug(
event.target.value
),
} );
if ( forceEmptyField ) {
setForceEmptyField( false );
}
} }
aria-describedby={ postUrlSlugDescriptionId }
/>

@im3dabasia im3dabasia requested a review from t-hamano December 27, 2024 15:59
@im3dabasia
Copy link
Contributor Author

@t-hamano, I’ll be opening a new PR with the changes to the component shortly and will link it here once it's ready.

Copy link
Contributor

@t-hamano t-hamano left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@im3dabasia Thanks for the update. Finally, it would be nice to add a CHANGELOG entry. In my opinion, this is a bug fix.

@WordPress/gutenberg-components

I think this PR is OK to ship, but please note that it will make a visual change to the placeholder. The text will be left-aligned regardless of whether it is an LTR or RTL language:

image

Ideally maybe only the placeholder should be right-aligned, but for some reason the code below didn't work for me:

diff --git a/packages/components/src/input-control/styles/input-control-styles.tsx b/packages/components/src/input-control/styles/input-control-styles.tsx
index db24a5e60f..3fc293e9c3 100644
--- a/packages/components/src/input-control/styles/input-control-styles.tsx
+++ b/packages/components/src/input-control/styles/input-control-styles.tsx
@@ -292,6 +292,11 @@ export const Input = styled.input< InputProps >`
                &[type='url'] {
                        /* rtl:ignore */
                        direction: ltr;
+
+                       &::-webkit-input-placeholder {
+                               // For RTL languages, the value changes to "rtl".
+                               direction: ltr !important;
+                       }
                }
        }
 `;

Furthermore, we cannot know in advance whether the text that goes into the placeholder is for an RTL language or whether it is something that is meant to be displayed in LTR, such as a URL.

In any case, since the text doesn't become unreadable, I think it's fine to always left-aligned the placeholder.

@im3dabasia
Copy link
Contributor Author

@im3dabasia Thanks for the update. Finally, it would be nice to add a CHANGELOG entry. In my opinion, this is a bug fix.

@t-hamano , I'm not quite sure how to create a CHANGELOG entry or which CHANGELOG I should add an entry to. I'd really appreciate it if you could guide me here.

@t-hamano
Copy link
Contributor

@im3dabasia No need to create a new file, just access this file and add the new line here.

Essentially, if any changes are made to the @wordpress/components package, those changes must be added to a changelog file. Otherwise, CI will fail (although this CI is not required check).

@tyxla
Copy link
Member

tyxla commented Dec 30, 2024

@im3dabasia Thanks for the update. Finally, it would be nice to add a CHANGELOG entry. In my opinion, this is a bug fix.

@WordPress/gutenberg-components

I think this PR is OK to ship, but please note that it will make a visual change to the placeholder. The text will be left-aligned regardless of whether it is an LTR or RTL language:

image

Ideally maybe only the placeholder should be right-aligned, but for some reason the code below didn't work for me:

diff --git a/packages/components/src/input-control/styles/input-control-styles.tsx b/packages/components/src/input-control/styles/input-control-styles.tsx
index db24a5e60f..3fc293e9c3 100644
--- a/packages/components/src/input-control/styles/input-control-styles.tsx
+++ b/packages/components/src/input-control/styles/input-control-styles.tsx
@@ -292,6 +292,11 @@ export const Input = styled.input< InputProps >`
                &[type='url'] {
                        /* rtl:ignore */
                        direction: ltr;
+
+                       &::-webkit-input-placeholder {
+                               // For RTL languages, the value changes to "rtl".
+                               direction: ltr !important;
+                       }
                }
        }
 `;

Furthermore, we cannot know in advance whether the text that goes into the placeholder is for an RTL language or whether it is something that is meant to be displayed in LTR, such as a URL.

In any case, since the text doesn't become unreadable, I think it's fine to always left-aligned the placeholder.

According to the spec, when the placeholder needs to be with a different directionality than the content, we wrap contents with &#x202B; and &#x202E;, so that might be a better alternative, see spec here.

@im3dabasia im3dabasia force-pushed the fix/add-ltr-for-url-email-65893 branch from 4ec51ae to 8606e29 Compare December 30, 2024 12:05
@im3dabasia
Copy link
Contributor Author

Hey @t-hamano and @tyxla, I’ve made the requested changes. Please take a look when you have a moment.

@im3dabasia im3dabasia requested a review from t-hamano December 30, 2024 12:07
@tyxla
Copy link
Member

tyxla commented Dec 30, 2024

@im3dabasia thanks for working on it!

However, @t-hamano mentioned that the &::-webkit-input-placeholder approach didn't work for him. Also, this could only work for webkit browsers, so it wouldn't work for Firefox for example.

Furthermore, as I mentioned above, the spec recommends a different approach, have you tried that?

@im3dabasia
Copy link
Contributor Author

im3dabasia commented Dec 30, 2024

I tried a combination of approaches.. sharing with you the results

trunk

The entire placeholder text is right-aligned, and the ellipsis is placed first, followed by the text itself.

image

Current branch

The placeholder is left-aligned, with the text displayed first, followed by the ellipsis.

image

These are the 3 approaches I tried:

1. placeholder={ "&#x202B; " + __( 'Enter URL here…' ) + " &#x202E;" }

The entire placeholder is left-aligned, and the ellipsis appears after the text.

image
  1. placeholder={ `&#x202B; ${ __( 'Enter URL here…' ) } &#x202E;` }

The entire placeholder is left-aligned, and the ellipsis appears after the text.

image
  1. placeholder="&#x202B; Enter URL here… &#x202E;"

The placeholder is left-aligned, but the ellipsis appears before the text.

Screenshot 2024-12-30 at 6 33 54 PM

Based on my understanding, the goal is for the placeholder text to be in RTL (right-to-left), just like plain text would be, and for the placeholder to be right-aligned within the input box. This means the placeholder text should be displayed in RTL, but the input box itself should remain rendered in LTR, with only the placeholder text aligned and displayed in RTL.

During my experimentation, I was able to achieve the RTL text alignment as shown in Case 3 with what @tyxla suggested. However, I found that when I removed the __() translation function and used plain text, the text direction switched to RTL. The resulted text was RTL but was left aligned, which is not the desired behavior. The alignment still remains incorrect. Also removing the translation function isn't a suitable solution.

EDIT:

It's also worth mentioning that after adding the HTML entities in the placeholder (as shown in Case 3), the output for an LTR language is as follows:

Hardcoding the entities will cause an override for all languages, both LTR and RTL. While adding them will fix the alignment in RTL languages, it will disrupt the alignment in LTR languages.

image
  • I believe the approach of using &#x202B; and &#x202E; may not be ideal for this scenario, as the placeholder text will vary based on the user's language, and the entire text will switch between LTR and RTL. This method seems more appropriate when the website is primarily in a base language (e.g., English), with occasional RTL words embedded. In such cases, the entities approach ensures correct directionality for those specific words. However, it may not be suitable when the entire placeholder text changes based on the language.

Please let me know your thoughts on this.

@tyxla
Copy link
Member

tyxla commented Dec 30, 2024

Thanks for trying it out 👍 If that approach doesn't work, we might want to resort to the placeholder one.

I know we've historically used all (&::-webkit-input-placeholder, &::-moz-placeholder, &:-ms-input-placeholder) or used ::placeholder which should have browser-wide support at this time. Perhaps that might be something to try out.

@im3dabasia
Copy link
Contributor Author

I know we've historically used all (&::-webkit-input-placeholder, &::-moz-placeholder, &:-ms-input-placeholder) or used ::placeholder which should have browser-wide support at this time. Perhaps that might be something to try out.

I tried the approaches you mentioned (using &::-webkit-input-placeholder, &::-moz-placeholder, &:-ms-input-placeholder, or ::placeholder), but none of them worked. They do not allow us to explicitly set the placeholder and the input box to have different directions.

As an alternative, I used text-align: right. This works, but I’m not sure whether it is the most correct approach.

trunk with text-align:right
image image

I have added screenshots comparing the text with direction: rtl and text-align: right, specifically in Arabic. The difference lies in how the punctuation (the full stop) is placed.

Though the text is rendered correctly, the placement of the final punctuation (.) differs.

Text align right direction: rtl
Screenshot 2025-01-01 at 9 19 36 PM Screenshot 2025-01-01 at 9 21 49 PM

Here is a screen recording showing the result after I applied this CSS:

Final Code
&[type='email'],
&[type='url'] {
	/* rtl:ignore */
	direction: ltr;

	[dir='rtl'] &::placeholder {
		text-align: right;
	}
}
Screen.Recording.2025-01-01.at.9.34.14.PM.mov

I would love to hear your thoughts on this approach. Would setting the text-align of the placeholder to right when dir=rtl work as expected, or do you see any potential issues?

cc: @tyxla and @t-hamano

@t-hamano
Copy link
Contributor

t-hamano commented Jan 2, 2025

@im3dabasia Thank you for testing various things.

Based on my understanding, the goal is for the placeholder text to be in RTL (right-to-left), just like plain text would be, and for the placeholder to be right-aligned within the input box. This means the placeholder text should be displayed in RTL, but the input box itself should remain rendered in LTR, with only the placeholder text aligned and displayed in RTL.

Perhaps we should first discuss whether this is an ideal behavior.

If the placeholder text is normal RTL text, it is expected to be RTL and right-aligned:

image

But the placeholder can be changed. Some developers may want to display a sample URL as the placeholder text. In this case, the right alignment may feel a bit unnatural:

image

Probably the ideal solution would be to parse the placeholder property and make it left-aligned and LTR if it's a url/email, and right-aligned and RTL otherwise, but that would be a bit more complicated to implement.

Personally, I'd prefer to always left-align regardless of what the placeholder text is. What do you think?

@im3dabasia
Copy link
Contributor Author

Personally, I'd prefer to always left-align regardless of what the placeholder text is. What do you think?

I agree that keeping it left-aligned would be a good option, as having different alignments for the placeholder and the input box can make things unnecessarily complicated.

Out of curiosity, I checked how other sites handle RTL languages for email input fields specifically. Here's what I found—I’ll attach some screenshots for reference. Interestingly, I noticed that they align the Arabic text to the left.

Screenshots image image

As @t-hamano rightly pointed out, the end developer might use a URL or email as a placeholder. In such cases, aligning the text to the right would indeed be incorrect.

@mirka
Copy link
Member

mirka commented Jan 2, 2025

Personally, I'd prefer to always left-align regardless of what the placeholder text is. What do you think?

Agreed. Let's go with this for now, especially because it is simpler 😄

@tyxla
Copy link
Member

tyxla commented Jan 2, 2025

Happy to go with the simplest way 👍

@im3dabasia im3dabasia requested a review from mirka January 3, 2025 10:32
@im3dabasia im3dabasia force-pushed the fix/add-ltr-for-url-email-65893 branch from 12552e1 to 7056c85 Compare January 3, 2025 10:37
Copy link
Contributor

@t-hamano t-hamano left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! I think this is the best approach for now.

Audio block and Embed block:

LTR language RTL language
ltr-language rtl-language

Storybook:

f4c8ecd8af00e5b9cfc3c0ebe5a088b1.mp4

@WordPress/gutenberg-components I would be grateful for any additional feedback on whether it's OK to ship this PR.

@@ -25,6 +25,7 @@
- `BoxControl`: Better respect for the `min` prop in the Range Slider ([#67819](https://github.com/WordPress/gutenberg/pull/67819)).
- `FontSizePicker`: Add `display:contents` rule to fix overflowing text in the custom size select. ([#68280](https://github.com/WordPress/gutenberg/pull/68280)).
- `BoxControl`: Fix aria-valuetext value ([#68362](https://github.com/WordPress/gutenberg/pull/68362)).
- `InputControl`: Ensures email and url inputs have consistent LTR alignment in RTL languages ([#65893](https://github.com/WordPress/gutenberg/issues/65893)).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- `InputControl`: Ensures email and url inputs have consistent LTR alignment in RTL languages ([#65893](https://github.com/WordPress/gutenberg/issues/65893)).
- `InputControl`: Ensures email and url inputs have consistent LTR alignment in RTL languages ([#68188](https://github.com/WordPress/gutenberg/pull/68188)).

This must be the pull request number, not the issue number.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In addition to that, it needs to be put under the "Unreleased" section, instead of under an already released one.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@im3dabasia

It would be a good idea to add a Bug Fixes section under the Unreleased section and add an entry there. Like this:

<!-- Learn how to maintain this file at https://github.com/WordPress/gutenberg/tree/HEAD/packages#maintaining-changelogs. -->

## Unreleased

### Bug Fixes

-   `InputControl`: Ensures email and url inputs have consistent LTR alignment in RTL languages ([#68188](https://github.com/WordPress/gutenberg/pull/68188)).

## 29.1.0 (2025-01-02)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@tyxla and @t-hamano ,
Thank you for the guidance; I appreciate it!

Copy link
Member

@tyxla tyxla left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 👍

Should be good to go once the CHANGELOG issues are addressed.

@@ -25,6 +29,7 @@
- `BoxControl`: Better respect for the `min` prop in the Range Slider ([#67819](https://github.com/WordPress/gutenberg/pull/67819)).
- `FontSizePicker`: Add `display:contents` rule to fix overflowing text in the custom size select. ([#68280](https://github.com/WordPress/gutenberg/pull/68280)).
- `BoxControl`: Fix aria-valuetext value ([#68362](https://github.com/WordPress/gutenberg/pull/68362)).
- `InputControl`: Ensures email and url inputs have consistent LTR alignment in RTL languages ([#68188](https://github.com/WordPress/gutenberg/pull/68188)).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for the trouble, but we can now remove this one now that it's included in the "Unreleased" section.

Suggested change
- `InputControl`: Ensures email and url inputs have consistent LTR alignment in RTL languages ([#68188](https://github.com/WordPress/gutenberg/pull/68188)).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@tyxla , Fixed it . Thank you for the quick review!

Copy link
Member

@tyxla tyxla left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 👍

Thanks again @im3dabasia 🙌

@tyxla tyxla enabled auto-merge (squash) January 3, 2025 12:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
l10n Localization and translations best practices [Type] Bug An existing feature does not function as intended
Projects
None yet
Development

Successfully merging this pull request may close these issues.

InputControl/TextControl: Force direction to LTR for certain fields
4 participants