Skip to content

Conversation

@FCalabria
Copy link
Contributor

WHY are these changes introduced?

When a text input is disabled while being focused, the onBlur event is not triggered, therefore the focus state doesn't change and keeps the focus-ring visible.

WHAT is this pull request doing?

Previous
disabled input with an focus ring on it

Fixed
disabled input without the disabled ring

In case you need a use case for this, we have this scenario in search & discovery app: There's a form to introduce a list of terms, by writting each term and clicking a button or using enter. The input is disabled when you reach the max amount of terms. Therefore, when you introduce the last item and click enter, the input is disabled without being unfocused by the user, which causes the corner case and can lead to having two elements looking focused. Video for a more clear understanding

How to 🎩

🖥 Local development instructions
🗒 General tophatting guidelines
📄 Changelog guidelines

For reproduction on the playground.tsx

import React, {useCallback, useState} from 'react';

import {Button, Form, Page, TextField} from '../src';

export function Playground() {
  const [value, setValue] = useState('Jaded Pixel');
  const [disabled, setDisabled] = useState(false);

  const handleChange = useCallback(
    (newValue: string) => setValue(newValue),
    [],
  );

  return (
    <Page title="Playground">
      <Form onSubmit={() => setDisabled(true)}>
        <TextField
          label="Store name"
          value={value}
          onChange={handleChange}
          autoComplete="off"
          disabled={disabled}
        />
      </Form>
      <Button onClick={() => setDisabled(false)}>Enable</Button>
    </Page>
  );
}

🎩 checklist

@FCalabria FCalabria force-pushed the fcalabria/fix-input-error-state branch from 936112c to 3273157 Compare May 29, 2023 15:33
@FCalabria
Copy link
Contributor Author

/snapit

@github-actions
Copy link
Contributor

🫰✨ Thanks @FCalabria! Your snapshots have been published to npm.

Test the snapshots by updating your package.json with the newly published versions:

yarn add @shopify/polaris-cli@0.0.0-snapshot-release-20230529153618
yarn add @shopify/polaris@0.0.0-snapshot-release-20230529153618

Copy link
Member

@kyledurand kyledurand left a comment

Choose a reason for hiding this comment

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

LGTM

Co-authored-by: Kyle Durand <kyledurand@users.noreply.github.com>
@FCalabria FCalabria merged commit e7d8368 into main May 30, 2023
@FCalabria FCalabria deleted the fcalabria/fix-input-error-state branch May 30, 2023 12:59
alex-page pushed a commit that referenced this pull request Jun 5, 2023
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @shopify/polaris@11.1.0

### Minor Changes

