Skip to content

Commit 7a48c30

Browse files
committed
fix: bulk ops selection
1 parent 6d01b81 commit 7a48c30

File tree

2 files changed

+26
-12
lines changed

2 files changed

+26
-12
lines changed

src/ui/App.tsx

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ function App() {
6565
const [selectedPackages, setSelectedPackages] = useState<Set<string>>(
6666
new Set(),
6767
);
68+
const [showCheckboxes, setShowCheckboxes] = useState(false);
6869

6970
useEffect(() => {
7071
fetch('/api/packages')
@@ -255,6 +256,7 @@ function App() {
255256
});
256257
setSelections(newSelections);
257258
setSelectedPackages(new Set());
259+
setShowCheckboxes(true);
258260
};
259261

260262
const togglePackageSelection = (packageName: string) => {
@@ -301,7 +303,7 @@ function App() {
301303
<div className="container mx-auto px-4 py-8">
302304
<h1 className="text-3xl font-bold mb-6">Create New Core Release</h1>
303305

304-
{selectedPackages.size > 0 && (
306+
{showCheckboxes && selectedPackages.size > 0 ? (
305307
<div className="mb-4 p-4 bg-gray-100 rounded">
306308
<span className="mr-2">
307309
Bulk action for {selectedPackages.size} packages:
@@ -316,6 +318,13 @@ function App() {
316318
</button>
317319
))}
318320
</div>
321+
) : (
322+
<button
323+
onClick={() => setShowCheckboxes(true)}
324+
className="px-3 py-1 bg-blue-500 text-white rounded hover:bg-blue-600"
325+
>
326+
Select multiple packages
327+
</button>
319328
)}
320329

321330
<div className="space-y-4">
@@ -328,12 +337,13 @@ function App() {
328337
packageDependencyErrors={packageDependencyErrors}
329338
loadingChangelogs={loadingChangelogs}
330339
changelogs={changelogs}
340+
isSelected={selectedPackages.has(pkg.name)}
341+
showCheckbox={showCheckboxes}
331342
onSelectionChange={handleSelectionChange}
332343
onCustomVersionChange={handleCustomVersionChange}
333344
onFetchChangelog={fetchChangelog}
334345
setSelections={setSelections}
335346
setChangelogs={setChangelogs}
336-
isSelected={selectedPackages.has(pkg.name)}
337347
onToggleSelect={() => togglePackageSelection(pkg.name)}
338348
/>
339349
))}

src/ui/PackageItem.tsx

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,13 @@ type PackageItemProps = {
1717
>;
1818
loadingChangelogs: Record<string, boolean>;
1919
changelogs: Record<string, string>;
20+
isSelected: boolean;
21+
showCheckbox: boolean;
2022
onSelectionChange: (packageName: string, value: ReleaseType | '') => void;
2123
onCustomVersionChange: (packageName: string, version: string) => void;
2224
onFetchChangelog: (packageName: string) => Promise<void>;
2325
setSelections: React.Dispatch<React.SetStateAction<Record<string, string>>>;
2426
setChangelogs: React.Dispatch<React.SetStateAction<Record<string, string>>>;
25-
isSelected: boolean;
2627
onToggleSelect: () => void;
2728
};
2829

@@ -33,12 +34,13 @@ export function PackageItem({
3334
packageDependencyErrors,
3435
loadingChangelogs,
3536
changelogs,
37+
isSelected,
38+
showCheckbox,
3639
onSelectionChange,
3740
onCustomVersionChange,
3841
onFetchChangelog,
3942
setSelections,
4043
setChangelogs,
41-
isSelected,
4244
onToggleSelect,
4345
}: PackageItemProps) {
4446
return (
@@ -58,14 +60,16 @@ export function PackageItem({
5860
>
5961
<div className="flex items-start gap-3">
6062
<div className="pt-1">
61-
<input
62-
type="checkbox"
63-
checked={isSelected}
64-
onChange={onToggleSelect}
65-
className={`h-5 w-5 rounded border-gray-300
66-
${isSelected ? 'text-blue-600' : 'text-gray-300'}
67-
`}
68-
/>
63+
{showCheckbox && (
64+
<input
65+
type="checkbox"
66+
checked={isSelected}
67+
onChange={onToggleSelect}
68+
className={`h-5 w-5 rounded border-gray-300
69+
${isSelected ? 'text-blue-600' : 'text-gray-300'}
70+
`}
71+
/>
72+
)}
6973
</div>
7074
<div className="flex-1">
7175
<h2 className="text-xl font-semibold">{pkg.name}</h2>

0 commit comments

Comments
 (0)