@idonatedev/idonate-sdk 1.2.0-dev7 → 1.2.0-dev9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/constants.js +1 -1
- package/dist/esm/constants.js +1 -1
- package/dist/esm/tokenize/CardConnectTokenizer.js +41 -16
- package/dist/esm/tokenize/SpreedlyTokenizer.d.ts +8 -0
- package/dist/esm/tokenize/SpreedlyTokenizer.js +79 -4
- package/dist/esm/tokenize/styles.d.ts +1 -1
- package/dist/esm/tokenize/styles.js +6 -0
- package/dist/esm/tokenize/tokenizer-constants.d.ts +1 -0
- package/dist/esm/tokenize/tokenizer-constants.js +1 -0
- package/dist/esm/tokenize/types.d.ts +7 -1
- package/dist/tokenize/CardConnectTokenizer.js +40 -15
- package/dist/tokenize/SpreedlyTokenizer.d.ts +8 -0
- package/dist/tokenize/SpreedlyTokenizer.js +78 -3
- package/dist/tokenize/styles.d.ts +1 -1
- package/dist/tokenize/styles.js +6 -0
- package/dist/tokenize/tokenizer-constants.d.ts +1 -0
- package/dist/tokenize/tokenizer-constants.js +2 -1
- package/dist/tokenize/types.d.ts +7 -1
- package/package.json +3 -2
- package/umd/idonate-sdk.js +1 -1
|
@@ -21,16 +21,19 @@ const tokenizer_utils_1 = require("./tokenizer-utils");
|
|
|
21
21
|
const SPREEDLY_SCRIPT_URL = 'https://core.spreedly.com/iframe/iframe-v1.min.js';
|
|
22
22
|
const SPREEDLY_SCRIPT_ID = 'spreedly-iframe-script';
|
|
23
23
|
class SpreedlyTokenizer extends Tokenizer_1.Tokenizer {
|
|
24
|
-
constructor(environmentKey, containerId, styles, mode = 'credit_card', bankCountry = 'US', enableTestMode = false, layout = 'single-line') {
|
|
24
|
+
constructor(environmentKey, containerId, styles, mode = 'credit_card', bankCountry = 'US', enableTestMode = false, layout = 'single-line', responsiveBreakpoint = tokenizer_constants_1.RESPONSIVE_BREAKPOINT) {
|
|
25
25
|
super();
|
|
26
26
|
this.environmentKey = environmentKey;
|
|
27
27
|
this.containerId = containerId;
|
|
28
28
|
this.layout = layout;
|
|
29
29
|
this.bankCountry = 'US';
|
|
30
30
|
this.enableTestMode = false;
|
|
31
|
+
this.effectiveLayout = 'single-line';
|
|
32
|
+
this.responsiveBreakpoint = tokenizer_constants_1.RESPONSIVE_BREAKPOINT;
|
|
31
33
|
this.mode = mode;
|
|
32
34
|
this.bankCountry = bankCountry;
|
|
33
35
|
this.enableTestMode = enableTestMode;
|
|
36
|
+
this.responsiveBreakpoint = responsiveBreakpoint;
|
|
34
37
|
if (mode === 'credit_card') {
|
|
35
38
|
const SpreedlyFrame = window.SpreedlyPaymentFrame;
|
|
36
39
|
if (SpreedlyFrame) {
|
|
@@ -77,7 +80,7 @@ class SpreedlyTokenizer extends Tokenizer_1.Tokenizer {
|
|
|
77
80
|
if (!environmentKey) {
|
|
78
81
|
environmentKey = '';
|
|
79
82
|
}
|
|
80
|
-
const tokenizer = new SpreedlyTokenizer(environmentKey, container.containerId, container.styling, container.mode || 'credit_card', container.bankCountry || 'US', container.enableTestMode || false, container.layout || 'single-line');
|
|
83
|
+
const tokenizer = new SpreedlyTokenizer(environmentKey, container.containerId, container.styling, container.mode || 'credit_card', container.bankCountry || 'US', container.enableTestMode || false, container.layout || 'single-line', container.responsiveBreakpoint || tokenizer_constants_1.RESPONSIVE_BREAKPOINT);
|
|
81
84
|
tokenizer.organizationId = config.organizationId;
|
|
82
85
|
tokenizer.embedId = config.embedId;
|
|
83
86
|
tokenizer.clientConfig = config.clientConfig;
|
|
@@ -683,7 +686,64 @@ class SpreedlyTokenizer extends Tokenizer_1.Tokenizer {
|
|
|
683
686
|
element === null || element === void 0 ? void 0 : element.focus();
|
|
684
687
|
}
|
|
685
688
|
}
|
|
689
|
+
determineLayout(width) {
|
|
690
|
+
return width < this.responsiveBreakpoint ? 'two-line' : 'single-line';
|
|
691
|
+
}
|
|
692
|
+
setupResizeObserver() {
|
|
693
|
+
if (this.layout !== 'responsive')
|
|
694
|
+
return;
|
|
695
|
+
const container = document.getElementById(this.containerId);
|
|
696
|
+
if (!container)
|
|
697
|
+
return;
|
|
698
|
+
let debounceTimer;
|
|
699
|
+
this.resizeObserver = new ResizeObserver((entries) => {
|
|
700
|
+
clearTimeout(debounceTimer);
|
|
701
|
+
debounceTimer = setTimeout(() => {
|
|
702
|
+
const newWidth = entries[0].contentRect.width;
|
|
703
|
+
const newLayout = this.determineLayout(newWidth);
|
|
704
|
+
if (newLayout !== this.effectiveLayout) {
|
|
705
|
+
this.applyLayoutStyles(newLayout);
|
|
706
|
+
}
|
|
707
|
+
}, 100);
|
|
708
|
+
});
|
|
709
|
+
this.resizeObserver.observe(container);
|
|
710
|
+
}
|
|
711
|
+
applyLayoutStyles(newLayout) {
|
|
712
|
+
this.effectiveLayout = newLayout;
|
|
713
|
+
const container = document.getElementById(this.containerId);
|
|
714
|
+
if (!container)
|
|
715
|
+
return;
|
|
716
|
+
if (newLayout === 'two-line') {
|
|
717
|
+
container.style.flexWrap = 'wrap';
|
|
718
|
+
if (this.cardNumberDiv) {
|
|
719
|
+
this.cardNumberDiv.style.flex = '1';
|
|
720
|
+
this.cardNumberDiv.style.flexBasis = '100%';
|
|
721
|
+
}
|
|
722
|
+
if (this.expiryEl) {
|
|
723
|
+
this.expiryEl.style.flex = '1';
|
|
724
|
+
this.expiryEl.style.flexBasis = 'auto';
|
|
725
|
+
}
|
|
726
|
+
if (this.cvvDiv) {
|
|
727
|
+
this.cvvDiv.style.flex = '1';
|
|
728
|
+
this.cvvDiv.style.flexBasis = 'auto';
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
else {
|
|
732
|
+
container.style.flexWrap = 'nowrap';
|
|
733
|
+
if (this.cardNumberDiv) {
|
|
734
|
+
this.cardNumberDiv.style.flex = tokenizer_constants_1.FIELD_FLEX.cardNumber.flex;
|
|
735
|
+
}
|
|
736
|
+
if (this.expiryEl) {
|
|
737
|
+
this.expiryEl.style.flex = tokenizer_constants_1.FIELD_FLEX.expiry.flex;
|
|
738
|
+
}
|
|
739
|
+
if (this.cvvDiv) {
|
|
740
|
+
this.cvvDiv.style.flex = tokenizer_constants_1.FIELD_FLEX.cvv.flex;
|
|
741
|
+
}
|
|
742
|
+
}
|
|
743
|
+
}
|
|
686
744
|
destroy() {
|
|
745
|
+
var _a;
|
|
746
|
+
(_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
687
747
|
if (this.spreedly && this.spreedly.removeHandlers) {
|
|
688
748
|
this.spreedly.removeHandlers();
|
|
689
749
|
}
|
|
@@ -760,10 +820,18 @@ class SpreedlyTokenizer extends Tokenizer_1.Tokenizer {
|
|
|
760
820
|
}
|
|
761
821
|
}
|
|
762
822
|
createCreditCardFields(container) {
|
|
763
|
-
if (this.layout === '
|
|
823
|
+
if (this.layout === 'responsive') {
|
|
824
|
+
this.effectiveLayout = this.determineLayout(container.offsetWidth);
|
|
825
|
+
}
|
|
826
|
+
else {
|
|
827
|
+
this.effectiveLayout =
|
|
828
|
+
this.layout === 'two-line' ? 'two-line' : 'single-line';
|
|
829
|
+
}
|
|
830
|
+
if (this.effectiveLayout === 'two-line' && this.layout !== 'responsive') {
|
|
764
831
|
const cardNumberDiv = (0, tokenizer_utils_1.createFieldContainer)(this.numberEl, '1', tokenizer_constants_1.FIELD_FLEX.cardNumber.minWidth);
|
|
765
832
|
cardNumberDiv.style.height = this.mergedStyles.input.height;
|
|
766
833
|
cardNumberDiv.style.flexBasis = '100%';
|
|
834
|
+
this.cardNumberDiv = cardNumberDiv;
|
|
767
835
|
container.appendChild(cardNumberDiv);
|
|
768
836
|
this.expiryEl = (0, tokenizer_utils_1.createInputElement)(this.expiryId, 'text', tokenizer_constants_1.PLACEHOLDERS.expiry, tokenizer_constants_1.FIELD_CONSTRAINTS.expiry.maxLength);
|
|
769
837
|
Object.assign(this.expiryEl.style, {
|
|
@@ -784,11 +852,13 @@ class SpreedlyTokenizer extends Tokenizer_1.Tokenizer {
|
|
|
784
852
|
container.appendChild(this.expiryEl);
|
|
785
853
|
const cvvDiv = (0, tokenizer_utils_1.createFieldContainer)(this.cvvEl, '1', tokenizer_constants_1.FIELD_FLEX.cvv.minWidth);
|
|
786
854
|
cvvDiv.style.height = this.mergedStyles.input.height;
|
|
855
|
+
this.cvvDiv = cvvDiv;
|
|
787
856
|
container.appendChild(cvvDiv);
|
|
788
857
|
}
|
|
789
858
|
else {
|
|
790
859
|
const cardNumberDiv = (0, tokenizer_utils_1.createFieldContainer)(this.numberEl, tokenizer_constants_1.FIELD_FLEX.cardNumber.flex, tokenizer_constants_1.FIELD_FLEX.cardNumber.minWidth);
|
|
791
860
|
cardNumberDiv.style.height = this.mergedStyles.input.height;
|
|
861
|
+
this.cardNumberDiv = cardNumberDiv;
|
|
792
862
|
container.appendChild(cardNumberDiv);
|
|
793
863
|
this.expiryEl = (0, tokenizer_utils_1.createInputElement)(this.expiryId, 'text', tokenizer_constants_1.PLACEHOLDERS.expiry, tokenizer_constants_1.FIELD_CONSTRAINTS.expiry.maxLength);
|
|
794
864
|
Object.assign(this.expiryEl.style, {
|
|
@@ -809,7 +879,12 @@ class SpreedlyTokenizer extends Tokenizer_1.Tokenizer {
|
|
|
809
879
|
container.appendChild(this.expiryEl);
|
|
810
880
|
const cvvDiv = (0, tokenizer_utils_1.createFieldContainer)(this.cvvEl, tokenizer_constants_1.FIELD_FLEX.cvv.flex, tokenizer_constants_1.FIELD_FLEX.cvv.minWidth);
|
|
811
881
|
cvvDiv.style.height = this.mergedStyles.input.height;
|
|
882
|
+
this.cvvDiv = cvvDiv;
|
|
812
883
|
container.appendChild(cvvDiv);
|
|
884
|
+
if (this.layout === 'responsive') {
|
|
885
|
+
this.applyLayoutStyles(this.effectiveLayout);
|
|
886
|
+
this.setupResizeObserver();
|
|
887
|
+
}
|
|
813
888
|
}
|
|
814
889
|
}
|
|
815
890
|
createBankAccountFields(container) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { TokenizerStyling, TokenizerStylingComplete } from './types';
|
|
2
2
|
export declare const DEFAULT_UNIFIED_STYLES: TokenizerStylingComplete;
|
|
3
3
|
export declare function mergeStyles(defaults: TokenizerStylingComplete, userStyles?: TokenizerStyling): TokenizerStylingComplete;
|
|
4
|
-
export declare function getContainerStylesForLayout(baseStyles: TokenizerStylingComplete, layout?: 'single-line' | 'two-line'): TokenizerStylingComplete;
|
|
4
|
+
export declare function getContainerStylesForLayout(baseStyles: TokenizerStylingComplete, layout?: 'single-line' | 'two-line' | 'responsive'): TokenizerStylingComplete;
|
package/dist/tokenize/styles.js
CHANGED
|
@@ -32,6 +32,11 @@ exports.DEFAULT_UNIFIED_STYLES = {
|
|
|
32
32
|
flexWrap: 'nowrap',
|
|
33
33
|
rowGap: '1rem',
|
|
34
34
|
},
|
|
35
|
+
twoLine: {
|
|
36
|
+
padding: '',
|
|
37
|
+
fontSize: '',
|
|
38
|
+
textAlign: '',
|
|
39
|
+
},
|
|
35
40
|
};
|
|
36
41
|
function mergeStyles(defaults, userStyles) {
|
|
37
42
|
if (!userStyles)
|
|
@@ -41,6 +46,7 @@ function mergeStyles(defaults, userStyles) {
|
|
|
41
46
|
focus: Object.assign(Object.assign({}, defaults.focus), userStyles.focus),
|
|
42
47
|
error: Object.assign(Object.assign({}, defaults.error), userStyles.error),
|
|
43
48
|
container: Object.assign(Object.assign({}, defaults.container), userStyles.container),
|
|
49
|
+
twoLine: Object.assign(Object.assign({}, defaults.twoLine), userStyles.twoLine),
|
|
44
50
|
};
|
|
45
51
|
}
|
|
46
52
|
function getContainerStylesForLayout(baseStyles, layout = 'single-line') {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FIELD_CONSTRAINTS = exports.PLACEHOLDERS = exports.CANADIAN_BANK_FIELD_FLEX = exports.BANK_FIELD_FLEX = exports.FIELD_FLEX = exports.TOKENIZE_TIMEOUT = exports.INIT_TIMEOUT = void 0;
|
|
3
|
+
exports.RESPONSIVE_BREAKPOINT = exports.FIELD_CONSTRAINTS = exports.PLACEHOLDERS = exports.CANADIAN_BANK_FIELD_FLEX = exports.BANK_FIELD_FLEX = exports.FIELD_FLEX = exports.TOKENIZE_TIMEOUT = exports.INIT_TIMEOUT = void 0;
|
|
4
4
|
exports.INIT_TIMEOUT = 10000;
|
|
5
5
|
exports.TOKENIZE_TIMEOUT = 30000;
|
|
6
6
|
exports.FIELD_FLEX = {
|
|
@@ -63,3 +63,4 @@ exports.FIELD_CONSTRAINTS = {
|
|
|
63
63
|
maxLength: 4,
|
|
64
64
|
},
|
|
65
65
|
};
|
|
66
|
+
exports.RESPONSIVE_BREAKPOINT = 400;
|
package/dist/tokenize/types.d.ts
CHANGED
|
@@ -18,7 +18,8 @@ export interface TokenizerContainer {
|
|
|
18
18
|
mode?: PaymentMethodMode;
|
|
19
19
|
bankCountry?: 'US' | 'CA';
|
|
20
20
|
enableTestMode?: boolean;
|
|
21
|
-
layout?: 'single-line' | 'two-line';
|
|
21
|
+
layout?: 'single-line' | 'two-line' | 'responsive';
|
|
22
|
+
responsiveBreakpoint?: number;
|
|
22
23
|
}
|
|
23
24
|
export interface TokenizerStylingComplete {
|
|
24
25
|
input: {
|
|
@@ -52,6 +53,11 @@ export interface TokenizerStylingComplete {
|
|
|
52
53
|
flexWrap?: string;
|
|
53
54
|
rowGap?: string;
|
|
54
55
|
};
|
|
56
|
+
twoLine: {
|
|
57
|
+
padding: string;
|
|
58
|
+
fontSize: string;
|
|
59
|
+
textAlign: string;
|
|
60
|
+
};
|
|
55
61
|
}
|
|
56
62
|
type DeepPartial<T> = T extends object ? {
|
|
57
63
|
[P in keyof T]?: DeepPartial<T[P]>;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@idonatedev/idonate-sdk",
|
|
3
3
|
"author": "iDonate",
|
|
4
|
-
"version": "1.2.0-
|
|
4
|
+
"version": "1.2.0-dev9",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"description": "iDonate Web SDK",
|
|
7
7
|
"engines": {
|
|
@@ -89,5 +89,6 @@
|
|
|
89
89
|
"@types/spreedly-iframe-browser": "^1.0.3",
|
|
90
90
|
"@types/uuid": "^8.3.1",
|
|
91
91
|
"uuid": "^8.3.2"
|
|
92
|
-
}
|
|
92
|
+
},
|
|
93
|
+
"packageManager": "pnpm@10.15.1+sha512.34e538c329b5553014ca8e8f4535997f96180a1d0f614339357449935350d924e22f8614682191264ec33d1462ac21561aff97f6bb18065351c162c7e8f6de67"
|
|
93
94
|
}
|