Skip to content

Commit ea2f187

Browse files
fix: disable favorite toggle during sort mode and fix drag rebound issue (#12026)
* Optimize sorting-related issues, disable the "favorite stars" function during sorting, and optimize sorting behavior caused by DOM conflicts. * fix: prevent app icon from being squished in detail drawer
1 parent 8352494 commit ea2f187

4 files changed

Lines changed: 17 additions & 1 deletion

File tree

frontend/src/views/app-store/detail/index.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ defineExpose({
168168
}
169169
170170
.icon {
171+
flex-shrink: 0;
171172
width: 180px;
172173
height: 180px;
173174
background-color: #ffffff;

frontend/src/views/app-store/installed/app/card.vue

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
:installed="installed"
1616
:mode="mode"
1717
:defaultLink="defaultLink"
18+
:sortMode="sortMode"
1819
@open-backups="$emit('openBackups')"
1920
@open-log="$emit('openLog')"
2021
@open-terminal="$emit('openTerminal')"
@@ -51,6 +52,7 @@ interface Props {
5152
mode: string;
5253
defaultLink: string;
5354
currentNode: string;
55+
sortMode?: boolean;
5456
}
5557
defineProps<Props>();
5658

frontend/src/views/app-store/installed/app/header.vue

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,18 @@
8686
size="large"
8787
icon="StarFilled"
8888
type="warning"
89+
:disabled="sortMode"
8990
@click="$emit('favoriteInstall')"
9091
></el-button>
9192
</el-tooltip>
9293
<el-tooltip effect="dark" :content="$t('website.favorite')" placement="top-start" v-else>
93-
<el-button link icon="Star" type="info" @click="$emit('favoriteInstall')"></el-button>
94+
<el-button
95+
link
96+
icon="Star"
97+
type="info"
98+
:disabled="sortMode"
99+
@click="$emit('favoriteInstall')"
100+
></el-button>
94101
</el-tooltip>
95102
</span>
96103
</div>
@@ -151,6 +158,7 @@ import { App } from '@/api/interface/app';
151158
interface Props {
152159
installed: App.AppInstalled;
153160
mode: string;
161+
sortMode?: boolean;
154162
}
155163
defineProps<Props>();
156164

frontend/src/views/app-store/installed/index.vue

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@
6868
:mode="mode"
6969
:defaultLink="defaultLink"
7070
:currentNode="currentNode"
71+
:sortMode="sortMode"
7172
@open-detail="openDetail(installed.appKey)"
7273
@open-backups="openBackups(installed)"
7374
@open-log="openLog(installed)"
@@ -469,6 +470,10 @@ const enterSortMode = async () => {
469470
return fromFav === toFav;
470471
},
471472
onEnd: (evt: any) => {
473+
const el = evt.from;
474+
el.removeChild(evt.item);
475+
el.insertBefore(evt.item, el.children[evt.oldIndex] || null);
476+
472477
const list = [...data.value];
473478
const [moved] = list.splice(evt.oldIndex, 1);
474479
list.splice(evt.newIndex, 0, moved);

0 commit comments

Comments
 (0)