You've already forked SmartisanNote.Remake
优化 头部便签管理点击区域;
补充注释;
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user