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