make all dropdown menus consistent

This commit is contained in:
Henry Jameson 2025-01-13 17:38:44 +02:00
parent 7a3a4e81a1
commit 4887d37110
11 changed files with 601 additions and 460 deletions

View file

@ -9,61 +9,81 @@
<template #content>
<div class="dropdown-menu">
<template v-if="relationship.following">
<button
<div
v-if="relationship.showing_reblogs"
class="dropdown-item menu-item"
class="menu-item dropdown-item"
>
<button
class="main-button"
@click="hideRepeats"
>
{{ $t('user_card.hide_repeats') }}
</button>
<button
</div>
<div
v-if="!relationship.showing_reblogs"
class="dropdown-item menu-item"
class="menu-item dropdown-item"
>
<button
class="main-button"
@click="showRepeats"
>
{{ $t('user_card.show_repeats') }}
</button>
</div>
<div
role="separator"
class="dropdown-divider"
/>
</template>
<UserListMenu :user="user" />
<button
<div
v-if="relationship.followed_by"
class="dropdown-item menu-item"
class="menu-item dropdown-item"
>
<button
class="main-button"
@click="removeUserFromFollowers"
>
{{ $t('user_card.remove_follower') }}
</button>
</div>
<div class="menu-item dropdown-item">
<button
v-if="relationship.blocking"
class="dropdown-item menu-item"
class="main-button"
@click="unblockUser"
>
{{ $t('user_card.unblock') }}
</button>
<button
v-else
class="dropdown-item menu-item"
class="main-button"
@click="blockUser"
>
{{ $t('user_card.block') }}
</button>
</div>
<div class="menu-item dropdown-item">
<button
class="dropdown-item menu-item"
class="main-button"
@click="reportUser"
>
{{ $t('user_card.report') }}
</button>
<button
</div>
<div
v-if="pleromaChatMessagesAvailable"
class="dropdown-item menu-item"
class="menu-item dropdown-item"
>
<button
class="main-button"
@click="openChat"
>
{{ $t('user_card.message') }}
</button>
</div>
</div>
</template>
<template #trigger>
<button class="button-unstyled ellipsis-button">

View file

@ -52,13 +52,15 @@
>
<template #content>
<div class="dropdown-menu">
<div class="menu-item dropdown-item -icon">
<button
class="menu-item dropdown-item dropdown-item-icon"
class="main-button"
@click="deleteMessage"
>
<FAIcon icon="times" /> {{ $t("chats.delete") }}
</button>
</div>
</div>
</template>
<template #trigger>
<button

View file

