fchat-rising/components/character_link.vue

37 lines
1.1 KiB
Vue
Raw Permalink Normal View History

<template>
<span :class="linkClasses" v-if="character">
<slot v-if="deleted">[Deleted] {{ name }}</slot>
2019-09-17 17:14:14 +00:00
<a :href="characterUrl" class="characterLinkLink" v-else :target="target"><slot>{{ name }}</slot></a>
</span>
</template>
<script lang="ts">
2019-01-03 17:38:17 +00:00
import {Component, Prop} from '@f-list/vue-ts';
import Vue from 'vue';
2019-09-17 17:14:14 +00:00
import {SimpleCharacter} from '../interfaces';
import * as Utils from '../site/utils';
@Component
export default class CharacterLink extends Vue {
@Prop({required: true})
2019-09-17 17:14:14 +00:00
readonly character!: SimpleCharacter | string;
@Prop({default: '_blank'})
readonly target!: string;
get deleted(): boolean {
return typeof(this.character) === 'string' ? false : this.character.deleted;
}
get linkClasses(): string {
return this.deleted ? 'characterLinkDeleted' : 'characterLink';
}
get characterUrl(): string {
return Utils.characterURL(this.name);
}
get name(): string {
return typeof(this.character) === 'string' ? this.character : this.character.name;
}
}
</script>