Skip to content

Commit

Permalink
Merge pull request #441 from skyflowapi/SK-1535
Browse files Browse the repository at this point in the history
SK-1535: get latest format for card number before assigning value
  • Loading branch information
skyflow-shravan authored Jul 29, 2024
2 parents 27df51d + 72bdf22 commit 32a72df
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 6 deletions.
26 changes: 22 additions & 4 deletions src/core/internal/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -594,14 +594,32 @@ export class FrameElement {
const target = event.target as HTMLInputElement;
const { mask } = this.iFrameFormElement;
const value = this.domInput?.value || this.iFrameFormElement.getValue();
let updatedMask;
if (mask) {
updatedMask = [...mask];
}
if (
this.iFrameFormElement.fieldType === ELEMENTS.CARD_NUMBER.name
&& this.iFrameFormElement.mask
) {
const cardType = detectCardType(value);
const cardNumberMask = addSeperatorToCardNumberMask(
CARD_NUMBER_MASK[cardType],
this.options?.cardSeperator,
);
updatedMask[0] = cardNumberMask[0];
updatedMask[1] = null;
updatedMask[2] = cardNumberMask[1];
this.iFrameFormElement.setMask(cardNumberMask as string[]);
}
if (updatedMask) {
const translation = {};
if (mask[2]) {
Object.keys(mask[2]).forEach((key) => {
translation[key] = { pattern: mask[2][key] };
if (updatedMask[2]) {
Object.keys(updatedMask[2]).forEach((key) => {
translation[key] = { pattern: updatedMask[2][key] };
});
}
const output = getMaskedOutput(target?.value, mask[0], translation);
const output = getMaskedOutput(target?.value, updatedMask[0], translation);
if (output.length >= value.length) {
this.iFrameFormElement.setValue(output, target?.checkValidity());
} else if (output === '' && target?.value === '') {
Expand Down
4 changes: 2 additions & 2 deletions tests/core/internal/frame-controller.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -1153,7 +1153,7 @@ describe('test frame controller', () => {
}, div);

element.onInputChange(inputEvent);
expect(formElement.getValue()).toBe('4111111111111111')
expect(formElement.getValue()).toBe('4111 1111 1111 1111')
})


Expand Down Expand Up @@ -1182,7 +1182,7 @@ describe('test frame controller', () => {
}, div);

element.onInputChange(inputEvent);
expect(formElement.getValue()).toBe(" ");
expect(formElement.getValue()).toBe("4111 1111 1111 1111");
})

test('card_number extra input on FrameElement', () => {
Expand Down

0 comments on commit 32a72df

Please sign in to comment.