diff --git a/src/components/Mixins/BVPaginationMixin.js b/src/components/Mixins/BVPaginationMixin.js
index 8b52f8b..4ccf6f2 100644
--- a/src/components/Mixins/BVPaginationMixin.js
+++ b/src/components/Mixins/BVPaginationMixin.js
@@ -1,32 +1,29 @@
-const BVPaginationMixin = {
-  data() {
-    return {
-      currentPage: 1,
-      perPage: 20,
-      itemsPerPageOptions: [
-        {
-          value: 10,
-          text: '10',
-        },
-        {
-          value: 20,
-          text: '20',
-        },
-        {
-          value: 30,
-          text: '30',
-        },
-        {
-          value: 40,
-          text: '40',
-        },
-        {
-          value: 0,
-          text: this.$t('global.table.viewAll'),
-        },
-      ],
-    };
+import i18n from '@/i18n';
+export const currentPage = 1;
+export const perPage = 20;
+export const itemsPerPageOptions = [
+  {
+    value: 10,
+    text: '10',
   },
+  {
+    value: 20,
+    text: '20',
+  },
+  {
+    value: 30,
+    text: '30',
+  },
+  {
+    value: 40,
+    text: '40',
+  },
+  {
+    value: 0,
+    text: i18n.t('global.table.viewAll'),
+  },
+];
+const BVPaginationMixin = {
   methods: {
     getTotalRowCount(count) {
       return this.perPage === 0 ? 0 : count;
diff --git a/src/components/Mixins/BVTableSelectableMixin.js b/src/components/Mixins/BVTableSelectableMixin.js
index cee7d0c..d41ed22 100644
--- a/src/components/Mixins/BVTableSelectableMixin.js
+++ b/src/components/Mixins/BVTableSelectableMixin.js
@@ -1,11 +1,8 @@
+export const selectedRows = [];
+export const tableHeaderCheckboxModel = false;
+export const tableHeaderCheckboxIndeterminate = false;
+
 const BVTableSelectableMixin = {
-  data() {
-    return {
-      tableHeaderCheckboxModel: false,
-      tableHeaderCheckboxIndeterminate: false,
-      selectedRows: [],
-    };
-  },
   methods: {
     clearSelectedRows(tableRef) {
       if (tableRef) tableRef.clearSelected();
diff --git a/src/components/Mixins/LoadingBarMixin.js b/src/components/Mixins/LoadingBarMixin.js
index bb3e796..d115270 100644
--- a/src/components/Mixins/LoadingBarMixin.js
+++ b/src/components/Mixins/LoadingBarMixin.js
@@ -1,9 +1,6 @@
+export const loading = true;
+
 const LoadingBarMixin = {
-  data() {
-    return {
-      loading: true,
-    };
-  },
   methods: {
     startLoader() {
       this.$root.$emit('loader-start');
diff --git a/src/components/Mixins/SearchFilterMixin.js b/src/components/Mixins/SearchFilterMixin.js
index 41f93b1..a4819e2 100644
--- a/src/components/Mixins/SearchFilterMixin.js
+++ b/src/components/Mixins/SearchFilterMixin.js
@@ -1,9 +1,6 @@
+export const searchFilter = null;
+
 const SearchFilterMixin = {
-  data() {
-    return {
-      searchFilter: null,
-    };
-  },
   methods: {
     onChangeSearchInput(searchValue) {
       this.searchFilter = searchValue;
diff --git a/src/components/Mixins/TableRowExpandMixin.js b/src/components/Mixins/TableRowExpandMixin.js
index d5246cd..7f815a4 100644
--- a/src/components/Mixins/TableRowExpandMixin.js
+++ b/src/components/Mixins/TableRowExpandMixin.js
@@ -1,9 +1,7 @@
+import i18n from '@/i18n';
+export const expandRowLabel = i18n.t('global.table.expandTableRow');
+
 const TableRowExpandMixin = {
-  data() {
-    return {
-      expandRowLabel: this.$t('global.table.expandTableRow'),
-    };
-  },
   methods: {
     toggleRowDetails(row) {
       row.toggleDetails();