@ -10,47 +10,59 @@
>
<template #content>
<div class="dropdown-menu">
<span v-if="canGrantRole">
<template v-if="canGrantRole">
<div class="menu-item dropdown-item -icon-space">
<button
class="menu-item dropdown-item menu-item"
class="main-button"
@click="toggleRight(&quot;admin&quot;)"
>
{{ $t(!!user.rights.admin ? 'user_card.admin_menu.revoke_admin' : 'user_card.admin_menu.grant_admin') }}
</button>
</div>
<div class="menu-item dropdown-item -icon-space">
<button
class="menu-item dropdown-item menu-item"
class="main-button"
@click="toggleRight(&quot;moderator&quot;)"
>
{{ $t(!!user.rights.moderator ? 'user_card.admin_menu.revoke_moderator' : 'user_card.admin_menu.grant_moderator') }}
</button>
</div>
<div
v-if="canChangeActivationState || canDeleteAccount"
role="separator"
class="dropdown-divider"
/>
</span>
<button
</template>
<div
v-if="canChangeActivationState"
class="menu-item dropdown-item menu-item"
class="menu-item dropdown-item -icon-space"
>
<button
class="main-button"
@click="toggleActivationStatus()"
>
{{ $t(!!user.deactivated ? 'user_card.admin_menu.activate_account' : 'user_card.admin_menu.deactivate_account') }}
</button>
<button
</div>
<div
v-if="canDeleteAccount"
class="menu-item dropdown-item menu-item"
class="menu-item dropdown-item -icon-space"
>
<button
class="main-button"
@click="deleteUserDialog(true)"
>
{{ $t('user_card.admin_menu.delete_account') }}
</button>
</div>
<template v-if="canUseTagPolicy">
<div
v-if="canUseTagPolicy"
role="separator"
class="dropdown-divider"
/>
<span v-if="canUseTagPolicy">
<div class="menu-item dropdown-item -icon">
<button
class="menu-item dropdown-item menu-item"
class="main-button"
@click="toggleTag(tags.FORCE_NSFW)"
>
<span
@ -59,8 +71,10 @@
/>
{{ $t('user_card.admin_menu.force_nsfw') }}
</button>
</div>
<div class="menu-item dropdown-item -icon">
<button
class="menu-item dropdown-item menu-item"
class="main-button"
@click="toggleTag(tags.STRIP_MEDIA)"
>
<span
@ -69,8 +83,10 @@
/>
{{ $t('user_card.admin_menu.strip_media') }}
</button>
</div>
<div class="menu-item dropdown-item -icon">
<button
class="menu-item dropdown-item menu-item"
class="main-button"
@click="toggleTag(tags.FORCE_UNLISTED)"
>
<span
@ -79,8 +95,10 @@
/>
{{ $t('user_card.admin_menu.force_unlisted') }}
</button>
</div>
<div class="menu-item dropdown-item -icon">
<button
class="menu-item dropdown-item menu-item"
class="main-button"
@click="toggleTag(tags.SANDBOX)"
>
<span
@ -89,9 +107,13 @@
/>
{{ $t('user_card.admin_menu.sandbox') }}
</button>
<button
</div>
<div
v-if="user.is_local"
class="menu-item dropdown-item menu-item"
class="menu-item dropdown-item -icon"
>
<button
class="main-button"
@click="toggleTag(tags.DISABLE_REMOTE_SUBSCRIPTION)"
>
<span
@ -100,9 +122,13 @@
/>
{{ $t('user_card.admin_menu.disable_remote_subscription') }}
</button>
<button
</div>
<div
v-if="user.is_local"
class="menu-item dropdown-item menu-item"
class="menu-item dropdown-item -icon"
>
<button
class="main-button"
@click="toggleTag(tags.DISABLE_ANY_SUBSCRIPTION)"
>
<span
@ -111,9 +137,13 @@
/>
{{ $t('user_card.admin_menu.disable_any_subscription') }}
</button>
<button
</div>
<div
v-if="user.is_local"
class="menu-item dropdown-item menu-item"
class="menu-item dropdown-item -icon"
>
<button
class="main-button"
@click="toggleTag(tags.QUARANTINE)"
>
<span
@ -122,7 +152,8 @@
/>
{{ $t('user_card.admin_menu.quarantine') }}
</button>
</span>
</div>
</template>
</div>
</template>
<template #trigger>

View file

