Skip to content

Commit 2075e5b

Browse files
committed
Refactor how classNameis composed in tabs
1 parent a78763a commit 2075e5b

File tree

1 file changed

+48
-28
lines changed
  • components/dash-core-components/src/components

1 file changed

+48
-28
lines changed

components/dash-core-components/src/components/Tabs.tsx

Lines changed: 48 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,23 @@ const EnhancedTab = ({
4343
}, [style, disabled, disabled_style, selected, selected_style]);
4444

4545
const tabClassNames = useMemo(() => {
46-
return [
47-
'tab',
48-
className,
49-
disabled ? 'tab--disabled' : null,
50-
disabled ? disabled_className : null,
51-
selected ? 'tab--selected' : null,
52-
selected ? selected_className : null,
53-
].filter((el): el is string => Boolean(el));
46+
let names = 'tab';
47+
if (disabled) {
48+
names += ' tab--disabled';
49+
if (disabled_className) {
50+
names += ` ${disabled_className}`;
51+
}
52+
}
53+
if (selected) {
54+
names += ' tab--selected';
55+
if (selected_className) {
56+
names += ` ${selected_className}`;
57+
}
58+
}
59+
if (className) {
60+
names += ` ${className}`;
61+
}
62+
return names;
5463
}, [className, disabled, disabled_className, selected, selected_className]);
5564

5665
let labelDisplay;
@@ -68,7 +77,7 @@ const EnhancedTab = ({
6877
return (
6978
<div
7079
data-dash-is-loading={isLoading}
71-
className={tabClassNames.join(' ')}
80+
className={tabClassNames}
7281
id={id}
7382
style={tabStyle}
7483
onClick={() => {
@@ -222,28 +231,39 @@ function Tabs({
222231
const selectedTabContent = !isNil(selectedTab) ? selectedTab : '';
223232

224233
const tabContainerClassNames = useMemo(() => {
225-
return [
226-
'tab-container',
227-
vertical ? 'tab-container--vert' : null,
228-
props.className,
229-
].filter((el): el is string => Boolean(el));
234+
let names = 'tab-container';
235+
if (vertical) {
236+
names += ` tab-container--vert`;
237+
}
238+
if (props.className) {
239+
names += ` ${props.className}`;
240+
}
241+
return names;
230242
}, [vertical, props.className]);
231243

232244
const tabContentClassNames = useMemo(() => {
233-
return [
234-
'tab-content',
235-
vertical ? 'tab-content--vert' : null,
236-
props.content_className,
237-
].filter((el): el is string => Boolean(el));
245+
let names = 'tab-content';
246+
if (vertical) {
247+
names += ` tab-content--vert`;
248+
}
249+
if (props.content_className) {
250+
names += ` ${props.content_className}`;
251+
}
252+
return names;
238253
}, [vertical, props.content_className]);
239254

240255
const tabParentClassNames = useMemo(() => {
241-
return [
242-
'tab-parent',
243-
vertical ? ' tab-parent--vert' : null,
244-
isAboveBreakpoint ? ' tab-parent--above-breakpoint' : null,
245-
props.parent_className,
246-
].filter((el): el is string => Boolean(el));
256+
let names = 'tab-parent';
257+
if (vertical) {
258+
names += ` tab-parent--vert`;
259+
}
260+
if (isAboveBreakpoint) {
261+
names += ' tab-parent--above-breakpoint';
262+
}
263+
if (props.parent_className) {
264+
names += ` ${props.parent_className}`;
265+
}
266+
return names;
247267
}, [vertical, isAboveBreakpoint, props.parent_className]);
248268

249269
// Set CSS variables for dynamic styling
@@ -257,20 +277,20 @@ function Tabs({
257277
<LoadingElement>
258278
{loadingProps => (
259279
<div
260-
className={tabParentClassNames.join(' ')}
280+
className={tabParentClassNames}
261281
style={{...cssVars, ...props.parent_style}}
262282
id={props.id ? `${props.id}-parent` : undefined}
263283
{...loadingProps}
264284
>
265285
<div
266-
className={tabContainerClassNames.join(' ')}
286+
className={tabContainerClassNames}
267287
style={props.style}
268288
id={props.id}
269289
>
270290
{EnhancedTabs}
271291
</div>
272292
<div
273-
className={tabContentClassNames.join(' ')}
293+
className={tabContentClassNames}
274294
style={props.content_style}
275295
>
276296
{selectedTabContent || ''}

0 commit comments

Comments
 (0)