Skip to content

Commit 8f03091

Browse files
committed
refactor: TabGroup - utils refactor
1 parent 1f5f6e9 commit 8f03091

File tree

2 files changed

+28
-32
lines changed

2 files changed

+28
-32
lines changed

src/Shared/Components/TabGroup/TabGroup.component.tsx

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { ComponentSizeType } from '@Shared/constants'
66

77
import { TabGroupProps, TabProps } from './TabGroup.types'
88
import './TabGroup.scss'
9-
import { getClassNameBySize, getIconColorClass } from './TabGroup.utils'
9+
import { getClassNameBySizeMap, getIconColorClassMap } from './TabGroup.utils'
1010

1111
const Tab = ({
1212
label,
@@ -24,19 +24,18 @@ const Tab = ({
2424
showWarning,
2525
disabled,
2626
}: TabProps & Pick<TabGroupProps, 'size' | 'alignActiveBorderWithContainer' | 'hideTopPadding'>) => {
27-
const { tabClassName, iconClassName, badgeClassName } = getClassNameBySize({
28-
size,
27+
const { tabClassName, iconClassName, badgeClassName } = getClassNameBySizeMap({
2928
hideTopPadding,
3029
alignActiveBorderWithContainer,
31-
})
30+
})[size]
3231

3332
const getTabComponent = () => {
3433
const content = (
3534
<>
3635
{showError && <ICErrorExclamation className={`${iconClassName}`} />}
3736
{!showError && showWarning && <ICWarning className={`${iconClassName} warning-icon-y7`} />}
3837
{!showError && !showWarning && Icon && (
39-
<Icon className={`${iconClassName} ${getIconColorClass({ iconType, active })}`} />
38+
<Icon className={`${iconClassName} ${getIconColorClassMap({ active })[iconType] || ''}`} />
4039
)}
4140
{label}
4241
{badge !== null && (
Lines changed: 24 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,31 @@
11
import { ComponentSizeType } from '@Shared/constants'
2+
23
import { TabGroupProps, TabProps } from './TabGroup.types'
34

4-
export const getClassNameBySize = ({
5-
size,
5+
export const getClassNameBySizeMap = ({
66
hideTopPadding,
77
alignActiveBorderWithContainer,
8-
}: Pick<TabGroupProps, 'size' | 'hideTopPadding' | 'alignActiveBorderWithContainer'>) => {
9-
switch (size) {
10-
case ComponentSizeType.medium:
11-
return {
12-
tabClassName: `fs-12 ${!hideTopPadding ? 'pt-6' : ''} ${alignActiveBorderWithContainer ? 'pb-5' : 'pb-6'}`,
13-
iconClassName: 'icon-dim-14',
14-
badgeClassName: 'fs-11 lh-18 tab-group__tab__badge--medium',
15-
}
16-
default:
17-
return {
18-
tabClassName: `fs-13 ${!hideTopPadding ? 'pt-8' : ''} ${alignActiveBorderWithContainer ? 'pb-7' : 'pb-8'}`,
19-
iconClassName: 'icon-dim-16',
20-
badgeClassName: 'fs-12 lh-20',
21-
}
22-
}
23-
}
24-
25-
export const getIconColorClass = ({ iconType, active }: Pick<TabProps, 'iconType' | 'active'>) => {
26-
if (iconType === 'fill') {
27-
return `tab-group__tab__icon--fill ${active ? 'fcb-5' : 'fcn-7'}`
28-
}
29-
if (iconType === 'stroke') {
30-
return `tab-group__tab__icon--stroke ${active ? 'scb-5' : 'scn-7'}`
8+
}: Pick<TabGroupProps, 'hideTopPadding' | 'alignActiveBorderWithContainer'>): Record<
9+
TabGroupProps['size'],
10+
{
11+
tabClassName: string
12+
iconClassName: string
13+
badgeClassName: string
3114
}
15+
> => ({
16+
[ComponentSizeType.medium]: {
17+
tabClassName: `fs-12 ${!hideTopPadding ? 'pt-6' : ''} ${alignActiveBorderWithContainer ? 'pb-5' : 'pb-6'}`,
18+
iconClassName: 'icon-dim-14',
19+
badgeClassName: 'fs-11 lh-18 tab-group__tab__badge--medium',
20+
},
21+
[ComponentSizeType.large]: {
22+
tabClassName: `fs-13 ${!hideTopPadding ? 'pt-8' : ''} ${alignActiveBorderWithContainer ? 'pb-7' : 'pb-8'}`,
23+
iconClassName: 'icon-dim-16',
24+
badgeClassName: 'fs-12 lh-20',
25+
},
26+
})
3227

33-
return ''
34-
}
28+
export const getIconColorClassMap = ({ active }: Pick<TabProps, 'active'>): Record<TabProps['iconType'], string> => ({
29+
fill: `tab-group__tab__icon--fill ${active ? 'fcb-5' : 'fcn-7'}`,
30+
stroke: `tab-group__tab__icon--stroke ${active ? 'scb-5' : 'scn-7'}`,
31+
})

0 commit comments

Comments
 (0)