@ -7,8 +7,9 @@
>
<template #content>
<div class="dropdown-menu">
<div class="menu-item dropdown-item -icon">
<button
class="menu-item dropdown-item"
class="main-button"
@click="toggleNotificationFilter('likes')"
>
<span
@ -16,8 +17,10 @@
:class="{ 'menu-checkbox-checked': filters.likes }"
/>{{ $t('settings.notification_visibility_likes') }}
</button>
</div>
<div class="menu-item dropdown-item -icon">
<button
class="menu-item dropdown-item"
class="main-button"
@click="toggleNotificationFilter('repeats')"
>
<span
@ -25,8 +28,10 @@
:class="{ 'menu-checkbox-checked': filters.repeats }"
/>{{ $t('settings.notification_visibility_repeats') }}
</button>
</div>
<div class="menu-item dropdown-item -icon">
<button
class="menu-item dropdown-item"
class="main-button"
@click="toggleNotificationFilter('follows')"
>
<span
@ -34,8 +39,10 @@
:class="{ 'menu-checkbox-checked': filters.follows }"
/>{{ $t('settings.notification_visibility_follows') }}
</button>
</div>
<div class="menu-item dropdown-item -icon">
<button
class="menu-item dropdown-item"
class="main-button"
@click="toggleNotificationFilter('mentions')"
>
<span
@ -43,8 +50,10 @@
:class="{ 'menu-checkbox-checked': filters.mentions }"
/>{{ $t('settings.notification_visibility_mentions') }}
</button>
</div>
<div class="menu-item dropdown-item -icon">
<button
class="menu-item dropdown-item"
class="main-button"
@click="toggleNotificationFilter('statuses')"
>
<span
@ -52,8 +61,10 @@
:class="{ 'menu-checkbox-checked': filters.statuses }"
/>{{ $t('settings.notification_visibility_statuses') }}
</button>
</div>
<div class="menu-item dropdown-item -icon">
<button
class="menu-item dropdown-item"
class="main-button"
@click="toggleNotificationFilter('emojiReactions')"
>
<span
@ -61,8 +72,10 @@
:class="{ 'menu-checkbox-checked': filters.emojiReactions }"
/>{{ $t('settings.notification_visibility_emoji_reactions') }}
</button>
</div>
<div class="menu-item dropdown-item -icon">
<button
class="menu-item dropdown-item"
class="main-button"
@click="toggleNotificationFilter('moves')"
>
<span
@ -70,8 +83,10 @@
:class="{ 'menu-checkbox-checked': filters.moves }"
/>{{ $t('settings.notification_visibility_moves') }}
</button>
</div>
<div class="menu-item dropdown-item -icon">
<button
class="menu-item dropdown-item"
class="main-button"
@click="toggleNotificationFilter('polls')"
>
<span
@ -80,6 +95,7 @@
/>{{ $t('settings.notification_visibility_polls') }}
</button>
</div>
</div>
</template>
<template #trigger>
<button class="filter-trigger-button button-unstyled">

View file

@ -55,22 +55,6 @@
a.dropdown-item,
button.dropdown-item,
.dropdown-item:not(button, a) {
&.disabled {
cursor: not-allowed;
}
&:not(.disabled) {
cursor: pointer;
}
.main-button,
.extra-button {
display: grid;
box-sizing: border-box;
border: none;
align-items: center;
}
.extra-button {
border-left: 1px solid var(--icon);
padding-left: calc(var(--__horizontal-gap) - 1px);
@ -115,10 +99,31 @@
}
}
.main-button,
.extra-button {
display: grid;
box-sizing: border-box;
align-items: center;
&.disabled {
cursor: not-allowed;
}
&:not(.disabled) {
cursor: pointer;
}
}
&.-icon {
.main-button {
grid-template-columns: var(--__line-height) 1fr;
}
}
&.-icon-space {
.main-button {
padding-left: calc(var(--__line-height) + var(--__horizontal-gap) * 2);
}
}
}
}

View file