- [#9269](#9269)
[`bf3bc75a1`](bf3bc75)
Thanks [@nat-king](https://github.com/nat-king)! - Added optional
`onAddFilterClick` callback prop to the indexFilters component

### Patch Changes

- [#9295](#9295)
[`7e21fe093`](7e21fe0)
Thanks [@chloerice](https://github.com/chloerice)! - Fixed `initials`
overflowing when `Avatar` is round


- [#9343](#9343)
[`ae3208332`](ae32083)
Thanks [@qt314](https://github.com/qt314)! - Alphabetized locale files


- [#9314](#9314)
[`e7d836819`](e7d8368)
Thanks [@FCalabria](https://github.com/FCalabria)! - Removed focus
styles on TextField while disabled


- [#9223](#9223)
[`221426aaf`](221426a)
Thanks [@aveline](https://github.com/aveline)! - Deprecated `external`
prop in `Link` component


- [#9229](#9229)
[`821535820`](8215358)
Thanks [@aeperea](https://github.com/aeperea)! - Tabs update disabled
state


- [#9323](#9323)
[`cd43c8b47`](cd43c8b)
Thanks [@qt314](https://github.com/qt314)! - Added internationalized
accessibility label to Banner dismiss button


- [#9263](#9263)
[`a3f3462a6`](a3f3462)
Thanks [@mattkubej](https://github.com/mattkubej)! - Protect border
radius of `LegacyCard` with overflow clip


- [#9273](#9273)
[`e823538ad`](e823538)
Thanks [@aishad](https://github.com/aishad)! - Fixed inline padding on
Modal Footer

## @shopify/polaris-cli@0.2.2



## polaris.shopify.com@0.55.0

### Minor Changes

- [#9311](#9311)
[`b6f2d7928`](b6f2d79)
Thanks [@lgriffee](https://github.com/lgriffee)! - Created a "What's
new" page for v11 token changes.

### Patch Changes

- [#8840](#8840)
[`a7569b7f5`](a7569b7)
Thanks [@alex-page](https://github.com/alex-page)! - Updated Colors page
with v11 content

- Updated dependencies
\[[`7e21fe093`](7e21fe0),
[`ae3208332`](ae32083),
[`e7d836819`](e7d8368),
[`221426aaf`](221426a),
[`821535820`](8215358),
[`cd43c8b47`](cd43c8b),
[`a3f3462a6`](a3f3462),
[`e823538ad`](e823538),
[`bf3bc75a1`](bf3bc75)]:
    -   @shopify/polaris@11.1.0

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
juzser pushed a commit to juzser/polaris that referenced this pull request Jul 27, 2023
### WHY are these changes introduced?

When a text input is disabled while being focused, the `onBlur` event is
not triggered, therefore the `focus` state doesn't change and keeps the
focus-ring visible.

### WHAT is this pull request doing?

Previous
<img width="903" alt="disabled input with an focus ring on it"
src="https://github.com/Shopify/polaris/assets/13103124/4cd16b53-d590-42a1-89be-f4d1e654f20a">

Fixed
<img width="890" alt="disabled input without the disabled ring"
src="https://github.com/Shopify/polaris/assets/13103124/2984a35c-5ce9-4889-bd48-c52ffbf93350">

In case you need a use case for this, we have this scenario in search &
discovery app: There's a form to introduce a list of terms, by writting
each term and clicking a button or using enter. The input is disabled
when you reach the max amount of terms. Therefore, when you introduce
the last item and click enter, the input is disabled without being
unfocused by the user, which causes the corner case and can lead to
having two elements looking focused. [Video for a more clear
understanding](https://screenshot.click/29-20-jb91h-t66jg.mp4)


### How to 🎩

🖥 [Local development
instructions](https://github.com/Shopify/polaris/blob/main/README.md#local-development)
🗒 [General tophatting
guidelines](https://github.com/Shopify/polaris/blob/main/documentation/Tophatting.md)
📄 [Changelog
guidelines](https://github.com/Shopify/polaris/blob/main/.github/CONTRIBUTING.md#changelog)


For reproduction on the `playground.tsx`

```jsx
import React, {useCallback, useState} from 'react';

import {Button, Form, Page, TextField} from '../src';

export function Playground() {
  const [value, setValue] = useState('Jaded Pixel');
  const [disabled, setDisabled] = useState(false);

  const handleChange = useCallback(
    (newValue: string) => setValue(newValue),
    [],
  );

  return (
    <Page title="Playground">
      <Form onSubmit={() => setDisabled(true)}>
        <TextField
          label="Store name"
          value={value}
          onChange={handleChange}
          autoComplete="off"
          disabled={disabled}
        />
      </Form>
      <Button onClick={() => setDisabled(false)}>Enable</Button>
    </Page>
  );
}
```


### 🎩 checklist

- [ ] Tested on
[mobile](https://github.com/Shopify/polaris/blob/main/documentation/Tophatting.md#cross-browser-testing)
- [ ] Tested on [multiple
browsers](https://help.shopify.com/en/manual/shopify-admin/supported-browsers)
- [ ] Tested for
[accessibility](https://github.com/Shopify/polaris/blob/main/documentation/Accessibility%20testing.md)
- [ ] Updated the component's `README.md` with documentation changes
- [ ] [Tophatted
documentation](https://github.com/Shopify/polaris/blob/main/documentation/Tophatting%20documentation.md)
changes in the style guide

---------

Co-authored-by: Kyle Durand <kyledurand@users.noreply.github.com>
juzser pushed a commit to juzser/polaris that referenced this pull request Jul 27, 2023
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @shopify/polaris@11.1.0

### Minor Changes

- [Shopify#9269](Shopify#9269)
[`bf3bc75a1`](Shopify@bf3bc75)
Thanks [@nat-king](https://github.com/nat-king)! - Added optional
`onAddFilterClick` callback prop to the indexFilters component

### Patch Changes

- [Shopify#9295](Shopify#9295)
[`7e21fe093`](Shopify@7e21fe0)
Thanks [@chloerice](https://github.com/chloerice)! - Fixed `initials`
overflowing when `Avatar` is round


- [Shopify#9343](Shopify#9343)
[`ae3208332`](Shopify@ae32083)
Thanks [@qt314](https://github.com/qt314)! - Alphabetized locale files


- [Shopify#9314](Shopify#9314)
[`e7d836819`](Shopify@e7d8368)
Thanks [@FCalabria](https://github.com/FCalabria)! - Removed focus
styles on TextField while disabled


- [Shopify#9223](Shopify#9223)
[`221426aaf`](Shopify@221426a)
Thanks [@aveline](https://github.com/aveline)! - Deprecated `external`
prop in `Link` component


- [Shopify#9229](Shopify#9229)
[`821535820`](Shopify@8215358)
Thanks [@aeperea](https://github.com/aeperea)! - Tabs update disabled
state


- [Shopify#9323](Shopify#9323)
[`cd43c8b47`](Shopify@cd43c8b)
Thanks [@qt314](https://github.com/qt314)! - Added internationalized
accessibility label to Banner dismiss button


- [Shopify#9263](Shopify#9263)
[`a3f3462a6`](Shopify@a3f3462)
Thanks [@mattkubej](https://github.com/mattkubej)! - Protect border
radius of `LegacyCard` with overflow clip


- [Shopify#9273](Shopify#9273)
[`e823538ad`](Shopify@e823538)
Thanks [@aishad](https://github.com/aishad)! - Fixed inline padding on
Modal Footer

## @shopify/polaris-cli@0.2.2



## polaris.shopify.com@0.55.0

### Minor Changes

- [Shopify#9311](Shopify#9311)
[`b6f2d7928`](Shopify@b6f2d79)
Thanks [@lgriffee](https://github.com/lgriffee)! - Created a "What's
new" page for v11 token changes.

### Patch Changes

- [Shopify#8840](Shopify#8840)
[`a7569b7f5`](Shopify@a7569b7)
Thanks [@alex-page](https://github.com/alex-page)! - Updated Colors page
with v11 content

- Updated dependencies
\[[`7e21fe093`](Shopify@7e21fe0),
[`ae3208332`](Shopify@ae32083),
[`e7d836819`](Shopify@e7d8368),
[`221426aaf`](Shopify@221426a),
[`821535820`](Shopify@8215358),
[`cd43c8b47`](Shopify@cd43c8b),
[`a3f3462a6`](Shopify@a3f3462),
[`e823538ad`](Shopify@e823538),
[`bf3bc75a1`](Shopify@bf3bc75)]:
    -   @shopify/polaris@11.1.0

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
AnnaCheba pushed a commit to AnnaCheba/polaris that referenced this pull request Apr 22, 2024
### WHY are these changes introduced?

When a text input is disabled while being focused, the `onBlur` event is
not triggered, therefore the `focus` state doesn't change and keeps the
focus-ring visible.

### WHAT is this pull request doing?

Previous
<img width="903" alt="disabled input with an focus ring on it"
src="https://github.com/Shopify/polaris/assets/13103124/4cd16b53-d590-42a1-89be-f4d1e654f20a">

Fixed
<img width="890" alt="disabled input without the disabled ring"
src="https://github.com/Shopify/polaris/assets/13103124/2984a35c-5ce9-4889-bd48-c52ffbf93350">

In case you need a use case for this, we have this scenario in search &
discovery app: There's a form to introduce a list of terms, by writting
each term and clicking a button or using enter. The input is disabled
when you reach the max amount of terms. Therefore, when you introduce
the last item and click enter, the input is disabled without being
unfocused by the user, which causes the corner case and can lead to
having two elements looking focused. [Video for a more clear
understanding](https://screenshot.click/29-20-jb91h-t66jg.mp4)


### How to 🎩

🖥 [Local development
instructions](https://github.com/Shopify/polaris/blob/main/README.md#local-development)
🗒 [General tophatting
guidelines](https://github.com/Shopify/polaris/blob/main/documentation/Tophatting.md)
📄 [Changelog
guidelines](https://github.com/Shopify/polaris/blob/main/.github/CONTRIBUTING.md#changelog)


For reproduction on the `playground.tsx`

```jsx
import React, {useCallback, useState} from 'react';

import {Button, Form, Page, TextField} from '../src';

export function Playground() {
  const [value, setValue] = useState('Jaded Pixel');
  const [disabled, setDisabled] = useState(false);

  const handleChange = useCallback(
    (newValue: string) => setValue(newValue),
    [],
  );

  return (
    <Page title="Playground">
      <Form onSubmit={() => setDisabled(true)}>
        <TextField
          label="Store name"
          value={value}
          onChange={handleChange}
          autoComplete="off"
          disabled={disabled}
        />
      </Form>
      <Button onClick={() => setDisabled(false)}>Enable</Button>
    </Page>
  );
}
```


### 🎩 checklist

- [ ] Tested on
[mobile](https://github.com/Shopify/polaris/blob/main/documentation/Tophatting.md#cross-browser-testing)
- [ ] Tested on [multiple
browsers](https://help.shopify.com/en/manual/shopify-admin/supported-browsers)
- [ ] Tested for
[accessibility](https://github.com/Shopify/polaris/blob/main/documentation/Accessibility%20testing.md)
- [ ] Updated the component's `README.md` with documentation changes
- [ ] [Tophatted
documentation](https://github.com/Shopify/polaris/blob/main/documentation/Tophatting%20documentation.md)
changes in the style guide

---------

Co-authored-by: Kyle Durand <kyledurand@users.noreply.github.com>
ascherkus pushed a commit to ascherkus/polaris that referenced this pull request Feb 19, 2025
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @shopify/polaris@11.1.0

### Minor Changes

- [Shopify#9269](Shopify#9269)
[`bf3bc75a1`](Shopify@4c4ea3f)
Thanks [@nat-king](https://github.com/nat-king)! - Added optional
`onAddFilterClick` callback prop to the indexFilters component

### Patch Changes

- [Shopify#9295](Shopify#9295)
[`7e21fe093`](Shopify@1e6866e)
Thanks [@chloerice](https://github.com/chloerice)! - Fixed `initials`
overflowing when `Avatar` is round


- [Shopify#9343](Shopify#9343)
[`ae3208332`](Shopify@8e37127)
Thanks [@qt314](https://github.com/qt314)! - Alphabetized locale files


- [Shopify#9314](Shopify#9314)
[`e7d836819`](Shopify@77a0b7f)
Thanks [@FCalabria](https://github.com/FCalabria)! - Removed focus
styles on TextField while disabled


- [Shopify#9223](Shopify#9223)
[`221426aaf`](Shopify@7a8633b)
Thanks [@aveline](https://github.com/aveline)! - Deprecated `external`
prop in `Link` component


- [Shopify#9229](Shopify#9229)
[`821535820`](Shopify@b3044bb)
Thanks [@aeperea](https://github.com/aeperea)! - Tabs update disabled
state


- [Shopify#9323](Shopify#9323)
[`cd43c8b47`](Shopify@6069404)
Thanks [@qt314](https://github.com/qt314)! - Added internationalized
accessibility label to Banner dismiss button


- [Shopify#9263](Shopify#9263)
[`a3f3462a6`](Shopify@813bf03)
Thanks [@mattkubej](https://github.com/mattkubej)! - Protect border
radius of `LegacyCard` with overflow clip


- [Shopify#9273](Shopify#9273)
[`e823538ad`](Shopify@4cc79bb)
Thanks [@aishad](https://github.com/aishad)! - Fixed inline padding on
Modal Footer

## @shopify/polaris-cli@0.2.2



## polaris.shopify.com@0.55.0

### Minor Changes

- [Shopify#9311](Shopify#9311)
[`b6f2d7928`](Shopify@7ddf98f)
Thanks [@lgriffee](https://github.com/lgriffee)! - Created a "What's
new" page for v11 token changes.

### Patch Changes

- [Shopify#8840](Shopify#8840)
[`a7569b7f5`](Shopify@7f0860a)
Thanks [@alex-page](https://github.com/alex-page)! - Updated Colors page
with v11 content

- Updated dependencies
\[[`7e21fe093`](Shopify@1e6866e),
[`ae3208332`](Shopify@8e37127),
[`e7d836819`](Shopify@77a0b7f),
[`221426aaf`](Shopify@7a8633b),
[`821535820`](Shopify@b3044bb),
[`cd43c8b47`](Shopify@6069404),
[`a3f3462a6`](Shopify@813bf03),
[`e823538ad`](Shopify@4cc79bb),
[`bf3bc75a1`](Shopify@4c4ea3f)]:
    -   @shopify/polaris@11.1.0

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants