2020-08-04 07:15:41 -07:00
< template >
< div class = "container" >
2020-08-04 14:39:57 -07:00
< Homepage / >
2020-08-04 07:15:41 -07:00
< h1 >
< Icon v = "atom-alt" / >
Słownik neutratywów
< / h1 >
< section >
< p >
Feminatywy feminatywami , ale prawdziwe wyzwanie to tworzenie neutratywów !
< / p >
< p >
Poniżej przedstawiamy tworzony przez społeczność słownik rzeczowników
z wyszczególnieniem ich formy męskiej , żeńskiej i neutralnej .
< / p >
2020-08-04 14:39:57 -07:00
< div class = "alert alert-info small" >
< p >
< strong > Czym są neutratywy ? < / strong >
< / p >
< p >
Są to słowa ukute na nijakie wersje słów nacechowanych płciowo , analogicznie do feminatywów , czyli wersji żeńskich .
< / p >
< p >
< strong > Dlaczego warto tworzyć neutratywy ? < / strong >
< / p >
< p >
Z tych samych powodów co feminatywy !
< / p >
< p >
O ile łatwiej byłoby , gdyby nazwy zawodów zatraciły swoje często męskie nacechowanie .
Niestety tak się nie dzieje , przez co domyślnie możemy określać płeć osoby wykonującej ten zawód jako męską .
< / p >
< p >
Jednak nie każda osoba chce używać zaimków i form męskich czy żeńskich ,
choćby dlatego , że płeć człowieka wymyka się tym dwóm kategoriom .
Coraz więcej osób używa w odniesieniu do siebie
< nuxt -link to = "/ono" > rodzaju nijakiego < /nuxt-link> i <nuxt-link to="/ " > innych form < / n u x t - l i n k > .
Formy te zaczynają być także potrzebne w tłumaczeniach z języków ,
gdzie używane są formy niebinarne takie jak choćby angielskie zaimki they / them .
Z tego powodu proponujemy rozbudowę niebinarnej polszczyzny poprzez wspólne tworzenie form nijakich .
< / p >
< / div >
2020-08-04 07:15:41 -07:00
< p >
Aby dodać swoją propozycję :
< button class = "btn btn-outline-success btn-sm" @click ="$refs.form.$el.scrollIntoView()" >
< Icon v = "plus-circle" / >
Formularz zgłoszeniowy
< / button >
< / p >
2020-08-04 14:39:57 -07:00
< p >
Obserwuj Słownik na Facebooku :
< a href = "https://facebook.com/neutratywy" target = "_blank" rel = "noopener" class = "btn btn-outline-info btn-sm" >
< Icon v = "facebook" set = "b" / >
fb . com / neutratywy
< / a >
< / p >
2020-08-04 07:15:41 -07:00
< p >
Dla form neutralnych innych niż rzeczowniki zapraszamy na
< nuxt -link to = "/" class = "btn btn-outline-primary btn-sm" >
< Icon v = "tags" / >
Zaimki . pl
< / n u x t - l i n k >
< / p >
< Share title = "Słownik neutratywów" / >
< / section >
< Separator icon = "book-open" colour = "nouns" / >
< section >
2020-08-05 03:04:31 -07:00
< input class = "form-control border-nouns" v -model = " filter " placeholder = "Filtruj listę…" ref = "filter" / >
2020-08-04 07:15:41 -07:00
< / section >
< section class = "table-responsive" >
< table : class = "'table table-striped table-hover table-fixed-' + (secret ? 4 : 3)" >
< thead >
< tr >
< th class = "text-nowrap" >
< Icon v = "mars" / >
maskulinatyw
< / th >
< th class = "text-nowrap" >
< Icon v = "venus" / >
feminatyw
< / th >
< th class = "text-nowrap" >
< Icon v = "neuter" / >
neutratyw
< / th >
< th v-if ="secret" > < / th >
< / tr >
< / thead >
< tbody >
< tr v-for ="noun in nouns" v-if="noun.matches(filter)" :class="{'mark-left': !noun.approved}" >
< td >
< ul class = "list-singular" >
< li v-for ="w in noun.masc" > {{ w }} < / li >
< / ul >
< ul class = "list-plural" >
< li v-for ="w in noun.mascPl" > {{ w }} < / li >
< / ul >
2020-08-05 10:14:46 -07:00
< small v-if ="noun.base && nouns[noun.base]" >
2020-08-04 10:15:56 -07:00
< p > < strong > Propozycja zmiany na : < / strong > < / p >
2020-08-04 07:15:41 -07:00
< ul class = "list-singular" >
< li v-for ="w in nouns[noun.base].masc" > {{ w }} < / li >
< / ul >
< ul class = "list-plural" >
< li v-for ="w in nouns[noun.base].mascPl" > {{ w }} < / li >
< / ul >
< / small >
< button v-if ="!secret" class="btn btn-outline-nouns btn-sm m-1 hover-show" @click="edit(noun)" >
< Icon v = "pen" / >
Zaproponuj zmianę
< / button >
< / td >
< td >
< ul class = "list-singular" >
< li v-for ="w in noun.fem" > {{ w }} < / li >
< / ul >
< ul class = "list-plural" >
< li v-for ="w in noun.femPl" > {{ w }} < / li >
< / ul >
2020-08-05 10:14:46 -07:00
< small v-if ="noun.base && nouns[noun.base]" >
2020-08-04 10:15:56 -07:00
< p > < strong > Propozycja zmiany na : < / strong > < / p >
2020-08-04 07:15:41 -07:00
< ul class = "list-singular" >
< li v-for ="w in nouns[noun.base].fem" > {{ w }} < / li >
< / ul >
< ul class = "list-plural" >
< li v-for ="w in nouns[noun.base].femPl" > {{ w }} < / li >
< / ul >
< / small >
< / td >
< td >
< ul class = "list-singular" >
< li v-for ="w in noun.neutr" > {{ w }} < / li >
< / ul >
< ul class = "list-plural" >
< li v-for ="w in noun.neutrPl" > {{ w }} < / li >
< / ul >
2020-08-05 10:14:46 -07:00
< small v-if ="noun.base && nouns[noun.base]" >
2020-08-04 10:15:56 -07:00
< p > < strong > Propozycja zmiany na : < / strong > < / p >
2020-08-04 07:15:41 -07:00
< ul class = "list-singular" >
< li v-for ="w in nouns[noun.base].neutr" > {{ w }} < / li >
< / ul >
< ul class = "list-plural" >
< li v-for ="w in nouns[noun.base].neutrPl" > {{ w }} < / li >
< / ul >
< / small >
< / td >
< td v-if ="secret" >
< ul class = "list-unstyled" >
< li v-if ="!noun.approved" >
< button class = "btn btn-success btn-sm m-1" @click ="approve(noun)" >
< Icon v = "check" / >
Zatwierdź
< / button >
< / li >
< li v -else @click ="hide(noun)" >
< button class = "btn btn-outline-secondary btn-sm m-1" >
< Icon v = "times" / >
Schowaj
< / button >
< / li >
< li >
< button class = "btn btn-outline-danger btn-sm m-1" @click ="remove(noun)" >
< Icon v = "trash" / >
Usuń
< / button >
< / li >
< li >
< button class = "btn btn-outline-nouns btn-sm m-1" @click ="edit(noun)" >
< Icon v = "pen" / >
Edytuj
< / button >
< / li >
< / ul >
< / td >
< / tr >
< / tbody >
< / table >
< / section >
< Separator icon = "plus" colour = "nouns" / >
< NounSubmitForm ref = "form" :secret ="secret" / >
< / div >
< / template >
< script >
import { Noun } from "~/src/classes" ;
import { buildDict } from "../src/helpers" ;
export default {
data ( ) {
return {
filter : '' ,
nounsRaw : [ ] ,
secret : this . $route . query . secret ,
}
} ,
async asyncData ( { app , route } ) {
return {
nounsRaw : await app . $axios . $get ( ` /nouns/all?secret= ${ route . query . secret || '' } ` ) ,
} ;
} ,
2020-08-05 03:04:31 -07:00
mounted ( ) {
if ( process . client && window . location . hash ) {
console . log ( window . location . hash , this . $refs . filter )
this . filter = window . location . hash . substr ( 1 ) ;
setTimeout ( _ => {
this . $refs . filter . scrollIntoView ( ) ;
this . $refs . filter . focus ( ) ;
} , 1000 ) ;
}
} ,
2020-08-04 07:15:41 -07:00
methods : {
edit ( noun ) {
this . $refs . form . edit ( noun ) ;
} ,
async approve ( noun ) {
await this . $axios . $post ( ` /nouns/approve/ ${ noun . id } ?secret= ${ this . secret || '' } ` ) ;
if ( noun . base ) {
delete this . nouns [ noun . base ] ;
}
noun . approved = true ;
noun . base = null ;
this . $forceUpdate ( ) ;
} ,
async hide ( noun ) {
await this . $axios . $post ( ` /nouns/hide/ ${ noun . id } ?secret= ${ this . secret || '' } ` ) ;
noun . approved = false ;
this . $forceUpdate ( ) ;
} ,
async remove ( noun ) {
if ( ! confirm ( 'Czy na pewno usunąć ten wpis?' ) ) {
return false ;
}
await this . $axios . $post ( ` /nouns/remove/ ${ noun . id } ?secret= ${ this . secret || '' } ` ) ;
delete this . nouns [ noun . id ] ;
this . $forceUpdate ( ) ;
} ,
} ,
computed : {
nouns ( ) {
return buildDict ( function * ( that ) {
for ( let w of that . nounsRaw ) {
yield [ w . id , new Noun ( w ) ] ;
}
} , this ) ;
} ,
} ,
2020-08-05 03:04:31 -07:00
watch : {
filter ( ) {
if ( process . client ) {
if ( this . filter ) {
window . location . hash = this . filter ;
} else {
history . pushState ( '' , document . title , window . location . pathname + window . location . search ) ;
}
}
}
} ,
2020-08-04 07:15:41 -07:00
head ( ) {
const title = 'Słownik neutratywów' ;
2020-08-05 12:21:47 -07:00
const description = 'Feminatywy feminatywami, ale prawdziwe wyzwanie to tworzenie neutratywów! Przedstawiamy tworzony przez społeczność słownik rzeczowników z wyszczególnieniem ich formy męskiej, żeńskiej i neutralnej.' ;
2020-08-04 07:15:41 -07:00
const banner = ` ${ process . env . baseUrl } /bannerNouns.png ` ;
return {
title : title ,
meta : [
{ hid : 'og:title' , property : 'og:title' , content : title } ,
{ hid : 'twitter:title' , property : 'twitter:title' , content : title } ,
2020-08-05 12:21:47 -07:00
{ hid : 'description' , name : 'description' , content : description } ,
{ hid : 'og:description' , property : 'og:description' , content : description } ,
{ hid : 'twitter:description' , property : 'twitter:description' , content : description } ,
2020-08-04 07:15:41 -07:00
{ hid : 'og:logo' , property : 'og:logo' , content : banner } ,
{ hid : 'twitter:image' , property : 'twitter:image' , content : banner } ,
] ,
}
} ,
}
< / script >
< style lang = "scss" >
@ import "assets/style" ;
. list - singular {
padding - left : 0 ;
list - style : none ;
li {
white - space : nowrap ;
}
li : before {
content : "⋅" ;
display : inline - block ;
width : $fa - fw - width ;
text - align : center ;
}
}
. list - plural {
padding - left : 0 ;
list - style : none ;
li {
white - space : nowrap ;
}
li : before {
content : "⁖" ;
display : inline - block ;
width : $fa - fw - width ;
text - align : center ;
}
}
. mark - left {
border - left : 3 px solid $nouns ;
}
tr {
. hover - show {
opacity : 0 ;
}
& : hover . hover - show {
opacity : 1 ;
}
}
< / style >