Skip to content

Instantly share code, notes, and snippets.

@chadsaun
Created October 5, 2018 19:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chadsaun/d48528b62ee9dd25e588ce1030cce314 to your computer and use it in GitHub Desktop.
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
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