mirror of
https://gitlab.com/PronounsPage/PronounsPage.git
synced 2025-09-28 23:42:58 -04:00
73 lines
2.2 KiB
Vue
73 lines
2.2 KiB
Vue
<template>
|
|
<Page>
|
|
<NounsNav />
|
|
|
|
<h2>
|
|
<Icon v="book" />
|
|
<T>nouns.headerLonger</T>
|
|
</h2>
|
|
|
|
<section>
|
|
<T>nouns.intro</T>
|
|
|
|
<Share :title="$t('nouns.headerLong')" />
|
|
</section>
|
|
|
|
<AdPlaceholder :phkey="['content-0', 'content-mobile-0']" />
|
|
|
|
<NounsExtra>
|
|
<details v-if="$config.nouns.collapsable" ref="dictionarywrapper" class="border mb-3">
|
|
<summary class="bg-light p-3" @click="$tRefs.collapsabledictionary?.loadNouns()">
|
|
<h4 class="h5 d-inline">
|
|
<Icon v="book" />
|
|
<T>nouns.dictionary</T>
|
|
</h4>
|
|
</summary>
|
|
<div class="border-top">
|
|
<Dictionary ref="collapsabledictionary" />
|
|
</div>
|
|
</details>
|
|
<Dictionary v-else ref="dictionary" load />
|
|
</NounsExtra>
|
|
</Page>
|
|
</template>
|
|
|
|
<script lang="ts">
|
|
import { head } from '../src/helpers.ts';
|
|
import NounsNav from '../data/nouns/NounsNav.vue';
|
|
import NounsExtra from '../data/nouns/NounsExtra.vue';
|
|
import hash from '../plugins/hash.ts';
|
|
import type Dictionary from '../components/Dictionary.vue';
|
|
|
|
interface Refs {
|
|
dictionarywrapper: HTMLDetailsElement | undefined;
|
|
collapsabledictionary: InstanceType<typeof Dictionary> | undefined;
|
|
dictionary: InstanceType<typeof Dictionary> | undefined;
|
|
}
|
|
|
|
export default hash.extend({
|
|
components: { NounsNav, NounsExtra },
|
|
head() {
|
|
return head({
|
|
title: this.$t('nouns.headerLonger'),
|
|
description: this.$t('nouns.description'),
|
|
}, this.$translator);
|
|
},
|
|
computed: {
|
|
$tRefs(): Refs {
|
|
return this.$refs as unknown as Refs;
|
|
},
|
|
},
|
|
mounted() {
|
|
this.handleHash(this.$config.nouns.hashNamespace || '', (filter) => {
|
|
if (this.$tRefs.dictionarywrapper) {
|
|
this.$tRefs.dictionarywrapper.open = true;
|
|
this.$tRefs.collapsabledictionary?.setFilter(filter);
|
|
} else {
|
|
this.$tRefs.dictionary?.setFilter(filter);
|
|
}
|
|
});
|
|
},
|
|
});
|
|
</script>
|