mirror of
https://gitlab.com/PronounsPage/PronounsPage.git
synced 2025-09-22 12:03:25 -04:00
55 lines
1.8 KiB
Vue
55 lines
1.8 KiB
Vue
<template>
|
|
<div v-if="$config.sources.enabled && Object.keys(visibleSources).length">
|
|
<h2 class="h4">
|
|
<nuxt-link :to="`/${$config.sources.route}`">
|
|
<Icon v="books" />
|
|
<T>sources.headerLong</T><T>quotation.colon</T>
|
|
</nuxt-link>
|
|
</h2>
|
|
|
|
<section v-for="(optionSources, option) in visibleSources" :key="option">
|
|
<h3 class="h5">
|
|
<nuxt-link :to="`/${option}`">
|
|
<span v-if="option.includes('&')">
|
|
<T>pronouns.alt.header</T>
|
|
<small>({{ option.replace(/&/g, glue) }})</small>
|
|
</span>
|
|
<span v-else-if="option && getPronoun(pronouns, option)">
|
|
{{ getPronoun(pronouns, option)?.description }}
|
|
<small>({{ getPronoun(pronouns, option)?.name(glue) }})</small>
|
|
</span>
|
|
</nuxt-link>
|
|
</h3>
|
|
|
|
<SourceList :pronoun="pronoun" :sources="optionSources" />
|
|
</section>
|
|
</div>
|
|
</template>
|
|
|
|
<script lang="ts">
|
|
import Vue from 'vue';
|
|
import { pronouns } from '../src/data.ts';
|
|
import { getPronoun } from '../src/buildPronoun.ts';
|
|
import type { PropType } from 'vue';
|
|
import type { Source } from '../src/classes.ts';
|
|
|
|
export default Vue.extend({
|
|
props: {
|
|
pronoun: { },
|
|
sources: { required: true, type: Object as PropType<Record<string, Source[]>> },
|
|
},
|
|
data() {
|
|
return {
|
|
pronouns,
|
|
getPronoun,
|
|
glue: ` ${this.$t('pronouns.or')} `,
|
|
};
|
|
},
|
|
computed: {
|
|
visibleSources(): Record<string, Source[]> {
|
|
return Object.fromEntries(Object.entries(this.sources).filter(([_, sources]) => sources));
|
|
},
|
|
},
|
|
});
|
|
</script>
|