diff --git a/api_static/api/index.html b/api_static/api/index.html index 4adbe726365bd4f8ec9ad272b1d23d5b82653452..ac47d82b75b1bfac2abdebb305f050f450f3be1e 100644 --- a/api_static/api/index.html +++ b/api_static/api/index.html @@ -1,6 +1,7 @@ <!DOCTYPE html> <html> <head><meta charset="utf-8"> + <meta http-equiv="refresh" content="0; URL=https://ord.uib.no/" /> <style> div { diff --git a/public/index.html b/public/index.html index 5eb84bb05a95f818a33eb2f0b8b84b6945f71d71..698c82cf2c800c21d5d120da1ea260d8568ac199 100644 --- a/public/index.html +++ b/public/index.html @@ -7,6 +7,16 @@ <link rel="icon" href="<%= BASE_URL %>favicon.ico"> <link rel="apple-touch-icon" href="<%= BASE_URL %>touch-icon.png"> <meta name="robots" content="noindex" /> + <meta property="og:title" content="Ordbøkene.no - Bokmålsordboka og Nynorskordboka" /> + <meta property="twitter:title" content="Ordbøkene.no - Bokmålsordboka og Nynorskordboka" /> + <meta property="og:type" content="website" /> + <meta property="og:url" content="ordbokene.no" /> + <meta property="og:description" content="Bokmålsordboka og Nynorskordboka viser skrivemåte og bøying i tråd med norsk rettskriving. Språkrådet og Universitetet i Bergen står bak ordbøkene." /> + <meta property="twitter:description" content="Bokmålsordboka og Nynorskordboka viser skrivemåte og bøying i tråd med norsk rettskriving. Språkrådet og Universitetet i Bergen står bak ordbøkene." /> + <meta property="og:image" content="https://dev.ordbok.uib.no/logo.png" /> + <meta property="og:image:width" content="256px" /> + <meta property="og:image:height" content="256px" /> + <meta property="twitter:image" content="https://dev.ordbok.uib.no/logo.png" /> <meta name="google-site-verification" content="5rx7dRI0Rbz6cXL4zgASLVDBDbT1noovdhJH8V69xhw" /> <title>Ordbøkene.no - Bokmålsordboka og Nynorskordboka</title> </head> diff --git a/public/logo.png b/public/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9c846072d1b5daa4d99ce9d51e2739d6e089e3c7 Binary files /dev/null and b/public/logo.png differ diff --git a/src/App.vue b/src/App.vue index e819d3a77e11fe756718410997a86113042d6727..74c3b6ef3ac4e05b7adb5b5f80a0b6e8836ee4cf 100644 --- a/src/App.vue +++ b/src/App.vue @@ -34,9 +34,8 @@ <header> <TopBar/> </header> - <div class = "banner" aria-hidden="true" :class="$vuetify.breakpoint"> - <div> + <div v-if="show_banner_text"> <h1 :class="$vuetify.breakpoint.name">Ordbøkene</h1> <p class="sub-title">{{$t("sub_title")}}</p> </div> @@ -65,6 +64,9 @@ import TopBar from './components/TopBar.vue' computed: { no_locale: function() { return !this.$store.state.locale + }, + show_banner_text: function() { + return !this.$route.name || (window.innerHeight > 800 && this.$route.name != 'about' ) } }, mounted: function(){ @@ -134,7 +136,6 @@ h1.xs, h1.sm { } .banner { - margin-top: 48px; padding-top: 10px; } @@ -269,7 +270,7 @@ th[class="infl-group"] { } .theme--light.v-label, .theme--light.v-subheader, .transparent-text{ - color: rgba(0, 0, 0, 0.7) + color: var(--v-text-base) } </style> diff --git a/src/assets/designecologist-5mj5jLhYWpY-unsplash.webp b/src/assets/designecologist-5mj5jLhYWpY-unsplash.webp new file mode 100644 index 0000000000000000000000000000000000000000..aa78b69d2120a359f8cbdcf24e19c82b4db27c8f Binary files /dev/null and b/src/assets/designecologist-5mj5jLhYWpY-unsplash.webp differ diff --git a/src/components/About.vue b/src/components/About.vue index a62a07490e0024d37a6e09aa61f30f48af4b18a3..bf9f3b6e67febe308d7aef54800fed45b2040022 100644 --- a/src/components/About.vue +++ b/src/components/About.vue @@ -471,7 +471,7 @@ The Norwegian Language Collections at the University of Bergen Library have a nu <h4> Andre kvalitetssikra og fritt tilgjengelege ordbøker: </h4> - <ul class="bullet"> + <p><ul class="bullet"> <li> <a href="http://no2014.uib.no/perl/ordbok/no2014.cgi">Norsk Ordbok</a> : Ordboka over det norske folkemålet og det nynorske skriftmålet @@ -499,7 +499,20 @@ The Norwegian Language Collections at the University of Bergen Library have a nu <a href="http://www.svenska.se/">svenska.se</a> : fleire svenske ordbøker </li> - </ul> + </ul></p> + </details> + + <details> + <summary><h3>Bruk av ordbøkene.no i skulen</h3></summary> +<p>Blant dei norskspråklege ordbøkene og ordlistene er det berre dei som er godkjende av Språkrådet, som kan nyttast i undervisning og på prøver og eksamen. <em>Bokmålsordboka</em> og <em>Nynorskordboka</em> er blant desse, og dei andre finn du i <a href ="https://www.sprakradet.no/sprakhjelp/Skriverad/Ordlister/Ordlister-til-skulebruk/">oversikta til Språkrådet over godkjende ressursar</a>.</p> +<p>Når skulane stengjer ein del nettsider på prøver og eksamen, må eit utval andre sider vere opne for at ordbøkene.no skal fungere. Her er domena som ordboksida brukar: +<ul class="bullet"> + <li><a href="https://ordbokene.no/">https://ordbokene.no/</a></li> + <li><a href="https://fonts.googleapis.com/">https://fonts.googleapis.com/</a></li> + <li><a href="https://fonts.gstatic.com/">https://fonts.gstatic.com/</a></li> + <li><a href="https://plausible.io/">https://plausible.io/</a></li> + <li><a href="https://oda.uib.no/">https://oda.uib.no/</a></li> + </ul></p> </details> </Article> @@ -612,15 +625,28 @@ The Norwegian Language Collections at the University of Bergen Library have a nu <p><a href="http://www.sprakradet.no/">Språkrådet</a> har mange språkressurser samlet under menyen Språkhjelp, gå til <a href="http://www.sprakradet.no/sprakhjelp/Skriveregler/">skriveregler</a>, <a href="http://www.sprakradet.no/sprakhjelp/Praktisk-grammatikk/">praktisk grammatikk</a> eller <a href="http://www.sprakradet.no/sprakhjelp/Skriverad/">skriveråd</a>.</p> <p>Norsk ordbank ligger også tilgjengelig for nedlasting hos <a href="https://www.nb.no/sprakbanken/ressurskatalog/?_search=ordbank">Språkbanken ved Nasjonalbiblioteket</a> under lisensen CC-BY. Ordbanken inneholder bl.a. fullformslister for bokmål og nynorsk med informasjon om ordklasse og normert bøying.</p> <h4>Andre kvalitetssikrede og fritt tilgjengelige ordbøker</h4> - <ul class="bullet"> + <p><ul class="bullet"> <li><a href="http://no2014.uib.no/perl/ordbok/no2014.cgi">Norsk Ordbok:</a> Ordboka over det norske folkemålet og det nynorske skriftmålet</li> <li><a href="https://naob.no/">NAOB:</a> Det Norske Akademis Ordbok: bokmål og riksmål fra tidlig 1800-tall fram til i dag</li> <li><a href="http://lexin.udir.no/">LEXIN:</a> ordbøker for minoritetsspråklige elever i grunnskolen, videregående og voksenopplæring</li> <li><a href="http://www.islex.no/">Islex:</a> ordbok fra islandsk til norsk (bokmål og nynorsk), svensk, dansk, færøysk og finsk</li> <li><a href="http://ordnet.dk/">ordnet.dk:</a> flere danske ordbøker og korpus</li> <li><a href="https://svenska.se/">svenska.se:</a> flere svenske ordbøker</li> - </ul> + </ul></p> </div></details> + + <details> + <summary><h3>Bruk av ordbøkene.no i skolen</h3></summary> +<p>Blant norskspråklige ordbøker og ordlister er det bare de som er godkjent av Språkrådet, som kan brukes i undervisning og på prøver og eksamen. <em>Bokmålsordboka</em> og <em>Nynorskordboka</em> er blant disse, og de andre finner du på <a href ="https://www.sprakradet.no/sprakhjelp/Skriverad/Ordlister/Ordlister-til-skulebruk/"> Språkrådets oversikt over godkjente ressurser</a>.</p> +<p>Når skolene stenger en del nettsider på prøver og eksamen, må et utvalg andre sider være åpne for at ordbøkene.no skal fungere. Her er domenene som ordboksida bruker: +<ul class="bullet"> + <li><a href="https://ordbokene.no/">https://ordbokene.no/</a></li> + <li><a href="https://fonts.googleapis.com/">https://fonts.googleapis.com/</a></li> + <li><a href="https://fonts.gstatic.com/">https://fonts.gstatic.com/</a></li> + <li><a href="https://plausible.io/">https://plausible.io/</a></li> + <li><a href="https://oda.uib.no/">https://oda.uib.no/</a></li> + </ul></p> + </details> </Article> diff --git a/src/components/Article.vue b/src/components/Article.vue index 638021164fd0bb6baabaff8a3ef4e15c01f1a273..35a090a3970b940fd9a6ad6fe2e4a34d08026742 100644 --- a/src/components/Article.vue +++ b/src/components/Article.vue @@ -1,6 +1,6 @@ <template> - <article class='v-sheet v-card rounded-xl' v-bind:class="{'collapsable': collapsable, 'collapsed': collapsed}" v-if="article"> - <div v-if="!invalid"> + <article v-bind:class="{'collapsable': collapsable, 'collapsed': collapsed, 'v-sheet v-card rounded-xl': !$parent.article}" v-if="article"> + <div :class="$vuetify.breakpoint.name" v-if="!invalid"> <Header :title_id="title_id" :lemmas="article.lemmas" :dictionary="dictionary" :article_id="article.article_id" @toggle-collapse = "toggle_collapse"/> <InflectionButton :lemmas="article.lemmas" :dictionary="dictionary" :article_id="article.article_id"/> @@ -36,7 +36,6 @@ </article> </template> -<script src="/dist/vue-social-sharing.js"></script> <script> import DefElement from './DefElement.vue' import Definition from './Definition.vue' @@ -93,7 +92,6 @@ export default { return {title: this.article.lemmas[0].lemma + ' - ' + {"bm,nn": "Ordbøkene.no - Bokmålsordboka og Nynorskordboka", "bm": "Bokmålsordboka", "nn": "Nynorskordboka"}[this.dictionary], meta: [{name: 'description', vmid: 'description', content: this.meta_description}] } - } }, computed: { @@ -142,7 +140,7 @@ export default { }, snippet: function() { if (this.collapsable && this.article.body.definitions) { - return this.parse_definitions(this.article.body.definitions) + return this.meta_description } return null }, @@ -365,7 +363,6 @@ ul li.definition { - .choose { color: var(--v-primary-base) !important; text-decoration: none; diff --git a/src/components/Autocomplete.vue b/src/components/Autocomplete.vue index c9d28e216a88405b178ac4ff786d0442d05428d6..202ca88fdbef425bd134c19fa2dc0f5eefa829eb 100644 --- a/src/components/Autocomplete.vue +++ b/src/components/Autocomplete.vue @@ -21,7 +21,7 @@ :placeholder="$t('search_placeholder')" ref="autocomplete" color="primary" - :dense="$vuetify.breakpoint.smAndDown" + :dense="$vuetify.breakpoint.mdAndDown" > <template v-slot:append> <div v-if="!$parent.error && $parent.lang=='bm,nn'"> @@ -36,7 +36,7 @@ {{$t('accessibility.menu')}}</a> <v-divider vertical/> - <v-menu allowOverflow: true offsetY> + <v-menu allowOverflow: true offsetY v-model="dictMenuOpened"> <template v-slot:activator="{ on, attrs }"> <v-btn class="search-field-button" @@ -49,13 +49,16 @@ @click.native="items=[]"> <v-icon left>book</v-icon> - <span v-if="!$vuetify.breakpoint.smAndDown"> + <span v-if="$vuetify.breakpoint.mdAndUp"> {{$t(`dicts.${$parent.lang}`)}} + <v-icon right>{{ dictMenuOpened? 'expand_less' : 'expand_more'}}</v-icon> </span><span v-if="$vuetify.breakpoint.smAndDown">{{$t(`dicts_short.${$parent.lang}`)}}</span></v-btn> </template> <v-list> <v-list-item v-for="item in ['bm,nn','bm','nn'].map(l => {return {label: $t(`dicts.${l}`), tag: l}})" :key="item.tag" - active-class="v-list-item--active" :class="$parent.lang == item.tag ? 'v-list-item--active' : ''" @click="update_lang_form(item.tag)"> + active-class="v-list-item--active" @click="update_lang_form(item.tag)"> + <v-list-item-icon v-if="$parent.lang == item.tag"><v-icon color="primary">radio_button_checked</v-icon></v-list-item-icon> + <v-list-item-icon v-else><v-icon>radio_button_unchecked</v-icon></v-list-item-icon> <v-list-item-title >{{ item.label }}</v-list-item-title> </v-list-item> @@ -94,7 +97,8 @@ search: null, select: this.$route.query? this.$route.query.q : null, suggesting: null, - menuDialog: false + menuDialog: false, + dictMenuOpened: false } }, watch: { @@ -198,10 +202,6 @@ <style scoped> -v-toolbar { - z-index: 2000 !important; -} - .searchResult { margin-right: 5px; } diff --git a/src/components/DictionaryView.vue b/src/components/DictionaryView.vue index 531f2e87b70dca6cb72d3d4203be7fcb94581f7d..332e7a0dbf69afa0871fbec7c90eef469a86846a 100644 --- a/src/components/DictionaryView.vue +++ b/src/components/DictionaryView.vue @@ -1,7 +1,6 @@ <template> <main> - <div class="search_container" - v-if="!article && $route.name != 'lookup'"> + <div class="search_container"> <Autocomplete v-on:submit="select_result" :api="get_search_endpoint" v-on:update-lang-form="update_lang_form"> @@ -50,20 +49,13 @@ </div> <div id="return_to_results" - v-if="article"> + v-if="article && $store.state.searchRoute"> <router-link id="return_link" - v-if="$store.state.searchRoute" :to="$store.state.searchRoute" @click.native="return_to_results()"> <v-icon left class="nav_arrow">chevron_left</v-icon>{{$t("notifications.back")}} </router-link> - <a id="return_link" - v-if="!$store.state.searchRoute" - href="/"> - <v-icon left - class="nav_arrow">search</v-icon>{{$t('notifications.search')}} - </a> </div> @@ -134,7 +126,7 @@ size="120"></v-progress-circular> </div> <div id="single_article_container" - v-if="article" :class="$store.state.searchRoute && $vuetify.breakpoint.mdAndUp && lang == 'bm,nn' ? article.dictionary : null"> + v-if="article && !error && !no_results" :class="$store.state.searchRoute && $vuetify.breakpoint.mdAndUp && lang == 'bm,nn' ? article.dictionary : null"> <Article :key="article_key" :article="article" title_id="result0" @@ -143,6 +135,7 @@ articleLookup/> </div> <div class="welcome" + :title="$t('photo')" v-show="$route.name=='/' || !$route.name"> <div class="monthly" :class="$vuetify.breakpoint.name"> @@ -599,6 +592,7 @@ export default { update_lang_form: function (lang) { this.lang = lang + this.$store.commit("setDefaultDict", lang) this.page = 1 }, update_scope: function(scope) { @@ -655,7 +649,7 @@ export default { }, mounted: function(){ let self = this - self.lang = self.$route.params.lang || this.$store.state.defaultDict + self.lang = self.$route.params.lang || this.$store.state.defaultDict || 'bm,nn' if (self.$route.query.pos) { self.pos_selected = self.$route.query.pos.toUpperCase() } else self.pos_selected = null @@ -762,9 +756,8 @@ main { div.welcome { padding-top: 10px; - margin-top: 10px; flex-grow: 10; - background-image: url('../assets/designecologist-5mj5jLhYWpY-unsplash.jpg'); + background-image: url('../assets/designecologist-5mj5jLhYWpY-unsplash.webp'); background-repeat: no-repeat; background-position-x: center; } @@ -787,26 +780,21 @@ div.welcome article { padding-right: calc((100vw - 1200px) / 2); } -#single_article_container.nn { - justify-content: flex-end; - display: flex; -} -#single_article_container.nn article, #single_article_container.bm article{ - width: 60%; +#single_article_container { + box-shadow: 0px 3px 1px -2px rgb(0 0 0 / 20%), 0px 2px 2px 0px rgb(0 0 0 / 14%), 0px 1px 5px 0px rgb(0 0 0 / 12%); + background-color: white; + height: 100%; } #notifications .search_notification { - padding-top: 24px; + padding-top: 10px; padding-bottom: 0px; margin-left: 10px; font-size: 18px; } -#notifications.sm .search_notification, #notifications.xs .search_notification { - padding-top: 10px; -} #suggestions { padding-left: 10px; @@ -887,6 +875,7 @@ li.suggestion { #return_to_results { padding-left: 10px; padding-top: 10px; + padding-bottom: 10px; display: table-cell; } diff --git a/src/components/Header.vue b/src/components/Header.vue index c6ef8386c066cfc01446df52b2e8655a93e68ca5..b1cc69f206b96aceea69ff18c8a539a3bef39c87 100644 --- a/src/components/Header.vue +++ b/src/components/Header.vue @@ -4,68 +4,70 @@ <span class="dict-label">{{dict_label}}</span> <div v-bind:class="{ 'lookup': $route.name=='lookup'}" v-for="(lemma_group, i) in lemma_groups" :key="i"> <div v-if="$route.name!='lookup'"> - <router-link - :id="title_id" - :to="$parent.link_to_self.ref" + <router-link + :id="title_id" + :to="$parent.link_to_self.ref" @click.native="$parent.details_click($parent.link_to_self)" v-bind:class="{'long_lemma': long_lemma}" class="article_header"> <h2> <!-- - - --><span v-for="(lemma, index) in lemma_group.lemmas" + + --><span v-for="(lemma, index) in lemma_group.lemmas" :key="index">{{lemma.lemma}}<!-- --><span v-if="lemma.hgno" - :aria-label="'Betydning nummer ' + parseInt(lemma.hgno)" + :aria-label="'Betydning nummer ' + parseInt(lemma.hgno)" :title="'Betydning nummer '+parseInt(lemma.hgno)" class="hgno">{{" "+roman_hgno(lemma)}}</span><!-- - --><span - class="title_comma" + --><span + class="title_comma" v-if="lemma_group.lemmas[1] && index < lemma_group.lemmas.length-1">{{", "}} </span> </span> </h2> +<h2 v-if="secondary_header_text">{{secondary_header_text}}</h2> <span class="subheader"> - <span class="header_group_list" + <span class="header_group_list" v-if="lemma_group.description">{{lemma_group.description}}</span> {{lemma_group.genus}} <span v-if="$store.state.showInflectionNo">{{lemma_group.inflection_classes}}</span> - + </span> </router-link></div><div v-else><h2> - - - <span :id="title_id" v-for="(lemma, index) in lemma_group.lemmas" + + + <span :id="title_id" v-for="(lemma, index) in lemma_group.lemmas" :key="index">{{lemma.lemma}}<!-- --><span v-if="lemma.hgno" - :aria-label="'Betydning nummer ' + parseInt(lemma.hgno)" + :aria-label="'Betydning nummer ' + parseInt(lemma.hgno)" :title="'Betydning nummer '+parseInt(lemma.hgno)" class="hgno">{{" "+roman_hgno(lemma)}}</span><!-- - --><span - class="title_comma" + --><span + class="title_comma" v-if="lemma_group.lemmas[1] && index < lemma_group.lemmas.length-1">{{", "}} </span> </span> </h2> + <h2 v-if="secondary_header_text">{{secondary_header_text}}</h2> <span class="subheader"> - <span class="header_group_list" + <span class="header_group_list" v-if="lemma_group.description">{{lemma_group.description}}</span> <span v-if="$store.state.showInflectionNo">{{lemma_group.inflection_classes}}</span> </span> - + </div> - + <span v-if="!lemma_groups[1] && $parent.collapsed && $parent.snippet && $parent.has_content" class="definition_snippet"> <span v-for="(subitem, index) in highlight_hits($parent.snippet, {fulltext_highlight: $parent.fulltext_highlight})" :key="index" :class="subitem.type">{{subitem.text}}</span> - </span> + </span> </div> <SplitInf v-if="!$parent.collapsed" :lemmas="lemmas"/> - + <span v-if="$parent.collapsable" > <v-btn class="expand_icon" v-if="$parent.collapsed" text @@ -78,8 +80,8 @@ small @click="$emit('toggle-collapse')"> <v-icon small>expand_less</v-icon></v-btn> - - </span> + + </span> </div> </template> @@ -142,8 +144,8 @@ export default { secondary_header_text: function() { let a_forms = [] this.lemmas.forEach((lemma, i) => { - if (lemma.paradigm_info[0] && lemma.paradigm_info[0].inflection_group == 'VERB') { - let inf2 = lemma.paradigm_info[0].inflection[1] && lemma.paradigm_info[0].inflection[1].word_form + if (lemma.paradigm_info[0] && lemma.paradigm_info[0].inflection[1] && lemma.paradigm_info[0].inflection[1].tags[0] == 'Inf') { + let inf2 = lemma.paradigm_info[0].inflection[1].word_form if (inf2 && inf2.length) { a_forms.push(inf2) } @@ -186,7 +188,7 @@ export default { genus_description += self.$t('tags.Masc') + ', ' + self.$t('tags.Fem', self.content_locale) + self.$t('or') + self.$t('tags.Neuter', self.content_locale) } else { genus_description += Array.from(genera).map(code => self.$t('tags.'+code, self.content_locale)).sort().join(self.$t('or')) - } + } if (genus_map[genus_description]) { genus_map[genus_description].push(lemma) } @@ -252,6 +254,24 @@ article h2.secondary_header { font-variant-caps: all-small-caps; } +#single_article_container .dict-label { + font-size: 140%; + right: 24px; + left: unset; +} + +#single_article_container .sm .dict-label { + font-size: 120%; + right: 24px; + left: unset; +} + +#single_article_container .xs .dict-label { + font-size: 100%; + right: 24px; + left: unset; +} + div.lemma { diff --git a/src/components/Menu.vue b/src/components/Menu.vue index 71f63e1bc12856d127bd244500a19fde2502a25f..a6d89166364650a9a41ac49376ac909dca08dcbc 100644 --- a/src/components/Menu.vue +++ b/src/components/Menu.vue @@ -14,9 +14,7 @@ <v-list-item-icon><v-icon>chevron_right</v-icon></v-list-item-icon> </v-list-item> - <v-divider></v-divider> - - <v-subheader>{{$t('settings.subheader')}}</v-subheader> + <v-list-group sub prepend-icon="language"> @@ -33,7 +31,7 @@ </v-list></v-list-item> </v-list-group> - <v-list-group prepend-icon="book"> + <v-list-group v-if="false" prepend-icon="book"> <template v-slot:activator> <v-list-item-title>{{$t('settings.dict.title')}}</v-list-item-title> </template> @@ -50,7 +48,7 @@ <v-list-group prepend-icon="settings"> <template v-slot:activator> - <v-list-item-title>{{$t('settings.misc')}}</v-list-item-title> + <v-list-item-title>{{$t('settings.title')}}</v-list-item-title> </template> <v-list-item><Settings/></v-list-item> diff --git a/src/components/SearchResults.vue b/src/components/SearchResults.vue index 20447016f0cce19d87529bb278b5fe5a25dc518c..865e457b33c6665decc346baf3e6f05c38229a6e 100644 --- a/src/components/SearchResults.vue +++ b/src/components/SearchResults.vue @@ -108,7 +108,7 @@ export default { } .flex-container { - padding-top: 24px; + padding-top: 0px; display: flex; } diff --git a/src/components/SearchToolbar.vue b/src/components/SearchToolbar.vue index 58643518048f7da8bd770699e394f2a0158e98bd..1be19b5ebb509314c3e70299e99f9abc7973d983 100644 --- a/src/components/SearchToolbar.vue +++ b/src/components/SearchToolbar.vue @@ -1,13 +1,10 @@ <template> - <div> - + <div id="mobile_toolbar"> <v-card v-if="$vuetify.breakpoint.smAndDown" rounded="xl" min-height="38px"> <v-list two-line v-if="expanded"> <v-list-item> - <v-autocomplete - auto-select-first - clearable + <v-select v-model="$parent.pos_selected" hide-details :menu-props="{ offsetY: true }" @@ -15,7 +12,7 @@ :items="pos_items" append-icon="expand_more" @input="updatePos"> - </v-autocomplete> + </v-select> </v-list-item> <v-list-item> <v-checkbox @@ -40,7 +37,7 @@ @click="expanded=!expanded"> {{expanded? '' : $t('options.title')}}<v-icon small color="primary" :right="!expanded">{{expanded ? 'expand_less': 'expand_more'}}</v-icon></v-btn> </v-card> -<div class="desktop_toolbar" v-else> +<div id="desktop_toolbar" v-else> <span> <v-checkbox v-model="inflected_results" @@ -57,10 +54,7 @@ </span> <span> - <v-autocomplete - auto-select-first - - clearable + <v-select v-model="$parent.pos_selected" hide-details :menu-props="{ offsetY: true }" @@ -69,7 +63,7 @@ :items="pos_items" append-icon="expand_more" @input="updatePos"> - </v-autocomplete> + </v-select> </span> </div> </div> @@ -113,9 +107,12 @@ export default { } }, pos_items: function() { - return ["NOUN", "PRON","DET","ADJ","CCONJ","SCONJ", "ADV", "VERB", "INTJ"].map(text =>{ - return {text: this.$t("tags." + text ), value: text} + let items = ["VERB", "NOUN", "ADJ", "PRON", "DET", "ADV", "CCONJ", "SCONJ", "INTJ"].map(tag =>{ + return {text: this.$t("pos_tags_plural." + tag ), value: tag} }) + + items.unshift({text: this.$t('all_pos'), value: null}) + return items } }, @@ -154,10 +151,7 @@ export default { bottom: 0px; left: 0px; border-radius: 28px; - - float: left; - width: 100%; } @@ -168,7 +162,7 @@ export default { } -.desktop_toolbar { +#desktop_toolbar { display: flex; padding-left: 10px; margin-left: 10px; @@ -177,7 +171,11 @@ export default { gap: 24px; } -.desktop_toolbar v-combobox { +#desktop_toolbar, #mobile_toolbar { + margin-bottom: 10px; +} + +#desktop_toolbar v-combobox { width: 300px; } diff --git a/src/components/TopBar.vue b/src/components/TopBar.vue index 7eb27b0b9f13a1be751e18310cff344341857da8..04a35daabfb3a2b49b89a7622b0640107141c709 100644 --- a/src/components/TopBar.vue +++ b/src/components/TopBar.vue @@ -1,13 +1,12 @@ <template> <div> - <v-app-bar elevate-on-scroll app class = "top-bar" dense dark color="primary"> + <v-app-bar class = "top-bar" dense elevation="0" dark color="primary"> <v-app-bar-title class="beta" :title="release" aria-label="Ordbøkene: Bokmålsordboka og Nynorskordboka"><a href ="/">{{$vuetify.breakpoint.smAndDown ? 'Ordbøkene' : 'ordbøkene.no'}}</a></v-app-bar-title> <v-spacer/> <v-divider vertical/> <v-toolbar-items v-if="$route.name == 'about'"> - <v-btn text @click.native="back" v-if="$route.name == 'about'">{{$t('close')}}<v-icon right>close</v-icon></v-btn> - <v-btn text v-else @click.native="home">Søk i ordbøkene<v-icon right>search</v-icon></v-btn> + <v-btn text @click.native="back">{{$t('close')}}<v-icon right>close</v-icon></v-btn> </v-toolbar-items> <v-toolbar-items> @@ -73,9 +72,6 @@ export default { margin-top: 48px !important; } -.v-app-bar { - z-index: 1000 !important; -} .v-app-bar-title a { text-decoration: none; diff --git a/src/locales/eng.json b/src/locales/eng.json index 80761ee5fdc407622947c7b5dc20af325bbad976..37a71662cdb9930087cf4565b40f2de339ea0e6d 100644 --- a/src/locales/eng.json +++ b/src/locales/eng.json @@ -1,5 +1,6 @@ { "sub_title": "Bokmålsordboka and Nynorskordboka", + "photo": "Photo by Jeremy Bishop on Unsplash", "close": "Close", "cancel": "Cancel", "or": " or ", @@ -39,6 +40,7 @@ "fulltext": "Full-text search", "pos": "Part of speech" }, +"all_pos": "all parts of speech", "tags": { "NOUN": "noun", "VERB": "verb", @@ -74,7 +76,7 @@ "INTJ": "interjections" }, "settings": { - "subheader": "Settings", + "title": "Settings", "inflection_no": "Show inflection codes", "locale": { "title": "Locale" , @@ -90,7 +92,6 @@ "always": "Show exerpts of articles", "never": "Show complete articles" }, - "misc": "Other settings", "reset": "Delete stored settings" }, "notifications": { diff --git a/src/locales/nno.json b/src/locales/nno.json index 7d99aed9674ab9a53824fc37c8e5cc13fc949702..9a6b714faa8442f4edf341dc43c091a822ecc51f 100644 --- a/src/locales/nno.json +++ b/src/locales/nno.json @@ -1,5 +1,6 @@ { "sub_title": "Bokmålsordboka og Nynorskordboka", + "photo": "Foto: Jeremy Bishop (Unsplash)", "close": "Lukk", "cancel": "Avbryt", "to_top": "Til toppen", @@ -39,6 +40,7 @@ "fulltext": "Fritekstsøk", "pos": "Ordklasse" }, + "all_pos": "alle ordklasser", "tags": { "NOUN": "substantiv", "VERB": "verb", @@ -74,23 +76,18 @@ "INTJ": "interjeksjonar" }, "settings": { - "subheader": "Innstillingar", + "title": "Innstillingar", "inflection_no": "Vis bøyingskodane frå dei trykte ordbøkene", "locale": { "title": "Språk", "description": "Her kan du velje om du vil ha bokmål, nynorsk eller engelsk som språk på knappar, meldingar og menyar. Dette påverkar ikkje tydingar, døme og faste uttrykk i ordbøkene: Bokmålsordboka kjem framleis til å vere på bokmål, og Nynorskordboka kjem til å vere på nynorsk." }, - "dict": { - "title": "Føretrekt ordbokoppsett", - "description": "Vel om du ønskjer Bokmålsordboka, Nynorskordboka eller begge ordbøkene som standardvalet ditt når du går inn på ordbøkene.no. Dette kjem ikkje til å ha noko så seie for det noverande søket eller lenkjer til søk i ordbøkene, men tek til å gjelde frå neste gong du startar på forsida av ordbøkene.no. Viss du ønskjer å byte ordbok i noverende søk, kan du bruke menyen til høgre i søkjefeltet." - }, "collapse": { "description": "Vel når artiklane skal komprimerast til eit utdrag av tydingane.", "auto": "Automatisk (meir enn to resultat)", "always": "Vis berre utdrag", "never": "Vis berre fullstendige artiklar" }, - "misc": "Andre innstillingar", "reset": "Slett lagra innstillingar" }, "notifications": { @@ -99,7 +96,7 @@ "similar_bm": "Legg til liknande treff frå Bokmålsordboka: ", "similar_nn": "Legg til liknande treff frå Nynorskordboka: ", "search": "Søk i ordbøkene", - "back": "Tilbake til søk", + "back": "Tilbake til søkeresultater", "no_results": "Ingen treff", "no_pos_results": " i søk på {pos}", "suggest_dict": [ diff --git a/src/locales/nob.json b/src/locales/nob.json index 68cae7c1776fad6ef9fbf47116e072a23a390c28..0e6581057edd50432e6780f9e3c632e0b68c155d 100644 --- a/src/locales/nob.json +++ b/src/locales/nob.json @@ -1,5 +1,6 @@ { "sub_title": "Bokmålsordboka og Nynorskordboka", + "photo": "Foto: Jeremy Bishop (Unsplash)", "close": "Lukk", "cancel": "Avbryt", "to_top": "Til toppen", @@ -39,6 +40,7 @@ "fulltext": "Fritekstsøk", "pos": "Ordklasse" }, + "all_pos": "alle ordklasser", "tags": { "NOUN": "substantiv", "VERB": "verb", @@ -86,23 +88,18 @@ "INTJ": "interjeksjoner" }, "settings": { - "subheader": "Innstillinger", + "title": "Innstillinger", "inflection_no": "Vis bøyningskodene fra de trykte ordbøkene", "locale": { "title": "Språk" , "description": "Her kan du endre språk eller målform på knapper, meldinger og menyer. Dette vil ikke påvirke definisjoner og eksempler i ordbøkene: Bokmålsordboka vil fortsatt være på bokmål, og Nynorskordboka vil være på nynorsk" }, - "dict": { - "title": "Foretrukket ordbokoppsett", - "description": "Velg om du ønsker Bokmålsordboka, Nynorskordboka eller begge ordbøkene som standardvalget ditt når du går inn på ordbokene.no. Dette vil ikke ha betydning for nåværende søk eller lenker til søk i ordbøkene. Hvis du vil bytte ordbok i nåværende søk, kan du bruke menyen til høyre i søkefeltet." - }, "collapse": { "description": "Velg når artiklene skal komprimeres til utdrag av definisjonene.", "auto": "Automatisk (mer enn to resultater)", "always": "Vis bare utdrag", "never": "Vis bare fullstendige artikler" }, - "misc": "Andre innstillinger", "reset": "Slett lagrede innstillinger" }, "notifications": { @@ -111,7 +108,7 @@ "similar_bm": "Legg til lignende treff fra Bokmålsordboka: ", "similar_nn": "Legg til lignende treff fra Nynorskordboka: ", "search": "Søk i ordbøkene", - "back": "Tilbake til søk", + "back": "Tilbake til søkeresultater", "no_results": "Ingen treff", "no_pos_results": " i søk på {pos}", "suggest_dict": [ diff --git a/src/main.js b/src/main.js index d9777789e24ea62d1f273763095e2ded4e1e8521..bcfb2f217ec04ce54abf8dc914f7c549adc7f390 100644 --- a/src/main.js +++ b/src/main.js @@ -113,7 +113,7 @@ const store = new Vuex.Store({ state.currentLocale = localStorage.getItem('currentLocale') state.defaultDict = localStorage.getItem('defaultDict') || 'bm,nn' state.collapseArticles = localStorage.getItem('collapseArticles') || 'auto' - state.noMouse = window.matchMedia('(hover: none)').matches + state.noMouse = !window.matchMedia('(pointer: fine)').matches if (state.currentLocale) { i18n.locale = state.currentLocale