reactjs-credit-card
Version:
This Package has react credit card form components and form validation system
203 lines (156 loc) • 4.97 kB
JavaScript
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = privateMap.get(receiver); if (!descriptor) { throw new TypeError("attempted to set private field on non-instance"); } if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } return value; }
function _classPrivateFieldGet(receiver, privateMap) { var descriptor = privateMap.get(receiver); if (!descriptor) { throw new TypeError("attempted to get private field on non-instance"); } if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
/**
* @typedef HunelConfig
* @type {object}
* @property {boolean} middlePartHide - It's uses to hide the middle part of credit card number, default value is false
* @property {number} yearLength - It's validThruYear list length,default value is 10.You can set this value to change yearValidThru list range
*/
/**
* @type {HunelConfig}
*/
var hunelConfig = {
middlePartHide: false,
yearLength: 10
};
var _date = new WeakMap();
var _cardNumber = new WeakMap();
var _owner = new WeakMap();
var _validThruMonth = new WeakMap();
var _validThruYear = new WeakMap();
var _securityCode = new WeakMap();
var _fnMounth = new WeakMap();
var _fnCardStates = new WeakMap();
var _config = new WeakMap();
export default class HunelCreditCard {
/**
*
* @param {HunelConfig} config a config object which can configure the HunelCreditCard instance
*/
constructor(config) {
_date.set(this, {
writable: true,
value: new Date()
});
_cardNumber.set(this, {
writable: true,
value: ''
});
_owner.set(this, {
writable: true,
value: ''
});
_validThruMonth.set(this, {
writable: true,
value: _classPrivateFieldGet(this, _date).getMonth() + 1
});
_validThruYear.set(this, {
writable: true,
value: _classPrivateFieldGet(this, _date).getFullYear()
});
_securityCode.set(this, {
writable: true,
value: ''
});
_fnMounth.set(this, {
writable: true,
value: null
});
_fnCardStates.set(this, {
writable: true,
value: null
});
_config.set(this, {
writable: true,
value: null
});
_classPrivateFieldSet(this, _config, { ...hunelConfig,
...config
});
this.pokeMonthState = this.pokeMonthState.bind(this);
this.setMonthRelativeWithYear = this.setMonthRelativeWithYear.bind(this);
this.setVirtualCardStates = this.setVirtualCardStates.bind(this);
this.pokeVirtualCardStates = this.pokeVirtualCardStates.bind(this);
this.setContextStateValue = this.setContextStateValue.bind(this);
this.getCardNumber = this.getCardNumber.bind(this);
this.getFormData = this.getFormData.bind(this);
}
get _config() {
return _classPrivateFieldGet(this, _config);
}
get _cardNumber() {
return _classPrivateFieldGet(this, _cardNumber);
}
set _cardNumber(value) {
_classPrivateFieldSet(this, _cardNumber, value);
}
get _owner() {
return _classPrivateFieldGet(this, _owner);
}
set _owner(value) {
_classPrivateFieldSet(this, _owner, value);
}
get _validThruMonth() {
return _classPrivateFieldGet(this, _validThruMonth);
}
set _validThruMonth(value) {
_classPrivateFieldSet(this, _validThruMonth, value);
}
get _validThruYear() {
return _classPrivateFieldGet(this, _validThruYear);
}
set _validThruYear(value) {
_classPrivateFieldSet(this, _validThruYear, value);
}
get _securityCode() {
return _classPrivateFieldGet(this, _securityCode);
}
set _securityCode(value) {
_classPrivateFieldSet(this, _securityCode, value);
}
setMonthRelativeWithYear(fn) {
_classPrivateFieldSet(this, _fnMounth, fn);
}
pokeMonthState(year) {
_classPrivateFieldGet(this, _fnMounth).call(this, year);
}
setVirtualCardStates(fn) {
_classPrivateFieldSet(this, _fnCardStates, fn);
}
pokeVirtualCardStates(type, value) {
_classPrivateFieldGet(this, _fnCardStates).call(this, type, value);
}
setContextStateValue(type, value) {
switch (type) {
case 1:
this._cardNumber = value;
break;
case 2:
this._owner = value;
break;
case 3:
this._validThruMonth = value;
break;
case 4:
this._validThruYear = value;
break;
case 5:
this._securityCode = value;
break;
default:
}
}
getCardNumber() {
return this._cardNumber;
}
getFormData() {
return {
cardNumber: this._cardNumber,
cardHolder: this._owner,
validThruMonth: this._validThruMonth,
validThruYear: this._validThruYear,
securityCode: this._securityCode,
validYearLength: _classPrivateFieldGet(this, _config).yearLength
};
}
}