File tree Expand file tree Collapse file tree 2 files changed +23
-1
lines changed
packages/react/src/components/Tag Expand file tree Collapse file tree 2 files changed +23
-1
lines changed Original file line number Diff line number Diff line change @@ -13,6 +13,7 @@ import React, {
13
13
MouseEvent ,
14
14
forwardRef ,
15
15
ForwardedRef ,
16
+ useEffect ,
16
17
} from 'react' ;
17
18
import classNames from 'classnames' ;
18
19
import { useId } from '../../internal/useId' ;
@@ -101,6 +102,12 @@ const SelectableTag = forwardRef(
101
102
} ) ;
102
103
const [ isEllipsisApplied , setIsEllipsisApplied ] = useState ( false ) ;
103
104
105
+ useEffect ( ( ) => {
106
+ if ( selected !== selectedTag ) {
107
+ setSelectedTag ( selected ) ;
108
+ }
109
+ } , [ selected ] ) ;
110
+
104
111
useLayoutEffect ( ( ) => {
105
112
const newElement = tagRef . current ?. getElementsByClassName (
106
113
`${ prefix } --tag__label`
Original file line number Diff line number Diff line change 1
1
/**
2
- * Copyright IBM Corp. 2016, 2023
2
+ * Copyright IBM Corp. 2016, 2025
3
3
*
4
4
* This source code is licensed under the Apache-2.0 license found in the
5
5
* LICENSE file in the root directory of this source tree.
@@ -308,4 +308,19 @@ describe('Tag', () => {
308
308
render ( < SelectableTag type = "red" text = "Test Tag" ref = { ref } /> ) ;
309
309
expect ( ref . current ) . toBeInstanceOf ( HTMLButtonElement ) ;
310
310
} ) ;
311
+ it ( 'Controlled selected tag' , ( ) => {
312
+ const ref = React . createRef ( ) ;
313
+ const { rerender } = render (
314
+ < SelectableTag type = "red" text = "Test Tag" ref = { ref } selected = { true } />
315
+ ) ;
316
+ expect ( ref . current ) . toBeInstanceOf ( HTMLButtonElement ) ;
317
+ expect ( selectableTag ) . toHaveClass ( `${ prefix } --tag--selectable-selected` ) ;
318
+
319
+ rerender (
320
+ < SelectableTag type = "red" text = "Test Tag" ref = { ref } selected = { false } />
321
+ ) ;
322
+ expect ( selectableTag ) . container . toHaveClass (
323
+ `${ prefix } --tag--selectable-selected`
324
+ ) ;
325
+ } ) ;
311
326
} ) ;
You can’t perform that action at this time.
0 commit comments