diff --git a/app/src/composables/use-title/index.ts b/app/src/composables/use-title/index.ts new file mode 100644 index 0000000000..122f3049bb --- /dev/null +++ b/app/src/composables/use-title/index.ts @@ -0,0 +1,4 @@ +import { useTitle } from './use-title'; + +export { useTitle }; +export default useTitle; diff --git a/app/src/composables/use-title/use-title.ts b/app/src/composables/use-title/use-title.ts new file mode 100644 index 0000000000..e5a0e8dd57 --- /dev/null +++ b/app/src/composables/use-title/use-title.ts @@ -0,0 +1,18 @@ +import { ref, Ref, watch } from '@vue/composition-api'; +import { TranslateResult } from 'vue-i18n'; + +export function useTitle(newTitle: string | Ref) { + if (newTitle === undefined || newTitle === null) return; + + const titleRef = typeof newTitle === 'string' ? ref(newTitle) : newTitle; + + watch( + titleRef, + (title, oldTitle) => { + if (typeof title === 'string' && oldTitle !== title) document.title = title; + }, + { immediate: true } + ); + + return titleRef; +} diff --git a/app/src/displays/related-values/index.ts b/app/src/displays/related-values/index.ts index 7fc32a0516..a5db0238a4 100644 --- a/app/src/displays/related-values/index.ts +++ b/app/src/displays/related-values/index.ts @@ -1,6 +1,6 @@ import { defineDisplay } from '@/displays/define'; import DisplayRelatedValues from './related-values.vue'; -import getFieldsFromTemplate from '@/utils/get-fields-from-template'; +import { getFieldsFromTemplate } from '@/utils/get-fields-from-template'; import adjustFieldsForDisplays from '@/utils/adjust-fields-for-displays'; import getRelatedCollection from '@/utils/get-related-collection'; import useCollection from '@/composables/use-collection'; diff --git a/app/src/interfaces/many-to-one/many-to-one.vue b/app/src/interfaces/many-to-one/many-to-one.vue index b6cb7cfd4f..1a8535db4f 100644 --- a/app/src/interfaces/many-to-one/many-to-one.vue +++ b/app/src/interfaces/many-to-one/many-to-one.vue @@ -28,26 +28,11 @@ @@ -71,11 +56,7 @@ @click="setCurrent(item)" > - + @@ -105,7 +86,7 @@ import { defineComponent, computed, ref, toRefs, watch, PropType } from '@vue/composition-api'; import { useCollectionsStore, useRelationsStore } from '@/stores/'; import useCollection from '@/composables/use-collection'; -import getFieldsFromTemplate from '@/utils/get-fields-from-template'; +import { getFieldsFromTemplate } from '@/utils/get-fields-from-template'; import api from '@/api'; import DrawerItem from '@/views/private/components/drawer-item'; import DrawerCollection from '@/views/private/components/drawer-collection'; diff --git a/app/src/interfaces/repeater/repeater-row-header.vue b/app/src/interfaces/repeater/repeater-row-header.vue index e349408bf5..ec56eaba49 100644 --- a/app/src/interfaces/repeater/repeater-row-header.vue +++ b/app/src/interfaces/repeater/repeater-row-header.vue @@ -10,8 +10,7 @@