This repository has been archived on 2024-07-22. You can view files and clone it, but cannot push or open issues or pull requests.
Zaimki/pages/literatura.vue

153 lines
5.1 KiB
Vue
Raw Normal View History

2020-07-22 13:19:23 -07:00
<template>
<div class="container">
<Homepage/>
<h1>
<Icon v="books"/>
Niebinarna polszczyzna w literaturze, prasie, filmach i serialach
2020-07-22 13:19:23 -07:00
</h1>
<LiteratureMenu all/>
2020-07-24 07:15:28 -07:00
<section>
<ul class="list-unstyled">
<li v-for="template in templates" v-if="template.sources.length" :class="separators.includes(template.name()) ? 'mt-3 mb-1' : 'my-1'">
<a :href="'#' + toId(template.name())">
<strong>{{ template.name() }}</strong>
<small>{{ template.description }}</small>
2020-07-24 07:15:28 -07:00
</a>
</li>
<li v-for="(sources, multiple) in sourcesForMultipleForms" :class="separators.includes(multiple) ? 'mt-3 mb-1' : 'my-1'">
<a :href="'#' + toId(multiple)">
Formy wymienne
<small>({{ multiple.replace(/&/g, ' lub ') }})</small>
</a>
</li>
<li class="mt-3 mb-1">
<a href="#inne">
Inne formy
</a>
</li>
2020-07-24 07:15:28 -07:00
</ul>
</section>
2020-07-24 05:14:37 -07:00
<section>
<Share title="Niebinarna polszczyzna w literaturze, prasie, filmach i serialach"/>
</section>
2020-07-27 10:06:41 -07:00
<section>
<span class="mr-2 mb-3">
<Icon v="filter"/>
Filtruj:
</span>
<div class="btn-group">
<button v-for="(config, type) in sourceTypes"
:class="['btn', type === filter ? 'btn-primary' : 'btn-outline-primary']"
@click="filter = type"
>
<Icon :v="config.icon"/>
{{ config.text }}
</button>
</div>
</section>
<section v-for="template in templates" v-if="template.sources.length">
<h2 class="h4" :id="toId(template.name())">
2020-07-24 07:15:28 -07:00
<nuxt-link :to="'/' + template.pronoun()">
2020-07-22 13:19:23 -07:00
{{ template.description }}
2020-07-24 07:15:28 -07:00
<small>({{ template.name() }})</small>
</nuxt-link>
</h2>
2020-07-22 13:19:23 -07:00
2020-07-24 07:15:28 -07:00
<ul class="list-unstyled">
<li v-for="source in template.sources">
2020-07-27 10:06:41 -07:00
<Source :name="source" :filter="filter"/>
2020-07-24 07:15:28 -07:00
</li>
</ul>
</section>
<section v-for="(sources, multiple) in sourcesForMultipleForms">
<h2 class="h4" :id="toId(multiple)">
<nuxt-link :to="'/' + multiple">
Formy wymienne
<small>({{ multiple.replace(/&/g, ' lub ') }})</small>
</nuxt-link>
</h2>
<ul class="list-unstyled">
<li v-for="source in sources">
2020-07-27 10:06:41 -07:00
<Source :name="source" :filter="filter"/>
</li>
</ul>
</section>
<section>
<h2 class="h4" id="inne">
Inne formy
</h2>
<ul class="list-unstyled">
<li v-for="source in otherSources">
2020-07-27 10:06:41 -07:00
<Source :name="source" :filter="filter"/>
</li>
</ul>
</section>
2020-07-22 13:19:23 -07:00
</div>
</template>
<script>
import { templates, sources, sourcesForMultipleForms, separators } from '../src/data'
2020-07-27 10:06:41 -07:00
import { Source } from "../src/classes";
2020-07-22 13:19:23 -07:00
export default {
data() {
return {
templates: templates,
sourcesForMultipleForms: sourcesForMultipleForms,
2020-07-27 10:06:41 -07:00
sourceTypes: Source.TYPES,
filter: '',
separators: separators,
2020-07-22 13:19:23 -07:00
};
},
mounted() {
if (process.client && window.location.hash) {
const $hashEl = this.$el.querySelector(window.location.hash);
if ($hashEl) {
$hashEl.scrollIntoView();
}
}
},
2020-07-22 13:19:23 -07:00
head() {
const title = 'Niebinarna polszczyzna w literaturze';
return {
title: title,
meta: [
{ hid: 'og:title', property: 'og:title', content: title },
{ hid: 'twitter:title', property: 'twitter:title', content: title },
],
}
},
computed: {
otherSources() {
const other = new Set(Object.keys(sources));
for (let template of Object.values(this.templates)) {
for (let source of template.sources) {
other.delete(source);
}
}
for (let sources of Object.values(this.sourcesForMultipleForms)) {
for (let source of sources) {
other.delete(source);
}
}
return other;
},
},
methods: {
toId(str) {
return str.replace(/\//g, '-').replace(/&/g, '_');
}
},
2020-07-22 13:19:23 -07:00
}
</script>