mirror of
https://github.com/misskey-dev/misskey.git
synced 2026-05-21 01:45:33 +02:00
Merge branch 'develop' into copilot/add-user-mute-settings
This commit is contained in:
@@ -608,11 +608,30 @@ async function toggleReactionAcceptance() {
|
||||
//#region その他の設定メニューpopup
|
||||
function showOtherSettings() {
|
||||
let reactionAcceptanceIcon = 'ti ti-icons';
|
||||
let reactionAcceptanceCaption = '';
|
||||
|
||||
if (reactionAcceptance.value === 'likeOnly') {
|
||||
reactionAcceptanceIcon = 'ti ti-heart _love';
|
||||
} else if (reactionAcceptance.value === 'likeOnlyForRemote') {
|
||||
reactionAcceptanceIcon = 'ti ti-heart-plus';
|
||||
switch (reactionAcceptance.value) {
|
||||
case 'likeOnly':
|
||||
reactionAcceptanceIcon = 'ti ti-heart _love';
|
||||
reactionAcceptanceCaption = i18n.ts.likeOnly;
|
||||
break;
|
||||
|
||||
case 'likeOnlyForRemote':
|
||||
reactionAcceptanceIcon = 'ti ti-heart-plus';
|
||||
reactionAcceptanceCaption = i18n.ts.likeOnlyForRemote;
|
||||
break;
|
||||
|
||||
case 'nonSensitiveOnly':
|
||||
reactionAcceptanceCaption = i18n.ts.nonSensitiveOnly;
|
||||
break;
|
||||
|
||||
case 'nonSensitiveOnlyForLocalLikeOnlyForRemote':
|
||||
reactionAcceptanceCaption = i18n.ts.nonSensitiveOnlyForLocalLikeOnlyForRemote;
|
||||
break;
|
||||
|
||||
default:
|
||||
reactionAcceptanceCaption = i18n.ts.all;
|
||||
break;
|
||||
}
|
||||
|
||||
const menuItems = [{
|
||||
@@ -624,6 +643,7 @@ function showOtherSettings() {
|
||||
}, { type: 'divider' }, {
|
||||
icon: reactionAcceptanceIcon,
|
||||
text: i18n.ts.reactionAcceptance,
|
||||
caption: reactionAcceptanceCaption,
|
||||
action: () => {
|
||||
toggleReactionAcceptance();
|
||||
},
|
||||
@@ -1465,6 +1485,7 @@ defineExpose({
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
margin: auto;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.headerRight {
|
||||
|
||||
@@ -5,31 +5,31 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
<template>
|
||||
<svg v-if="type === 'info'" :class="[$style.icon, $style.info]" viewBox="0 0 160 160">
|
||||
<path d="M80,108L80,72" style="--l:37;" :class="[$style.line, $style.animLine]"/>
|
||||
<path d="M80,108L80,72" pathLength="1" :class="[$style.line, $style.animLine]"/>
|
||||
<path d="M80,52L80,52" :class="[$style.line, $style.animFade]"/>
|
||||
<circle cx="80" cy="80" r="56" style="--l:350;" :class="[$style.line, $style.animCircle]"/>
|
||||
<circle cx="80" cy="80" r="56" pathLength="1" :class="[$style.line, $style.animCircle]"/>
|
||||
</svg>
|
||||
<svg v-else-if="type === 'question'" :class="[$style.icon, $style.question]" viewBox="0 0 160 160">
|
||||
<path d="M80,92L79.991,84C88.799,83.98 96,76.962 96,68C96,59.038 88.953,52 79.991,52C71.03,52 64,59.038 64,68" style="--l:85;" :class="[$style.line, $style.animLine]"/>
|
||||
<path d="M80,92L79.991,84C88.799,83.98 96,76.962 96,68C96,59.038 88.953,52 79.991,52C71.03,52 64,59.038 64,68" pathLength="1" :class="[$style.line, $style.animLine]"/>
|
||||
<path d="M80,108L80,108" :class="[$style.line, $style.animFade]"/>
|
||||
<circle cx="80" cy="80" r="56" style="--l:350;" :class="[$style.line, $style.animCircle]"/>
|
||||
<circle cx="80" cy="80" r="56" pathLength="1" :class="[$style.line, $style.animCircle]"/>
|
||||
</svg>
|
||||
<svg v-else-if="type === 'success'" :class="[$style.icon, $style.success]" viewBox="0 0 160 160">
|
||||
<path d="M62,80L74,92L98,68" style="--l:50;" :class="[$style.line, $style.animLine]"/>
|
||||
<circle cx="80" cy="80" r="56" style="--l:350;" :class="[$style.line, $style.animCircle]"/>
|
||||
<path d="M62,80L74,92L98,68" pathLength="1" :class="[$style.line, $style.animLine]"/>
|
||||
<circle cx="80" cy="80" r="56" pathLength="1" :class="[$style.line, $style.animCircle]"/>
|
||||
</svg>
|
||||
<svg v-else-if="type === 'warn'" :class="[$style.icon, $style.warn]" viewBox="0 0 160 160">
|
||||
<path d="M80,64L80,88" style="--l:27;" :class="[$style.line, $style.animLine]"/>
|
||||
<path d="M80,64L80,88" pathLength="1" :class="[$style.line, $style.animLine]"/>
|
||||
<path d="M80,108L80,108" :class="[$style.line, $style.animFade]"/>
|
||||
<path d="M92,28L144,116C148.709,124.65 144.083,135.82 136,136L24,136C15.917,135.82 11.291,124.65 16,116L68,28C73.498,19.945 86.771,19.945 92,28Z" style="--l:395;" :class="[$style.line, $style.animLine]"/>
|
||||
<path d="M92,28L144,116C148.709,124.65 144.083,135.82 136,136L24,136C15.917,135.82 11.291,124.65 16,116L68,28C73.498,19.945 86.771,19.945 92,28Z" pathLength="1" :class="[$style.line, $style.animLine]"/>
|
||||
</svg>
|
||||
<svg v-else-if="type === 'error'" :class="[$style.icon, $style.error]" viewBox="0 0 160 160">
|
||||
<path d="M63,63L96,96" style="--l:47;--duration:0.3s;" :class="[$style.line, $style.animLine]"/>
|
||||
<path d="M96,63L63,96" style="--l:47;--duration:0.3s;--delay:0.2s;" :class="[$style.line, $style.animLine]"/>
|
||||
<circle cx="80" cy="80" r="56" style="--l:350;" :class="[$style.line, $style.animCircle]"/>
|
||||
<path d="M63,63L96,96" pathLength="1" style="--duration:0.3s;" :class="[$style.line, $style.animLine]"/>
|
||||
<path d="M96,63L63,96" pathLength="1" style="--duration:0.3s;--delay:0.2s;" :class="[$style.line, $style.animLine]"/>
|
||||
<circle cx="80" cy="80" r="56" pathLength="1" :class="[$style.line, $style.animCircle]"/>
|
||||
</svg>
|
||||
<svg v-else-if="type === 'waiting'" :class="[$style.icon, $style.waiting]" viewBox="0 0 160 160">
|
||||
<circle cx="80" cy="80" r="56" style="--l:350;" :class="[$style.line, $style.animCircleWaiting]"/>
|
||||
<circle cx="80" cy="80" r="56" pathLength="1" :class="[$style.line, $style.animCircleWaiting]"/>
|
||||
<circle cx="80" cy="80" r="56" style="opacity: 0.25;" :class="[$style.line]"/>
|
||||
</svg>
|
||||
</template>
|
||||
@@ -80,15 +80,15 @@ const props = defineProps<{
|
||||
}
|
||||
|
||||
.animLine {
|
||||
stroke-dasharray: var(--l);
|
||||
stroke-dashoffset: var(--l);
|
||||
stroke-dasharray: 1;
|
||||
stroke-dashoffset: 1;
|
||||
animation: line var(--duration, 0.5s) cubic-bezier(0,0,.25,1) 1 forwards;
|
||||
animation-delay: var(--delay, 0s);
|
||||
}
|
||||
|
||||
.animCircle {
|
||||
stroke-dasharray: var(--l);
|
||||
stroke-dashoffset: var(--l);
|
||||
stroke-dasharray: 1;
|
||||
stroke-dashoffset: 1;
|
||||
animation: line var(--duration, 0.5s) cubic-bezier(0,0,.25,1) 1 forwards;
|
||||
animation-delay: var(--delay, 0s);
|
||||
transform-origin: center;
|
||||
@@ -96,8 +96,8 @@ const props = defineProps<{
|
||||
}
|
||||
|
||||
.animCircleWaiting {
|
||||
stroke-dasharray: var(--l);
|
||||
stroke-dashoffset: calc(var(--l) / 1.5);
|
||||
stroke-dasharray: 1;
|
||||
stroke-dashoffset: calc(1 / 1.5);
|
||||
animation: waiting 0.75s linear infinite;
|
||||
transform-origin: center;
|
||||
}
|
||||
@@ -110,7 +110,7 @@ const props = defineProps<{
|
||||
|
||||
@keyframes line {
|
||||
0% {
|
||||
stroke-dashoffset: var(--l);
|
||||
stroke-dashoffset: 1;
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
|
||||
@@ -600,16 +600,12 @@ const headerActions = computed(() => [{
|
||||
</script>
|
||||
|
||||
<style module lang="scss">
|
||||
.violationRow {
|
||||
background-color: var(--MI_THEME-infoWarnBg);
|
||||
}
|
||||
|
||||
.changedRow {
|
||||
background-color: var(--MI_THEME-infoBg);
|
||||
background-color: var(--MI_THEME-infoBg) !important;
|
||||
}
|
||||
|
||||
.editedRow {
|
||||
background-color: var(--MI_THEME-infoBg);
|
||||
.violationRow {
|
||||
background-color: var(--MI_THEME-infoWarnBg) !important;
|
||||
}
|
||||
|
||||
.main {
|
||||
|
||||
@@ -419,7 +419,7 @@ onMounted(async () => {
|
||||
}
|
||||
|
||||
.changedRow {
|
||||
background-color: var(--MI_THEME-infoBg);
|
||||
background-color: var(--MI_THEME-infoBg) !important;
|
||||
}
|
||||
|
||||
.searchArea {
|
||||
|
||||
@@ -447,7 +447,6 @@ const headerTabs = computed(() => room.value ? [{
|
||||
|
||||
const headerActions = computed<PageHeaderItem[]>(() => [{
|
||||
icon: 'ti ti-dots',
|
||||
text: '',
|
||||
handler: showMenu,
|
||||
}]);
|
||||
|
||||
|
||||
@@ -465,6 +465,7 @@ definePage(() => ({
|
||||
}
|
||||
|
||||
.pageContent {
|
||||
contain: content;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
|
||||
@@ -163,7 +163,7 @@ async function chooseChannel(ev: MouseEvent): Promise<void> {
|
||||
type: 'link',
|
||||
icon: 'ti ti-plus',
|
||||
text: i18n.ts.createNew,
|
||||
to: '/channels',
|
||||
to: '/channels/new',
|
||||
},
|
||||
];
|
||||
os.popupMenu(items.filter(i => i != null), ev.currentTarget ?? ev.target);
|
||||
|
||||
@@ -186,6 +186,7 @@ export async function restoreFromCloudBackup() {
|
||||
|
||||
const select = await os.select({
|
||||
title: i18n.ts._preferencesBackup.selectBackupToRestore,
|
||||
text: 'ℹ️ ' + i18n.ts._preferencesProfile.shareSameProfileBetweenDevicesIsNotRecommended + ' ' + i18n.ts._preferencesProfile.useSyncBetweenDevicesOptionIfYouWantToSyncSetting,
|
||||
items: backups.map(backup => ({
|
||||
label: backup.name,
|
||||
value: backup.name,
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
*/
|
||||
|
||||
export type PageHeaderItem = {
|
||||
text: string;
|
||||
icon: string;
|
||||
highlighted?: boolean;
|
||||
handler: (ev: MouseEvent) => void;
|
||||
text?: string;
|
||||
icon: string;
|
||||
highlighted?: boolean;
|
||||
handler: (ev: MouseEvent) => void;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user