Skip to content

Commit 056b5fc

Browse files
committed
Update managed tabs
1 parent b0959d2 commit 056b5fc

File tree

2 files changed

+43
-25
lines changed

2 files changed

+43
-25
lines changed

web_ui/src/shared/components/managed-tabs/managed-tabs.component.tsx

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,12 @@
33

44
import { Key, ReactNode } from 'react';
55

6-
import { Flex, Item, TabList, TabPanels, Tabs } from '@geti/ui';
6+
import { Flex, Item, Picker, TabList, TabPanels, Tabs } from '@geti/ui';
77

8-
import { CollapsedItemsPicker } from '../collapsed-items-picker/collapsed-items-picker.component';
98
import { TabItem } from '../tabs/tabs.interface';
109

1110
import classes from './managed-tabs.module.scss';
1211

13-
export interface AddButtonConfig {
14-
ariaLabel: string;
15-
tooltipText: string;
16-
onPress: () => void;
17-
isLoading?: boolean;
18-
isDisabled?: boolean;
19-
id?: string;
20-
}
21-
2212
export interface OverflowConfig {
2313
maxVisibleTabs: number;
2414
pickerAriaLabel: string;
@@ -31,7 +21,7 @@ export interface ManagedTabsProps<T extends { id: string; name: string }> {
3121
selectedKey: string;
3222
onSelectionChange: (key: Key) => void;
3323
renderTabItem: (item: T) => ReactNode;
34-
renderTabPanel: (item: T) => ReactNode;
24+
children?: ReactNode;
3525
addButton?: ReactNode;
3626
overflow?: OverflowConfig;
3727
orientation?: 'horizontal' | 'vertical';
@@ -46,7 +36,7 @@ export const ManagedTabs = <T extends { id: string; name: string }>({
4636
selectedKey,
4737
onSelectionChange,
4838
renderTabItem,
49-
renderTabPanel,
39+
children,
5040
addButton,
5141
overflow,
5242
orientation = 'vertical',
@@ -64,7 +54,6 @@ export const ManagedTabs = <T extends { id: string; name: string }>({
6454
id: item.id,
6555
key: item.id,
6656
name: item.name,
67-
children: renderTabPanel(item),
6857
originalItem: item,
6958
}));
7059

@@ -102,22 +91,28 @@ export const ManagedTabs = <T extends { id: string; name: string }>({
10291
</Item>
10392
)}
10493
</TabList>
105-
</div>
10694

107-
{overflow && collapsedItems.length > 0 && (
108-
<CollapsedItemsPicker
109-
items={collapsedPickerItems}
110-
ariaLabel={overflow.pickerAriaLabel}
111-
onSelectionChange={overflow.onCollapsedItemSelect}
112-
hasSelectedPinnedItem={!hasSelectedCollapsedItem}
113-
numberOfCollapsedItems={collapsedItems.length}
114-
/>
115-
)}
95+
{overflow && collapsedItems.length > 0 && (
96+
<Picker
97+
isQuiet
98+
items={collapsedPickerItems}
99+
aria-label={overflow.pickerAriaLabel}
100+
onSelectionChange={(key) => overflow.onCollapsedItemSelect(String(key))}
101+
placeholder={`${collapsedItems.length} more`}
102+
UNSAFE_className={[
103+
classes.collapsedItemsPicker,
104+
!hasSelectedCollapsedItem ? classes.selected : '',
105+
].join(' ')}
106+
>
107+
{(item) => <Item>{item.name}</Item>}
108+
</Picker>
109+
)}
110+
</div>
116111

117112
{addButton && addButton}
118113
</Flex>
119114

120-
<TabPanels>{(item: TabItem) => <Item key={item.key}>{item.children}</Item>}</TabPanels>
115+
<TabPanels>{(item: TabItem) => <Item key={item.key}>{children}</Item>}</TabPanels>
121116
</Tabs>
122117
</Flex>
123118
);

web_ui/src/shared/components/managed-tabs/managed-tabs.module.scss

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,4 +81,27 @@
8181
flex: 1 1 auto;
8282
min-width: 0;
8383
overflow: auto hidden;
84+
display: flex;
85+
align-items: center;
86+
gap: 0;
87+
}
88+
89+
.collapsedItemsPicker {
90+
position: relative;
91+
flex-shrink: 0;
92+
93+
&.selected::after {
94+
content: '';
95+
position: absolute;
96+
height: var(--spectrum-global-dimension-size-25);
97+
left: 0;
98+
bottom: -15px;
99+
right: var(--spectrum-global-dimension-size-400);
100+
background-color: var(--energy-blue);
101+
}
102+
103+
span[class*='spectrum-Dropdown-label'] {
104+
font-size: var(--spectrum-global-dimension-font-size-100) !important;
105+
font-style: normal !important;
106+
}
84107
}

0 commit comments

Comments
 (0)