2020-07-09 17:24:28 +02:00
|
|
|
<template>
|
2021-08-05 11:01:40 +02:00
|
|
|
<article class="container post" v-if="post">
|
2021-06-15 17:25:33 +02:00
|
|
|
<header>
|
|
|
|
<div class="banner-container">
|
2021-06-29 18:38:38 +02:00
|
|
|
<lazy-image-wrapper :picture="post.picture" />
|
2021-06-15 17:25:33 +02:00
|
|
|
</div>
|
|
|
|
<div class="heading-section">
|
2021-11-07 14:59:20 +01:00
|
|
|
<div class="heading-wrapper" dir="auto">
|
2021-06-15 17:25:33 +02:00
|
|
|
<div class="title-metadata">
|
2021-11-02 19:47:54 +01:00
|
|
|
<div class="title-wrapper">
|
|
|
|
<b-tag
|
|
|
|
class="mr-2"
|
|
|
|
type="is-warning"
|
|
|
|
size="is-medium"
|
|
|
|
v-if="post.draft"
|
|
|
|
>{{ $t("Draft") }}</b-tag
|
|
|
|
>
|
|
|
|
<h1 class="title">{{ post.title }}</h1>
|
|
|
|
</div>
|
2021-06-15 17:25:33 +02:00
|
|
|
<p class="metadata">
|
|
|
|
<router-link
|
|
|
|
slot="author"
|
|
|
|
:to="{
|
|
|
|
name: RouteName.GROUP,
|
|
|
|
params: {
|
|
|
|
preferredUsername: usernameWithDomain(post.attributedTo),
|
|
|
|
},
|
|
|
|
}"
|
|
|
|
>
|
|
|
|
<actor-inline :actor="post.attributedTo" />
|
|
|
|
</router-link>
|
|
|
|
<span class="published has-text-grey-dark" v-if="!post.draft">
|
|
|
|
<b-icon icon="clock" size="is-small" />
|
|
|
|
{{ post.publishAt | formatDateTimeString }}
|
|
|
|
</span>
|
2021-07-23 15:47:34 +02:00
|
|
|
<span
|
|
|
|
class="published has-text-grey-dark"
|
|
|
|
:title="
|
|
|
|
$options.filters.formatDateTimeString(
|
|
|
|
post.updatedAt,
|
2021-10-11 18:29:01 +02:00
|
|
|
undefined,
|
2021-07-23 15:47:34 +02:00
|
|
|
true,
|
|
|
|
'short'
|
|
|
|
)
|
|
|
|
"
|
|
|
|
v-else
|
|
|
|
>
|
|
|
|
<b-icon icon="clock" size="is-small" />
|
|
|
|
{{
|
|
|
|
$t("Edited {relative_time} ago", {
|
|
|
|
relative_time: formatDistanceToNowStrict(
|
|
|
|
new Date(post.updatedAt),
|
|
|
|
{
|
|
|
|
locale: $dateFnsLocale,
|
|
|
|
}
|
|
|
|
),
|
|
|
|
})
|
|
|
|
}}
|
|
|
|
</span>
|
2021-06-15 17:25:33 +02:00
|
|
|
<span
|
2021-11-02 19:47:54 +01:00
|
|
|
v-if="post.visibility === PostVisibility.UNLISTED"
|
|
|
|
class="has-text-grey-dark"
|
|
|
|
>
|
|
|
|
<b-icon icon="link" size="is-small" />
|
|
|
|
{{ $t("Accessible only by link") }}
|
|
|
|
</span>
|
|
|
|
<span
|
|
|
|
v-else-if="post.visibility === PostVisibility.PRIVATE"
|
2021-06-15 17:25:33 +02:00
|
|
|
class="has-text-grey-dark"
|
|
|
|
>
|
|
|
|
<b-icon icon="lock" size="is-small" />
|
|
|
|
{{
|
|
|
|
$t("Accessible only to members", {
|
|
|
|
group: post.attributedTo.name,
|
|
|
|
})
|
|
|
|
}}
|
|
|
|
</span>
|
|
|
|
</p>
|
|
|
|
</div>
|
2021-11-02 19:47:54 +01:00
|
|
|
<b-dropdown position="is-bottom-left" aria-role="list">
|
|
|
|
<b-button slot="trigger" role="button" icon-right="dots-horizontal">
|
|
|
|
{{ $t("Actions") }}
|
|
|
|
</b-button>
|
|
|
|
<b-dropdown-item
|
|
|
|
aria-role="listitem"
|
|
|
|
has-link
|
|
|
|
v-if="
|
|
|
|
currentActor.id === post.author.id ||
|
|
|
|
isCurrentActorAGroupModerator
|
|
|
|
"
|
|
|
|
>
|
|
|
|
<router-link
|
|
|
|
:to="{
|
|
|
|
name: RouteName.POST_EDIT,
|
|
|
|
params: { slug: post.slug },
|
|
|
|
}"
|
|
|
|
>{{ $t("Edit") }} <b-icon icon="pencil"
|
|
|
|
/></router-link>
|
|
|
|
</b-dropdown-item>
|
|
|
|
<b-dropdown-item
|
|
|
|
aria-role="listitem"
|
|
|
|
v-if="
|
|
|
|
currentActor.id === post.author.id ||
|
|
|
|
isCurrentActorAGroupModerator
|
|
|
|
"
|
|
|
|
@click="openDeletePostModal"
|
|
|
|
@keyup.enter="openDeletePostModal"
|
|
|
|
>
|
|
|
|
{{ $t("Delete") }}
|
|
|
|
<b-icon icon="delete" />
|
|
|
|
</b-dropdown-item>
|
|
|
|
|
|
|
|
<hr
|
|
|
|
role="presentation"
|
|
|
|
class="dropdown-divider"
|
|
|
|
aria-role="menuitem"
|
2021-06-15 17:25:33 +02:00
|
|
|
v-if="
|
|
|
|
currentActor.id === post.author.id ||
|
|
|
|
isCurrentActorAGroupModerator
|
|
|
|
"
|
2021-11-02 19:47:54 +01:00
|
|
|
/>
|
|
|
|
<b-dropdown-item
|
|
|
|
aria-role="listitem"
|
|
|
|
v-if="!post.draft"
|
|
|
|
@click="triggerShare()"
|
|
|
|
@keyup.enter="triggerShare()"
|
|
|
|
>
|
|
|
|
<span>
|
|
|
|
{{ $t("Share this event") }}
|
|
|
|
<b-icon icon="share" />
|
|
|
|
</span>
|
|
|
|
</b-dropdown-item>
|
|
|
|
|
|
|
|
<b-dropdown-item
|
|
|
|
aria-role="listitem"
|
|
|
|
v-if="ableToReport"
|
|
|
|
@click="isReportModalActive = true"
|
|
|
|
@keyup.enter="isReportModalActive = true"
|
2021-06-15 17:25:33 +02:00
|
|
|
>
|
2021-11-02 19:47:54 +01:00
|
|
|
<span>
|
|
|
|
{{ $t("Report") }}
|
|
|
|
<b-icon icon="flag" />
|
|
|
|
</span>
|
|
|
|
</b-dropdown-item>
|
|
|
|
</b-dropdown>
|
2021-06-15 17:25:33 +02:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</header>
|
2021-08-05 11:01:40 +02:00
|
|
|
<b-message
|
|
|
|
:title="$t('Members-only post')"
|
|
|
|
class="mx-4"
|
|
|
|
type="is-warning"
|
|
|
|
:closable="false"
|
|
|
|
v-if="
|
|
|
|
!$apollo.loading &&
|
|
|
|
isInstanceModerator &&
|
|
|
|
!isCurrentActorAGroupMember &&
|
|
|
|
post.visibility === PostVisibility.PRIVATE
|
|
|
|
"
|
|
|
|
>
|
|
|
|
{{
|
|
|
|
$t(
|
|
|
|
"This post is accessible only for members. You have access to it for moderation purposes only because you are an instance moderator."
|
|
|
|
)
|
|
|
|
}}
|
|
|
|
</b-message>
|
2021-06-15 17:25:33 +02:00
|
|
|
|
2021-11-07 14:59:20 +01:00
|
|
|
<section v-html="post.body" dir="auto" class="content" />
|
|
|
|
<section class="tags" dir="auto">
|
2021-06-15 17:25:33 +02:00
|
|
|
<router-link
|
|
|
|
v-for="tag in post.tags"
|
|
|
|
:key="tag.title"
|
|
|
|
:to="{ name: RouteName.TAG, params: { tag: tag.title } }"
|
|
|
|
>
|
|
|
|
<tag>{{ tag.title }}</tag>
|
|
|
|
</router-link>
|
|
|
|
</section>
|
2021-11-02 19:47:54 +01:00
|
|
|
<b-modal
|
2021-11-13 12:33:14 +01:00
|
|
|
:close-button-aria-label="$t('Close')"
|
2021-11-02 19:47:54 +01:00
|
|
|
:active.sync="isReportModalActive"
|
|
|
|
has-modal-card
|
|
|
|
ref="reportModal"
|
|
|
|
>
|
|
|
|
<report-modal
|
|
|
|
:on-confirm="reportPost"
|
|
|
|
:title="$t('Report this post')"
|
|
|
|
:outside-domain="groupDomain"
|
|
|
|
@close="$refs.reportModal.close()"
|
|
|
|
/>
|
|
|
|
</b-modal>
|
2021-11-13 12:33:14 +01:00
|
|
|
<b-modal
|
|
|
|
:active.sync="isShareModalActive"
|
|
|
|
has-modal-card
|
|
|
|
ref="shareModal"
|
|
|
|
:close-button-aria-label="$t('Close')"
|
|
|
|
>
|
2021-11-02 19:47:54 +01:00
|
|
|
<share-post-modal :post="post" />
|
|
|
|
</b-modal>
|
2021-06-15 17:25:33 +02:00
|
|
|
</article>
|
2020-07-09 17:24:28 +02:00
|
|
|
</template>
|
|
|
|
|
|
|
|
<script lang="ts">
|
2020-10-22 09:37:30 +02:00
|
|
|
import { Component, Prop } from "vue-property-decorator";
|
|
|
|
import { mixins } from "vue-class-component";
|
|
|
|
import GroupMixin from "@/mixins/group";
|
2021-08-05 11:01:40 +02:00
|
|
|
import { ICurrentUserRole, PostVisibility } from "@/types/enums";
|
2020-11-27 19:27:44 +01:00
|
|
|
import { IMember } from "@/types/actor/member.model";
|
2021-07-23 15:47:34 +02:00
|
|
|
import {
|
|
|
|
CURRENT_ACTOR_CLIENT,
|
|
|
|
PERSON_MEMBERSHIPS,
|
2021-10-25 13:18:13 +02:00
|
|
|
PERSON_STATUS_GROUP,
|
2021-07-23 15:47:34 +02:00
|
|
|
} from "../../graphql/actor";
|
2021-06-11 18:49:05 +02:00
|
|
|
import { usernameWithDomain } from "../../types/actor";
|
2020-07-09 17:24:28 +02:00
|
|
|
import RouteName from "../../router/name";
|
|
|
|
import Tag from "../../components/Tag.vue";
|
2021-06-29 18:38:38 +02:00
|
|
|
import LazyImageWrapper from "../../components/Image/LazyImageWrapper.vue";
|
2021-06-15 17:25:33 +02:00
|
|
|
import ActorInline from "../../components/Account/ActorInline.vue";
|
2021-07-23 15:47:34 +02:00
|
|
|
import { formatDistanceToNowStrict } from "date-fns";
|
2021-08-05 11:01:40 +02:00
|
|
|
import { CURRENT_USER_CLIENT } from "@/graphql/user";
|
|
|
|
import { ICurrentUser } from "@/types/current-user.model";
|
2021-11-02 19:47:54 +01:00
|
|
|
import { CONFIG } from "@/graphql/config";
|
|
|
|
import { IConfig } from "@/types/config.model";
|
|
|
|
import SharePostModal from "../../components/Post/SharePostModal.vue";
|
|
|
|
import { IReport } from "@/types/report.model";
|
|
|
|
import { CREATE_REPORT } from "@/graphql/report";
|
|
|
|
import ReportModal from "../../components/Report/ReportModal.vue";
|
|
|
|
import PostMixin from "../../mixins/post";
|
2020-07-09 17:24:28 +02:00
|
|
|
|
|
|
|
@Component({
|
|
|
|
apollo: {
|
2021-11-02 19:47:54 +01:00
|
|
|
config: CONFIG,
|
2021-08-05 11:01:40 +02:00
|
|
|
currentUser: CURRENT_USER_CLIENT,
|
2020-07-09 17:24:28 +02:00
|
|
|
currentActor: CURRENT_ACTOR_CLIENT,
|
|
|
|
memberships: {
|
|
|
|
query: PERSON_MEMBERSHIPS,
|
2020-08-27 11:53:24 +02:00
|
|
|
fetchPolicy: "cache-and-network",
|
2020-07-09 17:24:28 +02:00
|
|
|
variables() {
|
|
|
|
return {
|
|
|
|
id: this.currentActor.id,
|
|
|
|
};
|
|
|
|
},
|
|
|
|
update: (data) => data.person.memberships.elements,
|
|
|
|
skip() {
|
|
|
|
return !this.currentActor || !this.currentActor.id;
|
|
|
|
},
|
|
|
|
},
|
2021-07-23 15:47:34 +02:00
|
|
|
person: {
|
2021-10-25 13:18:13 +02:00
|
|
|
query: PERSON_STATUS_GROUP,
|
2021-07-23 15:47:34 +02:00
|
|
|
fetchPolicy: "cache-and-network",
|
|
|
|
variables() {
|
|
|
|
return {
|
|
|
|
id: this.currentActor.id,
|
|
|
|
group: usernameWithDomain(this.post.attributedTo),
|
|
|
|
};
|
|
|
|
},
|
|
|
|
skip() {
|
|
|
|
return (
|
|
|
|
!this.currentActor ||
|
|
|
|
!this.currentActor.id ||
|
|
|
|
!this.post?.attributedTo
|
|
|
|
);
|
|
|
|
},
|
|
|
|
},
|
2020-07-09 17:24:28 +02:00
|
|
|
},
|
|
|
|
components: {
|
|
|
|
Tag,
|
2021-06-29 18:38:38 +02:00
|
|
|
LazyImageWrapper,
|
2021-06-15 17:25:33 +02:00
|
|
|
ActorInline,
|
2021-11-02 19:47:54 +01:00
|
|
|
SharePostModal,
|
|
|
|
ReportModal,
|
2020-07-09 17:24:28 +02:00
|
|
|
},
|
|
|
|
metaInfo() {
|
|
|
|
return {
|
2020-09-29 09:53:48 +02:00
|
|
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
2020-07-09 17:24:28 +02:00
|
|
|
// @ts-ignore
|
|
|
|
title: this.post ? this.post.title : "",
|
|
|
|
// all titles will be injected into this template
|
2020-09-29 09:53:48 +02:00
|
|
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
2020-07-09 17:24:28 +02:00
|
|
|
// @ts-ignore
|
|
|
|
titleTemplate: this.post ? "%s | Mobilizon" : "Mobilizon",
|
|
|
|
};
|
|
|
|
},
|
|
|
|
})
|
2021-11-02 19:47:54 +01:00
|
|
|
export default class Post extends mixins(GroupMixin, PostMixin) {
|
2020-07-09 17:24:28 +02:00
|
|
|
@Prop({ required: true, type: String }) slug!: string;
|
|
|
|
|
|
|
|
memberships!: IMember[];
|
|
|
|
|
2021-11-02 19:47:54 +01:00
|
|
|
config!: IConfig;
|
|
|
|
|
2020-07-09 17:24:28 +02:00
|
|
|
RouteName = RouteName;
|
|
|
|
|
2021-08-05 11:01:40 +02:00
|
|
|
currentUser!: ICurrentUser;
|
|
|
|
|
2020-07-09 17:24:28 +02:00
|
|
|
usernameWithDomain = usernameWithDomain;
|
|
|
|
|
2021-07-23 15:47:34 +02:00
|
|
|
formatDistanceToNowStrict = formatDistanceToNowStrict;
|
|
|
|
|
2020-10-01 15:07:15 +02:00
|
|
|
PostVisibility = PostVisibility;
|
|
|
|
|
2021-11-02 19:47:54 +01:00
|
|
|
isShareModalActive = false;
|
|
|
|
|
|
|
|
isReportModalActive = false;
|
2020-10-01 15:07:15 +02:00
|
|
|
|
2020-07-09 17:24:28 +02:00
|
|
|
get isCurrentActorMember(): boolean {
|
|
|
|
if (!this.post.attributedTo || !this.memberships) return false;
|
2020-11-30 10:24:11 +01:00
|
|
|
return this.memberships
|
|
|
|
.map(({ parent: { id } }) => id)
|
|
|
|
.includes(this.post.attributedTo.id);
|
2020-07-09 17:24:28 +02:00
|
|
|
}
|
2021-08-05 11:01:40 +02:00
|
|
|
|
|
|
|
get isInstanceModerator(): boolean {
|
|
|
|
return [
|
|
|
|
ICurrentUserRole.ADMINISTRATOR,
|
|
|
|
ICurrentUserRole.MODERATOR,
|
|
|
|
].includes(this.currentUser.role);
|
|
|
|
}
|
2021-11-02 19:47:54 +01:00
|
|
|
|
|
|
|
get ableToReport(): boolean {
|
|
|
|
return (
|
|
|
|
this.config &&
|
|
|
|
(this.currentActor.id != null || this.config.anonymous.reports.allowed)
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
triggerShare(): void {
|
|
|
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
|
|
// @ts-ignore-start
|
|
|
|
if (navigator.share) {
|
|
|
|
navigator
|
|
|
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
|
|
// @ts-ignore
|
|
|
|
.share({
|
|
|
|
title: this.post.title,
|
|
|
|
url: this.post.url,
|
|
|
|
})
|
|
|
|
.then(() => console.log("Successful share"))
|
|
|
|
.catch((error: any) => console.log("Error sharing", error));
|
|
|
|
} else {
|
|
|
|
this.isShareModalActive = true;
|
|
|
|
// send popup
|
|
|
|
}
|
|
|
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
|
|
// @ts-ignore-end
|
|
|
|
}
|
|
|
|
|
|
|
|
async reportPost(content: string, forward: boolean): Promise<void> {
|
|
|
|
this.isReportModalActive = false;
|
|
|
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
|
|
// @ts-ignore
|
|
|
|
this.$refs.reportModal.close();
|
|
|
|
const postTitle = this.post.title;
|
|
|
|
|
|
|
|
try {
|
|
|
|
await this.$apollo.mutate<IReport>({
|
|
|
|
mutation: CREATE_REPORT,
|
|
|
|
variables: {
|
|
|
|
postId: this.post.id,
|
|
|
|
reportedId: this.post.attributedTo?.id,
|
|
|
|
content,
|
|
|
|
forward,
|
|
|
|
},
|
|
|
|
});
|
|
|
|
this.$notifier.success(
|
|
|
|
this.$t("Post {eventTitle} reported", { postTitle }) as string
|
|
|
|
);
|
|
|
|
} catch (error) {
|
|
|
|
console.error(error);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
get groupDomain(): string | undefined | null {
|
|
|
|
return this.post.attributedTo?.domain;
|
|
|
|
}
|
2020-07-09 17:24:28 +02:00
|
|
|
}
|
|
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
2021-11-04 18:14:36 +01:00
|
|
|
@use "@/styles/_mixins" as *;
|
2021-08-05 11:01:40 +02:00
|
|
|
article.post {
|
2021-06-15 17:25:33 +02:00
|
|
|
background: $white !important;
|
|
|
|
header {
|
2020-10-01 15:07:15 +02:00
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
2021-06-15 17:25:33 +02:00
|
|
|
.banner-container {
|
|
|
|
display: flex;
|
|
|
|
justify-content: center;
|
|
|
|
height: 30vh;
|
2020-07-09 17:24:28 +02:00
|
|
|
}
|
|
|
|
|
2021-06-15 17:25:33 +02:00
|
|
|
.heading-section {
|
|
|
|
position: relative;
|
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
margin-bottom: 2rem;
|
2020-07-09 17:24:28 +02:00
|
|
|
|
2021-06-15 17:25:33 +02:00
|
|
|
.heading-wrapper {
|
|
|
|
padding: 15px 10px;
|
|
|
|
display: flex;
|
|
|
|
flex-wrap: wrap;
|
|
|
|
justify-content: center;
|
2021-11-02 19:47:54 +01:00
|
|
|
align-items: center;
|
2020-07-09 17:24:28 +02:00
|
|
|
|
2021-06-15 17:25:33 +02:00
|
|
|
.title-metadata {
|
|
|
|
min-width: 300px;
|
|
|
|
flex: 20;
|
2020-07-09 17:24:28 +02:00
|
|
|
|
2021-11-02 19:47:54 +01:00
|
|
|
.title-wrapper {
|
|
|
|
display: inline;
|
|
|
|
|
|
|
|
.tag {
|
|
|
|
height: 38px;
|
|
|
|
vertical-align: text-bottom;
|
|
|
|
}
|
|
|
|
|
|
|
|
& > h1 {
|
|
|
|
display: inline;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-06-15 17:25:33 +02:00
|
|
|
p.metadata {
|
2021-11-02 19:47:54 +01:00
|
|
|
margin-top: 10px;
|
2021-06-15 17:25:33 +02:00
|
|
|
display: flex;
|
|
|
|
justify-content: flex-start;
|
|
|
|
flex-wrap: wrap;
|
2021-11-02 19:47:54 +01:00
|
|
|
flex-direction: column;
|
2020-10-01 15:07:15 +02:00
|
|
|
|
2021-06-15 17:25:33 +02:00
|
|
|
*:not(:first-child) {
|
2021-11-04 18:14:36 +01:00
|
|
|
@include padding-left(5px);
|
2021-06-15 17:25:33 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
p.buttons {
|
|
|
|
flex: 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
h1.title {
|
|
|
|
margin: 0;
|
|
|
|
font-weight: 500;
|
|
|
|
font-size: 38px;
|
|
|
|
font-family: "Roboto", "Helvetica", "Arial", serif;
|
|
|
|
}
|
|
|
|
|
|
|
|
.authors {
|
|
|
|
display: inline-block;
|
|
|
|
}
|
|
|
|
|
|
|
|
&::after {
|
|
|
|
height: 0.2rem;
|
|
|
|
content: " ";
|
|
|
|
display: block;
|
|
|
|
background-color: $purple-1;
|
|
|
|
}
|
2020-07-09 17:24:28 +02:00
|
|
|
|
2021-06-15 17:25:33 +02:00
|
|
|
.buttons {
|
|
|
|
justify-content: center;
|
|
|
|
}
|
|
|
|
}
|
2020-07-09 17:24:28 +02:00
|
|
|
}
|
|
|
|
|
2021-06-15 17:25:33 +02:00
|
|
|
& > section {
|
|
|
|
margin: 0 2rem;
|
2020-07-09 17:24:28 +02:00
|
|
|
|
2021-06-15 17:25:33 +02:00
|
|
|
&.content {
|
|
|
|
font-size: 1.1rem;
|
2020-07-09 17:24:28 +02:00
|
|
|
}
|
2021-06-15 17:25:33 +02:00
|
|
|
|
|
|
|
&.tags {
|
|
|
|
padding-bottom: 5rem;
|
|
|
|
|
|
|
|
a {
|
|
|
|
text-decoration: none;
|
|
|
|
}
|
|
|
|
span {
|
|
|
|
&.tag {
|
|
|
|
margin: 0 2px;
|
|
|
|
}
|
2020-07-09 17:24:28 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
margin: 0 auto;
|
2021-11-02 19:47:54 +01:00
|
|
|
|
|
|
|
a.dropdown-item,
|
|
|
|
.dropdown .dropdown-menu .has-link a,
|
|
|
|
button.dropdown-item {
|
|
|
|
white-space: nowrap;
|
|
|
|
width: 100%;
|
2021-11-04 18:14:36 +01:00
|
|
|
@include padding-right(1rem);
|
2021-11-02 19:47:54 +01:00
|
|
|
text-align: right;
|
|
|
|
}
|
2020-07-09 17:24:28 +02:00
|
|
|
}
|
|
|
|
</style>
|