@@ -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 }
0 commit comments