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="