diff --git a/src/components/AppHeader/AppHeader.vue b/src/components/AppHeader/AppHeader.vue
index 859a47f..5cda341 100644
--- a/src/components/AppHeader/AppHeader.vue
+++ b/src/components/AppHeader/AppHeader.vue
@@ -217,7 +217,7 @@
   mounted() {
     this.$root.$on(
       'change-is-navigation-open',
-      (isNavigationOpen) => (this.isNavigationOpen = isNavigationOpen)
+      (isNavigationOpen) => (this.isNavigationOpen = isNavigationOpen),
     );
   },
   methods: {
@@ -246,7 +246,9 @@
 
 <style lang="scss">
 @mixin focus-box-shadow($padding-color: $navbar-color, $outline-color: $white) {
-  box-shadow: inset 0 0 0 3px $padding-color, inset 0 0 0 5px $outline-color;
+  box-shadow:
+    inset 0 0 0 3px $padding-color,
+    inset 0 0 0 5px $outline-color;
 }
 .app-header {
   .link-skip-nav {
@@ -385,7 +387,9 @@
   height: $header-height;
   line-height: 1;
   &:focus {
-    box-shadow: inset 0 0 0 3px $navbar-color, inset 0 0 0 5px color('white');
+    box-shadow:
+      inset 0 0 0 3px $navbar-color,
+      inset 0 0 0 5px color('white');
     outline: 0;
   }
 }
diff --git a/src/components/Global/FormFile.vue b/src/components/Global/FormFile.vue
index cf713ac..e18d614 100644
--- a/src/components/Global/FormFile.vue
+++ b/src/components/Global/FormFile.vue
@@ -86,7 +86,9 @@
   opacity: 0;
   height: 0;
   &:focus + span {
-    box-shadow: inset 0 0 0 3px theme-color('primary'), inset 0 0 0 5px $white;
+    box-shadow:
+      inset 0 0 0 3px theme-color('primary'),
+      inset 0 0 0 5px $white;
   }
 }
 
diff --git a/src/components/Global/PageTitle.vue b/src/components/Global/PageTitle.vue
index f5e6df9..c3b49d8 100644
--- a/src/components/Global/PageTitle.vue
+++ b/src/components/Global/PageTitle.vue
@@ -28,7 +28,7 @@
         let index = title.search('-');
         title = title.replace(
           '-' + title.charAt(index + 1),
-          title.charAt(index + 1).toUpperCase()
+          title.charAt(index + 1).toUpperCase(),
         );
         i++;
       }
diff --git a/src/components/Global/TableFilter.vue b/src/components/Global/TableFilter.vue
index 7c66bea..f26777b 100644
--- a/src/components/Global/TableFilter.vue
+++ b/src/components/Global/TableFilter.vue
@@ -65,7 +65,8 @@
       default: () => [],
       validator: (prop) => {
         return prop.every(
-          (filter) => 'label' in filter && 'values' in filter && 'key' in filter
+          (filter) =>
+            'label' in filter && 'values' in filter && 'key' in filter,
         );
       },
     },
@@ -94,7 +95,7 @@
     emitChange() {
       const activeFilters = this.filters.map(({ key, values }) => {
         const activeValues = values.filter(
-          (value) => this.tags.indexOf(value) !== -1
+          (value) => this.tags.indexOf(value) !== -1,
         );
         return {
           key,
diff --git a/src/components/Mixins/BVToastMixin.js b/src/components/Mixins/BVToastMixin.js
index a04ef43..4ee757f 100644
--- a/src/components/Mixins/BVToastMixin.js
+++ b/src/components/Mixins/BVToastMixin.js
@@ -12,14 +12,14 @@
       const titleWithIcon = this.$createElement(
         'strong',
         { class: 'toast-icon' },
-        [statusIcon, title]
+        [statusIcon, title],
       );
       return titleWithIcon;
     },
     $_BVToastMixin_createBody(messageBody) {
       if (Array.isArray(messageBody)) {
         return messageBody.map((message) =>
-          this.$createElement('p', { class: 'mb-0' }, message)
+          this.$createElement('p', { class: 'mb-0' }, message),
         );
       } else {
         return [this.$createElement('p', { class: 'mb-0' }, messageBody)];
@@ -40,7 +40,7 @@
             },
           },
         },
-        this.$t('global.action.refresh')
+        this.$t('global.action.refresh'),
       );
     },
     $_BVToastMixin_initToast(body, title, variant) {
@@ -59,7 +59,7 @@
         title: t = this.$t('global.status.success'),
         timestamp,
         refreshAction,
-      } = {}
+      } = {},
     ) {
       const body = this.$_BVToastMixin_createBody(message);
       const title = this.$_BVToastMixin_createTitle(t, 'success');
@@ -73,7 +73,7 @@
         title: t = this.$t('global.status.error'),
         timestamp,
         refreshAction,
-      } = {}
+      } = {},
     ) {
       const body = this.$_BVToastMixin_createBody(message);
       const title = this.$_BVToastMixin_createTitle(t, 'danger');
@@ -87,7 +87,7 @@
         title: t = this.$t('global.status.warning'),
         timestamp,
         refreshAction,
-      } = {}
+      } = {},
     ) {
       const body = this.$_BVToastMixin_createBody(message);
       const title = this.$_BVToastMixin_createTitle(t, 'warning');
@@ -101,7 +101,7 @@
         title: t = this.$t('global.status.informational'),
         timestamp,
         refreshAction,
-      } = {}
+      } = {},
     ) {
       const body = this.$_BVToastMixin_createBody(message);
       const title = this.$_BVToastMixin_createTitle(t, 'info');
diff --git a/src/components/Mixins/TableFilterMixin.js b/src/components/Mixins/TableFilterMixin.js
index ffc8b44..b0c4987 100644
--- a/src/components/Mixins/TableFilterMixin.js
+++ b/src/components/Mixins/TableFilterMixin.js
@@ -30,7 +30,7 @@
       tableData = [],
       startDate,
       endDate,
-      propertyKey = 'date'
+      propertyKey = 'date',
     ) {
       if (!startDate && !endDate) return tableData;
       let startDateInMs = startDate ? startDate.getTime() : 0;
