Skip to content

improvement(emcn): multi-select selectors + Wizard on ChipModal#5614

Merged
TheodoreSpeaks merged 3 commits into
stagingfrom
improvement/emcn-multiselect-wizard
Jul 12, 2026
Merged

improvement(emcn): multi-select selectors + Wizard on ChipModal#5614
TheodoreSpeaks merged 3 commits into
stagingfrom
improvement/emcn-multiselect-wizard

Conversation

@TheodoreSpeaks

Copy link
Copy Markdown
Collaborator

Summary

  • Channel/user selector fields now support multi-select — pick several values, shown as a vertical removable-row list (matches the app's other multi-select lists). Makes the multiSelect flag that fields like the Slack trigger's Channels picker already declare actually functional.
  • Migrated the emcn Wizard primitive off the legacy Modal onto ChipModal (Header/Body/Footer). Back sits beside Next via primaryAdjacentAction; dismissal via Back + header close (hideCancel). External Wizard API unchanged, so all consumers inherit the chip modal chrome automatically.

Type of Change

  • Improvement

Testing

Tested manually; tsc (app + emcn), biome, and check:api-validation:strict all pass.

Checklist

  • Code follows project style guidelines
  • Self-reviewed my changes
  • Tests added/updated and passing
  • No new warnings introduced
  • I confirm that I have read and agree to the terms outlined in the Contributor License Agreement (CLA)

@vercel

vercel Bot commented Jul 12, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
docs Ready Ready Preview, Comment Jul 12, 2026 2:22am

Request Review

@cursor

cursor Bot commented Jul 12, 2026

Copy link
Copy Markdown

PR Summary

Medium Risk
Multi-select changes how some workflow sub-block values are stored (arrays vs strings), which can affect triggers and execution if downstream code assumed a single string; Wizard is a shared UI primitive with visual/UX shifts across all wizards but no API break.

Overview
Selector fields can now honor subBlock.multiSelect: SelectorInput forwards the flag into SelectorCombobox, which persists string[] (with comma-separated string fallback), uses the emcn Combobox multi-select API, and lists chosen items as removable rows under the picker. Single-select behavior is unchanged and still goes through SubBlockInputController.

The emcn Wizard is rebuilt on ChipModal instead of legacy Modal: header close + Back beside Next/Done via primaryAdjacentAction, cancel hidden; optional fixed height still stretches the body with scoped flex classes. The public Wizard props/API stay the same for existing consumers.

Reviewed by Cursor Bugbot for commit 04a6c7e. Bugbot is set up for automated code reviews on this repo. Configure here.

@cursor cursor 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.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 2976741. Configure here.

Comment thread packages/emcn/src/components/wizard/wizard.tsx
@greptile-apps

greptile-apps Bot commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adds multi-select selector support and moves Wizard dialogs onto ChipModal. The main changes are:

  • Selector comboboxes can store and render multiple selected values.
  • Selector inputs pass through each sub-block's multiSelect setting.
  • Wizard now uses ChipModal header, body, and footer chrome.
  • Wizard height and dialog description behavior are preserved in the ChipModal path.

Confidence Score: 5/5

This looks safe to merge.

  • No blocking issues found in the changed code.

Important Files Changed

Filename Overview
packages/emcn/src/components/wizard/wizard.tsx Wizard now renders through ChipModal while keeping whole-dialog height sizing and Radix-backed description wiring.
apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/selector-combobox/selector-combobox.tsx Selector comboboxes now support a multi-select mode with array-backed values and removable selected rows.
apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/selector-input/selector-input.tsx Selector inputs now pass multiSelect from the sub-block config into the combobox.

Reviews (3): Last reviewed commit: "fix(emcn): wizard height sizes whole dia..." | Re-trigger Greptile

Comment thread packages/emcn/src/components/wizard/wizard.tsx Outdated
Comment thread packages/emcn/src/components/wizard/wizard.tsx Outdated
@TheodoreSpeaks

Copy link
Copy Markdown
Collaborator Author

@greptile review

@TheodoreSpeaks

Copy link
Copy Markdown
Collaborator Author

Addressed both review findings in 04a6c7e:

  • Wizard height sizes the whole dialog again — moved height off ChipModalBody back onto the ChipModal panel, and added a scoped [&>div]:min-h-0 [&>div]:flex-1 that stretches ChipModal's inner content column so the body fills the fixed height (no gap). Only applied when a height is passed, so other ChipModal consumers are untouched.
  • Description re-wired for a11y — restored ModalDescription (Radix Dialog.Description) so the wizard description is connected to the dialog for assistive tech, instead of the bare sr-only span.

@greptile review

@TheodoreSpeaks TheodoreSpeaks merged commit 0cc6ed6 into staging Jul 12, 2026
18 checks passed
@TheodoreSpeaks TheodoreSpeaks deleted the improvement/emcn-multiselect-wizard branch July 12, 2026 02:25
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.

1 participant