diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 000000000..763301fc0
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1,2 @@
+dist/
+node_modules/
\ No newline at end of file
diff --git a/.eslintrc.js b/.eslintrc.js
index 030919208..9364ddb86 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -1,7 +1,8 @@
 module.exports = {
     'env': {
         'browser': true,
-        'es6': true
+        'es6': true,
+        'node': true
     },
     'extends': [
         'eslint:recommended',
@@ -21,6 +22,6 @@ module.exports = {
         'vue'
     ],
     'rules': {
-        'quotes': ['error', 'single'],
+        'quotes': ['error', 'single']
     }
 };
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c5ee9d715..b3fe2cb7e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+### Release 0.7.20-beta 
+
+### feature 
+- update eslint config, lint script and mew-select search method [#241] (https://github.com/MyEtherWallet/mew-components/pull/241)
+
 ### Release 0.7.19-beta
 
 ### feature
diff --git a/package-lock.json b/package-lock.json
index fe600b80b..979443a38 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
 {
   "name": "@myetherwallet/mew-components",
-  "version": "0.7.18-beta",
+  "version": "0.7.19-beta",
   "lockfileVersion": 2,
   "requires": true,
   "packages": {
     "": {
       "name": "@myetherwallet/mew-components",
-      "version": "0.7.18-beta",
+      "version": "0.7.19-beta",
       "dependencies": {
         "@rollup/plugin-replace": "^2.3.4",
         "@vue/babel-preset-app": "^4.4.6",
@@ -17,6 +17,7 @@
         "eslint-config-eslint": "^6.0.0",
         "fibers": "^5.0.0",
         "git-url-parse": "^11.1.2",
+        "lodash": "^4.17.21",
         "material-design-icons-iconfont": "^5.0.1",
         "minimist": "^1.2.5",
         "rollup-plugin-uglify-es": "0.0.1",
@@ -14857,9 +14858,9 @@
       "dev": true
     },
     "node_modules/follow-redirects": {
-      "version": "1.14.7",
-      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz",
-      "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==",
+      "version": "1.14.8",
+      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz",
+      "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==",
       "dev": true,
       "funding": [
         {
@@ -41326,9 +41327,9 @@
       "dev": true
     },
     "follow-redirects": {
-      "version": "1.14.7",
-      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz",
-      "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==",
+      "version": "1.14.8",
+      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz",
+      "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==",
       "dev": true
     },
     "for-in": {
diff --git a/package.json b/package.json
index 26d538624..d27e583da 100644
--- a/package.json
+++ b/package.json
@@ -11,7 +11,7 @@
   "private": false,
   "scripts": {
     "serve": "vue-cli-service serve",
-    "lint": "vue-cli-service lint && eslint --fix 'src/**/*.vue'",
+    "lint": "vue-cli-service lint && eslint . --ext .js --ext .vue",
     "build": "npm run build:umd & npm run build:es & npm run build:unpkg",
     "build-bundle": "vue-cli-service build --target lib --name mew-components ./src/wrapper.js",
     "build:umd": "rollup --config rollup.config.js --format umd --file dist/mew-components.umd.js",
@@ -32,6 +32,7 @@
     "eslint-config-eslint": "^6.0.0",
     "fibers": "^5.0.0",
     "git-url-parse": "^11.1.2",
+    "lodash": "^4.17.21",
     "material-design-icons-iconfont": "^5.0.1",
     "minimist": "^1.2.5",
     "rollup-plugin-uglify-es": "0.0.1",
diff --git a/src/components/MewPopup/MewPopup.vue b/src/components/MewPopup/MewPopup.vue
index de371d6dd..ee8ab9809 100644
--- a/src/components/MewPopup/MewPopup.vue
+++ b/src/components/MewPopup/MewPopup.vue
@@ -12,7 +12,10 @@
     :scrollable="scrollable"
     @click:outside="handleClickOutside"
   >
-    <v-card color="white" class="pa-0">
+    <v-card
+      color="white"
+      class="pa-0"
+    >
       <!--
       =====================================================================================
         Dialog Header
@@ -63,8 +66,15 @@
         Dialog action
       =====================================================================================
       -->
-      <v-card-actions v-if="hasButtons" class="py-5 py-md-8">
-        <v-row class="pa-0" justify="space-around" dense>
+      <v-card-actions
+        v-if="hasButtons"
+        class="py-5 py-md-8"
+      >
+        <v-row
+          class="pa-0"
+          justify="space-around"
+          dense
+        >
           <v-col
             cols="12"
             :sm="!rightBtn ? '12' : '6'"
@@ -105,7 +115,7 @@
 </template>
 
 <script>
-import MewButton from "@/components/MewButton/MewButton.vue";
+import MewButton from '@/components/MewButton/MewButton.vue';
 
 export default {
   components: { MewButton },
@@ -115,7 +125,7 @@ export default {
      */
     title: {
       type: String,
-      default: "",
+      default: '',
     },
     /**
      * Hide top right close button
@@ -139,7 +149,7 @@ export default {
     leftBtn: {
       type: Object,
       default: () => {
-        return { text: "Cancel", color: "primary", method: () => {} };
+        return { text: 'Cancel', color: 'primary', method: () => {} };
       },
     },
     /**
@@ -150,8 +160,8 @@ export default {
       type: Object,
       default: () => {
         return {
-          text: "Confirm",
-          color: "primary",
+          text: 'Confirm',
+          color: 'primary',
           enabled: true,
           method: () => {},
         };
@@ -169,7 +179,7 @@ export default {
      */
     maxWidth: {
       type: String,
-      default: "600",
+      default: '600',
     },
     /**
      * Displays v-card-text if there is popup body content
diff --git a/src/components/MewSelect/MewSelect.vue b/src/components/MewSelect/MewSelect.vue
index bd83b429e..e606d9aa5 100644
--- a/src/components/MewSelect/MewSelect.vue
+++ b/src/components/MewSelect/MewSelect.vue
@@ -221,6 +221,7 @@
 </template>
 <script>
 import MewTokenContainer from '@/components/MewTokenContainer/MewTokenContainer.vue';
+import get from 'lodash/get';
 
 export default {
   name: 'MewSelect',
@@ -322,15 +323,9 @@ export default {
       } else {
         const foundItems = this.items.filter((item) => {
           const searchValue = String(newVal).toLowerCase();
-          const value = item.hasOwnProperty('value')
-            ? String(item.value).toLowerCase()
-            : '';
-          const name = item.hasOwnProperty('name')
-            ? String(item.name).toLowerCase()
-            : '';
-          const subtext = item.hasOwnProperty('subtext')
-            ? String(item.subtext).toLowerCase()
-            : '';
+          const value = String(get(item, 'value', '')).toLowerCase();
+          const name = String(get(item, 'name', '')).toLowerCase();
+          const subtext = String(get(item, 'subtext', '')).toLowerCase();
           return (
             name.includes(searchValue) ||
             subtext.includes(searchValue) ||
diff --git a/stories/MewAddressSelect/MewAddressSelect.stories.js b/stories/MewAddressSelect/MewAddressSelect.stories.js
index e6dc9541b..ce14f6e1e 100644
--- a/stories/MewAddressSelect/MewAddressSelect.stories.js
+++ b/stories/MewAddressSelect/MewAddressSelect.stories.js
@@ -36,7 +36,7 @@ const addressesArray = [
   },
 ];
 
-export const mewAddressSelect = () => ({
+export const MEWAddressSelect = () => ({
   components: { MewAddressSelect },
   props: {
     label: {
diff --git a/stories/MewBadge/MewBadge.stories.js b/stories/MewBadge/MewBadge.stories.js
index 9a1f4dba2..1cd034ef2 100644
--- a/stories/MewBadge/MewBadge.stories.js
+++ b/stories/MewBadge/MewBadge.stories.js
@@ -27,7 +27,7 @@ const badgeOptions = {
   warning: 'warning'
 }
 
-export const mewBadge = () => ({
+export const MEWBadge = () => ({
   components: { MewBadge },
   props: {
     enableDarkMode: {
diff --git a/stories/MewBanner/MewBanner.stories.js b/stories/MewBanner/MewBanner.stories.js
index ae0b456cf..e28389eaa 100644
--- a/stories/MewBanner/MewBanner.stories.js
+++ b/stories/MewBanner/MewBanner.stories.js
@@ -24,7 +24,7 @@ const textObj = {
   exit: 'Exit Dapp'
 }
 
-export const mewBanner = () => ({
+export const MEWBanner = () => ({
   components: { MewBanner },
   props: {
     enableDarkMode: {
diff --git a/stories/MewCopy/MewCopy.stories.js b/stories/MewCopy/MewCopy.stories.js
index 6df039cdd..109e9b9d1 100644
--- a/stories/MewCopy/MewCopy.stories.js
+++ b/stories/MewCopy/MewCopy.stories.js
@@ -18,7 +18,7 @@ export default {
   decorators: [withKnobs]
 };
 
-export const mewCopy = () => ({
+export const MEWCopy = () => ({
   data() {
     return {
       inputValue: 'Copied value'
diff --git a/stories/MewIcon/MewIcon.stories.js b/stories/MewIcon/MewIcon.stories.js
index 727595710..5340f5fb3 100644
--- a/stories/MewIcon/MewIcon.stories.js
+++ b/stories/MewIcon/MewIcon.stories.js
@@ -1,4 +1,4 @@
-import { withKnobs, boolean, text, number } from '@storybook/addon-knobs';
+import { withKnobs, boolean, number } from '@storybook/addon-knobs';
 import MewIcon from '@/components/MewIcon/MewIcon.vue';
 import MewIconDoc from './MewIcon.mdx';
 
diff --git a/stories/MewIconButton/MewIconButton.stories.js b/stories/MewIconButton/MewIconButton.stories.js
index 6d7b5e838..904729a90 100644
--- a/stories/MewIconButton/MewIconButton.stories.js
+++ b/stories/MewIconButton/MewIconButton.stories.js
@@ -45,7 +45,7 @@ const optionsObj = {
   display: 'inline-radio',
 };
 
-export const MEWButton = () => ({
+export const MEWIconButton = () => ({
   components: { MewIconButton },
   props: {
     disabled: {
diff --git a/stories/MewToast/MewToast.stories.js b/stories/MewToast/MewToast.stories.js
index 54f59df42..666a0cd22 100644
--- a/stories/MewToast/MewToast.stories.js
+++ b/stories/MewToast/MewToast.stories.js
@@ -38,7 +38,7 @@ const linkObj = {
   url: ''
 }
 
-export const mewToast = () => ({
+export const MEWToast = () => ({
   components: { MewToast, MewButton },
   props: {
     duration: {
diff --git a/stories/MewToggle/MewToggle.stories.js b/stories/MewToggle/MewToggle.stories.js
index e0c039143..c26db364e 100644
--- a/stories/MewToggle/MewToggle.stories.js
+++ b/stories/MewToggle/MewToggle.stories.js
@@ -21,7 +21,7 @@ export default {
 
 const buttonDefaultGroup = ['1D', '1W', '1M', '1Y', 'All'];
 
-const buttonPercentageGroup = ['25%', '50%', '75%', 'Max'];
+// const buttonPercentageGroup = ['25%', '50%', '75%', 'Max'];
 
 const buttonTypes = {
   custom: 'custom',
@@ -29,7 +29,7 @@ const buttonTypes = {
   percentage: 'percentage'
 }
 
-export const mewToggle = () => ({
+export const MEWToggle = () => ({
   components: { MewToggle },
   props: {
     enableDarkMode: {
diff --git a/stories/MewTokenContainer/MewTokenContainer.stories.js b/stories/MewTokenContainer/MewTokenContainer.stories.js
index ccf866b5b..5825113c4 100644
--- a/stories/MewTokenContainer/MewTokenContainer.stories.js
+++ b/stories/MewTokenContainer/MewTokenContainer.stories.js
@@ -26,7 +26,7 @@ const sizeOptions = {
   large: 'large'
 }
 
-export const mewTokenContainer = () => ({
+export const MEWTokenContainer = () => ({
   components: { MewTokenContainer },
   props: {
     enableDarkMode: {
diff --git a/stories/MewTooltip/MewTooltip.stories.js b/stories/MewTooltip/MewTooltip.stories.js
index f80e2da5f..866cf8fcc 100644
--- a/stories/MewTooltip/MewTooltip.stories.js
+++ b/stories/MewTooltip/MewTooltip.stories.js
@@ -17,7 +17,7 @@ export default {
   decorators: [withKnobs]
 };
 
-export const mewTooltip = () => ({
+export const MEWTooltip = () => ({
   components: { MewTooltip },
   props: {
     enableDarkMode: {
diff --git a/stories/MewTransformHash/MewTransformHash.stories.js b/stories/MewTransformHash/MewTransformHash.stories.js
index 8a53eb5b5..71ae305c6 100644
--- a/stories/MewTransformHash/MewTransformHash.stories.js
+++ b/stories/MewTransformHash/MewTransformHash.stories.js
@@ -17,7 +17,7 @@ export default {
   decorators: [withKnobs]
 };
 
-export const mewTransformHash = () => ({
+export const MEWTransformHash = () => ({
   components: { MewTransformHash },
   props: {
     enableDarkMode: {
diff --git a/stories/MewWarningSheet/MewWarningSheet.stories.js b/stories/MewWarningSheet/MewWarningSheet.stories.js
index 6c09d9d32..9288fce3c 100644
--- a/stories/MewWarningSheet/MewWarningSheet.stories.js
+++ b/stories/MewWarningSheet/MewWarningSheet.stories.js
@@ -24,7 +24,7 @@ const linkObj = {
   url: 'https://www.myetherwallet.com/'
 };
 
-export const mewWarningSheet = () => ({
+export const MEWWarningSheet = () => ({
   components: { MewWarningSheet },
   props: {
     enableDarkMode: {
diff --git a/yarn.lock b/yarn.lock
index 60c102955..1fb4053bc 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -7415,9 +7415,9 @@
   "version" "0.6.8"
 
 "follow-redirects@^1.0.0":
-  "integrity" "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ=="
-  "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz"
-  "version" "1.14.7"
+  "integrity" "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA=="
+  "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz"
+  "version" "1.14.8"
 
 "for-in@^1.0.2":
   "integrity" "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA="