fix(bots): align route event selector

This commit is contained in:
RockChinQ
2026-08-26 19:32:39 +08:00
parent 600a173918
commit 7990d36c78
2 changed files with 28 additions and 16 deletions
@@ -1265,27 +1265,24 @@ function BindingCardContent({
onUpdate(globalIndex, patch); onUpdate(globalIndex, patch);
}} }}
> >
<SelectTrigger className="h-8 min-w-[150px] flex-1 text-sm"> <SelectTrigger className="h-auto min-h-9 min-w-[220px] flex-1">
{binding.event_pattern ? (
<span className="truncate">
{eventLabel(binding.event_pattern, t)}
</span>
) : (
<SelectValue placeholder={t('bots.eventPatternPlaceholder')} /> <SelectValue placeholder={t('bots.eventPatternPlaceholder')} />
)}
</SelectTrigger> </SelectTrigger>
<SelectContent> <SelectContent className="w-[var(--radix-select-trigger-width)] max-w-[calc(100vw-2rem)]">
{groupEventPatterns(eventOptions).map((group) => ( {groupEventPatterns(eventOptions).map((group) => (
<SelectGroup key={group.namespace}> <SelectGroup key={group.namespace}>
<SelectLabel>{eventGroupLabel(group.namespace, t)}</SelectLabel> <SelectLabel>{eventGroupLabel(group.namespace, t)}</SelectLabel>
{group.patterns.map((event) => ( {group.patterns.map((event) => (
<SelectItem key={event} value={event}> <SelectItem
<span className="flex flex-col"> key={event}
<span>{eventLabel(event, t)}</span> value={event}
<span className="text-[11px] text-muted-foreground"> description={eventDescription(event, t)}
{eventDescription(event, t)} className="py-2"
</span> >
</span> <EventSelectOptionContent
event={event}
label={eventLabel(event, t)}
/>
</SelectItem> </SelectItem>
))} ))}
</SelectGroup> </SelectGroup>
+15
View File
@@ -426,6 +426,21 @@ test.describe('bot advanced flows', () => {
routingCard.getByText('Groups', { exact: true }), routingCard.getByText('Groups', { exact: true }),
).toBeVisible(); ).toBeVisible();
await routingCard.getByRole('button', { name: 'Add behavior' }).click();
await page.getByRole('menuitem', { name: /Reply to messages/ }).click();
const routeEventSelect = routingCard.getByRole('combobox').first();
await expect(routeEventSelect).toContainText('Message received');
await expect(routeEventSelect).toContainText('message.received');
await routeEventSelect.click();
const routeEventOption = page
.getByRole('option')
.filter({ hasText: 'Message received' });
await expect(routeEventOption).toContainText('message.received');
await expect(routeEventOption).toContainText(
'A user or group sends a new message to the bot.',
);
await page.keyboard.press('Escape');
await page.getByRole('button', { name: 'Refresh status' }).hover(); await page.getByRole('button', { name: 'Refresh status' }).hover();
await expect( await expect(
page.getByText('Failed to refresh route status.'), page.getByText('Failed to refresh route status.'),