From 7d591297fb31195a402b2d5ea3e2b7ddbc2d5b93 Mon Sep 17 00:00:00 2001 From: Charles - QP Date: Thu, 13 Sep 2018 10:39:47 +0200 Subject: [PATCH] Add event bus to sync locale between nova-translatable field instances --- resources/js/components/FormField.vue | 13 ++++++++++++- resources/js/event-bus.js | 2 ++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 resources/js/event-bus.js diff --git a/resources/js/components/FormField.vue b/resources/js/components/FormField.vue index f33b5b5..1d904c6 100644 --- a/resources/js/components/FormField.vue +++ b/resources/js/components/FormField.vue @@ -57,6 +57,7 @@ import Trix from '../Trix' import { FormField, HandlesValidationErrors } from 'laravel-nova' +import { EventBus } from '../event-bus'; export default { mixins: [FormField, HandlesValidationErrors], @@ -74,6 +75,12 @@ export default { mounted() { this.currentLocale = this.locales[0] || null + + EventBus.$on('localeChanged', locale => { + if(this.currentLocale !== locale) { + this.changeTab(locale, true); + } + }); }, methods: { @@ -100,8 +107,12 @@ export default { this.value[this.currentLocale] = value }, - changeTab(locale) { + changeTab(locale, dontEmit) { this.currentLocale = locale + if(!dontEmit){ + EventBus.$emit('localeChanged', locale); + } + this.$nextTick(() => { if (this.field.trix) { this.$refs.field.update() diff --git a/resources/js/event-bus.js b/resources/js/event-bus.js new file mode 100644 index 0000000..0190242 --- /dev/null +++ b/resources/js/event-bus.js @@ -0,0 +1,2 @@ +import Vue from 'vue'; +export const EventBus = new Vue(); \ No newline at end of file