Created
October 5, 2018 19:34
-
-
Save chadsaun/d48528b62ee9dd25e588ce1030cce314 to your computer and use it in GitHub Desktop.
Vue mixin to get the credit card mask for Vuetify using Cleave.js
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
const CreditCardDetector = require('cleave.js/src/shortcuts/CreditCardDetector'); | |
export default { | |
data () { | |
return { | |
delimiter: ' - ', | |
prevCCNumHead: false, | |
prevMask: false | |
} | |
}, | |
methods: { | |
getCardType (ccNum) { | |
let ccInfo = CreditCardDetector.getInfo(ccNum, false) | |
return ccInfo.type | |
}, | |
getCCMask (ccNum) { | |
ccNum = !ccNum ? '' : ccNum | |
let ccNumHead = ccNum.substring(0,4) | |
if (this.prevCCNumHead === ccNumHead) { | |
return this.prevMask | |
} else { | |
this.prevCCNumHead = ccNumHead | |
} | |
let ccInfo = CreditCardDetector.getInfo(ccNum, false) | |
return this.convertBlocksToMask(ccInfo.blocks) | |
}, | |
convertBlocksToMask (blocks) { | |
let mask = '' | |
let delimiter = false | |
for (let block of blocks) { | |
if (delimiter === false) { | |
delimiter = this.delimiter | |
} else { | |
mask += this.delimiter | |
} | |
for (var i = 0; i < block; i++) { | |
mask += '#' | |
} | |
} | |
this.prevMask = mask | |
return mask | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment