Skip to content

Commit 669b22a

Browse files
committed
fix: tabs auto overflow error for addIcon
1 parent 80342f4 commit 669b22a

File tree

2 files changed

+11
-25
lines changed

2 files changed

+11
-25
lines changed

components/tabs/src/TabNavList/index.tsx

+10-24
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ export default defineComponent({
7070
const tabsWrapperRef = ref<HTMLDivElement>();
7171
const tabListRef = ref<HTMLDivElement>();
7272
const operationsRef = ref<{ $el: HTMLDivElement }>();
73-
const innerAddButtonRef = ref<HTMLButtonElement>();
73+
const innerAddButtonRef = ref();
7474
const [setRef, btnRefs] = useRefs();
7575
const tabPositionTopOrBottom = computed(
7676
() => props.tabPosition === 'top' || props.tabPosition === 'bottom',
@@ -89,8 +89,6 @@ export default defineComponent({
8989

9090
const [wrapperScrollWidth, setWrapperScrollWidth] = useState<number>(0);
9191
const [wrapperScrollHeight, setWrapperScrollHeight] = useState<number>(0);
92-
const [wrapperContentWidth, setWrapperContentWidth] = useState<number>(0);
93-
const [wrapperContentHeight, setWrapperContentHeight] = useState<number>(0);
9492
const [wrapperWidth, setWrapperWidth] = useState<number>(null);
9593
const [wrapperHeight, setWrapperHeight] = useState<number>(null);
9694
const [addWidth, setAddWidth] = useState<number>(0);
@@ -232,25 +230,24 @@ export default defineComponent({
232230
let basicSize: number;
233231
let tabContentSize: number;
234232
let addSize: number;
235-
233+
const tabOffsetsValue = tabOffsets.value;
236234
if (['top', 'bottom'].includes(props.tabPosition)) {
237235
unit = 'width';
238236
basicSize = wrapperWidth.value;
239-
tabContentSize = wrapperContentWidth.value;
237+
tabContentSize = wrapperScrollWidth.value;
240238
addSize = addWidth.value;
241239
position = props.rtl ? 'right' : 'left';
242240
transformSize = Math.abs(transformLeft.value);
243241
} else {
244242
unit = 'height';
245243
basicSize = wrapperHeight.value;
246-
tabContentSize = wrapperContentHeight.value;
244+
tabContentSize = wrapperScrollWidth.value;
247245
addSize = addHeight.value;
248246
position = 'top';
249247
transformSize = -transformTop.value;
250248
}
251-
252249
let mergedBasicSize = basicSize;
253-
if (tabContentSize + addSize > basicSize) {
250+
if (tabContentSize + addSize > basicSize && tabContentSize < basicSize) {
254251
mergedBasicSize = basicSize - addSize;
255252
}
256253

@@ -262,15 +259,15 @@ export default defineComponent({
262259
const len = tabsVal.length;
263260
let endIndex = len;
264261
for (let i = 0; i < len; i += 1) {
265-
const offset = tabOffsets.value.get(tabsVal[i].key) || DEFAULT_SIZE;
262+
const offset = tabOffsetsValue.get(tabsVal[i].key) || DEFAULT_SIZE;
266263
if (offset[position] + offset[unit] > transformSize + mergedBasicSize) {
267264
endIndex = i - 1;
268265
break;
269266
}
270267
}
271268
let startIndex = 0;
272269
for (let i = len - 1; i >= 0; i -= 1) {
273-
const offset = tabOffsets.value.get(tabsVal[i].key) || DEFAULT_SIZE;
270+
const offset = tabOffsetsValue.get(tabsVal[i].key) || DEFAULT_SIZE;
274271
if (offset[position] < transformSize) {
275272
startIndex = i + 1;
276273
break;
@@ -284,11 +281,9 @@ export default defineComponent({
284281
// Update wrapper records
285282
const offsetWidth = tabsWrapperRef.value?.offsetWidth || 0;
286283
const offsetHeight = tabsWrapperRef.value?.offsetHeight || 0;
287-
const newAddWidth = innerAddButtonRef.value?.offsetWidth || 0;
288-
const newAddHeight = innerAddButtonRef.value?.offsetHeight || 0;
289-
const newOperationWidth = operationsRef.value?.$el.offsetWidth || 0;
290-
const newOperationHeight = operationsRef.value?.$el.offsetHeight || 0;
291-
284+
const addDom = innerAddButtonRef.value?.$el || {};
285+
const newAddWidth = addDom.offsetWidth || 0;
286+
const newAddHeight = addDom.offsetHeight || 0;
292287
setWrapperWidth(offsetWidth);
293288
setWrapperHeight(offsetHeight);
294289
setAddWidth(newAddWidth);
@@ -300,14 +295,6 @@ export default defineComponent({
300295
setWrapperScrollWidth(newWrapperScrollWidth);
301296
setWrapperScrollHeight(newWrapperScrollHeight);
302297

303-
const isOperationHidden = operationsRef.value?.$el.className.includes(
304-
operationsHiddenClassName.value,
305-
);
306-
setWrapperContentWidth(newWrapperScrollWidth - (isOperationHidden ? 0 : newOperationWidth));
307-
setWrapperContentHeight(
308-
newWrapperScrollHeight - (isOperationHidden ? 0 : newOperationHeight),
309-
);
310-
311298
// Update buttons records
312299
setTabSizes(() => {
313300
const newSizes: TabSizeMap = new Map();
@@ -475,7 +462,6 @@ export default defineComponent({
475462
});
476463
return (
477464
<div
478-
ref={ref}
479465
role="tablist"
480466
class={classNames(`${pre}-nav`, className)}
481467
style={style}

components/tabs/src/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// base rc-tabs 11.10.1
1+
// base rc-tabs 11.12.0
22
import Tabs from './Tabs';
33
import type { TabsProps } from './Tabs';
44
import TabPane from './TabPanelList/TabPane';

0 commit comments

Comments
 (0)