Skip to content

Commit 2f68c86

Browse files
committed
fix: move tab-item selectedOnChange function to state
1 parent 2e30d87 commit 2f68c86

File tree

2 files changed

+19
-14
lines changed

2 files changed

+19
-14
lines changed

packages/components/src/components/tab-item/model.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ export type DBTabItemProps = GlobalProps &
5050
export type DBTabItemDefaultState = {
5151
_selected: boolean;
5252
_listenerAdded: boolean;
53+
setSelectedOnChange: (event: any) => void;
5354
};
5455

5556
export type DBTabItemState = DBTabItemDefaultState &

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

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,18 +29,6 @@ useDefaultProps<DBTabItemProps>({});
2929
export default function DBTabItem(props: DBTabItemProps) {
3030
const _ref = useRef<HTMLInputElement | any>(null);
3131

32-
function setSelectedOnChange(event: any) {
33-
event.stopPropagation();
34-
useTarget({
35-
stencil: () => {
36-
state._selected = getBooleanAsString(event.target === _ref);
37-
},
38-
default: () => {
39-
state._selected = event.target === _ref;
40-
}
41-
});
42-
}
43-
4432
// jscpd:ignore-start
4533
const state = useStore<DBTabItemState>({
4634
_selected: false,
@@ -58,6 +46,18 @@ export default function DBTabItem(props: DBTabItemProps) {
5846
};
5947
}
6048
},
49+
setSelectedOnChange: (event: any) => {
50+
event.stopPropagation();
51+
console.log('setSelectedOnChange', event.target === _ref);
52+
useTarget({
53+
stencil: () => {
54+
state._selected = getBooleanAsString(event.target === _ref);
55+
},
56+
default: () => {
57+
state._selected = event.target === _ref;
58+
}
59+
});
60+
},
6161
handleChange: (event: any) => {
6262
if (props.onChange) {
6363
props.onChange(event);
@@ -77,20 +77,23 @@ export default function DBTabItem(props: DBTabItemProps) {
7777
// jscpd:ignore-end
7878

7979
onUpdate(() => {
80+
console.log('onUpdate triggered', state.initialized, _ref);
8081
if (state.initialized && _ref) {
8182
useTarget({ react: () => state.handleNameAttribute() });
8283
state.initialized = false;
8384

8485
// deselect this tab when another tab in tablist is selected
8586
if (!state._listenerAdded) {
87+
console.log('adding listener');
8688
_ref.closest('[role=tablist]')?.addEventListener(
8789
'change',
88-
setSelectedOnChange
90+
state.setSelectedOnChange
8991
);
9092
state._listenerAdded = true;
9193
}
9294

9395
if (props.active || _ref.checked) {
96+
console.log('active or checked', props.active, _ref.checked);
9497
useTarget({
9598
stencil: () => {
9699
state._selected = getBooleanAsString(true);
@@ -112,9 +115,10 @@ export default function DBTabItem(props: DBTabItemProps) {
112115

113116
onUnMount(() => {
114117
if (state._listenerAdded && _ref) {
118+
console.log('removing listener');
115119
_ref.closest('[role=tablist]')?.removeEventListener(
116120
'change',
117-
setSelectedOnChange
121+
state.setSelectedOnChange
118122
);
119123
state._listenerAdded = false;
120124
}

0 commit comments

Comments
 (0)