Skip to content

Commit c205813

Browse files
V48 Gate 3 (implementation-only): provider select dropdown on /deposits source selection
The deposits source section had no provider control at all — the repository combobox alone, with its 'Connect a repository provider first...' placeholder, read as a broken provider dropdown that listed no GitHub and searched 'repositories'. It now leads with a Provider SearchableSelect (GitHub listed via TERMINAL_REPOSITORY_PROVIDERS + getProviderLabel, its connection state as the item description, 'Search providers...' inside), beside the labeled Repository combobox; switching provider rewrites the provider param and clears the repo/branch/commit selection. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 56faf6a commit c205813

1 file changed

Lines changed: 70 additions & 25 deletions

File tree

uapi/app/deposits/DepositSourceSelection.tsx

Lines changed: 70 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ import {
2727
deriveSelectedBranch,
2828
deriveSelectedCommit,
2929
deriveSelectedRepository,
30+
getProviderLabel,
3031
normalizeRepositoryProvider,
32+
TERMINAL_REPOSITORY_PROVIDERS,
3133
type TerminalRepositoryConnectionStatus,
3234
type TerminalRepositoryContextState,
3335
type TerminalRepositoryInventorySource,
@@ -446,32 +448,75 @@ export default function DepositSourceSelection({
446448
</button>
447449
</div>
448450

449-
<div className="mt-4">
450-
<VCSRepositorySelector
451-
provider={provider}
452-
repositories={repositories}
453-
loading={isLoadingRepositories}
454-
value={selectedRepository?.fullName}
455-
onSelect={(repository) =>
456-
updateSourceParams((params) => {
457-
if (repository) {
458-
params.set("repo", repository.fullName);
459-
} else {
460-
params.delete("repo");
451+
<div className="mt-4 grid gap-3 lg:grid-cols-[minmax(0,240px)_minmax(0,1fr)]">
452+
<div>
453+
<span className="text-[0.62rem] uppercase tracking-[0.18em] text-neutral-500">
454+
Provider
455+
</span>
456+
<div className="mt-1.5">
457+
<SearchableSelect
458+
aria-label="Repository provider"
459+
items={TERMINAL_REPOSITORY_PROVIDERS.map((option) => ({
460+
key: option,
461+
label: getProviderLabel(option),
462+
description:
463+
option === provider
464+
? connectionStatus?.connected
465+
? "Connected"
466+
: "Not connected"
467+
: null,
468+
}))}
469+
value={provider}
470+
onSelect={(key) => {
471+
const nextProvider = key ?? "github";
472+
updateSourceParams((params) => {
473+
params.set("provider", nextProvider);
474+
params.delete("repo");
475+
params.delete("sourceBranch");
476+
params.delete("sourceCommit");
477+
params.delete("branch");
478+
params.delete("commit");
479+
});
480+
}}
481+
placeholder="Select provider..."
482+
searchPlaceholder="Search providers..."
483+
emptyMessage="No providers found."
484+
className="w-full"
485+
/>
486+
</div>
487+
</div>
488+
<div>
489+
<span className="text-[0.62rem] uppercase tracking-[0.18em] text-neutral-500">
490+
Repository
491+
</span>
492+
<div className="mt-1.5">
493+
<VCSRepositorySelector
494+
provider={provider}
495+
repositories={repositories}
496+
loading={isLoadingRepositories}
497+
value={selectedRepository?.fullName}
498+
onSelect={(repository) =>
499+
updateSourceParams((params) => {
500+
if (repository) {
501+
params.set("repo", repository.fullName);
502+
} else {
503+
params.delete("repo");
504+
}
505+
params.delete("sourceBranch");
506+
params.delete("sourceCommit");
507+
params.delete("branch");
508+
params.delete("commit");
509+
})
510+
}
511+
placeholder={
512+
connectionStatus?.connected
513+
? "Select repository supply..."
514+
: "Connect a repository provider first..."
461515
}
462-
params.delete("sourceBranch");
463-
params.delete("sourceCommit");
464-
params.delete("branch");
465-
params.delete("commit");
466-
})
467-
}
468-
placeholder={
469-
connectionStatus?.connected
470-
? "Select repository supply..."
471-
: "Connect a repository provider first..."
472-
}
473-
className="w-full"
474-
/>
516+
className="w-full"
517+
/>
518+
</div>
519+
</div>
475520
</div>
476521

477522
<div className="mt-4 grid gap-4 lg:grid-cols-2">

0 commit comments

Comments
 (0)