Skip to content

Replace custom Select component with native select in webhook filter UI #7213

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

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

AmineAfia
Copy link
Contributor

@AmineAfia AmineAfia commented May 29, 2025

[Dashboard] Fix: Replace custom Select components with native HTML selects in webhook filter UI

Notes for the reviewer

This PR replaces the custom Select components with native HTML select elements in the webhook filter UI. The change maintains the same functionality while simplifying the implementation.

How to test

Verify that the event and function signature selection dropdowns in the webhook filter UI still work correctly, displaying the same options and maintaining the same behavior when selecting items.


PR-Codex overview

This PR focuses on replacing the Select component with a standard HTML <select> element in the FilterDetailsStep component. This change simplifies the code and enhances compatibility with standard form elements.

Detailed summary

  • Replaced Select component with <select> for event and function signatures.
  • Updated event and function signature handling to use onChange for the <select> element.
  • Adjusted mapping of eventSignatures and functionSignatures to output <option> elements.
  • Removed SelectTrigger, SelectValue, and SelectContent components.

✨ Ask PR-Codex anything about this PR by commenting with /codex {your question}

Summary by CodeRabbit

  • Refactor
    • Replaced the custom dropdown component with a native HTML select element for event and function signature selection, resulting in a simpler and more streamlined interface.

@vercel vercel bot temporarily deployed to Preview – wallet-ui May 29, 2025 23:10 Inactive
@vercel vercel bot temporarily deployed to Preview – thirdweb_playground May 29, 2025 23:10 Inactive
Copy link

vercel bot commented May 29, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
thirdweb-www ✅ Ready (Inspect) Visit Preview 💬 Add feedback May 29, 2025 11:57pm
4 Skipped Deployments
Name Status Preview Comments Updated (UTC)
docs-v2 ⬜️ Skipped (Inspect) May 29, 2025 11:57pm
login ⬜️ Skipped (Inspect) May 29, 2025 11:57pm
thirdweb_playground ⬜️ Skipped (Inspect) May 29, 2025 11:57pm
wallet-ui ⬜️ Skipped (Inspect) May 29, 2025 11:57pm

Copy link

changeset-bot bot commented May 29, 2025

⚠️ No Changeset found

Latest commit: 7b60b03

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel vercel bot temporarily deployed to Preview – docs-v2 May 29, 2025 23:10 Inactive
@vercel vercel bot temporarily deployed to Preview – login May 29, 2025 23:10 Inactive
Copy link
Contributor

coderabbitai bot commented May 29, 2025

Walkthrough

The FilterDetailsStep component in the dashboard app has been updated to replace a custom Select UI component and its subcomponents with a native HTML <select> element for event and function signature selection. The event handling logic is adapted to work with the native element, and related imports are removed.

Changes

File(s) Change Summary
.../webhooks/components/FilterDetailsStep.tsx Replaced custom Select and subcomponents with native <select>; updated event handling and imports.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant FilterDetailsStep
    User->>FilterDetailsStep: Selects event/function from native <select>
    FilterDetailsStep->>FilterDetailsStep: Handles onChange, updates sigHashAbi state
Loading

Possibly related PRs

Suggested reviewers

  • MananTank
✨ Finishing Touches
  • 📝 Generate Docstrings

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@github-actions github-actions bot added the Dashboard Involves changes to the Dashboard. label May 29, 2025
Copy link
Contributor Author

AmineAfia commented May 29, 2025


How to use the Graphite Merge Queue

Add either label to this PR to merge it via the merge queue:

  • merge-queue - adds this PR to the back of the merge queue
  • hotfix - for urgent hot fixes, skip the queue and merge this PR next

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

@AmineAfia AmineAfia marked this pull request as ready for review May 29, 2025 23:10
@AmineAfia AmineAfia requested review from a team as code owners May 29, 2025 23:10
Copy link

codecov bot commented May 29, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 55.63%. Comparing base (deeca88) to head (7b60b03).
Report is 69 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #7213   +/-   ##
=======================================
  Coverage   55.63%   55.63%           
=======================================
  Files         908      908           
  Lines       58546    58546           
  Branches     4128     4128           
=======================================
  Hits        32572    32572           
  Misses      25868    25868           
  Partials      106      106           
Flag Coverage Δ
packages 55.63% <ø> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Contributor

github-actions bot commented May 29, 2025

size-limit report 📦

Path Size Loading time (3g) Running time (snapdragon) Total time
thirdweb (esm) 62.11 KB (0%) 1.3 s (0%) 1.8 s (+10.7% 🔺) 3 s
thirdweb (cjs) 345.28 KB (0%) 7 s (0%) 12.4 s (-2.82% 🔽) 19.3 s
thirdweb (minimal + tree-shaking) 5.7 KB (0%) 114 ms (0%) 169 ms (+69.68% 🔺) 283 ms
thirdweb/chains (tree-shaking) 531 B (0%) 11 ms (0%) 47 ms (+38.6% 🔺) 57 ms
thirdweb/react (minimal + tree-shaking) 19.52 KB (0%) 391 ms (0%) 310 ms (-0.52% 🔽) 701 ms

