54 lines
1.4 KiB
TypeScript
54 lines
1.4 KiB
TypeScript
"use client";
|
|
|
|
import {
|
|
IntegrationScopeBar,
|
|
type ScopeSelection,
|
|
} from "@/components/integrations/presets-scope-bar-base";
|
|
import type { AzureDevOpsSavedView } from "@/lib/types/azure-devops";
|
|
import {
|
|
presetsForKind,
|
|
type AzureDevOpsPresetKind,
|
|
type AzureDevOpsQueryPresets,
|
|
} from "./azure-devops-presets";
|
|
|
|
export type AzureDevOpsScopeSelection = ScopeSelection<AzureDevOpsPresetKind>;
|
|
|
|
const KINDS = [
|
|
{ value: "work_item", label: "Work items" },
|
|
{ value: "pull_request", label: "Pull requests" },
|
|
] as const;
|
|
|
|
export function AzureDevOpsScopeBar({
|
|
selected,
|
|
onSelect,
|
|
savedViews,
|
|
onDeleteSaved,
|
|
canSaveCurrent,
|
|
onSaveCurrent,
|
|
queryPresets,
|
|
}: {
|
|
selected: AzureDevOpsScopeSelection;
|
|
onSelect: (selection: AzureDevOpsScopeSelection) => void;
|
|
savedViews: AzureDevOpsSavedView[];
|
|
onDeleteSaved: (id: string) => void;
|
|
canSaveCurrent: boolean;
|
|
onSaveCurrent: () => void;
|
|
queryPresets: AzureDevOpsQueryPresets;
|
|
}) {
|
|
return (
|
|
<IntegrationScopeBar
|
|
testId="azure-devops-presets-scope-bar"
|
|
savedMenuTestId="azure-devops-saved-views-menu"
|
|
kinds={KINDS}
|
|
selected={selected}
|
|
onSelect={onSelect}
|
|
presetsByKind={(kind) => presetsForKind(kind, queryPresets)}
|
|
savedPresets={savedViews}
|
|
onDeleteSaved={onDeleteSaved}
|
|
canSaveCurrent={canSaveCurrent}
|
|
onSaveCurrent={onSaveCurrent}
|
|
className="border-b"
|
|
/>
|
|
);
|
|
}
|