优化 头部便签管理点击区域;

补充注释;
This commit is contained in:
User
2025-10-13 10:48:18 +08:00
parent 27133aa107
commit 2e933ece94
13 changed files with 523 additions and 175 deletions

View File

@@ -79,13 +79,15 @@ const isSlided = ref(false) // 是否已经滑动到阈值
const formattedDate = computed(() => {
// 直接返回已经格式化的日期字符串
// 日期格式化已在父组件中完成
return props.date
})
// 处理显示内容过滤HTML标签并只显示第一行
// 用于在便签列表中显示便签的预览内容
const displayContent = computed(() => {
console.log('NoteItem content:', props.content)
// 过滤HTML标签
// 过滤HTML标签,只保留纯文本内容
let text = props.content.replace(/<[^>]*>/g, '')
console.log('NoteItem text without HTML:', text)
@@ -100,8 +102,11 @@ const displayContent = computed(() => {
})
// 滑动阈值(删除按钮宽度)
// 当滑动距离超过此值时,显示删除按钮
const SLIDE_THRESHOLD = 64 // 4rem 转换为 px
// 处理便签点击事件
// 只有在未滑动状态下才触发点击事件,避免与滑动操作冲突
const handlePress = () => {
// 只有在未滑动状态下才触发点击事件
if (slideOffset.value === 0 && props.onPress) {
@@ -109,31 +114,39 @@ const handlePress = () => {
}
}
// 处理星标切换事件
// 点击星标图标时调用父组件传递的回调函数
const handleStarToggle = () => {
if (props.onStarToggle) {
props.onStarToggle()
}
}
// 处理置顶切换事件
// 点击置顶图标时调用父组件传递的回调函数
const handleTopToggle = () => {
if (props.onTopToggle) {
props.onTopToggle()
}
}
// 处理删除事件
// 点击删除按钮时调用父组件传递的回调函数
const handleDelete = () => {
if (props.onDelete) {
props.onDelete()
}
}
// 触摸开始
// 触摸开始事件处理函数
// 记录触摸开始时的X坐标用于计算滑动距离
const handleTouchStart = e => {
// 重置滑动状态
startX.value = e.touches[0].clientX
}
// 触摸移动
// 触摸移动事件处理函数
// 根据手指移动距离计算便签条的水平偏移量
const handleTouchMove = e => {
if (!startX.value) return
@@ -147,15 +160,15 @@ const handleTouchMove = e => {
// 设置滑动状态
isSliding.value = true
// 应用阻尼效果
// 应用阻尼效果,使超过阈值后的滑动更加困难
let offset = 0
if (diffX <= SLIDE_THRESHOLD) {
// 线性滑动
// 线性滑动,在阈值内正常滑动
offset = diffX
} else {
// 超过阈值后应用阻尼效果
// 超过阈值后应用阻尼效果,增加滑动阻力
const excess = diffX - SLIDE_THRESHOLD
offset = SLIDE_THRESHOLD + excess * 0.03 // 0.3 为阻尼系数
offset = SLIDE_THRESHOLD + excess * 0.03 // 0.03 为阻尼系数
}
slideOffset.value = offset
@@ -171,12 +184,14 @@ const handleTouchMove = e => {
}
}
// 触摸结束
// 触摸结束事件处理函数
// 根据滑动距离决定便签条的最终位置
const handleTouchEnd = () => {
if (!startX.value) return
// 如果滑动超过阈值,保持滑出状态;否则回弹
if (slideOffset.value >= SLIDE_THRESHOLD) {
// 保持滑出状态,显示删除按钮
slideOffset.value = SLIDE_THRESHOLD
isSlided.value = true
} else {