Skip to content

Commit 69c4e49

Browse files
committed
Update build dependencies. Allow setting of preserveOrder on component. Provide function for exposing MB object to vue.
1 parent ab1b6b1 commit 69c4e49

15 files changed

+2397
-3317
lines changed

config/dev.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
const webpack = require('webpack')
2-
const merge = require('deep-assign')
2+
const mergeOptions = require('merge-options')
33
const HtmlWebpackPlugin = require('html-webpack-plugin')
44

55
const opts = require('./options')
66
const base = require('./webpack.config.js')
77

8-
const config = merge(base, {
8+
const config = mergeOptions(base, {
99
entry: opts.paths.resolve('src/demo/index.js'),
1010

1111
output: {
@@ -20,8 +20,4 @@ config.plugins = config.plugins.concat([
2020
})
2121
])
2222

23-
if (process.env.NODE_ENV === 'development') {
24-
config.devtool = '#eval-source-map';
25-
}
26-
2723
module.exports = config

config/dist.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
process.env.NODE_ENV = process.env.NODE_ENV || 'production'
22

33
const webpack = require('webpack')
4-
const merge = require('deep-assign')
4+
const mergeOptions = require('dmerge-options')
55

66
const opts = require('./options')
77
const base = require('./webpack.config.js')
88

9-
const config = merge(base, {
9+
const config = mergeOptions(base, {
1010
entry: opts.paths.src,
1111

1212
output: {

config/karma.config.js

Lines changed: 0 additions & 61 deletions
This file was deleted.

config/loaders/css.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
module.exports = {
22
test: /\.css$/,
33
use: [
4-
'vue-style-loader',
4+
'style-loader',
55
'css-loader'
66
]
77
}

config/test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
process.env.NODE_ENV = process.env.NODE_ENV || 'testing'
22

33
const webpack = require('webpack')
4-
const merge = require('deep-assign')
4+
const mergeOptions = require('merge-options')
55

66
const opts = require('./options')
77
const base = require('./webpack.config.js')
88

9-
const config = merge(base, {
9+
const config = mergeOptions(base, {
1010
entry: opts.paths.src,
1111

1212
output: {

config/webpack.config.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
const webpack = require('webpack')
22
const VueLoaderPlugin = require('vue-loader/lib/plugin')
3-
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
3+
const TerserPlugin = require('terser-webpack-plugin')
44

55
const opts = require('./options')
66
const babel = require('./loaders/babel')
@@ -26,6 +26,11 @@ const config = {
2626
extensions: ['.js', '.vue']
2727
},
2828

29+
optimization: {
30+
minimize: true,
31+
minimizer: [new TerserPlugin()],
32+
},
33+
2934
plugins: [
3035
new webpack.DefinePlugin({
3136
'process.env.NODE_ENV': JSON.stringify(opts.env)

package.json

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -10,34 +10,30 @@
1010
"build:demo": "NODE_ENV=production webpack --config ./config/dev.js --mode production",
1111
"build:dist": "NODE_ENV=production webpack --config ./config/dist.js --mode production",
1212
"clean": "rimraf ./dist/* ./demo/*",
13-
"dev": "NODE_ENV=development webpack-dev-server --config ./config/dev.js --inline --hot --mode development",
13+
"dev": "NODE_ENV=development webpack serve --config ./config/dev.js --inline --hot --mode development",
1414
"release:demo": "git subtree push --prefix demo origin gh-pages",
1515
"test": "karma start config/karma.config.js"
1616
},
1717
"license": "MIT",
1818
"devDependencies": {
19-
"@babel/core": "^7.6.4",
20-
"@babel/preset-env": "^7.6.3",
19+
"@babel/core": "^7.12",
20+
"@babel/preset-env": "^7.12",
2121
"avoriaz": "^6.3.0",
22-
"babel-loader": "^8.0.6",
23-
"css-loader": "^3.2.0",
24-
"deep-assign": "^3.0.0",
25-
"html-webpack-plugin": "^3.2.0",
26-
"jasmine": "^3.5.0",
27-
"karma": "^4.4.1",
28-
"karma-jasmine": "^2.0.1",
29-
"karma-phantomjs-launcher": "^1.0.4",
30-
"karma-webpack": "^4.0.2",
31-
"raw-loader": "^3.1.0",
32-
"rimraf": "^3.0.0",
33-
"tachyons": "^4.11.1",
34-
"uglifyjs-webpack-plugin": "^2.2.0",
35-
"vue": "^2.6.10",
36-
"vue-loader": "^15.7.1",
37-
"vue-template-compiler": "^2.6.10",
38-
"webpack": "^4.41.2",
39-
"webpack-cli": "^3.3.9",
40-
"webpack-dev-server": "^3.9.0"
22+
"babel-loader": "^8.2",
23+
"css-loader": "^5.0",
24+
"html-webpack-plugin": "^4.5",
25+
"merge-options": "^3.0",
26+
"raw-loader": "^4.0",
27+
"rimraf": "^3.0",
28+
"style-loader": "^2.0.0",
29+
"terser-webpack-plugin": "^5.1.1",
30+
"uglifyjs-webpack-plugin": "^2.2",
31+
"vue": "^2.6",
32+
"vue-loader": "^15.9",
33+
"vue-template-compiler": "^2.6",
34+
"webpack": "^5.18",
35+
"webpack-cli": "^4.4",
36+
"webpack-dev-server": "^3.11.2"
4137
},
4238
"peerDependencies": {
4339
"vue": "2.x"

src/components/MoneyButton.vue

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ export default {
1414
props: {
1515
to: [String, Number],
1616
amount: [String, Number],
17-
editable: { type: Boolean, default: undefined },
1817
currency: { type: String, default: 'USD' },
1918
label: { type: String, required: true },
2019
successMessage: String,
@@ -25,8 +24,10 @@ export default {
2524
buttonId: true,
2625
buttonData: true,
2726
type: { type: String, default: 'buy' },
27+
editable: { type: Boolean, default: undefined },
28+
disabled: { type: Boolean, default: undefined },
2829
devMode: { type: Boolean, default: undefined },
29-
disabled: { type: Boolean, default: undefined }
30+
preserveOrder: { type: Boolean, default: undefined }
3031
},
3132
3233
data() {
@@ -44,7 +45,6 @@ export default {
4445
return {
4546
to: this.to,
4647
amount: this.amount,
47-
editable: this.editable,
4848
currency: this.outputs.length || (this.cryptoOperations && this.cryptoOperations.length) ? undefined : this.currency,
4949
label: this.label,
5050
successMessage: this.successMessage,
@@ -55,15 +55,17 @@ export default {
5555
buttonId: this.buttonId,
5656
buttonData: this.buttonData,
5757
type: this.type,
58-
devMode: this.devMode,
59-
disabled: this.disabled,
6058
onLoad: (...args) => {
6159
setTimeout(_ => this.loading = false, 1000)
6260
this.$emit('load', ...args)
6361
},
6462
onPayment: (...args) => { this.$emit('payment', ...args) },
6563
onError: (...args) => { this.$emit('error', ...args) },
66-
onCryptoOperations: (...args) => { this.$emit('cryptoOperations', ...args) }
64+
onCryptoOperations: (...args) => { this.$emit('cryptoOperations', ...args) },
65+
editable: this.editable,
66+
disabled: this.disabled,
67+
devMode: this.devMode,
68+
preserveOrder: this.preserveOrder
6769
}
6870
}
6971
},

src/demo/App.vue

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,12 @@
6868
<h3 class="mt4 mb2 f4 lh-title">License</h3>
6969

7070
<p class="mv0 f5 lh-copy">vue-money-button is open source and released under the <a href="https://github.com/libitx/vue-money-button/blob/master/license.md" class="link blue hover-red">MIT License</a>.</p>
71-
<p class="mv0 f5 lh-copy">Copyright &copy; 2018 libitx</p>
71+
<p class="mv0 f5 lh-copy">Copyright &copy; 2018-2021 libitx</p>
7272
</div>
7373
</div>
7474
</template>
7575

7676
<script>
77-
import MoneyButton from 'components/MoneyButton.vue'
7877
import usage from 'demo/usage.txt'
7978
8079
export default {
@@ -103,10 +102,6 @@ export default {
103102
onError(error) {
104103
console.log('onError event:', error)
105104
}
106-
},
107-
108-
components: {
109-
MoneyButton
110105
}
111106
}
112107
</script>

src/demo/index.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
<meta charset="UTF-8">
55
<meta name="viewport" content="width=device-width, initial-scale=1">
66
<title>Vue.js Money Button Component Demo</title>
7+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tachyons/4.11.1/tachyons.min.css"
8+
integrity="sha512-d0v474klOFSF7qD9WDvyRxAvXaWSxCHDZdnBSZQjo8BpVr6vpjwAgqetpqkKP38DzlOzdVPaLVnzzW1Ba8wB9w=="
9+
crossorigin="anonymous">
710
</head>
811
<body class="min-h-100 pv0 ph3 sans-serif bg-near-white near-black">
912
<div id="app"></div>

src/demo/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import Vue from 'vue'
2+
import VueMoneyButton from 'index.js'
23
import App from './App.vue'
34

4-
import 'tachyons'
5+
Vue.use(VueMoneyButton)
56

67
const app = new Vue({
78
el: '#app',

src/demo/usage.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
</template>
1212

1313
<script>
14-
import MoneyButton from 'vue-money-button'
14+
import { MoneyButton } from 'vue-money-button'
1515

1616
export default {
1717
components: {

src/index.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
11
import MoneyButton from './components/MoneyButton.vue'
2+
import scriptLoader from './script-loader'
23

3-
export default MoneyButton
4+
export default {
5+
install(Vue) {
6+
Vue.component('MoneyButton', MoneyButton)
7+
Vue.prototype.$getMoneyButton = scriptLoader.load
8+
}
9+
}
10+
11+
export { MoneyButton }

src/script-loader.js

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,22 @@
11
import config from 'config'
22

33
export default {
4-
promise: null,
5-
src: config.moneyButtonScript,
4+
moneyButton: null,
65

76
load() {
8-
if ( !this.promise ) {
9-
this.promise = new Promise((resolve, reject) => {
10-
const el = document.createElement('script');
11-
el.type = 'text/javascript';
12-
el.async = true;
13-
el.src = this.src;
7+
if ( !this.moneyButton ) {
8+
this.moneyButton = new Promise((resolve, reject) => {
9+
const el = document.createElement('script')
10+
el.type = 'text/javascript'
11+
el.async = true
12+
el.src = config.moneyButtonScript
1413

15-
el.addEventListener('load', _ => resolve(window.moneyButton));
16-
el.addEventListener('error', reject);
17-
el.addEventListener('abort', reject);
18-
document.head.appendChild(el);
14+
el.addEventListener('load', _ => resolve(window.moneyButton))
15+
el.addEventListener('error', reject)
16+
el.addEventListener('abort', reject)
17+
document.head.appendChild(el)
1918
})
2019
}
21-
22-
return this.promise;
20+
return this.moneyButton
2321
}
2422
}

0 commit comments

Comments
 (0)