Explorar o código

解决鸿蒙兼容问题

icssoa hai 7 meses
pai
achega
e0145091d3

+ 11 - 1
uni_modules/cool-ui/components/cl-cascader/cl-cascader.uvue

@@ -93,7 +93,17 @@
 
 <script setup lang="ts">
 import { ref, computed, type PropType, nextTick } from "vue";
-import { isDark, isEmpty, isMp, isNull, parseClass, parsePt, parseRpx, rpx2px } from "@/cool";
+import {
+	isDark,
+	isEmpty,
+	isHarmony,
+	isMp,
+	isNull,
+	parseClass,
+	parsePt,
+	parseRpx,
+	rpx2px
+} from "@/cool";
 import type { ClSelectTriggerPassThrough } from "../cl-select-trigger/props";
 import type { ClPopupPassThrough } from "../cl-popup/props";
 import { t } from "@/locale";

+ 2 - 0
uni_modules/cool-ui/components/cl-list-view/cl-list-view.uvue

@@ -24,6 +24,7 @@
 			@refresherabort="onRefresherAbort"
 		>
 			<!-- 下拉刷新 -->
+			<!-- #ifndef APP-HARMONY -->
 			<view
 				slot="refresher"
 				class="cl-list-view__refresher"
@@ -49,6 +50,7 @@
 					<cl-text> {{ refresherText }} </cl-text>
 				</slot>
 			</view>
+			<!-- #endif -->
 
 			<!-- 列表 -->
 			<view

+ 27 - 22
uni_modules/cool-ui/components/cl-sticky/cl-sticky.uvue

@@ -26,7 +26,7 @@
 </template>
 
 <script lang="ts" setup>
-import { isEmpty, router } from "@/cool";
+import { isEmpty, isHarmony, router } from "@/cool";
 import { computed, getCurrentInstance, nextTick, onMounted, reactive, ref, watch } from "vue";
 import { usePage } from "../../hooks";
 
@@ -106,25 +106,30 @@ const stickyTop = computed(() => {
 // 获取sticky元素的位置信息,并更新rect
 function getRect() {
 	nextTick(() => {
-		uni.createSelectorQuery()
-			.in(proxy)
-			.select(".cl-sticky")
-			.boundingClientRect()
-			.exec((nodes) => {
-				if (isEmpty(nodes)) {
-					return;
-				}
-
-				const node = nodes[0] as NodeInfo;
-
-				// 赋值时做空值处理,保证类型安全
-				rect.height = node.height ?? 0;
-
-				rect.width = node.width ?? 0;
-				rect.left = node.left ?? 0;
-				// top需要减去offsetTop并加上当前滚动距离,保证吸顶准确
-				rect.top = (node.top ?? 0) - props.offsetTop + scrollTop.value;
-			});
+		setTimeout(
+			() => {
+				uni.createSelectorQuery()
+					.in(proxy)
+					.select(".cl-sticky")
+					.boundingClientRect()
+					.exec((nodes) => {
+						if (isEmpty(nodes)) {
+							return;
+						}
+
+						const node = nodes[0] as NodeInfo;
+
+						// 赋值时做空值处理,保证类型安全
+						rect.height = node.height ?? 0;
+
+						rect.width = node.width ?? 0;
+						rect.left = node.left ?? 0;
+						// top需要减去offsetTop并加上当前滚动距离,保证吸顶准确
+						rect.top = (node.top ?? 0) - props.offsetTop + scrollTop.value;
+					});
+			},
+			isHarmony() ? 300 : 0
+		);
 	});
 }
 
@@ -156,10 +161,10 @@ defineExpose({
 
 <style lang="scss" scoped>
 .cl-sticky {
-	@apply relative;
+	@apply relative w-full;
 
 	&.is-active {
-		@apply fixed;
+		@apply fixed w-full;
 	}
 }
 </style>