Skip to content

Commit d1535e1

Browse files
committed
refactor: ensure active/selected state and aria-selected are in snyc
add more checks and guardrails to TabItem on change events
1 parent 01772af commit d1535e1

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

packages/components/src/components/tab-item/tab-item.lite.tsx

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ export default function DBTabItem(props: DBTabItemProps) {
5555
props.onChange(event);
5656
}
5757

58+
if (_ref.checked && !state._selected) {
59+
state._selected = true;
60+
}
61+
5862
useTarget({
5963
angular: () =>
6064
handleFrameworkEventAngular(state, event, 'checked'),
@@ -80,6 +84,7 @@ export default function DBTabItem(props: DBTabItemProps) {
8084
);
8185

8286
if (props.active) {
87+
state._selected = true;
8388
_ref.click();
8489
}
8590
}
@@ -92,10 +97,12 @@ export default function DBTabItem(props: DBTabItemProps) {
9297
}, [props.name]);
9398

9499
onUnMount(() => {
95-
_ref.closest('[role=tablist]')?.removeEventListener(
96-
'change',
97-
setSelectedOnChange
98-
);
100+
if (state.initialized && _ref) {
101+
_ref.closest('[role=tablist]')?.removeEventListener(
102+
'change',
103+
setSelectedOnChange
104+
);
105+
}
99106
});
100107

101108
return (

0 commit comments

Comments
 (0)