@ -14,9 +14,10 @@
v-if="loggedIn"
role="group"
>
<div class="menu-item dropdown-item -icon">
<button
v-if="!conversation"
class="menu-item dropdown-item"
class="main-button"
:aria-checked="replyVisibilityAll"
role="menuitemradio"
@click="replyVisibilityAll = true"
@ -27,9 +28,13 @@
:aria-hidden="true"
/>{{ $t('settings.reply_visibility_all') }}
</button>
<button
</div>
<div
v-if="!conversation"
class="menu-item dropdown-item"
class="menu-item dropdown-item -icon"
>
<button
class="main-button"
:aria-checked="replyVisibilityFollowing"
role="menuitemradio"
@click="replyVisibilityFollowing = true"
@ -40,9 +45,13 @@
:aria-hidden="true"
/>{{ $t('settings.reply_visibility_following_short') }}
</button>
<button
</div>
<div
v-if="!conversation"
class="menu-item dropdown-item"
class="menu-item dropdown-item -icon"
>
<button
class="main-button"
:aria-checked="replyVisibilitySelf"
role="menuitemradio"
@click="replyVisibilitySelf = true"
@ -53,14 +62,16 @@
:aria-hidden="true"
/>{{ $t('settings.reply_visibility_self_short') }}
</button>
</div>
<div
v-if="!conversation"
role="separator"
class="dropdown-divider"
/>
</div>
<div class="menu-item dropdown-item -icon">
<button
class="menu-item dropdown-item"
class="main-button"
role="menuitemcheckbox"
:aria-checked="muteBotStatuses"
@click="muteBotStatuses = !muteBotStatuses"
@ -71,8 +82,10 @@
:aria-hidden="true"
/>{{ $t('settings.mute_bot_posts') }}
</button>
</div>
<div class="menu-item dropdown-item -icon">
<button
class="menu-item dropdown-item"
class="main-button"
role="menuitemcheckbox"
:aria-checked="muteSensitiveStatuses"
@click="muteSensitiveStatuses = !muteSensitiveStatuses"
@ -83,8 +96,10 @@
:aria-hidden="true"
/>{{ $t('settings.mute_sensitive_posts') }}
</button>
</div>
<div class="menu-item dropdown-item -icon">
<button
class="menu-item dropdown-item"
class="main-button"
role="menuitemcheckbox"
:aria-checked="hideMedia"
@click="hideMedia = !hideMedia"
@ -95,8 +110,10 @@
:aria-hidden="true"
/>{{ $t('settings.hide_media_previews') }}
</button>
</div>
<div class="menu-item dropdown-item -icon">
<button
class="menu-item dropdown-item"
class="main-button"
role="menuitemcheckbox"
:aria-checked="hideMutedPosts"
@click="hideMutedPosts = !hideMutedPosts"
@ -107,14 +124,17 @@
:aria-hidden="true"
/>{{ $t('settings.hide_all_muted_posts') }}
</button>
</div>
<div class="menu-item dropdown-item -icon">
<button
class="menu-item dropdown-item -icon"
class="main-button"
role="menuitem"
@click="openTab('filtering')"
>
<FAIcon icon="font" />{{ $t('settings.word_filter_and_more') }}
<FAIcon fixed-width icon="font" />{{ $t('settings.word_filter_and_more') }}
</button>
</div>
</div>
</template>
<template #trigger>
<FAIcon icon="filter" />

View file

@ -11,8 +11,9 @@
role="menu"
>
<div role="group">
<div class="menu-item dropdown-item -icon">
<button
class="menu-item dropdown-item"
class="main-button"
:aria-checked="conversationDisplay === 'tree'"
role="menuitemradio"
@click="conversationDisplay = 'tree'"
@ -24,10 +25,13 @@
/><FAIcon
icon="folder-tree"
:aria-hidden="true"
fixed-width
/> {{ $t('settings.conversation_display_tree_quick') }}
</button>
</div>
<div class="menu-item dropdown-item -icon">
<button
class="menu-item dropdown-item"
class="main-button"
:aria-checked="conversationDisplay === 'linear'"
role="menuitemradio"
@click="conversationDisplay = 'linear'"
@ -39,28 +43,35 @@
/><FAIcon
icon="list"
:aria-hidden="true"
fixed-width
/> {{ $t('settings.conversation_display_linear_quick') }}
</button>
</div>
</div>
<div
role="separator"
class="dropdown-divider"
/>
<div class="menu-item dropdown-item -icon">
<button
class="menu-item dropdown-item"
class="main-button"
role="menuitemcheckbox"
:aria-checked="showUserAvatars"
@click="showUserAvatars = !showUserAvatars"
>
<span
class="input menu-checkbox"
class="main-button"
:class="{ 'menu-checkbox-checked': showUserAvatars }"
:aria-hidden="true"
/>{{ $t('settings.mention_link_show_avatar_quick') }}
</button>
<button
</div>
<div
v-if="!conversation"
class="menu-item dropdown-item"
class="menu-item dropdown-item -icon"
>
<button
class="main-button"
role="menuitemcheckbox"
:aria-checked="autoUpdate"
@click="autoUpdate = !autoUpdate"
@ -71,9 +82,13 @@
:aria-hidden="true"
/>{{ $t('settings.auto_update') }}
</button>
<button
</div>
<div
v-if="!conversation"
class="menu-item dropdown-item"
class="menu-item dropdown-item -icon"
>
<button
class="main-button"
role="menuitemcheckbox"
:aria-checked="collapseWithSubjects"
@click="collapseWithSubjects = !collapseWithSubjects"
@ -84,14 +99,20 @@
:aria-hidden="true"
/>{{ $t('settings.collapse_subject') }}
</button>
</div>
<div class="menu-item dropdown-item -icon">
<button
class="menu-item dropdown-item -icon"
class="main-button"
role="menuitem"
@click="openTab('general')"
>
<FAIcon icon="wrench" />{{ $t('settings.more_settings') }}
<FAIcon
icon="wrench"
fixed-width
/>{{ $t('settings.more_settings') }}
</button>
</div>
</div>
</template>
<template #trigger>
<FAIcon icon="bars" />

