mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-02-02 20:43:36 +00:00
- Introduced a new Autocomplete component for improved user experience in selecting options across various UI components. - Refactored BranchAutocomplete and CategoryAutocomplete to utilize the new Autocomplete component, streamlining code and enhancing maintainability. - Updated Playwright configuration to support mock agent functionality during CI/CD, allowing for simulated API interactions without real calls. - Added comprehensive end-to-end tests for feature lifecycle, ensuring robust validation of the complete feature management process. - Enhanced auto-mode service to support mock responses, improving testing efficiency and reliability.
54 lines
1.3 KiB
TypeScript
54 lines
1.3 KiB
TypeScript
"use client";
|
|
|
|
import * as React from "react";
|
|
import { GitBranch } from "lucide-react";
|
|
import { Autocomplete, AutocompleteOption } from "@/components/ui/autocomplete";
|
|
|
|
interface BranchAutocompleteProps {
|
|
value: string;
|
|
onChange: (value: string) => void;
|
|
branches: string[];
|
|
placeholder?: string;
|
|
className?: string;
|
|
disabled?: boolean;
|
|
"data-testid"?: string;
|
|
}
|
|
|
|
export function BranchAutocomplete({
|
|
value,
|
|
onChange,
|
|
branches,
|
|
placeholder = "Select a branch...",
|
|
className,
|
|
disabled = false,
|
|
"data-testid": testId,
|
|
}: BranchAutocompleteProps) {
|
|
// Always include "main" at the top of suggestions
|
|
const branchOptions: AutocompleteOption[] = React.useMemo(() => {
|
|
const branchSet = new Set(["main", ...branches]);
|
|
return Array.from(branchSet).map((branch) => ({
|
|
value: branch,
|
|
label: branch,
|
|
badge: branch === "main" ? "default" : undefined,
|
|
}));
|
|
}, [branches]);
|
|
|
|
return (
|
|
<Autocomplete
|
|
value={value}
|
|
onChange={onChange}
|
|
options={branchOptions}
|
|
placeholder={placeholder}
|
|
searchPlaceholder="Search or type new branch..."
|
|
emptyMessage="No branches found."
|
|
className={className}
|
|
disabled={disabled}
|
|
icon={GitBranch}
|
|
allowCreate
|
|
createLabel={(v) => `Create "${v}"`}
|
|
data-testid={testId}
|
|
itemTestIdPrefix="branch-option"
|
|
/>
|
|
);
|
|
}
|