Thanks to visit codestin.com
Credit goes to github.com

Skip to content

refactor(site): demui <IconField /> - #27719

Merged
jakehwll merged 4 commits into
mainfrom
jakehwll/demui-iconfield
Aug 6, 2026
Merged

refactor(site): demui <IconField />#27719
jakehwll merged 4 commits into
mainfrom
jakehwll/demui-iconfield

Conversation

@jakehwll

@jakehwll jakehwll commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

馃 This PR was modified by Coder Agents on behalf of Jake Howell.

Replace MUI TextField / Emotion theming in IconField with InputGroup, Popover, and Tailwind.

IconPickerField already had the demui'd InputGroup + Popover implementation, so that was ported into the shared IconField. Per review feedback, IconPickerField is now removed and its call sites (the MCP server, provider, and OAuth app forms) use IconField directly.

@jakehwll
jakehwll marked this pull request as ready for review July 31, 2026 00:16

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

馃挕 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 273607676b

鈩癸笍 About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 馃憤.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

});
await userEvent.click(button);
await expect(button).toHaveAttribute("aria-expanded", "true");
await expect(await screen.findByText("Smileys & People")).toBeVisible();

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Query inside the emoji picker's shadow root

When Storybook runs OpenPicker, this lookup times out because emoji-mart renders the category label inside em-emoji-picker's shadow root, as confirmed by EmojiPicker.tsx accessing that same .shadowRoot. Testing Library's screen.findByText does not traverse shadow DOM, so the story test fails after successfully opening the picker; use a shadow-root-aware query or assert observable state on the picker host.

Useful? React with 馃憤聽/ 馃憥.

</Popover>
</InputGroupAddon>
</InputGroup>
<IconField

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Keep the prewarmed picker out of the tab order

On the MCP server, provider, and OAuth app forms, switching this wrapper to IconField now also mounts its production-only prewarmed emoji picker inside an sr-only container. That picker contains focusable shadow-DOM controls, and aria-hidden removes them from the accessibility tree but not the keyboard tab order, so keyboard users can tab through invisible search, navigation, and emoji controls before opening the popover; make the prewarm container inert or preload the module without mounting the interactive picker.

AGENTS.md reference: site/AGENTS.md:L199-L204

Useful? React with 馃憤聽/ 馃憥.

Comment thread site/src/pages/AISettingsPage/MCPServersPage/components/IconPickerField.tsx Outdated
Comment thread site/src/components/IconField/IconField.tsx Outdated
@linear-code

linear-code Bot commented Aug 5, 2026

Copy link
Copy Markdown

DEVEX-714

DEVEX-254

placeholder="file location"
onChange={(value) => void form.setFieldValue("iconURL", value)}
label={null}
onChange={(event) =>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

non-blocking: It feels redundant that we're giving the setFieldValue callback to both onChange and onPickEmoji (here as well as ProviderForm and OAuth2AppForm)

It looks like all other instances of IconField set both onChange and onPickEmoji handlers. But I'm not sure if onChange actually does anything, since it gets forwarded to InputGroupInput 鉃★笍 Input 鉃★笍 input, and you can't change an IconField's value by typing in it

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I will look into this after this PR, does feel odd.

@jakehwll
jakehwll merged commit 7a9b425 into main Aug 6, 2026
26 checks passed
@jakehwll
jakehwll deleted the jakehwll/demui-iconfield branch August 6, 2026 23:56
@github-actions github-actions Bot locked and limited conversation to collaborators Aug 6, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants