refactor: refactored getItemizedSelect into its own mixin to reuse it later on

This commit is contained in:
Thibault Nocchi 2020-12-25 11:03:43 +01:00
parent d61c2e5f4d
commit 9f973232a7
2 changed files with 46 additions and 6 deletions

44
mixins/formsHelper.ts Normal file
View File

@ -0,0 +1,44 @@
/**
* Helper for form related functions
*
* @mixin
*/
import Vue from 'vue';
interface VSelectItem {
value: unknown;
}
declare module '@nuxt/types' {
interface Context {
getItemizedSelect: (values: unknown[]) => VSelectItem[];
}
interface NuxtAppOptions {
getItemizedSelect: (values: unknown[]) => VSelectItem[];
}
}
declare module 'vue/types/vue' {
interface Vue {
getItemizedSelect: (values: unknown[]) => VSelectItem[];
}
}
const formsHelper = Vue.extend({
methods: {
/**
* Returns a list suitable for use with the 'item' prop for v-select
*
* @param {any[]} values list of values to use for the v-select
* @returns {VSelectItem[]} list ready to be used in the :item property of a v-select
*/
getItemizedSelect(values: unknown[]): VSelectItem[] {
return values.map((value) => {
return { value };
});
}
}
});
export default formsHelper;

View File

@ -298,9 +298,10 @@ import {
MediaStream
} from '@jellyfin/client-axios';
import imageHelper from '~/mixins/imageHelper';
import formsHelper from '~/mixins/formsHelper';
export default Vue.extend({
mixins: [imageHelper],
mixins: [imageHelper, formsHelper],
data() {
return {
loaded: false,
@ -416,11 +417,6 @@ export default Vue.extend({
},
methods: {
...mapActions('backdrop', ['setBackdrop', 'clearBackdrop']),
getItemizedSelect(objects: any[]) {
return objects.map((item: any) => {
return { value: item };
});
},
getLanguageName(code?: string) {
if (!code) return this.$t('undefined');
return langs.where('2B', code).name;