diff --git a/src/App.vue b/src/App.vue index 3d140165..6ab140c4 100644 --- a/src/App.vue +++ b/src/App.vue @@ -50,7 +50,7 @@ async function init() { console.time() store.init().then(() => { store.load = true - console.timeEnd() + // console.timeEnd() }) await settingStore.init() setTheme(settingStore.theme) diff --git a/src/assets/css/style.scss b/src/assets/css/style.scss index 2fbf14dc..65b05c2d 100644 --- a/src/assets/css/style.scss +++ b/src/assets/css/style.scss @@ -371,6 +371,20 @@ footer { } } + &.border { + .item-title { + transition: all .3s; + cursor: pointer; + border-bottom: 2px solid transparent; + } + + &:hover { + .item-title { + border-bottom: 2px solid gray !important; + } + } + } + .item-title { display: flex; align-items: center; @@ -387,11 +401,12 @@ footer { color: gray; } } -} -.item-sub-title { - font-size: 16rem; - color: gray; + .item-sub-title { + font-size: 16rem; + color: gray; + } + } .text-shadow { diff --git a/src/components/dialog/Dialog.vue b/src/components/dialog/Dialog.vue index 49ee3b4f..3cd6d372 100644 --- a/src/components/dialog/Dialog.vue +++ b/src/components/dialog/Dialog.vue @@ -20,6 +20,7 @@ export interface ModalProps { cancelButtonText?: string, keyboard?: boolean, confirm?: any + beforeClose?: any } const props = withDefaults(defineProps(), { @@ -49,10 +50,15 @@ let modalRef = $ref(null) const runtimeStore = useRuntimeStore() let id = Date.now() -function close() { +async function close() { if (!visible) { return } + if (props.beforeClose) { + if (!await props.beforeClose()) { + return + } + } //记录停留时间,避免时间太短,弹框闪烁 let stayTime = Date.now() - openTime; let closeTime = 300; @@ -110,11 +116,11 @@ onUnmounted(() => { } }) -useEventListener('keyup', (e: KeyboardEvent) => { +useEventListener('keyup', async (e: KeyboardEvent) => { if (e.key === 'Escape' && props.keyboard) { let lastItem = runtimeStore.modalList[runtimeStore.modalList.length - 1] if (lastItem?.id === id) { - close() + await cancel() } } }) @@ -125,13 +131,13 @@ async function ok() { await props.confirm() confirmButtonLoading = false } - await close() emit('ok') + await close() } async function cancel() { - await close() emit('cancel') + await close() } diff --git a/src/components/list2/ArticleList4.vue b/src/components/list2/ArticleList4.vue index 07032863..1250a08e 100644 --- a/src/components/list2/ArticleList4.vue +++ b/src/components/list2/ArticleList4.vue @@ -11,65 +11,31 @@ import BaseList from "@/components/list2/BaseList.vue"; const props = withDefaults(defineProps<{ list: Article[], - isActive?: boolean showTranslate?: boolean }>(), { list: [], - activeIndex: -1, - isActive: false, - showTranslate: true + showTranslate: true, }) const emit = defineEmits<{ - click: [val: { data: Article, index: number }], - delSelectItem: [], - 'update:searchKey': [val: string], - 'update:list': [list: Article[]], + click: [val: { item: Article, index: number }], }>() let searchKey = $ref('') -let localList = $computed({ - get() { - if (searchKey) { - return props.list.filter((item: Article) => { - //把搜索内容,分词之后,判断是否有这个词,比单纯遍历包含体验更好 - return searchKey.toLowerCase().split(' ').filter(v => v).some(value => { - return item.title.toLowerCase().includes(value) || item.titleTranslate.toLowerCase().includes(value) - }) +let localList = $computed(() => { + if (searchKey) { + return props.list.filter((item: Article) => { + //把搜索内容,分词之后,判断是否有这个词,比单纯遍历包含体验更好 + return searchKey.toLowerCase().split(' ').filter(v => v).some(value => { + return item.title.toLowerCase().includes(value) || item.titleTranslate.toLowerCase().includes(value) }) - } else { - return props.list - } - }, - set(newValue) { - emit('update:list', newValue) + }) + } else { + return props.list } }) -const settingStore = useSettingStore() - -const listRef: HTMLElement = $ref(null as any) - -// function scrollViewToCenter(index: number) { -// if (index === -1) return -// listRef.children[index + 1]?.scrollIntoView({block: 'center', behavior: 'smooth'}) -// } -// -// watch(() => props.activeIndex, (n: any) => { -// if (settingStore.showPanel) { -// scrollViewToCenter(n) -// } -// }) -// -// watch(() => props.isActive, (n: boolean) => { -// setTimeout(() => { -// if (n) scrollViewToCenter(props.activeIndex) -// }, 300) -// }) - -// watch(() => props.list, () => { -// // listRef.scrollTo(0, 0) -// }) +const listRef: any = $ref(null as any) function scrollToBottom() { listRef?.scrollToBottom() @@ -79,10 +45,6 @@ function scrollToItem(index: number) { listRef?.scrollToItem(index) } -let attr = useAttrs() -onMounted(() => { - console.log('atr', attr) -}) defineExpose({scrollToBottom, scrollToItem}) @@ -92,20 +54,23 @@ defineExpose({scrollToBottom, scrollToItem}) - -