History

Refine source delete confirmation UI (#258)

Hide the Edit action while the source delete confirmation state is active, remove the extra confirmation label, and make the destructive button label explicit as Delete Source. Also reset the confirmation state when the source route changes so stale delete state does not carry across page navigation.

Christian Glassiognon committed 6 months ago

Commit 89650ea1 parent 6e559bc1 file · +7 −4Browse files

Unified · Split

packages/react/src/pages/source-detail.tsx+7−4
@@ -55,6 +55,10 @@ export function SourceDetailPage(props: { namespace: string }) { · 54 unmodified lines
5555 const [refreshing, setRefreshing] = useState(false);
5656 const [editing, setEditing] = useState(false);
5757
58+ useEffect(() => {
59+ setConfirmDelete(false);
60+ }, [namespace]);
61+
5862 const sourceData = AsyncResult.isSuccess(source) ? source.value : null;
5963 const canRefresh = sourceData ? (sourceData.canRefresh ?? true) : false;
6064 const canRemove = sourceData ? (sourceData.canRemove ?? true) : false;
@@ -161,13 +165,13 @@ export function SourceDetailPage(props: { namespace: string }) { · 100 unmodified lines
161165 </div>
162166
163167 <div className="flex shrink-0 items-center gap-2">
164− {editPlugin?.signIn && !editing && (
168+ {editPlugin?.signIn && !editing && !confirmDelete && (
165169 <Suspense fallback={null}>
166170 <editPlugin.signIn sourceId={namespace} />
167171 </Suspense>
168172 )}
169173
170− {canEdit && editPlugin && !editing && (
174+ {canEdit && editPlugin && !editing && !confirmDelete && (
171175 <Button variant="outline" size="sm" onClick={() => setEditing(true)}>
172176 Edit
173177 </Button>
@@ -194,7 +198,6 @@ export function SourceDetailPage(props: { namespace: string }) { · 20 unmodified lines
194198 !editing &&
195199 (confirmDelete ? (
196200 <div className="flex items-center gap-2">
197− <span className="text-xs font-medium text-destructive">Confirm?</span>
198201 <Button
199202 variant="outline"
200203 size="sm"
@@ -209,7 +212,7 @@ export function SourceDetailPage(props: { namespace: string }) { · 8 unmodified lines
209212 onClick={() => void handleDelete()}
210213 disabled={deleting}
211214 >
212− {deleting ? "Deleting..." : "Delete"}
215+ {deleting ? "Deleting..." : "Confirm Delete"}
213216 </Button>
214217 </div>
215218 ) : (