ember-credit-cards
Version:
A credit card utility library and form elements.
182 lines (122 loc) • 3.68 kB
Markdown
[](https://travis-ci.org/arenoir/ember-credit-cards)
A credit card utility library and form elements. Influenced by the [jquery.payment](https://github.com/stripe/jquery.payment) lib.
Checkout the [demo](https://arenoir.github.io/ember-credit-cards/).
* Ember.js v3.4 or above
* Ember CLI v2.13 or above
* Node.js v8 or above
Full credit card form with validations and formatting.
Attributes:
* number
* name
* month
* year
* cvc
* zipcode
* zipcodeRequired
Events:
* onValidate
Example:
``` html
//templates/credit-cards/new.hbs
<div>
{{ credit-card-form
number=attrs.number
name=attrs.name
month=attrs.month
year=attrs.year
cvc=attrs.cvc
onValidate=(mut disabled)
}}
</div>
<button {{action "save"}} disabled={{disabled}}>
Save
</button>
```
Formats credit card number on entry. Discards non-numeric and extra characters. Parses sets number attribute.
Attributes:
* number
Formats cvc number on entry. Discards non-numeric and extra characters. Parses sets cvc attribute.
Attributes:
* cvc
Validates and formats expiration date. Discards non-numeric and extra characters. Parses and sets month, year attributes.
Attributes:
* month
* year
Validates and formats zip code. Discards non-numeric and extra characters. Sets zipcode attribute.
Attributes:
* zipcode
Validates a card number:
* Validates numbers
* Validates Luhn algorithm
* Validates length
Example:
``` javascript
import validations from 'ember-credit-cards/utils/validations';
validations.validateNumber('4242 4242 4242 4242'); //=> true
```
Validates a card CVC:
* Validates number
* Validates length to 4
Example:
``` javascript
import validations from 'ember-credit-cards/utils/validations';
validations.validateCVC('123'); //=> true
validations.validateCVC('123', 'amex'); //=> true
validations.validateCVC('1234', 'amex'); //=> true
validations.validateCVC('12344'); //=> false
```
Validates a card expiration date:
* Validates numbers
* Validates in the future
* Supports year shorthand
Example:
``` javascript
import validations from 'ember-credit-cards/utils/validations';
validations.validateExpiration('05', '20'); //=> true
validations.validateExpiration('05', '2015'); //=> true
validations.validateExpiration('05', '05'); //=> false
```
Validates a zip code:
* Validates 5 digit optional + 4 zipcode
Example:
``` javascript
import validations from 'ember-credit-cards/utils/validations';
validations.validateZipcode('94611'); //=> true
validations.validateZipcode('946'); //=> false
validations.validateZipcode('94611-2544'); //=> true
validations.validateZipcode('946112544'); //=> true
validations.validateZipcode('94611-24'); //=> false
```
You can provide custom labels for localization.
``` html
<div>
{{
credit-card-form
number=ccNumber
name=ccName
month=ccMonth
year=ccYear
cvc=ccCvc
numberLabel=(t 'credit-card-form.number')
securityCodeLabel=(t 'credit-card-form.security-code')
nameOnCardLabel=(t 'credit-card-form.name-on-card')
expirationLabel=(t 'credit-card-form.expiration')
zipCodeLabel=(t 'credit-card-form.zip-code')
on-validate='ccValidate'
}}
</div>
```