Change eslint rules to use vue recommended

- Ran npm run lint
- Resolved eslint issues

Signed-off-by: Derick Montague <derick.montague@ibm.com>
Change-Id: Icd433ca55321d8bceb941e2d13ebade72bd4981f
diff --git a/.eslintrc.js b/.eslintrc.js
index 4de4c1f..b28fdf4 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -3,7 +3,7 @@
   env: {
     node: true
   },
-  extends: ['plugin:vue/essential', '@vue/prettier'],
+  extends: ['plugin:vue/recommended', '@vue/prettier'],
   rules: {
     'no-console': 'off',
     'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
@@ -12,7 +12,8 @@
       {
         singleQuote: true
       }
-    ]
+    ],
+    'vue/component-name-in-template-casing': ['error', 'kebab-case']
   },
   parserOptions: {
     parser: 'babel-eslint'
diff --git a/src/components/AppHeader/AppHeader.vue b/src/components/AppHeader/AppHeader.vue
index 5c2c333..b2d29c9 100644
--- a/src/components/AppHeader/AppHeader.vue
+++ b/src/components/AppHeader/AppHeader.vue
@@ -42,9 +42,6 @@
 export default {
   name: 'AppHeader',
   components: { IconAvatar, IconRenew, StatusIcon },
-  created() {
-    this.getHostInfo();
-  },
   computed: {
     hostStatus() {
       return this.$store.getters['global/hostStatus'];
@@ -61,6 +58,9 @@
       }
     }
   },
+  created() {
+    this.getHostInfo();
+  },
   methods: {
     getHostInfo() {
       this.$store.dispatch('global/getHostStatus');
diff --git a/src/components/AppNavigation/AppNavigation.vue b/src/components/AppNavigation/AppNavigation.vue
index c246b53..47609d9 100644
--- a/src/components/AppNavigation/AppNavigation.vue
+++ b/src/components/AppNavigation/AppNavigation.vue
@@ -7,7 +7,7 @@
         <icon-health />Health
         <icon-expand class="icon-expand" />
       </b-button>
-      <b-collapse tag="ul" id="health-menu" class="nav-item__nav">
+      <b-collapse id="health-menu" tag="ul" class="nav-item__nav">
         <b-nav-item href="javascript:void(0)">Event Log</b-nav-item>
         <b-nav-item href="javascript:void(0)">Hardware Status</b-nav-item>
         <b-nav-item href="javascript:void(0)">Sensors</b-nav-item>
@@ -19,7 +19,7 @@
         <icon-control />Control
         <icon-expand class="icon-expand" />
       </b-button>
-      <b-collapse tag="ul" id="control-menu" class="nav-item__nav">
+      <b-collapse id="control-menu" tag="ul" class="nav-item__nav">
         <b-nav-item href="javascript:void(0)">
           Server power operations
         </b-nav-item>
@@ -33,7 +33,7 @@
         <icon-configuration />Configuration
         <icon-expand class="icon-expand" />
       </b-button>
-      <b-collapse tag="ul" id="configuration-menu" class="nav-item__nav">
+      <b-collapse id="configuration-menu" tag="ul" class="nav-item__nav">
         <b-nav-item href="javascript:void(0)">Network settings</b-nav-item>
         <b-nav-item href="javascript:void(0)">SNMP settings</b-nav-item>
         <b-nav-item href="javascript:void(0)">Firmware</b-nav-item>
@@ -45,7 +45,7 @@
         <icon-access-control />Access Control
         <icon-expand class="icon-expand" />
       </b-button>
-      <b-collapse tag="ul" id="access-control-menu" class="nav-item__nav">
+      <b-collapse id="access-control-menu" tag="ul" class="nav-item__nav">
         <b-nav-item href="javascript:void(0)">LDAP</b-nav-item>
         <b-nav-item to="/access-control/local-user-management">
           Local user management
diff --git a/src/components/Global/PageSection.vue b/src/components/Global/PageSection.vue
index 678fd31..03040b2 100644
--- a/src/components/Global/PageSection.vue
+++ b/src/components/Global/PageSection.vue
@@ -8,7 +8,12 @@
 <script>
 export default {
   name: 'PageSection',
-  props: ['sectionTitle']
+  props: {
+    sectionTitle: {
+      type: String,
+      required: true
+    }
+  }
 };
 </script>
 
diff --git a/src/components/Global/PageTitle.vue b/src/components/Global/PageTitle.vue
index 0231424..26588ca 100644
--- a/src/components/Global/PageTitle.vue
+++ b/src/components/Global/PageTitle.vue
@@ -8,7 +8,12 @@
 <script>
 export default {
   name: 'PageTitle',
-  props: ['description'],
+  props: {
+    description: {
+      type: String,
+      default: ''
+    }
+  },
   data() {
     return {
       title: this.$route.meta.title
diff --git a/src/components/Global/StatusIcon.vue b/src/components/Global/StatusIcon.vue
index 63155c9..a2c7f04 100644
--- a/src/components/Global/StatusIcon.vue
+++ b/src/components/Global/StatusIcon.vue
@@ -13,11 +13,16 @@
 
 export default {
   name: 'StatusIcon',
-  props: ['status'],
   components: {
     iconSuccess: IconCheckmark,
     iconDanger: IconWarning,
     iconSecondary: IconError
+  },
+  props: {
+    status: {
+      type: String,
+      default: ''
+    }
   }
 };
 </script>
diff --git a/src/layouts/AppLayout.vue b/src/layouts/AppLayout.vue
index e5a5501..e1bb410 100644
--- a/src/layouts/AppLayout.vue
+++ b/src/layouts/AppLayout.vue
@@ -1,15 +1,15 @@
 <template>
   <div>
-    <AppHeader ref="focusTarget" />
+    <app-header ref="focusTarget" />
     <b-container fluid class="page-container">
       <b-row no-gutters>
         <b-col tag="nav" cols="12" md="3" lg="2">
-          <AppNavigation />
+          <app-navigation />
         </b-col>
         <b-col cols="12" md="9" lg="10">
-          <PageContainer>
+          <page-container>
             <router-view ref="routerView" />
-          </PageContainer>
+          </page-container>
         </b-col>
       </b-row>
     </b-container>
diff --git a/src/views/AccessControl/LocalUserManagement/LocalUserManagement.vue b/src/views/AccessControl/LocalUserManagement/LocalUserManagement.vue
index 6ca43f3..b016dcc 100644
--- a/src/views/AccessControl/LocalUserManagement/LocalUserManagement.vue
+++ b/src/views/AccessControl/LocalUserManagement/LocalUserManagement.vue
@@ -1,13 +1,13 @@
 <template>
   <b-container class="ml-0">
-    <PageTitle />
+    <page-title />
     <b-row>
       <b-col lg="10">
-        <b-button @click="initModalSettings" variant="link">
+        <b-button variant="link" @click="initModalSettings">
           Account policy settings
           <icon-settings />
         </b-button>
-        <b-button @click="initModalUser(null)" variant="primary">
+        <b-button variant="primary" @click="initModalUser(null)">
           Add user
           <icon-add />
         </b-button>
@@ -49,9 +49,9 @@
       </b-col>
     </b-row>
     <!-- Modals -->
-    <modal-settings v-bind:settings="settings"></modal-settings>
+    <modal-settings :settings="settings"></modal-settings>
     <modal-user
-      v-bind:user="activeUser"
+      :user="activeUser"
       @ok="saveUser"
       @hidden="clearActiveUser"
     ></modal-user>
@@ -70,7 +70,7 @@
 import PageTitle from '../../../components/Global/PageTitle';
 
 export default {
-  name: 'local-users',
+  name: 'LocalUsers',
   components: {
     IconAdd,
     IconEdit,
@@ -87,9 +87,6 @@
       settings: null
     };
   },
-  created() {
-    this.getUsers();
-  },
   computed: {
     allUsers() {
       return this.$store.getters['localUsers/allUsers'];
@@ -113,6 +110,9 @@
       });
     }
   },
+  created() {
+    this.getUsers();
+  },
   methods: {
     getUsers() {
       this.$store.dispatch('localUsers/getUsers');
diff --git a/src/views/AccessControl/LocalUserManagement/ModalSettings.vue b/src/views/AccessControl/LocalUserManagement/ModalSettings.vue
index dae4d90..a0d6294 100644
--- a/src/views/AccessControl/LocalUserManagement/ModalSettings.vue
+++ b/src/views/AccessControl/LocalUserManagement/ModalSettings.vue
@@ -4,6 +4,11 @@
 
 <script>
 export default {
-  props: ['settings']
+  props: {
+    settings: {
+      type: String,
+      default: ''
+    }
+  }
 };
 </script>
diff --git a/src/views/AccessControl/LocalUserManagement/ModalUser.vue b/src/views/AccessControl/LocalUserManagement/ModalUser.vue
index 73aa164..d84fb6d 100644
--- a/src/views/AccessControl/LocalUserManagement/ModalUser.vue
+++ b/src/views/AccessControl/LocalUserManagement/ModalUser.vue
@@ -22,7 +22,7 @@
         >
       </b-form-group>
       <b-form-group label="Username">
-        <b-form-input type="text" v-model="form.username" />
+        <b-form-input v-model="form.username" type="text" />
       </b-form-group>
       <b-form-group label="Privilege">
         <b-form-select
@@ -31,7 +31,7 @@
         ></b-form-select>
       </b-form-group>
       <b-form-group label="Password">
-        <b-form-input type="password" v-model="form.password" />
+        <b-form-input v-model="form.password" type="password" />
       </b-form-group>
     </b-form>
     <template v-slot:modal-ok>
@@ -47,7 +47,12 @@
 
 <script>
 export default {
-  props: ['user'],
+  props: {
+    user: {
+      type: Object,
+      default: null
+    }
+  },
   data() {
     return {
       privilegeTypes: ['Administrator', 'Operator', 'ReadOnly', 'NoAccess']
diff --git a/src/views/AccessControl/LocalUserManagement/TableRoles.vue b/src/views/AccessControl/LocalUserManagement/TableRoles.vue
index b401966..ad313be 100644
--- a/src/views/AccessControl/LocalUserManagement/TableRoles.vue
+++ b/src/views/AccessControl/LocalUserManagement/TableRoles.vue
@@ -2,22 +2,22 @@
   <b-table bordered small head-variant="dark" :items="items" :fields="fields">
     <template v-slot:cell(administrator)="data">
       <template v-if="data.value">
-        <Checkmark20 />
+        <checkmark20 />
       </template>
     </template>
     <template v-slot:cell(operator)="data">
       <template v-if="data.value">
-        <Checkmark20 />
+        <checkmark20 />
       </template>
     </template>
     <template v-slot:cell(readonly)="data">
       <template v-if="data.value">
-        <Checkmark20 />
+        <checkmark20 />
       </template>
     </template>
     <template v-slot:cell(noaccess)="data">
       <template v-if="data.value">
-        <Checkmark20 />
+        <checkmark20 />
       </template>
     </template>
   </b-table>
diff --git a/src/views/Login/Login.vue b/src/views/Login/Login.vue
index 706d3ec..ea1eac6 100644
--- a/src/views/Login/Login.vue
+++ b/src/views/Login/Login.vue
@@ -15,10 +15,10 @@
         </b-col>
 
         <b-col md="6">
-          <b-form class="login-form" @submit.prevent="login" novalidate>
+          <b-form class="login-form" novalidate @submit.prevent="login">
             <b-alert
-              class="login-error"
               v-if="authStatus == 'error'"
+              class="login-error"
               show
               variant="danger"
             >
@@ -72,11 +72,6 @@
 <script>
 export default {
   name: 'Login',
-  computed: {
-    authStatus() {
-      return this.$store.getters['authentication/authStatus'];
-    }
-  },
   data() {
     return {
       errorMsg: {
@@ -90,6 +85,11 @@
       disableSubmitButton: false
     };
   },
+  computed: {
+    authStatus() {
+      return this.$store.getters['authentication/authStatus'];
+    }
+  },
   methods: {
     resetState: function() {
       this.errorMsg.title = null;
diff --git a/src/views/Overview/Overview.vue b/src/views/Overview/Overview.vue
index 4412d19..1c4ba55 100644
--- a/src/views/Overview/Overview.vue
+++ b/src/views/Overview/Overview.vue
@@ -1,12 +1,12 @@
 <template>
   <b-container fluid>
-    <PageTitle />
+    <page-title />
     <div class="quicklinks-section">
-      <OverviewQuickLinks />
+      <overview-quick-links />
     </div>
     <b-row>
       <b-col>
-        <PageSection sectionTitle="Server Information">
+        <page-section section-title="Server Information">
           <b-row>
             <b-col sm="6">
               <dl>
@@ -33,8 +33,8 @@
               </dl>
             </b-col>
           </b-row>
-        </PageSection>
-        <PageSection sectionTitle="BMC information">
+        </page-section>
+        <page-section section-title="BMC information">
           <b-row>
             <b-col sm="6">
               <dl>
@@ -51,7 +51,7 @@
             <b-col sm="6">
               <dl>
                 <dt>IP address</dt>
-                <dd v-for="ip in ipAddress" v-bind:key="ip.id">{{ ip }}</dd>
+                <dd v-for="ip in ipAddress" :key="ip.id">{{ ip }}</dd>
               </dl>
             </b-col>
             <b-col sm="6">
@@ -61,8 +61,8 @@
               </dl>
             </b-col>
           </b-row>
-        </PageSection>
-        <PageSection sectionTitle="Power consumption">
+        </page-section>
+        <page-section section-title="Power consumption">
           <b-row>
             <b-col sm="6">
               <dl>
@@ -77,12 +77,12 @@
               </dl>
             </b-col>
           </b-row>
-        </PageSection>
+        </page-section>
       </b-col>
     </b-row>
-    <PageSection sectionTitle="High priority events">
-      <OverviewEvents />
-    </PageSection>
+    <page-section section-title="High priority events">
+      <overview-events />
+    </page-section>
   </b-container>
 </template>
 
@@ -100,9 +100,6 @@
     PageTitle,
     PageSection
   },
-  created() {
-    this.getOverviewInfo();
-  },
   computed: mapState({
     serverModel: state => state.overview.serverModel,
     serverManufacturer: state => state.overview.serverManufacturer,
@@ -115,6 +112,9 @@
     ipAddress: state => state.networkSettings.ipAddress,
     macAddress: state => state.networkSettings.macAddress
   }),
+  created() {
+    this.getOverviewInfo();
+  },
   methods: {
     getOverviewInfo() {
       this.$store.dispatch('overview/getServerInfo');
diff --git a/src/views/Overview/OverviewEvents.vue b/src/views/Overview/OverviewEvents.vue
index 07aab1d..5820e61 100644
--- a/src/views/Overview/OverviewEvents.vue
+++ b/src/views/Overview/OverviewEvents.vue
@@ -8,7 +8,7 @@
           <small>{{
             logData.Timestamp | date('MMM DD YYYY HH:MM:SS A ZZ')
           }}</small>
-          <ChevronRight16 />
+          <chevron-right16 />
         </div>
         <p class="mb-1">{{ logData.eventID }}: {{ logData.description }}</p>
       </b-list-group-item>
@@ -22,18 +22,18 @@
 <script>
 import ChevronRight16 from '@carbon/icons-vue/es/chevron--right/16';
 export default {
-  name: 'events',
+  name: 'Events',
   components: {
     ChevronRight16
   },
-  created() {
-    this.getEventLogData();
-  },
   computed: {
     eventLogData() {
       return this.$store.getters['eventLog/eventLogData'];
     }
   },
+  created() {
+    this.getEventLogData();
+  },
   methods: {
     getEventLogData() {
       this.$store.dispatch('eventLog/getEventLogData');
diff --git a/src/views/Overview/OverviewQuickLinks.vue b/src/views/Overview/OverviewQuickLinks.vue
index e8ed4dd..f36c264 100644
--- a/src/views/Overview/OverviewQuickLinks.vue
+++ b/src/views/Overview/OverviewQuickLinks.vue
@@ -31,7 +31,7 @@
         class="d-flex justify-content-between align-items-center"
       >
         <span>Edit network settings</span>
-        <IconArrowRight />
+        <icon-arrow-right />
       </b-button>
     </div>
     <div>
@@ -42,7 +42,7 @@
         class="d-flex justify-content-between align-items-center"
       >
         <span>Serial over LAN console</span>
-        <IconArrowRight />
+        <icon-arrow-right />
       </b-button>
     </div>
   </div>
@@ -52,27 +52,27 @@
 import ArrowRight16 from '@carbon/icons-vue/es/arrow--right/16';
 
 export default {
-  name: 'quickLinks',
+  name: 'QuickLinks',
   components: {
     IconArrowRight: ArrowRight16
   },
-  created() {
-    this.getBmcTime();
+  data() {
+    return {
+      serverLEDChecked: false
+    };
   },
   computed: {
     bmcTime() {
       return this.$store.getters['global/bmcTime'];
     }
   },
+  created() {
+    this.getBmcTime();
+  },
   methods: {
     getBmcTime() {
       this.$store.dispatch('global/getBmcTime');
     }
-  },
-  data() {
-    return {
-      serverLedChecked: false
-    };
   }
 };
 </script>
diff --git a/src/views/Unauthorized/Unauthorized.vue b/src/views/Unauthorized/Unauthorized.vue
index 446270d..d420359 100644
--- a/src/views/Unauthorized/Unauthorized.vue
+++ b/src/views/Unauthorized/Unauthorized.vue
@@ -1,6 +1,6 @@
 <template>
   <div>
-    <PageTitle :description="description" />
+    <page-title :description="description" />
   </div>
 </template>
 <script>