View file

@ -115,13 +115,17 @@
>
<template #content="{close}">
<div class="dropdown-menu">
<button
<div
v-for="ref in frontend.refs"
:key="ref"
class="menu-item dropdown-item"
>
<button
class="main-button"
@click.prevent="update(frontend, ref)"
@click="close"
>
<span>
<i18n-t
keypath="admin_dash.frontend.install_version"
scope="global"
@ -130,8 +134,10 @@
<code>{{ ref }}</code>
</template>
</i18n-t>
</span>
</button>
</div>
</div>
</template>
<template #trigger>
<button
@ -175,13 +181,17 @@
>
<template #content="{close}">
<div class="dropdown-menu">
<button
<div
class="menu-item dropdown-item"
v-for="ref in frontend.installedRefs || frontend.refs"
:key="ref"
class="menu-item dropdown-item"
>
<button
class="main-button"
@click.prevent="setDefault(frontend, ref)"
@click="close"
>
<span>
<i18n-t
keypath="admin_dash.frontend.set_default_version"
scope="global"
@ -190,8 +200,10 @@
<code>{{ ref }}</code>
</template>
</i18n-t>
</span>
</button>
</div>
</div>
</template>
<template #trigger>
<button

View file

@ -69,8 +69,9 @@
</template>
<template #content="{close}">
<div class="dropdown-menu">
<div class="menu-item dropdown-item -icon">
<button
class="menu-item dropdown-item -icon"
class="main-button"
@click.prevent="backup"
@click="close"
>
@ -79,8 +80,10 @@
fixed-width
/><span>{{ $t("settings.file_export_import.backup_settings") }}</span>
</button>
</div>
<div class="menu-item dropdown-item -icon">
<button
class="menu-item dropdown-item -icon"
class="main-button"
@click.prevent="backupWithTheme"
@click="close"
>
@ -89,8 +92,10 @@
fixed-width
/><span>{{ $t("settings.file_export_import.backup_settings_theme") }}</span>
</button>
</div>
<div class="menu-item dropdown-item -icon">
<button
class="menu-item dropdown-item -icon"
class="main-button"
@click.prevent="restore"
@click="close"
>
@ -100,6 +105,7 @@
/><span>{{ $t("settings.file_export_import.restore_settings") }}</span>
</button>
</div>
</div>
</template>
</Popover>

View file

@ -1,9 +1,12 @@
<template>
<div class="dropdown-menu">
<button
<div
v-for="folder in folders"
:key="folder.id"
class="menu-item dropdown-item -icon"
>
<button
class="main-button"
@click="toggleFolder(folder.id)"
>
<span
@ -13,6 +16,7 @@
{{ folder.name }}
</button>
</div>
</div>
</template>
<script src="./status_bookmark_folder_menu.js"></script>

View file

@ -8,10 +8,13 @@
>
<template #content>
<div class="dropdown-menu">
<button
<div
v-for="list in lists"
:key="list.id"
class="menu-item dropdown-item -icon"
>
<button
class="main-button"
@click="toggleList(list.id)"
>
<span
@ -21,6 +24,7 @@
{{ list.title }}
</button>
</div>
</div>
</template>
<template #trigger>
<span class="main-button">