@AmineAfia AmineAfia force-pushed the Replace_custom_Select_component_with_native_select_in_webhook_filter_UI branch from 563e6e0 to 8eb9886 Compare May 29, 2025 23:18
@vercel vercel bot temporarily deployed to Preview – wallet-ui May 29, 2025 23:18 Inactive
@vercel vercel bot temporarily deployed to Preview – thirdweb_playground May 29, 2025 23:18 Inactive
@vercel vercel bot temporarily deployed to Preview – login May 29, 2025 23:18 Inactive
@vercel vercel bot temporarily deployed to Preview – docs-v2 May 29, 2025 23:18 Inactive
@graphite-app graphite-app bot changed the base branch from Add_support_for_chain_filtering_in_webhook_creation to graphite-base/7213 May 29, 2025 23:27
@@ -305,97 +298,46 @@ export function FilterDetailsStep({
{watchFilterType === "event" &&
Object.keys(fetchedAbis).length > 0 &&
eventSignatures.length > 0 ? (
<Select
<select
Copy link
Member

Choose a reason for hiding this comment

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

what's wrong with the shadcn components? we should really be re-using our building blocks here. if there's something not working, we fix the building block

Copy link
Contributor Author

Choose a reason for hiding this comment

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

It doesn't scroll in prod. everything works in localhost but it breaks in prod. https://thirdwebdev.slack.com/archives/C085FEPFLN9/p1748542970097279

Copy link
Member

Choose a reason for hiding this comment

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

so we fix the component - can't go backwards. we're trying to use a common set of components everywhere. otherwise its chaos

Copy link
Contributor Author

Choose a reason for hiding this comment

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

agree, Im not the best person to fix such things 😅 I'll give it another try in my morning. until then the dropdown is broken in prod, if somebody complains assign the ticket to me

@graphite-app graphite-app bot force-pushed the Replace_custom_Select_component_with_native_select_in_webhook_filter_UI branch from 8eb9886 to c019656 Compare May 29, 2025 23:42
@graphite-app graphite-app bot force-pushed the graphite-base/7213 branch from f0fc8ba to deeca88 Compare May 29, 2025 23:42
@vercel vercel bot temporarily deployed to Preview – wallet-ui May 29, 2025 23:42 Inactive
@vercel vercel bot temporarily deployed to Preview – docs-v2 May 29, 2025 23:42 Inactive
@vercel vercel bot temporarily deployed to Preview – login May 29, 2025 23:42 Inactive
@vercel vercel bot temporarily deployed to Preview – thirdweb_playground May 29, 2025 23:42 Inactive
@graphite-app graphite-app bot changed the base branch from graphite-base/7213 to main May 29, 2025 23:43
@graphite-app graphite-app bot force-pushed the Replace_custom_Select_component_with_native_select_in_webhook_filter_UI branch from c019656 to 7b60b03 Compare May 29, 2025 23:43
@vercel vercel bot temporarily deployed to Preview – wallet-ui May 29, 2025 23:43 Inactive
@vercel vercel bot temporarily deployed to Preview – docs-v2 May 29, 2025 23:43 Inactive
@vercel vercel bot temporarily deployed to Preview – login May 29, 2025 23:43 Inactive
@vercel vercel bot temporarily deployed to Preview – thirdweb_playground May 29, 2025 23:43 Inactive
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (2)
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/components/FilterDetailsStep.tsx (2)

302-302: Consider extracting shared styling to reduce duplication.

Both select elements use identical className styling. Consider extracting this to a constant or CSS class to follow DRY principles.

+const SELECT_STYLES = "h-10 w-full rounded-md border bg-background px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring disabled:opacity-50";

                  <select
-                    className="h-10 w-full rounded-md border bg-background px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring disabled:opacity-50"
+                    className={SELECT_STYLES}

And apply the same change to the function signature select on line 324.

Also applies to: 324-324


315-316: Consistent use of truncation utility for better UX.

Good use of the truncateMiddle utility for event signatures to prevent overly long option text. Consider applying the same truncation to function selectors for consistency, especially since some function selectors can also be quite long.

-                        {func.name} (Selector: {func.signature})
+                        {func.name} (Selector: {truncateMiddle(func.signature, 6, 4)})

Also applies to: 337-337

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between deeca88 and 7b60b03.

📒 Files selected for processing (1)
  • apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/components/FilterDetailsStep.tsx (1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/components/FilterDetailsStep.tsx (1)
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/utils/abiUtils.ts (1)
  • truncateMiddle (11-19)
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Analyze (javascript)
🔇 Additional comments (2)
apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/webhooks/components/FilterDetailsStep.tsx (2)

301-319: Good implementation of native select for event signatures.

The replacement with native HTML select elements should resolve the production scrolling issues mentioned in previous comments. The event handling logic correctly adapts from onValueChange to onChange and properly extracts the value using e.target.value.


323-340: Function signature select implementation looks correct.

The implementation follows the same pattern as the event signature select and correctly handles the form state updates. The option rendering appropriately displays both the function name and selector.

Copy link
Contributor

graphite-app bot commented May 30, 2025

Merge activity

  • May 30, 1:30 AM UTC: This pull request can not be added to the Graphite merge queue. Please try rebasing and resubmitting to merge when ready.
  • May 30, 1:30 AM UTC: Graphite disabled "merge when ready" on this PR due to: a merge conflict with the target branch; resolve the conflict and try again..

Copy link
Contributor

github-actions bot commented Jun 6, 2025

This PR has been inactive for 7 days. It is now marked as stale and will be closed in 2 days if no further activity occurs.

@github-actions github-actions bot added the Stale label Jun 6, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Dashboard Involves changes to the Dashboard. Stale
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants