CF section navigation fixes; transient connect/disconnect states; modeless endpoint dialogs - #5642
Merged
norman-abramovitz merged 5 commits intoJul 18, 2026
Conversation
The "N Applications" tile on the CF Summary tab routed to the global application wall, which dropped the CF context — the side nav reverted from the CF's tabs to the global menu. Point it at the CF's own Applications tab instead. Clear any org/space scope a previous mount left on the root-singleton apps config at the tile's call site: the tile means "every app in this CF". The clear cannot live in the Applications tab, which deliberately keeps org/space so returning from an app detail page preserves the filter the user set there. Refs cloudfoundry#5638
Rename the connectionStatus member 'checking' to 'connecting' and give it a producer. It lost its writer when the legacy endpoint reducer was deleted but kept its readers; it is the transient state while a connect or reconnect is in flight. Derive it as an overlay (withConnectingOverlay) from the connect busy window rather than storing it, so a getAll() refresh cannot clobber it — the same shape as the expired-stale overlay. The endpoints list and card show it live during a connect. The Cloud Foundry picker now lists every endpoint that belongs to the user — connected, expired (never disconnected, needs reconnect), or mid-connect — through availableCFEndpoints, not just those with a live token. Request fan-out keeps its own connected-only set, since an expired or connecting token cannot serve a request. The picker gains a Status column so those states are legible: an expired CF no longer looks identical to a live one. The single-CF shortcut reads that picker set after whenReady() instead of sampling connectedCFEndpoints$ with take(1). On a cold load (reload, bookmark, first navigation after login) the old sample caught the empty pre-hydration list, saw zero endpoints and never looked again, so the picker it exists to skip was shown to every single-CF user. A lone connected or expired CF is now entered directly. Refs cloudfoundry#5638
The Material-migration rewrite of the progress bar and spinner left a
fragment of decorator source (', changeDetection: ...' plus an orphan
paren) inside each template's indeterminate branch. Angular renders it
as literal text beside every indeterminate spinner or bar - most
visibly next to the endpoint card's Connecting pill.
Keep the endpoint card visible and live while its dialogs are open, so the transient status (Connecting) can actually be seen during the operation: - TailwindDialogService gains a 'modeless' option: the dim backdrop stays but passes pointer events through; the panel stays interactive and aria-modal reflects the mode. Backdrop clicks no longer dismiss. - Connect dialog: one shared 400px config (CONNECT_ENDPOINT_DIALOG_ OPTIONS) spread at all five call sites, sized and styled to match the confirmation dialogs (18px/600 title, no action separator, secondary Cancel). Draggable by the title bar. Progress bar renders only while a connect is in flight instead of a permanent solid bar. - Confirmation dialogs (Disconnect, Unregister, ...) get the same modeless + draggable behaviour via ConfirmationDialogService. - app-dialog-error no longer reserves an empty 35px strip when there is no error; the connect dialog notes that a failed reconnect left the existing connection intact.
Mirror of the connecting overlay for the disconnect window: the service already tracked _disconnectingStates; expose isDisconnecting() and fold it into withConnectingOverlay so display surfaces show 'Disconnecting' while the DELETE is in flight, without the value ever being stored on the endpoint model. Readers: endpoints table pill (label + warning colour), card-view status cell (word + spinner), and the CF picker (row stays visible with a warning dot until the operation settles; the fan-out set is unchanged - the token stays valid until the DELETE lands). During either transition only the status pill changes: the card no longer dims while connecting (endpoint-card--connecting removed).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #5638
What this fixes
Defect 1 — Applications tile leaves the CF section. The tile now routes to
/cloud-foundry/{guid}/applications, keeping the CF header and side nav, with org/space filters reset.Defect 2 — single-CF shortcut never fires on cold load. The CF section now reads the picker set after
EndpointsDataService.whenReady()instead of samplingconnectedCFEndpoints$withtake(1), which on a cold load always saw the empty pre-hydration list.Transient connection states
The dormant
'checking'status is renamed to'connecting'and given a producer:EndpointsDataServiceholds a busy state for the duration of a connect/reconnect, and a matching'disconnecting'state covers the disconnect window. Both are overlays (withConnectingOverlay) computed at display time — never written to the endpoint model, sogetAll()'s wholesale refresh cannot clobber them.While an operation is in flight the status pill shows Connecting/Disconnecting (table label, card word + spinner, CF picker warning dot) and nothing else on the row or card changes. The CF picker also gained a Status column and now lists connected, expired, and mid-transition endpoints, so an expired CF no longer looks identical to a live one.
Dialog behaviour
To make the transient states actually observable, the endpoint dialogs no longer hide the page behind them:
TailwindDialogServicegains amodelessoption — the dim backdrop remains but passes pointer events through, so the endpoint card stays visible and live while the dialog is open. Dialogs are draggable by their title bar.Also fixes a template corruption in the rewritten progress bar/spinner: a fragment of decorator source rendered as literal text next to every indeterminate spinner.
Verification