Last active
February 22, 2018 19:26
-
-
Save hanxue/63eb5f03a4bd78df2111c9b64a625fcf to your computer and use it in GitHub Desktop.
Webpack 3 Vue.js error
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var accounting__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! accounting */ \"./node_modules/accounting/accounting.js\");\n/* harmony import */ var accounting__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(accounting__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var vuelidate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuelidate */ \"./node_modules/vuelidate/lib/index.js\");\n/* harmony import */ var vuelidate__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(vuelidate__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var vuelidate_lib_validators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuelidate/lib/validators */ \"./node_modules/vuelidate/lib/validators/index.js\");\n/* harmony import */ var vuelidate_lib_validators__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(vuelidate_lib_validators__WEBPACK_IMPORTED_MODULE_2__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'PMI',\n mixins: [vuelidate__WEBPACK_IMPORTED_MODULE_1__[\"validationMixin\"]],\n data: function data() {\n return {\n menuVisible: false,\n ficoScores: ['760+', '740-759', '720-739', '700-719', '680-699', '660-679', '640-659', '620-639'],\n selectedFicoScore: '660-679',\n houseValue: accounting__WEBPACK_IMPORTED_MODULE_0___default.a.formatMoney(300000, '$', 0),\n loanAmount: accounting__WEBPACK_IMPORTED_MODULE_0___default.a.formatMoney(285000, '$', 0),\n basisPoints: 0,\n userSaved: false,\n sending: false,\n lastUser: null\n };\n },\n validations: {\n // form: {\n houseValue: {\n required: vuelidate_lib_validators__WEBPACK_IMPORTED_MODULE_2__[\"required\"],\n between: Object(vuelidate_lib_validators__WEBPACK_IMPORTED_MODULE_2__[\"between\"])(0, 100000000)\n },\n loanAmount: {\n required: vuelidate_lib_validators__WEBPACK_IMPORTED_MODULE_2__[\"required\"],\n between: Object(vuelidate_lib_validators__WEBPACK_IMPORTED_MODULE_2__[\"between\"])(0, 100000000),\n maxLength: Object(vuelidate_lib_validators__WEBPACK_IMPORTED_MODULE_2__[\"maxLength\"])(undefined.houseValue)\n },\n selectedFicoScore: {\n required: vuelidate_lib_validators__WEBPACK_IMPORTED_MODULE_2__[\"required\"]\n },\n email: {\n required: vuelidate_lib_validators__WEBPACK_IMPORTED_MODULE_2__[\"required\"],\n email: vuelidate_lib_validators__WEBPACK_IMPORTED_MODULE_2__[\"email\"]\n }\n // }\n },\n computed: {\n ltv: function ltv() {\n var ltv = (accounting__WEBPACK_IMPORTED_MODULE_0___default.a.unformat(this.loanAmount) / accounting__WEBPACK_IMPORTED_MODULE_0___default.a.unformat(this.houseValue) * 100).toFixed(2);\n\n switch (this.selectedFicoScore) {\n\n case '760+':\n if (ltv <= 85) this.basisPoints = .0019;else if (ltv >= 85.01 && ltv <= 90) this.basisPoints = .0030;else if (ltv >= 90.01 && ltv <= 95) this.basisPoints = .0041;else if (ltv >= 95.01 && ltv <= 97) this.basisPoints = .0055;\n break;\n\n case '740-759':\n if (ltv <= 85) this.basisPoints = .0020;else if (ltv >= 85.01 && ltv <= 90) this.basisPoints = .0041;else if (ltv >= 90.01 && ltv <= 95) this.basisPoints = .0059;else if (ltv >= 95.01 && ltv <= 97) this.basisPoints = .0075;\n break;\n\n case '720-739':\n if (ltv <= 85) this.basisPoints = .0023;else if (ltv >= 85.01 && ltv <= 90) this.basisPoints = .0050;else if (ltv >= 90.01 && ltv <= 95) this.basisPoints = .0073;else if (ltv >= 95.01 && ltv <= 97) this.basisPoints = .0095;\n break;\n\n case '700-719':\n if (ltv <= 85) this.basisPoints = .0027;else if (ltv >= 85.01 && ltv <= 90) this.basisPoints = .0060;else if (ltv >= 90.01 && ltv <= 95) this.basisPoints = .0087;else if (ltv >= 95.01 && ltv <= 97) this.basisPoints = .0115;\n break;\n\n case '680-699':\n if (ltv <= 85) this.basisPoints = .0032;else if (ltv >= 85.01 && ltv <= 90) this.basisPoints = .0073;else if (ltv >= 90.01 && ltv <= 95) this.basisPoints = .0108;else if (ltv >= 95.01 && ltv <= 97) this.basisPoints = .0140;\n break;\n\n case '660-979':\n if (ltv <= 85) this.basisPoints = .0041;else if (ltv >= 85.01 && ltv <= 90) this.basisPoints = .0100;else if (ltv >= 90.01 && ltv <= 95) this.basisPoints = .0142;else if (ltv >= 95.01 && ltv <= 97) this.basisPoints = .0190;\n break;\n\n case '640-659':\n if (ltv <= 85) this.basisPoints = .0043;else if (ltv >= 85.01 && ltv <= 90) this.basisPoints = .0105;else if (ltv >= 90.01 && ltv <= 95) this.basisPoints = .0150;else if (ltv >= 95.01 && ltv <= 97) this.basisPoints = .0205;\n break;\n\n case '620-639':\n if (ltv <= 85) this.basisPoints = .0045;else if (ltv >= 85.01 && ltv <= 90) this.basisPoints = .0110;else if (ltv >= 90.01 && ltv <= 95) this.basisPoints = .0161;else if (ltv >= 95.01 && ltv <= 97) this.basisPoints = .0225;\n break;\n\n }\n return ltv;\n },\n equityPercentage: function equityPercentage() {\n return (100 - this.ltv).toFixed(2);\n },\n equity: function equity() {\n return accounting__WEBPACK_IMPORTED_MODULE_0___default.a.formatMoney(accounting__WEBPACK_IMPORTED_MODULE_0___default.a.unformat(this.houseValue) - accounting__WEBPACK_IMPORTED_MODULE_0___default.a.unformat(this.loanAmount), '$', 0);\n },\n pmi: function pmi() {\n if (this.ltv <= 80) {\n return 0;\n } else {\n return accounting__WEBPACK_IMPORTED_MODULE_0___default.a.formatMoney(this.basisPoints * accounting__WEBPACK_IMPORTED_MODULE_0___default.a.unformat(this.loanAmount) / 12);\n }\n }\n },\n methods: {\n getValidationClass: function getValidationClass(fieldName) {\n var field = this.$v[fieldName];\n\n if (field) {\n return {\n 'md-invalid': field.$invalid && field.$dirty\n };\n }\n },\n clearForm: function clearForm() {\n this.$v.$reset();\n this.houseValue = null;\n this.loanAmount = null;\n this.selectedFicoScore = null;\n },\n saveUser: function saveUser() {\n var _this = this;\n\n this.sending = true;\n\n // Instead of this timeout, here you can call your API\n window.setTimeout(function () {\n _this.lastUser = _this.loanAmount + ' ' + _this.houseValue;\n _this.userSaved = true;\n _this.sending = false;\n _this.clearForm();\n }, 1500);\n },\n validateUser: function validateUser() {\n this.$v.$touch();\n\n if (!this.$v.$invalid) {\n this.saveUser();\n }\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXNjcmlwdCZpbmRleD0wIS4vc3JjL2NvbXBvbmVudHMvUE1JLnZ1ZS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9QTUkudnVlPzdmZjgiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICAgICAgICA8Zm9ybSBub3ZhbGlkYXRlIGNsYXNzPVwibWQtbGF5b3V0LXJvdyBtZC1ndXR0ZXJcIiBAc3VibWl0LnByZXZlbnQ9XCJ2YWxpZGF0ZVVzZXJcIj5cbiAgICAgICAgICA8bWQtY2FyZCBjbGFzcz1cIm1kLWZsZXgtNTAgbWQtZmxleC1zbWFsbC0xMDBcIj5cbiAgICAgICAgICAgIDxtZC1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kLXRpdGxlXCI+UE1JIENhbGN1bGF0b3I8L2Rpdj5cbiAgICAgICAgICAgIDwvbWQtY2FyZC1oZWFkZXI+XG5cbiAgICAgICAgICAgIDxtZC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZC1sYXlvdXQtcm93IG1kLWxheW91dC13cmFwIG1kLWd1dHRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZC1mbGV4IG1kLWZsZXgtc21hbGwtMTAwXCI+XG4gICAgICAgICAgICAgICAgICA8bWQtZmllbGQgOmNsYXNzPVwiZ2V0VmFsaWRhdGlvbkNsYXNzKCdob3VzZVZhbHVlJylcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInB1cmNoYXNlLXByaWNlXCI+UHVyY2hhc2UgUHJpY2UvRXN0aW1hdGVkIFByb3BlcnR5IFZhbHVlPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPG1kLWlucHV0IG5hbWU9XCJwdXJjaGFzZS1wcmljZVwiIGlkPVwicHVyY2hhc2UtcHJpY2VcIiBhdXRvY29tcGxldGU9XCJnaXZlbi1uYW1lXCIgdi1tb2RlbD1cImhvdXNlVmFsdWVcIiA6ZGlzYWJsZWQ9XCJzZW5kaW5nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZC1lcnJvclwiIHYtaWY9XCIhJHYuaG91c2VWYWx1ZS5yZXF1aXJlZFwiPlRoZSBwdXJjaGFzZSBwcmljZSBpcyByZXF1aXJlZDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZC1lcnJvclwiIHYtZWxzZS1pZj1cIiEkdi5ob3VzZVZhbHVlLmJldHdlZW5cIj5JbnZhbGlkIHB1cmNoYXNlIHByaWNlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9tZC1maWVsZD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZC1mbGV4IG1kLWZsZXgtc21hbGwtMTAwXCI+XG4gICAgICAgICAgICAgICAgICA8bWQtZmllbGQgOmNsYXNzPVwiZ2V0VmFsaWRhdGlvbkNsYXNzKCdsb2FuQW1vdW50JylcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImxhc3QtbmFtZVwiPkxvYW4gQW1vdW50PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPG1kLWlucHV0IG5hbWU9XCJsYXN0LW5hbWVcIiBpZD1cImxvYW4tYW1vdW50XCIgYXV0b2NvbXBsZXRlPVwibG9hbi1hbW91bnRcIiB2LW1vZGVsPVwibG9hbkFtb3VudFwiIDpkaXNhYmxlZD1cInNlbmRpbmdcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1kLWVycm9yXCIgdi1pZj1cIiEkdi5sb2FuQW1vdW50LnJlcXVpcmVkXCI+VGhlIGxvYW4gYW1vdW50IGlzIHJlcXVpcmVkPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1kLWVycm9yXCIgdi1lbHNlLWlmPVwiISR2LmxvYW5BbW91bnQuYmV0d2VlblwiPkludmFsaWQgbG9hbiBhbW91bnQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWQtZXJyb3JcIiB2LWVsc2UtaWY9XCIhJHYubG9hbkFtb3VudC5tYXhMZW5ndGhcIj5Mb2FuIGFtb3VudCBjYW5ub3QgYmUgbW9yZSB0aGFuIHB1cmNoYXNlIHByaWNlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9tZC1maWVsZD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kLWxheW91dC1yb3cgbWQtZ3V0dGVyIG1kLWxheW91dC13cmFwXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kLWZsZXggbWQtZmxleC1zbWFsbC0xMDBcIj5cbiAgICAgICAgICAgICAgICAgIDxtZC1maWVsZCA6Y2xhc3M9XCJnZXRWYWxpZGF0aW9uQ2xhc3MoJ3NlbGVjdGVkRmljb1Njb3JlJylcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImZpY28tc2NvcmVcIj5GaWNvIFNjb3JlPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPG1kLXNlbGVjdCB2LW1vZGVsPVwic2VsZWN0ZWRGaWNvU2NvcmVcIiBtZC1kZW5zZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtZC1vcHRpb24gdi1mb3I9XCJzY29yZSBpbiBmaWNvU2NvcmVzXCIgOmtleT0nc2NvcmUnPnt7c2NvcmV9fTwvbWQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8L21kLXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgdi1tb2RlbD1cInNlbGVjdGVkRmljb1Njb3JlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHYtZm9yPVwic2NvcmUgaW4gZmljb1Njb3Jlc1wiIDprZXk9J3Njb3JlJz57e3Njb3JlfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWQtZXJyb3JcIj5GSUNPIHNjb3JlIGlzIHJlcXVpcmVkPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9tZC1maWVsZD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICBZb3VyIExUViAoTG9hbiB0byBWYWx1ZSkgaXMgPHN0cm9uZz57e2x0dn19JTwvc3Ryb25nPiA8YnIgLz5cblxuICAgICAgICAgICAgICAgIFlvdSBoYXZlIDxzdHJvbmc+e3tlcXVpdHlQZXJjZW50YWdlfX0lPC9zdHJvbmc+IGVxdWl0eSB3aGljaCBpcyA8c3Ryb25nPnt7ZXF1aXR5fX08L3N0cm9uZz48YnIgLz5cblxuICAgICAgICAgICAgICAgIFNlbGVjdGVkIEZJQ08gc2NvcmUgaXMgPGI+e3tzZWxlY3RlZEZpY29TY29yZX19PC9iPiA8YnIgLz5cblxuICAgICAgICAgICAgICAgIDxzcGFuIHYtaWY9XCJsdHYgPiA4MFwiPlxuICAgICAgICAgICAgICAgICAgWW91ciB3aWxsIHBheSBhcHByb3hpbWF0bGV5IDxzdHJvbmc+e3twbWl9fTwvc3Ryb25nPiBpbiBQcml2YXRlIE1vcnRnYWdlIEluc3VyYW5jZSBwZXIgbW9udGguXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIHYtaWY9XCJsdHYgPCA4MFwiPlxuICAgICAgICAgICAgICAgICAgWUFZIG5vIFBNSSBmb3IgeW91IVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvbWQtY2FyZC1jb250ZW50PlxuXG4gICAgICAgICAgICA8bWQtcHJvZ3Jlc3MtYmFyIG1kLW1vZGU9XCJpbmRldGVybWluYXRlXCIgdi1pZj1cInNlbmRpbmdcIiAvPlxuICAgICAgPC9tZC1jYXJkPlxuXG4gICAgICA8bWQtc25hY2tiYXIgOm1kLWFjdGl2ZS5zeW5jPVwidXNlclNhdmVkXCI+VGhlIHVzZXIge3sgbGFzdFVzZXIgfX0gd2FzIHNhdmVkIHdpdGggc3VjY2VzcyE8L21kLXNuYWNrYmFyPlxuICAgIDwvZm9ybT5cblxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBhY2NvdW50aW5nIGZyb20gJ2FjY291bnRpbmcnXG5pbXBvcnQgeyB2YWxpZGF0aW9uTWl4aW4gfSBmcm9tICd2dWVsaWRhdGUnXG5pbXBvcnQge1xuICAgIHJlcXVpcmVkLFxuICAgIGVtYWlsLFxuICAgIG1pbkxlbmd0aCxcbiAgICBtYXhMZW5ndGgsXG4gICAgYmV0d2VlblxuICB9IGZyb20gJ3Z1ZWxpZGF0ZS9saWIvdmFsaWRhdG9ycydcblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnUE1JJyxcbiAgbWl4aW5zOiBbdmFsaWRhdGlvbk1peGluXSxcbiAgZGF0YTogKCkgPT4gKHtcbiAgICBtZW51VmlzaWJsZTogZmFsc2UsXG4gICAgZmljb1Njb3JlczogWyAnNzYwKycsICc3NDAtNzU5JywnNzIwLTczOScsICc3MDAtNzE5JywgJzY4MC02OTknLFxuICAgICAgICAgICAgICAnNjYwLTY3OScsICc2NDAtNjU5JywgJzYyMC02MzknXSxcbiAgICBzZWxlY3RlZEZpY29TY29yZTogJzY2MC02NzknLFxuICAgIGhvdXNlVmFsdWU6IGFjY291bnRpbmcuZm9ybWF0TW9uZXkoMzAwMDAwLCckJywgMCksXG4gICAgbG9hbkFtb3VudDogYWNjb3VudGluZy5mb3JtYXRNb25leSgyODUwMDAsJyQnLCAwKSxcbiAgICBiYXNpc1BvaW50czogMCxcbiAgICB1c2VyU2F2ZWQ6IGZhbHNlLFxuICAgIHNlbmRpbmc6IGZhbHNlLFxuICAgIGxhc3RVc2VyOiBudWxsLFxuICB9KSxcbiAgdmFsaWRhdGlvbnM6IHtcbiAgICAvLyBmb3JtOiB7XG4gICAgICBob3VzZVZhbHVlOiB7XG4gICAgICAgIHJlcXVpcmVkLFxuICAgICAgICBiZXR3ZWVuOiBiZXR3ZWVuKDAsIDEwMDAwMDAwMClcbiAgICAgIH0sXG4gICAgICBsb2FuQW1vdW50OiB7XG4gICAgICAgIHJlcXVpcmVkLFxuICAgICAgICBiZXR3ZWVuOiBiZXR3ZWVuKDAsIDEwMDAwMDAwMCksXG4gICAgICAgIG1heExlbmd0aDogbWF4TGVuZ3RoKHRoaXMuaG91c2VWYWx1ZSlcbiAgICAgIH0sXG4gICAgICBzZWxlY3RlZEZpY29TY29yZToge1xuICAgICAgICByZXF1aXJlZFxuICAgICAgfSxcbiAgICAgIGVtYWlsOiB7XG4gICAgICAgIHJlcXVpcmVkLFxuICAgICAgICBlbWFpbFxuICAgICAgfSxcbiAgICAvLyB9XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgbHR2OiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBsdHYgPSAoYWNjb3VudGluZy51bmZvcm1hdCh0aGlzLmxvYW5BbW91bnQpIC9cbiAgICAgICAgYWNjb3VudGluZy51bmZvcm1hdCh0aGlzLmhvdXNlVmFsdWUpICogMTAwKS50b0ZpeGVkKDIpO1xuXG4gICAgICBzd2l0Y2godGhpcy5zZWxlY3RlZEZpY29TY29yZSkge1xuXG4gICAgICAgICAgY2FzZSAnNzYwKyc6XG4gICAgICAgICAgaWYgKCBsdHYgPD0gODUgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAwMTk7XG4gICAgICAgICAgZWxzZSBpZiAoIGx0diA+PSA4NS4wMSAmJiBsdHYgPD0gOTAgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAwMzA7XG4gICAgICAgICAgZWxzZSBpZiAoIGx0diA+PSA5MC4wMSAmJiBsdHYgPD0gOTUgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAwNDE7XG4gICAgICAgICAgZWxzZSBpZiAoIGx0diA+PSA5NS4wMSAmJiBsdHYgPD0gOTcgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAwNTU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnNzQwLTc1OSc6XG4gICAgICAgICAgaWYgKCBsdHYgPD0gODUgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAwMjA7XG4gICAgICAgICAgZWxzZSBpZiAoIGx0diA+PSA4NS4wMSAmJiBsdHYgPD0gOTAgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAwNDE7XG4gICAgICAgICAgZWxzZSBpZiAoIGx0diA+PSA5MC4wMSAmJiBsdHYgPD0gOTUgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAwNTk7XG4gICAgICAgICAgZWxzZSBpZiAoIGx0diA+PSA5NS4wMSAmJiBsdHYgPD0gOTcgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAwNzU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnNzIwLTczOSc6XG4gICAgICAgICAgaWYgKCBsdHYgPD0gODUgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAwMjM7XG4gICAgICAgICAgZWxzZSBpZiAoIGx0diA+PSA4NS4wMSAmJiBsdHYgPD0gOTAgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAwNTA7XG4gICAgICAgICAgZWxzZSBpZiAoIGx0diA+PSA5MC4wMSAmJiBsdHYgPD0gOTUgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAwNzM7XG4gICAgICAgICAgZWxzZSBpZiAoIGx0diA+PSA5NS4wMSAmJiBsdHYgPD0gOTcgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAwOTU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnNzAwLTcxOSc6XG4gICAgICAgICAgaWYgKCBsdHYgPD0gODUgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAwMjc7XG4gICAgICAgICAgZWxzZSBpZiAoIGx0diA+PSA4NS4wMSAmJiBsdHYgPD0gOTAgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAwNjA7XG4gICAgICAgICAgZWxzZSBpZiAoIGx0diA+PSA5MC4wMSAmJiBsdHYgPD0gOTUgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAwODc7XG4gICAgICAgICAgZWxzZSBpZiAoIGx0diA+PSA5NS4wMSAmJiBsdHYgPD0gOTcgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAxMTU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnNjgwLTY5OSc6XG4gICAgICAgICAgaWYgKCBsdHYgPD0gODUgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAwMzI7XG4gICAgICAgICAgZWxzZSBpZiAoIGx0diA+PSA4NS4wMSAmJiBsdHYgPD0gOTAgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAwNzM7XG4gICAgICAgICAgZWxzZSBpZiAoIGx0diA+PSA5MC4wMSAmJiBsdHYgPD0gOTUgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAxMDg7XG4gICAgICAgICAgZWxzZSBpZiAoIGx0diA+PSA5NS4wMSAmJiBsdHYgPD0gOTcgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAxNDA7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnNjYwLTk3OSc6XG4gICAgICAgICAgaWYgKCBsdHYgPD0gODUgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAwNDE7XG4gICAgICAgICAgZWxzZSBpZiAoIGx0diA+PSA4NS4wMSAmJiBsdHYgPD0gOTAgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAxMDA7XG4gICAgICAgICAgZWxzZSBpZiAoIGx0diA+PSA5MC4wMSAmJiBsdHYgPD0gOTUgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAxNDI7XG4gICAgICAgICAgZWxzZSBpZiAoIGx0diA+PSA5NS4wMSAmJiBsdHYgPD0gOTcgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAxOTA7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnNjQwLTY1OSc6XG4gICAgICAgICAgaWYgKCBsdHYgPD0gODUgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAwNDM7XG4gICAgICAgICAgZWxzZSBpZiAoIGx0diA+PSA4NS4wMSAmJiBsdHYgPD0gOTAgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAxMDU7XG4gICAgICAgICAgZWxzZSBpZiAoIGx0diA+PSA5MC4wMSAmJiBsdHYgPD0gOTUgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAxNTA7XG4gICAgICAgICAgZWxzZSBpZiAoIGx0diA+PSA5NS4wMSAmJiBsdHYgPD0gOTcgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAyMDU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnNjIwLTYzOSc6XG4gICAgICAgICAgaWYgKCBsdHYgPD0gODUgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAwNDU7XG4gICAgICAgICAgZWxzZSBpZiAoIGx0diA+PSA4NS4wMSAmJiBsdHYgPD0gOTAgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAxMTA7XG4gICAgICAgICAgZWxzZSBpZiAoIGx0diA+PSA5MC4wMSAmJiBsdHYgPD0gOTUgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAxNjE7XG4gICAgICAgICAgZWxzZSBpZiAoIGx0diA+PSA5NS4wMSAmJiBsdHYgPD0gOTcgKVxuICAgICAgICAgICAgICB0aGlzLmJhc2lzUG9pbnRzID0gLjAyMjU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICB9XG4gICAgICByZXR1cm4gbHR2O1xuICAgIH0sXG4gICAgZXF1aXR5UGVyY2VudGFnZTogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gKDEwMCAtIHRoaXMubHR2KS50b0ZpeGVkKDIpO1xuICAgIH0sXG4gICAgZXF1aXR5OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBhY2NvdW50aW5nLmZvcm1hdE1vbmV5KGFjY291bnRpbmcudW5mb3JtYXQodGhpcy5ob3VzZVZhbHVlKSAtXG4gICAgICAgIGFjY291bnRpbmcudW5mb3JtYXQodGhpcy5sb2FuQW1vdW50KSwgJyQnLCAwKTtcbiAgICB9LFxuICAgIHBtaTogZnVuY3Rpb24oKSB7XG4gICAgICBpZih0aGlzLmx0diA8PSA4MCkge1xuICAgICAgICByZXR1cm4gMFxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBhY2NvdW50aW5nLmZvcm1hdE1vbmV5KFxuICAgICAgICAgICh0aGlzLmJhc2lzUG9pbnRzICogYWNjb3VudGluZy51bmZvcm1hdCh0aGlzLmxvYW5BbW91bnQpKSAvIDEyKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICAgIGdldFZhbGlkYXRpb25DbGFzcyAoZmllbGROYW1lKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy4kdltmaWVsZE5hbWVdXG5cbiAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICdtZC1pbnZhbGlkJzogZmllbGQuJGludmFsaWQgJiYgZmllbGQuJGRpcnR5XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgY2xlYXJGb3JtICgpIHtcbiAgICAgICAgdGhpcy4kdi4kcmVzZXQoKVxuICAgICAgICB0aGlzLmhvdXNlVmFsdWUgPSBudWxsXG4gICAgICAgIHRoaXMubG9hbkFtb3VudCA9IG51bGxcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZpY29TY29yZSA9IG51bGxcbiAgICAgIH0sXG4gICAgICBzYXZlVXNlciAoKSB7XG4gICAgICAgIHRoaXMuc2VuZGluZyA9IHRydWVcblxuICAgICAgICAvLyBJbnN0ZWFkIG9mIHRoaXMgdGltZW91dCwgaGVyZSB5b3UgY2FuIGNhbGwgeW91ciBBUElcbiAgICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMubGFzdFVzZXIgPSBgJHt0aGlzLmxvYW5BbW91bnR9ICR7dGhpcy5ob3VzZVZhbHVlfWBcbiAgICAgICAgICB0aGlzLnVzZXJTYXZlZCA9IHRydWVcbiAgICAgICAgICB0aGlzLnNlbmRpbmcgPSBmYWxzZVxuICAgICAgICAgIHRoaXMuY2xlYXJGb3JtKClcbiAgICAgICAgfSwgMTUwMClcbiAgICAgIH0sXG4gICAgICB2YWxpZGF0ZVVzZXIgKCkge1xuICAgICAgICB0aGlzLiR2LiR0b3VjaCgpXG5cbiAgICAgICAgaWYgKCF0aGlzLiR2LiRpbnZhbGlkKSB7XG4gICAgICAgICAgdGhpcy5zYXZlVXNlcigpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxufTtcbjwvc2NyaXB0PlxuXG48IS0tIEFkZCBcInNjb3BlZFwiIGF0dHJpYnV0ZSB0byBsaW1pdCBDU1MgdG8gdGhpcyBjb21wb25lbnQgb25seSAtLT5cbjxzdHlsZSBzY29wZWQ+XG5oMSwgaDIge1xuICBmb250LXdlaWdodDogbm9ybWFsO1xufVxudWwge1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIHBhZGRpbmc6IDA7XG59XG5saSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luOiAwIDEwcHg7XG59XG5hIHtcbiAgY29sb3I6ICM0MmI5ODM7XG59XG48L3N0eWxlPlxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1FQTtBQUNBO0FBQ0E7QUFDQTtBQU9BO0FBRUE7QUFDQTs7O0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBVkE7OztBQWFBOztBQUVBO0FBQ0E7QUFGQTs7QUFLQTtBQUNBO0FBQ0E7QUFIQTs7QUFNQTtBQURBOztBQUlBO0FBQ0E7QUFGQTtBQUlBO0FBbEJBOztBQXFCQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQVNBO0FBQ0E7QUFBQTtBQUNBO0FBU0E7QUFDQTtBQUFBO0FBQ0E7QUFTQTtBQUNBO0FBQUE7QUFDQTtBQVNBO0FBQ0E7QUFBQTtBQUNBO0FBU0E7QUFDQTtBQUFBO0FBQ0E7QUFTQTtBQUNBO0FBQUE7QUFDQTtBQVNBO0FBQ0E7QUFBQTtBQUNBO0FBU0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFqSEE7O0FBb0hBO0FBRUE7QUFDQTtBQUFBOztBQUVBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBakNBO0FBdEpBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/selector.js?type=script&index=0!./src/components/PMI.vue\n"); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<template> | |
<form novalidate class="md-layout-row md-gutter" @submit.prevent="validateUser"> | |
<md-card class="md-flex-50 md-flex-small-100"> | |
<md-card-header> | |
<div class="md-title">PMI Calculator</div> | |
</md-card-header> | |
<md-card-content> | |
<div class="md-layout-row md-layout-wrap md-gutter"> | |
<div class="md-flex md-flex-small-100"> | |
<md-field :class="getValidationClass('houseValue')"> | |
<label for="purchase-price">Purchase Price/Estimated Property Value</label> | |
<md-input name="purchase-price" id="purchase-price" autocomplete="given-name" v-model="houseValue" :disabled="sending" /> | |
<span class="md-error" v-if="!$v.houseValue.required">The purchase price is required</span> | |
<span class="md-error" v-else-if="!$v.houseValue.between">Invalid purchase price</span> | |
</md-field> | |
</div> | |
<div class="md-flex md-flex-small-100"> | |
<md-field :class="getValidationClass('loanAmount')"> | |
<label for="last-name">Loan Amount</label> | |
<md-input name="last-name" id="loan-amount" autocomplete="loan-amount" v-model="loanAmount" :disabled="sending" /> | |
<span class="md-error" v-if="!$v.loanAmount.required">The loan amount is required</span> | |
<span class="md-error" v-else-if="!$v.loanAmount.between">Invalid loan amount</span> | |
<span class="md-error" v-else-if="!$v.loanAmount.maxLength">Loan amount cannot be more than purchase price</span> | |
</md-field> | |
</div> | |
</div> | |
<div class="md-layout-row md-gutter md-layout-wrap"> | |
<div class="md-flex md-flex-small-100"> | |
<md-field :class="getValidationClass('selectedFicoScore')"> | |
<label for="fico-score">Fico Score</label> | |
<md-select v-model="selectedFicoScore" md-dense> | |
<md-option v-for="score in ficoScores" :key='score'>{{score}}</md-option> | |
</md-select> | |
<!-- <select class="form-control" v-model="selectedFicoScore"> | |
<option v-for="score in ficoScores" :key='score'>{{score}}</option> | |
</select> --> | |
<span class="md-error">FICO score is required</span> | |
</md-field> | |
</div> | |
</div> | |
Your LTV (Loan to Value) is <strong>{{ltv}}%</strong> <br /> | |
You have <strong>{{equityPercentage}}%</strong> equity which is <strong>{{equity}}</strong><br /> | |
Selected FICO score is <b>{{selectedFicoScore}}</b> <br /> | |
<span v-if="ltv > 80"> | |
Your will pay approximatley <strong>{{pmi}}</strong> in Private Mortgage Insurance per month. | |
</span> | |
<span v-if="ltv < 80"> | |
YAY no PMI for you! | |
</span> | |
</md-card-content> | |
<md-progress-bar md-mode="indeterminate" v-if="sending" /> | |
</md-card> | |
<md-snackbar :md-active.sync="userSaved">The user {{ lastUser }} was saved with success!</md-snackbar> | |
</form> | |
</template> | |
<script> | |
import accounting from 'accounting' | |
import { validationMixin } from 'vuelidate' | |
import { | |
required, | |
email, | |
minLength, | |
maxLength, | |
between | |
} from 'vuelidate/lib/validators' | |
export default { | |
name: 'PMI', | |
mixins: [validationMixin], | |
data: () => ({ | |
menuVisible: false, | |
ficoScores: [ '760+', '740-759','720-739', '700-719', '680-699', | |
'660-679', '640-659', '620-639'], | |
selectedFicoScore: '660-679', | |
houseValue: accounting.formatMoney(300000,'$', 0), | |
loanAmount: accounting.formatMoney(285000,'$', 0), | |
basisPoints: 0, | |
userSaved: false, | |
sending: false, | |
lastUser: null, | |
}), | |
validations: { | |
// form: { | |
houseValue: { | |
required, | |
between: between(0, 100000000) | |
}, | |
loanAmount: { | |
required, | |
between: between(0, 100000000), | |
maxLength: maxLength(this.houseValue) | |
}, | |
selectedFicoScore: { | |
required | |
}, | |
email: { | |
required, | |
}, | |
// } | |
}, | |
computed: { | |
ltv: function() { | |
var ltv = (accounting.unformat(this.loanAmount) / | |
accounting.unformat(this.houseValue) * 100).toFixed(2); | |
switch(this.selectedFicoScore) { | |
case '760+': | |
if ( ltv <= 85 ) | |
this.basisPoints = .0019; | |
else if ( ltv >= 85.01 && ltv <= 90 ) | |
this.basisPoints = .0030; | |
else if ( ltv >= 90.01 && ltv <= 95 ) | |
this.basisPoints = .0041; | |
else if ( ltv >= 95.01 && ltv <= 97 ) | |
this.basisPoints = .0055; | |
break; | |
case '740-759': | |
if ( ltv <= 85 ) | |
this.basisPoints = .0020; | |
else if ( ltv >= 85.01 && ltv <= 90 ) | |
this.basisPoints = .0041; | |
else if ( ltv >= 90.01 && ltv <= 95 ) | |
this.basisPoints = .0059; | |
else if ( ltv >= 95.01 && ltv <= 97 ) | |
this.basisPoints = .0075; | |
break; | |
case '720-739': | |
if ( ltv <= 85 ) | |
this.basisPoints = .0023; | |
else if ( ltv >= 85.01 && ltv <= 90 ) | |
this.basisPoints = .0050; | |
else if ( ltv >= 90.01 && ltv <= 95 ) | |
this.basisPoints = .0073; | |
else if ( ltv >= 95.01 && ltv <= 97 ) | |
this.basisPoints = .0095; | |
break; | |
case '700-719': | |
if ( ltv <= 85 ) | |
this.basisPoints = .0027; | |
else if ( ltv >= 85.01 && ltv <= 90 ) | |
this.basisPoints = .0060; | |
else if ( ltv >= 90.01 && ltv <= 95 ) | |
this.basisPoints = .0087; | |
else if ( ltv >= 95.01 && ltv <= 97 ) | |
this.basisPoints = .0115; | |
break; | |
case '680-699': | |
if ( ltv <= 85 ) | |
this.basisPoints = .0032; | |
else if ( ltv >= 85.01 && ltv <= 90 ) | |
this.basisPoints = .0073; | |
else if ( ltv >= 90.01 && ltv <= 95 ) | |
this.basisPoints = .0108; | |
else if ( ltv >= 95.01 && ltv <= 97 ) | |
this.basisPoints = .0140; | |
break; | |
case '660-979': | |
if ( ltv <= 85 ) | |
this.basisPoints = .0041; | |
else if ( ltv >= 85.01 && ltv <= 90 ) | |
this.basisPoints = .0100; | |
else if ( ltv >= 90.01 && ltv <= 95 ) | |
this.basisPoints = .0142; | |
else if ( ltv >= 95.01 && ltv <= 97 ) | |
this.basisPoints = .0190; | |
break; | |
case '640-659': | |
if ( ltv <= 85 ) | |
this.basisPoints = .0043; | |
else if ( ltv >= 85.01 && ltv <= 90 ) | |
this.basisPoints = .0105; | |
else if ( ltv >= 90.01 && ltv <= 95 ) | |
this.basisPoints = .0150; | |
else if ( ltv >= 95.01 && ltv <= 97 ) | |
this.basisPoints = .0205; | |
break; | |
case '620-639': | |
if ( ltv <= 85 ) | |
this.basisPoints = .0045; | |
else if ( ltv >= 85.01 && ltv <= 90 ) | |
this.basisPoints = .0110; | |
else if ( ltv >= 90.01 && ltv <= 95 ) | |
this.basisPoints = .0161; | |
else if ( ltv >= 95.01 && ltv <= 97 ) | |
this.basisPoints = .0225; | |
break; | |
} | |
return ltv; | |
}, | |
equityPercentage: function() { | |
return (100 - this.ltv).toFixed(2); | |
}, | |
equity: function() { | |
return accounting.formatMoney(accounting.unformat(this.houseValue) - | |
accounting.unformat(this.loanAmount), '$', 0); | |
}, | |
pmi: function() { | |
if(this.ltv <= 80) { | |
return 0 | |
} | |
else { | |
return accounting.formatMoney( | |
(this.basisPoints * accounting.unformat(this.loanAmount)) / 12); | |
} | |
} | |
}, | |
methods: { | |
getValidationClass (fieldName) { | |
const field = this.$v[fieldName] | |
if (field) { | |
return { | |
'md-invalid': field.$invalid && field.$dirty | |
} | |
} | |
}, | |
clearForm () { | |
this.$v.$reset() | |
this.houseValue = null | |
this.loanAmount = null | |
this.selectedFicoScore = null | |
}, | |
saveUser () { | |
this.sending = true | |
// Instead of this timeout, here you can call your API | |
window.setTimeout(() => { | |
this.lastUser = `${this.loanAmount} ${this.houseValue}` | |
this.userSaved = true | |
this.sending = false | |
this.clearForm() | |
}, 1500) | |
}, | |
validateUser () { | |
this.$v.$touch() | |
if (!this.$v.$invalid) { | |
this.saveUser() | |
} | |
} | |
}, | |
}; | |
</script> | |
<!-- Add "scoped" attribute to limit CSS to this component only --> | |
<style scoped> | |
h1, h2 { | |
font-weight: normal; | |
} | |
ul { | |
list-style-type: none; | |
padding: 0; | |
} | |
li { | |
display: inline-block; | |
margin: 0 10px; | |
} | |
a { | |
color: #42b983; | |
} | |
</style> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment