From af10dddefa34f5e114fa0f51796db7d8d90d1a70 Mon Sep 17 00:00:00 2001
From: Henrik Askjer <henrik.askjer@uib.no>
Date: Mon, 20 Dec 2021 12:01:04 +0100
Subject: [PATCH] try maintaining focus when returning from article lookup

---
 src/components/Article.vue        | 5 +++--
 src/components/Autocomplete.vue   | 4 ++--
 src/components/DictionaryView.vue | 4 ++--
 src/components/Header.vue         | 4 ++--
 src/components/SearchResults.vue  | 6 +++---
 5 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/src/components/Article.vue b/src/components/Article.vue
index 691ce7ea..e62b5916 100644
--- a/src/components/Article.vue
+++ b/src/components/Article.vue
@@ -1,6 +1,6 @@
 <template>
   <article v-bind:class="{'v-sheet v-card rounded-xl': !articleLookup, dictionary, 'collapsable': collapsable, 'collapsed': collapsed}" v-if="article">
-    <Header :article_number="article_number" :lemmas="article.lemmas" :dictionary="dictionary" :article_id="article.article_id" />
+    <Header :title_id="title_id" :lemmas="article.lemmas" :dictionary="dictionary" :article_id="article.article_id" />
     <InflectionButton :lemmas="article.lemmas" :dictionary="dictionary" :article_id="article.article_id"/>
     
     <div class="article_content" :class="$vuetify.breakpoint.name" v-if="!collapsed">
@@ -76,7 +76,7 @@ export default {
   props: {
     article: Object,
     articleLookup: Boolean,
-    article_number: Number
+    title_id: String
 
   },
   data: function() {
@@ -186,6 +186,7 @@ export default {
       this.$emit('article-click', item)
     },
     details_click: function(item) {
+      item.title_id = this.title_id
       this.$emit('details-click', item)
     }
   }
diff --git a/src/components/Autocomplete.vue b/src/components/Autocomplete.vue
index 7f83bb43..aca6190c 100644
--- a/src/components/Autocomplete.vue
+++ b/src/components/Autocomplete.vue
@@ -24,7 +24,7 @@
         :dense="$vuetify.breakpoint.mobile"
       >
       <template v-slot:append>
-        <a class="accessibility_link" href="#main_content_0">GÃ¥ videre til hovedinnholdet</a>
+        <a class="accessibility_link" href="#title_0">GÃ¥ videre til hovedinnholdet</a>
 
                 <a href="#top_menu" class="accessibility_link"
                    @click="$store.commit('toggle', 'menuOpen')"
@@ -179,7 +179,7 @@ import Menu from './Menu.vue'
       }
     },
     mounted: function() {
-      this.$refs.autocomplete.$refs.input.select()
+      if (! this.$route.hash) this.$refs.autocomplete.focus()
     }
   }
 </script>
diff --git a/src/components/DictionaryView.vue b/src/components/DictionaryView.vue
index 3d37915e..79e6e96f 100644
--- a/src/components/DictionaryView.vue
+++ b/src/components/DictionaryView.vue
@@ -437,7 +437,7 @@ export default {
       }
     },
     details_click: function(item) {
-      item.article.source = this.previous
+      item.article.source = this.previous.split('#')[0] + item.title_id
       this.article = item.article
       history.replaceState({article: this.article,
                             search_results: {},
@@ -596,7 +596,7 @@ div.welcome article {
   margin: auto;
 }
 
-#search_results, #spinner, #single_article_container, div.welcome, div.search_container, .error {
+#search_results, #spinner, #above_results, #single_article_container, div.welcome, div.search_container, .error {
   padding-left: calc((100vw - 1200px) / 2);
   padding-right: calc((100vw - 1200px) / 2);
 }
diff --git a/src/components/Header.vue b/src/components/Header.vue
index bb99f839..1c218162 100644
--- a/src/components/Header.vue
+++ b/src/components/Header.vue
@@ -2,7 +2,7 @@
 <template>
   <div class = "header">
     
-    <router-link tabindex="0" :id="'main_content_'+article_number"  :to="$parent.link_to_self.ref" @click.native="$parent.details_click($parent.link_to_self)" class="article_header"><h2>{{header_text}}</h2>
+    <router-link tabindex="0" :id="title_id"  :to="$parent.link_to_self.ref" @click.native="$parent.details_click($parent.link_to_self)" class="article_header"><h2>{{header_text}}</h2>
     <span :aria-label="hgno_arabic" class="hgno" v-if="$store.state.showHGNO">{{hgno}}</span></router-link>
     <span class="dict-label">{{dict_label}}</span>
     <h2 class="secondary_header" v-if="secondary_header_text.length">{{secondary_header_text}}</h2>
@@ -45,7 +45,7 @@ export default {
     lemmas: Array,
     dictionary: String,
     article_id: Number,
-    article_number: Number
+    title_id: String
   },
   computed: {
     header_text: function() {
diff --git a/src/components/SearchResults.vue b/src/components/SearchResults.vue
index 33fdde92..e8fae709 100644
--- a/src/components/SearchResults.vue
+++ b/src/components/SearchResults.vue
@@ -8,7 +8,7 @@
         <li  class="article_container" v-for="(result, index) in both_dicts" :key="index + both_hash">
           <Article
               :article="result"
-              :article_number="index"
+              :title_id="'#title_' + (index + count_bm)"
               @article-click="article_link_click"
               @details-click="details_click">
           </Article>
@@ -18,7 +18,7 @@
         <li  class="article_container" v-for="(result, index) in results_bm" :key="index + bm_hash">
           <Article
               :article="result"
-              :article_number="index"
+              :title_id="'#title_' + (index + count_bm)"
               @article-click="article_link_click"
               @details-click="details_click">
           </Article>
@@ -28,7 +28,7 @@
         <li class="article_container" v-for="(result, index) in results_nn" :key="index + nn_hash">
           <Article
               :article="result"
-              :article_number="index + count_bm"
+              :title_id="'#title_' + (index + count_bm)"
               @article-click="article_link_click"
               @details-click="details_click"
               :class="right_col_class_name">
-- 
GitLab