Skip to content

Commit 054ef4e

Browse files
authored
fix: remove split toggle from 'Connect' button (#760)
* fix: remove split toggle from 'Connect' button Signed-off-by: Jenny <[email protected]> fix: alignment for table action items remove widths on connect and actions columns for proper alignment Signed-off-by: Jenny <[email protected]> * fix: add undefined widths directly to data field object Signed-off-by: Jenny <[email protected]> --------- Signed-off-by: Jenny <[email protected]>
1 parent 28cb9d2 commit 054ef4e

File tree

2 files changed

+52
-64
lines changed

2 files changed

+52
-64
lines changed

workspaces/frontend/src/app/components/WorkspaceTable.tsx

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import {
2929
import { MenuToggle } from '@patternfly/react-core/dist/esm/components/MenuToggle';
3030
import {
3131
Table,
32+
TableText,
3233
Thead,
3334
Tr,
3435
Th,
@@ -69,16 +70,16 @@ const {
6970
keyArray: wsTableColumnKeyArray,
7071
sortableKeyArray: sortableWsTableColumnKeyArray,
7172
} = defineDataFields({
72-
name: { label: 'Name', isFilterable: true, isSortable: true, width: 35 },
73-
image: { label: 'Image', isFilterable: true, isSortable: true, width: 25 },
74-
kind: { label: 'Kind', isFilterable: true, isSortable: true, width: 15 },
73+
name: { label: 'Name', isFilterable: true, isSortable: true, width: 20 },
74+
image: { label: 'Image', isFilterable: true, isSortable: true, width: 20 },
75+
kind: { label: 'Kind', isFilterable: true, isSortable: true, width: 10 },
7576
namespace: { label: 'Namespace', isFilterable: true, isSortable: true, width: 15 },
76-
state: { label: 'State', isFilterable: true, isSortable: true, width: 15 },
77+
state: { label: 'State', isFilterable: true, isSortable: true, width: 10 },
7778
gpu: { label: 'GPU', isFilterable: true, isSortable: true, width: 15 },
7879
idleGpu: { label: 'Idle GPU', isFilterable: true, isSortable: true, width: 15 },
7980
lastActivity: { label: 'Last activity', isFilterable: false, isSortable: true, width: 15 },
80-
connect: { label: '', isFilterable: false, isSortable: false, width: 25 },
81-
actions: { label: '', isFilterable: false, isSortable: false, width: 10 },
81+
connect: { label: '', isFilterable: false, isSortable: false, width: undefined },
82+
actions: { label: '', isFilterable: false, isSortable: false, width: undefined },
8283
});
8384

8485
export type WorkspaceTableColumnKeys = DataFieldKey<typeof wsTableColumns>;
@@ -522,7 +523,6 @@ const WorkspaceTable = React.forwardRef<WorkspaceTableRef, WorkspaceTableProps>(
522523
ouiaId="SortableTable"
523524
variant="compact"
524525
gridBreakPoint={isDrawerExpanded ? 'grid' : 'grid-lg'}
525-
style={{ tableLayout: 'fixed' }}
526526
>
527527
<Thead>
528528
<Tr>
@@ -533,8 +533,8 @@ const WorkspaceTable = React.forwardRef<WorkspaceTableRef, WorkspaceTableProps>(
533533

534534
return (
535535
<Th
536-
width={wsTableColumns[columnKey].width}
537536
key={`workspace-table-column-${columnKey}`}
537+
width={wsTableColumns[columnKey].width}
538538
sort={specialProps.hasContent ? getSortParams(columnKey) : undefined}
539539
aria-label={specialProps.hasContent ? columnKey : undefined}
540540
modifier={modifier}
@@ -574,15 +574,22 @@ const WorkspaceTable = React.forwardRef<WorkspaceTableRef, WorkspaceTableProps>(
574574
{visibleColumnKeys.map((columnKey) => {
575575
if (columnKey === 'connect') {
576576
return (
577-
<Td key="connect" dataLabel={wsTableColumns[columnKey].label}>
578-
<WorkspaceConnectAction workspace={workspace} />
577+
<Td
578+
dataLabel={wsTableColumns[columnKey].label}
579+
modifier="fitContent"
580+
hasAction
581+
key="connect"
582+
>
583+
<TableText>
584+
<WorkspaceConnectAction workspace={workspace} />
585+
</TableText>
579586
</Td>
580587
);
581588
}
582589

583590
if (columnKey === 'actions') {
584591
return (
585-
<Td key="actions" data-testid="action-column">
592+
<Td isActionCell key="actions" data-testid="action-column">
586593
<ActionsColumn
587594
items={rowActions(workspace).map((action) => ({
588595
...action,

workspaces/frontend/src/app/pages/Workspaces/WorkspaceConnectAction.tsx

Lines changed: 34 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import {
77
import {
88
MenuToggle,
99
MenuToggleElement,
10-
MenuToggleAction,
1110
} from '@patternfly/react-core/dist/esm/components/MenuToggle';
1211
import { WorkspacesWorkspace, WorkspacesWorkspaceState } from '~/generated/data-contracts';
1312

@@ -34,62 +33,44 @@ export const WorkspaceConnectAction: React.FunctionComponent<WorkspaceConnectAct
3433
}
3534
};
3635

37-
const onClickConnect = () => {
38-
if (workspace.services.length === 0 || !workspace.services[0].httpService) {
39-
return;
40-
}
41-
42-
openEndpoint(workspace.services[0].httpService.httpPath);
43-
};
44-
4536
const openEndpoint = (value: string) => {
4637
window.open(value, '_blank');
4738
};
4839

4940
return (
50-
<div className="workspace-connect-wrapper pf-v6-u-display-inline-block">
51-
<Dropdown
52-
isOpen={open}
53-
onSelect={onSelect}
54-
onOpenChange={(isOpen: boolean) => setIsOpen(isOpen)}
55-
toggle={(toggleRef: React.Ref<MenuToggleElement>) => (
56-
<MenuToggle
57-
ref={toggleRef}
58-
variant="secondary"
59-
onClick={onToggleClick}
60-
isExpanded={open}
61-
isDisabled={workspace.state !== WorkspacesWorkspaceState.WorkspaceStateRunning}
62-
splitButtonItems={[
63-
<MenuToggleAction
64-
id="connect-endpoint-button"
65-
key="connect-endpoint-button"
66-
onClick={onClickConnect}
67-
className="connect-button-no-wrap"
68-
>
69-
Connect
70-
</MenuToggleAction>,
71-
]}
72-
/>
73-
)}
74-
ouiaId="BasicDropdown"
75-
shouldFocusToggleOnSelect
76-
>
77-
<DropdownList>
78-
{workspace.services.map((service) => {
79-
if (!service.httpService) {
80-
return null;
81-
}
82-
return (
83-
<DropdownItem
84-
value={service.httpService.httpPath}
85-
key={`${workspace.name}-${service.httpService.displayName}`}
86-
>
87-
{service.httpService.displayName}
88-
</DropdownItem>
89-
);
90-
})}
91-
</DropdownList>
92-
</Dropdown>
93-
</div>
41+
<Dropdown
42+
isOpen={open}
43+
onSelect={onSelect}
44+
onOpenChange={(isOpen: boolean) => setIsOpen(isOpen)}
45+
toggle={(toggleRef: React.Ref<MenuToggleElement>) => (
46+
<MenuToggle
47+
ref={toggleRef}
48+
variant="secondary"
49+
onClick={onToggleClick}
50+
isExpanded={open}
51+
isDisabled={workspace.state !== WorkspacesWorkspaceState.WorkspaceStateRunning}
52+
>
53+
Connect
54+
</MenuToggle>
55+
)}
56+
ouiaId="BasicDropdown"
57+
shouldFocusToggleOnSelect
58+
>
59+
<DropdownList>
60+
{workspace.services.map((service) => {
61+
if (!service.httpService) {
62+
return null;
63+
}
64+
return (
65+
<DropdownItem
66+
value={service.httpService.httpPath}
67+
key={`${workspace.name}-${service.httpService.displayName}`}
68+
>
69+
{service.httpService.displayName}
70+
</DropdownItem>
71+
);
72+
})}
73+
</DropdownList>
74+
</Dropdown>
9475
);
9576
};

0 commit comments

Comments
 (0)