@@ -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