|
@@ -29,6 +29,7 @@
|
|
|
nextTick,
|
|
|
provide,
|
|
|
computed,
|
|
|
+ unref,
|
|
|
} from 'vue';
|
|
|
import Bar from './bar';
|
|
|
|
|
@@ -73,18 +74,25 @@
|
|
|
|
|
|
provide('scroll-bar-wrap', wrap);
|
|
|
|
|
|
+ const style = computed(() => {
|
|
|
+ if (Array.isArray(props.wrapStyle)) {
|
|
|
+ return toObject(props.wrapStyle);
|
|
|
+ }
|
|
|
+ return props.wrapStyle;
|
|
|
+ });
|
|
|
+
|
|
|
const handleScroll = () => {
|
|
|
if (!props.native) {
|
|
|
- moveY.value = (wrap.value.scrollTop * 100) / wrap.value.clientHeight;
|
|
|
- moveX.value = (wrap.value.scrollLeft * 100) / wrap.value.clientWidth;
|
|
|
+ moveY.value = (unref(wrap).scrollTop * 100) / unref(wrap).clientHeight;
|
|
|
+ moveX.value = (unref(wrap).scrollLeft * 100) / unref(wrap).clientWidth;
|
|
|
}
|
|
|
};
|
|
|
|
|
|
const update = () => {
|
|
|
- if (!wrap.value) return;
|
|
|
+ if (!unref(wrap)) return;
|
|
|
|
|
|
- const heightPercentage = (wrap.value.clientHeight * 100) / wrap.value.scrollHeight;
|
|
|
- const widthPercentage = (wrap.value.clientWidth * 100) / wrap.value.scrollWidth;
|
|
|
+ const heightPercentage = (unref(wrap).clientHeight * 100) / unref(wrap).scrollHeight;
|
|
|
+ const widthPercentage = (unref(wrap).clientWidth * 100) / unref(wrap).scrollWidth;
|
|
|
|
|
|
sizeHeight.value = heightPercentage < 100 ? heightPercentage + '%' : '';
|
|
|
sizeWidth.value = widthPercentage < 100 ? widthPercentage + '%' : '';
|
|
@@ -94,25 +102,21 @@
|
|
|
if (props.native) return;
|
|
|
nextTick(update);
|
|
|
if (!props.noresize) {
|
|
|
- addResizeListener(resize.value, update);
|
|
|
- addResizeListener(wrap.value, update);
|
|
|
+ addResizeListener(unref(resize), update);
|
|
|
+ addResizeListener(unref(wrap), update);
|
|
|
+ addEventListener('resize', update);
|
|
|
}
|
|
|
});
|
|
|
|
|
|
onBeforeUnmount(() => {
|
|
|
if (props.native) return;
|
|
|
if (!props.noresize) {
|
|
|
- removeResizeListener(resize.value, update);
|
|
|
- removeResizeListener(wrap.value, update);
|
|
|
+ removeResizeListener(unref(resize), update);
|
|
|
+ removeResizeListener(unref(wrap), update);
|
|
|
+ removeEventListener('resize', update);
|
|
|
}
|
|
|
});
|
|
|
- const style = computed(() => {
|
|
|
- let style: any = props.wrapStyle;
|
|
|
- if (Array.isArray(props.wrapStyle)) {
|
|
|
- style = toObject(props.wrapStyle);
|
|
|
- }
|
|
|
- return style;
|
|
|
- });
|
|
|
+
|
|
|
return {
|
|
|
moveX,
|
|
|
moveY,
|