2020-07-22 13:19:23 -07:00
|
|
|
|
<template>
|
2020-11-10 15:47:44 -08:00
|
|
|
|
<NotFound v-if="!selectedPronoun"/>
|
2020-10-23 11:24:43 -07:00
|
|
|
|
<div v-else class="container">
|
2020-09-11 03:17:29 -07:00
|
|
|
|
<h2>
|
2020-07-22 13:19:23 -07:00
|
|
|
|
<Icon v="tag"/>
|
2020-11-10 15:47:44 -08:00
|
|
|
|
<T>pronouns.intro</T>:
|
2020-09-11 03:17:29 -07:00
|
|
|
|
</h2>
|
2020-07-22 13:19:23 -07:00
|
|
|
|
|
|
|
|
|
<section>
|
|
|
|
|
<div class="alert alert-primary">
|
|
|
|
|
<h2 class="text-center mb-0">
|
2020-10-12 14:41:32 -07:00
|
|
|
|
<strong v-if="nameOptions.length === 1">
|
2020-11-10 15:47:44 -08:00
|
|
|
|
{{ selectedPronoun.name(glue) }}
|
2020-10-12 14:41:32 -07:00
|
|
|
|
</strong>
|
|
|
|
|
<template v-else>
|
|
|
|
|
<template v-for="(nameOption, i) in nameOptions">
|
|
|
|
|
<nuxt-link :to="'/' + addSlash(nameOption)">
|
|
|
|
|
<strong>
|
|
|
|
|
{{ nameOption }}
|
|
|
|
|
</strong>
|
|
|
|
|
</nuxt-link>
|
|
|
|
|
<span v-if="i < nameOptions.length - 1">{{ glue }}</span>
|
|
|
|
|
</template>
|
|
|
|
|
</template>
|
2020-07-22 13:19:23 -07:00
|
|
|
|
</h2>
|
2020-11-10 15:47:44 -08:00
|
|
|
|
<p class="h6 small text-center mb-0 mt-2" v-if="selectedPronoun.description">
|
2020-07-22 13:19:23 -07:00
|
|
|
|
<em>
|
2020-11-10 15:47:44 -08:00
|
|
|
|
({{Array.isArray(selectedPronoun.description)
|
|
|
|
|
? ($t('pronouns.alt.header') + ': ' + selectedPronoun.description.join(glue))
|
|
|
|
|
: selectedPronoun.description
|
2020-07-26 04:14:25 -07:00
|
|
|
|
}})
|
2020-07-22 13:19:23 -07:00
|
|
|
|
</em>
|
|
|
|
|
</p>
|
|
|
|
|
</div>
|
|
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<section>
|
|
|
|
|
<h2 class="h4">
|
|
|
|
|
<Icon v="file-signature"/>
|
2020-11-10 15:47:44 -08:00
|
|
|
|
<T>pronouns.examples</T>:
|
2020-07-22 13:19:23 -07:00
|
|
|
|
</h2>
|
|
|
|
|
|
|
|
|
|
<ul>
|
|
|
|
|
<li v-for="example in examples" class="my-1">
|
2020-11-10 15:47:44 -08:00
|
|
|
|
<Example :example="example" :pronoun="selectedPronoun" :counter="counter"/>
|
2020-07-24 11:52:01 -07:00
|
|
|
|
</li>
|
2020-07-22 13:19:23 -07:00
|
|
|
|
</ul>
|
|
|
|
|
</section>
|
|
|
|
|
|
2020-11-10 15:47:44 -08:00
|
|
|
|
<GrammarTables :selectedPronoun="selectedPronoun" :counter="counter"/>
|
2020-08-03 10:47:53 -07:00
|
|
|
|
|
2020-11-10 15:47:44 -08:00
|
|
|
|
<section v-if="selectedPronoun.history">
|
|
|
|
|
<div class="alert alert-info" v-for="part in selectedPronoun.history.split('@')">
|
2020-07-24 11:21:30 -07:00
|
|
|
|
<Icon v="info-circle"/>
|
2020-10-12 12:26:50 -07:00
|
|
|
|
<LinkedText :text="part"/>
|
2020-07-24 11:21:30 -07:00
|
|
|
|
</div>
|
|
|
|
|
</section>
|
|
|
|
|
|
2020-11-10 15:47:44 -08:00
|
|
|
|
<section v-if="pronounGroup && pronounGroup.group.description">
|
2020-10-05 05:57:17 -07:00
|
|
|
|
<ul class="list-group mt-4">
|
|
|
|
|
<li class="list-group-item">
|
|
|
|
|
<p class="h5">
|
2020-11-10 15:47:44 -08:00
|
|
|
|
{{ pronounGroup.group.name }}
|
2020-10-05 05:57:17 -07:00
|
|
|
|
</p>
|
|
|
|
|
<div class="small my-1">
|
|
|
|
|
<Icon v="info-circle"/>
|
2020-11-10 15:47:44 -08:00
|
|
|
|
<em v-html="pronounGroup.group.description"></em>
|
2020-10-05 05:57:17 -07:00
|
|
|
|
</div>
|
|
|
|
|
<ul class="list-unstyled">
|
2020-11-10 15:47:44 -08:00
|
|
|
|
<li v-for="pronoun in pronounGroup.groupPronouns" :key="pronoun.canonicalName">
|
|
|
|
|
<nuxt-link v-if="typeof pronoun === 'string'" :to="'/' + pronoun">
|
|
|
|
|
<strong>{{pronoun.replace(/&/g, ' ' + $t('pronouns.or') + ' ')}}</strong>
|
2020-10-05 05:57:17 -07:00
|
|
|
|
</nuxt-link>
|
2020-11-10 15:47:44 -08:00
|
|
|
|
<nuxt-link v-else :to="addSlash('/' + pronoun.canonicalName)">
|
|
|
|
|
<strong>{{pronoun.name(glue)}}</strong>
|
2020-10-05 05:57:17 -07:00
|
|
|
|
–
|
2020-11-10 15:47:44 -08:00
|
|
|
|
<small>{{pronoun.description}}</small>
|
2020-10-05 05:57:17 -07:00
|
|
|
|
</nuxt-link>
|
2020-11-10 15:47:44 -08:00
|
|
|
|
<NormativeBadge v-if="pronoun.normative"/>
|
2020-10-05 05:57:17 -07:00
|
|
|
|
</li>
|
|
|
|
|
</ul>
|
|
|
|
|
</li>
|
|
|
|
|
<nuxt-link to="/" class="list-group-item list-group-item-action text-center">
|
|
|
|
|
<Icon v="ellipsis-h-alt"/>
|
|
|
|
|
</nuxt-link>
|
|
|
|
|
</ul>
|
|
|
|
|
</section>
|
|
|
|
|
|
2020-07-24 05:14:37 -07:00
|
|
|
|
<section>
|
2020-11-10 15:47:44 -08:00
|
|
|
|
<Share :title="`${$t('pronouns.intro')}: ${selectedPronoun.name(glue)}`"/>
|
2020-07-24 05:14:37 -07:00
|
|
|
|
</section>
|
|
|
|
|
|
2020-07-27 08:26:40 -07:00
|
|
|
|
<section v-if="Object.keys(sources).length">
|
2020-07-26 06:27:36 -07:00
|
|
|
|
<Literature :sources="sources"/>
|
2020-07-22 13:19:23 -07:00
|
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<Separator icon="info"/>
|
|
|
|
|
<section class="mb-0">
|
|
|
|
|
<h2 class="h4">
|
|
|
|
|
<Icon v="info-circle"/>
|
2020-09-28 08:51:26 -07:00
|
|
|
|
<T>home.whatisit</T>:
|
2020-07-22 13:19:23 -07:00
|
|
|
|
</h2>
|
2020-09-28 08:51:26 -07:00
|
|
|
|
<T>home.about</T>
|
2020-07-22 13:19:23 -07:00
|
|
|
|
<Homepage align="center"/>
|
|
|
|
|
</section>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
2020-11-10 15:47:44 -08:00
|
|
|
|
import { examples, pronouns, getSources, pronounLibrary } from "~/src/data";
|
|
|
|
|
import { buildPronoun } from "../src/buildPronoun";
|
2020-09-23 12:29:55 -07:00
|
|
|
|
import { head } from "../src/helpers";
|
2020-11-10 15:47:44 -08:00
|
|
|
|
import GrammarTables from "../data/pronouns/GrammarTables";
|
2020-10-12 12:26:50 -07:00
|
|
|
|
import LinkedText from "../components/LinkedText";
|
2020-07-22 13:19:23 -07:00
|
|
|
|
|
|
|
|
|
export default {
|
2020-10-12 12:26:50 -07:00
|
|
|
|
components: {LinkedText, GrammarTables },
|
2020-07-22 13:19:23 -07:00
|
|
|
|
data() {
|
2020-11-10 15:47:44 -08:00
|
|
|
|
const selectedPronoun = this.config.pronouns.enabled
|
|
|
|
|
? buildPronoun(pronouns, decodeURIComponent(this.$route.path.substr(1).replace(/\/$/, '')))
|
2020-10-28 08:22:29 -07:00
|
|
|
|
: null;
|
|
|
|
|
|
2020-07-22 13:19:23 -07:00
|
|
|
|
return {
|
2020-10-05 05:57:17 -07:00
|
|
|
|
examples,
|
2020-11-10 15:47:44 -08:00
|
|
|
|
pronouns,
|
|
|
|
|
glue: ' ' + this.$t('pronouns.or') + ' ',
|
2020-07-22 13:19:23 -07:00
|
|
|
|
|
2020-11-10 15:47:44 -08:00
|
|
|
|
selectedPronoun,
|
|
|
|
|
nameOptions: selectedPronoun ? selectedPronoun.nameOptions() : [],
|
|
|
|
|
pronounGroup: pronounLibrary.find(selectedPronoun),
|
2020-07-26 04:14:25 -07:00
|
|
|
|
|
|
|
|
|
counter: 0,
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
mounted() {
|
|
|
|
|
if (process.client) {
|
|
|
|
|
setInterval(_ => this.counter++, 1000);
|
2020-07-22 13:19:23 -07:00
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
head() {
|
2020-11-10 15:47:44 -08:00
|
|
|
|
return this.selectedPronoun ? head({
|
|
|
|
|
title: `${this.$t('pronouns.intro')}: ${this.selectedPronoun.name(this.glue)}`,
|
2020-10-31 13:33:59 -07:00
|
|
|
|
banner: `api/banner${this.$route.path.replace(/\/$/, '')}.png`,
|
2020-09-23 12:29:55 -07:00
|
|
|
|
}) : {};
|
2020-07-22 13:19:23 -07:00
|
|
|
|
},
|
2020-10-05 05:57:17 -07:00
|
|
|
|
methods: {
|
|
|
|
|
addSlash(link) {
|
|
|
|
|
return link + (link.substr(link.length - 1) === '*' ? '/' : '');
|
|
|
|
|
},
|
|
|
|
|
},
|
2020-07-26 06:27:36 -07:00
|
|
|
|
computed: {
|
|
|
|
|
sources() {
|
2020-11-10 15:47:44 -08:00
|
|
|
|
return getSources(this.selectedPronoun);
|
2020-07-26 06:27:36 -07:00
|
|
|
|
},
|
|
|
|
|
},
|
2020-07-22 13:19:23 -07:00
|
|
|
|
}
|
|
|
|
|
</script>
|