@fat-zebra/sdk 1.5.5 → 1.5.7-beta.0
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/.idea/fatzebra-js.iml +12 -0
- package/.idea/modules.xml +8 -0
- package/.idea/prettier.xml +6 -0
- package/.idea/vcs.xml +6 -0
- package/dist/applepay/applepay.d.ts +22 -7
- package/dist/applepay/applepay.js +99 -21
- package/dist/applepay/applepaymanager.d.ts +28 -0
- package/dist/applepay/applepaymanager.js +115 -0
- package/dist/applepay/clients/apple-pay-client.d.ts +9 -5
- package/dist/applepay/clients/apple-pay-client.js +10 -4
- package/dist/applepay/clients/paynow-client.d.ts +4 -2
- package/dist/applepay/clients/paynow-client.js +2 -7
- package/dist/applepay/types.d.ts +15 -0
- package/dist/applepay/types.js +1 -0
- package/dist/click_to_pay/index.d.ts +1 -0
- package/dist/click_to_pay/index.js +42 -6
- package/dist/click_to_pay/types.d.ts +12 -2
- package/dist/fatzebra.css +91 -0
- package/dist/hpp/hpp.d.ts +4 -0
- package/dist/hpp/hpp.js +26 -5
- package/dist/local/fatzebra.js +19684 -0
- package/dist/local/fatzebra.js.map +1 -1
- package/dist/main.d.ts +2 -0
- package/dist/main.js +24 -2
- package/dist/production/fatzebra.css +91 -0
- package/dist/production/fatzebra.js +2 -0
- package/dist/react/ApplePay.d.ts +9 -0
- package/dist/react/ApplePay.js +11 -0
- package/dist/react/ApplePayButton.d.ts +8 -0
- package/dist/react/ApplePayButton.js +18 -0
- package/dist/react/{url.d.ts → applePayUrl.d.ts} +2 -2
- package/dist/react/applePayUrl.js +19 -0
- package/dist/react/index.d.ts +2 -1
- package/dist/react/index.js +2 -1
- package/dist/react/useFatZebra.js +8 -57
- package/dist/react/useMessage.d.ts +10 -0
- package/dist/react/useMessage.js +70 -0
- package/dist/sandbox/fatzebra.css +91 -0
- package/dist/sandbox/fatzebra.js +2 -0
- package/dist/sandbox/fatzebra.js.LICENSE.txt +1 -0
- package/dist/sca/cardinal.d.ts +2 -11
- package/dist/sca/cardinal.js +4 -10
- package/dist/sca/index.d.ts +11 -1
- package/dist/sca/index.js +3 -38
- package/dist/sca/scenarios/enrollment.js +12 -0
- package/dist/sca/types/cardinal_types.d.ts +61 -0
- package/dist/sca/types/cardinal_types.js +11 -0
- package/dist/sca/types.d.ts +4 -1
- package/dist/sca/types.js +1 -0
- package/dist/sca/utility/index.d.ts +7 -0
- package/dist/sca/utility/index.js +39 -0
- package/dist/shared/bridge-client.d.ts +5 -1
- package/dist/shared/bridge-client.js +19 -1
- package/dist/shared/env.development.d.ts +3 -3
- package/dist/shared/env.development.js +3 -3
- package/dist/shared/envs/local.d.ts +3 -3
- package/dist/shared/envs/local.js +3 -3
- package/dist/shared/event-manager.d.ts +1 -1
- package/dist/shared/post-message-client.d.ts +2 -0
- package/dist/shared/post-message-client.js +1 -1
- package/dist/shared/types.d.ts +28 -13
- package/dist/shared/types.js +11 -1
- package/dist/src/applepay/applepaymanager.js +279 -0
- package/dist/src/applepay/applepaymanager.js.map +1 -0
- package/dist/src/react/ApplePayButton.js +56 -0
- package/dist/src/react/ApplePayButton.js.map +1 -0
- package/dist/src/react/{url.js → applePayUrl.js} +7 -21
- package/dist/src/react/applePayUrl.js.map +1 -0
- package/dist/src/react/applePayUrl.test.js +57 -0
- package/dist/src/react/applePayUrl.test.js.map +1 -0
- package/dist/src/react/useFatZebra.js +7 -56
- package/dist/src/react/useFatZebra.js.map +1 -1
- package/dist/src/react/useMessage.js +140 -0
- package/dist/src/react/useMessage.js.map +1 -0
- package/dist/src/react/useMessage.test.js +222 -0
- package/dist/src/react/useMessage.test.js.map +1 -0
- package/dist/src/validation/validators/apple-pay-load-params-button-validator.js +19 -0
- package/dist/src/validation/validators/apple-pay-load-params-button-validator.js.map +1 -0
- package/dist/staging/fatzebra.css +91 -0
- package/dist/staging/fatzebra.js +19684 -0
- package/dist/staging/fatzebra.js.map +1 -0
- package/dist/staging/index.html +247 -0
- package/dist/validation/schemas/applepay/load-params.json +31 -0
- package/dist/validation/schemas/applepay/options.json +115 -0
- package/dist/validation/schemas/applepay/payment-intent.json +42 -0
- package/dist/validation/schemas/click-to-pay/options.json +33 -3
- package/dist/validation/validators/apple-pay-load-params-button-validator.d.ts +3 -0
- package/dist/validation/validators/apple-pay-load-params-button-validator.js +12 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +4 -3
- package/tsconfig.json +1 -1
- package/dist/paypal/paypal-button.d.ts +0 -31
- package/dist/paypal/paypal-button.js +0 -199
- package/dist/paypal/paypal-checkout.d.ts +0 -21
- package/dist/paypal/paypal-checkout.js +0 -100
- package/dist/paypal/types.d.ts +0 -188
- package/dist/paypal/types.js +0 -5
- package/dist/paypal/validation.d.ts +0 -4
- package/dist/paypal/validation.js +0 -65
- package/dist/react/url.js +0 -33
- package/dist/src/paypal/paypal-button.js +0 -311
- package/dist/src/paypal/paypal-button.js.map +0 -1
- package/dist/src/paypal/paypal-button.test.js +0 -41
- package/dist/src/paypal/paypal-button.test.js.map +0 -1
- package/dist/src/paypal/paypal-checkout.js +0 -111
- package/dist/src/paypal/paypal-checkout.js.map +0 -1
- package/dist/src/paypal/paypal-checkout.test.js +0 -167
- package/dist/src/paypal/paypal-checkout.test.js.map +0 -1
- package/dist/src/paypal/types.js +0 -9
- package/dist/src/paypal/types.js.map +0 -1
- package/dist/src/paypal/validation.js +0 -73
- package/dist/src/paypal/validation.js.map +0 -1
- package/dist/src/react/url.js.map +0 -1
- package/dist/src/react/url.test.js +0 -88
- package/dist/src/react/url.test.js.map +0 -1
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React, { HTMLProps } from "react";
|
|
2
|
+
import * as FatZebra from "../shared/types";
|
|
3
|
+
type FrameProps = {
|
|
4
|
+
handlers: FatZebra.Handlers;
|
|
5
|
+
config: FatZebra.PaymentConfig;
|
|
6
|
+
iframeProps?: HTMLProps<HTMLIFrameElement>;
|
|
7
|
+
};
|
|
8
|
+
declare const ApplePay: ({ handlers, config, iframeProps }: FrameProps) => React.JSX.Element;
|
|
9
|
+
export default ApplePay;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import useFatZebra from "./useFatZebra";
|
|
3
|
+
const ApplePay = ({ handlers, config, iframeProps }) => {
|
|
4
|
+
const { applePayUrl } = useFatZebra({
|
|
5
|
+
config: Object.assign(Object.assign({}, config), { options: Object.assign(Object.assign({}, config.options), { applepay: true }) }),
|
|
6
|
+
handlers: handlers,
|
|
7
|
+
});
|
|
8
|
+
return (React.createElement("div", null,
|
|
9
|
+
React.createElement("iframe", Object.assign({ src: applePayUrl, allow: "payment", "data-test-id": "apple-pay", title: "apple-pay-button" }, iframeProps))));
|
|
10
|
+
};
|
|
11
|
+
export default ApplePay;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import * as FatZebra from "../shared/types";
|
|
3
|
+
type FrameProps = {
|
|
4
|
+
handlers: FatZebra.Handlers;
|
|
5
|
+
config: FatZebra.PaymentConfig;
|
|
6
|
+
};
|
|
7
|
+
declare const ApplePayButton: ({ handlers, config }: FrameProps) => React.JSX.Element;
|
|
8
|
+
export default ApplePayButton;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React, { useEffect } from "react";
|
|
2
|
+
import { ApplePay } from "../applepay";
|
|
3
|
+
import useMessage from "./useMessage";
|
|
4
|
+
const ApplePayButton = ({ handlers, config }) => {
|
|
5
|
+
useMessage({
|
|
6
|
+
paymentIntent: config.paymentIntent,
|
|
7
|
+
handlers: handlers,
|
|
8
|
+
});
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
new ApplePay(config).load({
|
|
11
|
+
containerId: 'applePayButton',
|
|
12
|
+
paymentIntent: config.paymentIntent,
|
|
13
|
+
options: config.options
|
|
14
|
+
});
|
|
15
|
+
}, []);
|
|
16
|
+
return React.createElement("div", { id: "applePayButton", style: { height: '100%', width: '100%' } });
|
|
17
|
+
};
|
|
18
|
+
export default ApplePayButton;
|
|
@@ -8,5 +8,5 @@ type RequiredURLValues = {
|
|
|
8
8
|
currency: string;
|
|
9
9
|
};
|
|
10
10
|
type UrlValues = RequiredURLValues & OptionalUrlValues;
|
|
11
|
-
declare const
|
|
12
|
-
export {
|
|
11
|
+
declare const generateApplePayUrl: (values: UrlValues, environment?: Environment) => string;
|
|
12
|
+
export { generateApplePayUrl };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { parseTemplate } from 'url-template';
|
|
2
|
+
import env, { Environment } from "../shared/env";
|
|
3
|
+
const generateApplePayUrl = (values, environment) => {
|
|
4
|
+
const queryParts = [
|
|
5
|
+
"applepay"
|
|
6
|
+
];
|
|
7
|
+
const environmentConfig = env[environment || Environment.sandbox];
|
|
8
|
+
const urlTemplate = parseTemplate(`${environmentConfig.payNowUrl}/sdk/{merchant}/{reference}/{currency}/{amount}/{verification}{?${queryParts.join(",")}}`);
|
|
9
|
+
const url = urlTemplate.expand({
|
|
10
|
+
merchant: values.merchant,
|
|
11
|
+
reference: values.reference,
|
|
12
|
+
currency: values.currency,
|
|
13
|
+
amount: values.amount,
|
|
14
|
+
verification: values.hash,
|
|
15
|
+
applepay: values.applepay
|
|
16
|
+
});
|
|
17
|
+
return url;
|
|
18
|
+
};
|
|
19
|
+
export { generateApplePayUrl };
|
package/dist/react/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import VerifyCard from "./VerifyCard";
|
|
2
2
|
import VerifyExistingCard from "./VerifyExistingCard";
|
|
3
3
|
import submitForm from "./submitForm";
|
|
4
|
-
|
|
4
|
+
import ApplePayButton from "./ApplePayButton";
|
|
5
|
+
export { VerifyCard, VerifyExistingCard, submitForm, ApplePayButton };
|
package/dist/react/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import VerifyCard from "./VerifyCard";
|
|
2
2
|
import VerifyExistingCard from "./VerifyExistingCard";
|
|
3
3
|
import submitForm from "./submitForm";
|
|
4
|
-
|
|
4
|
+
import ApplePayButton from "./ApplePayButton";
|
|
5
|
+
export { VerifyCard, VerifyExistingCard, submitForm, ApplePayButton };
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useMemo } from "react";
|
|
2
2
|
import * as FatZebra from "../shared/types";
|
|
3
3
|
import { generatePaymentURL } from "./paymentUrl";
|
|
4
4
|
import Sca from "../sca";
|
|
5
5
|
import GatewayClient from "../shared/api-gateway-client";
|
|
6
6
|
import { generateVerifyURL } from "./verifyUrl";
|
|
7
|
+
import useMessage from "./useMessage";
|
|
7
8
|
const useFatZebra = ({ config, handlers, cardToken }) => {
|
|
8
9
|
const { options, accessToken, paymentIntent, username } = config;
|
|
9
10
|
const sca = useMemo(() => {
|
|
@@ -14,62 +15,12 @@ const useFatZebra = ({ config, handlers, cardToken }) => {
|
|
|
14
15
|
scaObj.loadScript();
|
|
15
16
|
return scaObj;
|
|
16
17
|
}, [config, username]);
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
};
|
|
23
|
-
const handleTokenizeCardResponse = (data) => {
|
|
24
|
-
if (data.errors) {
|
|
25
|
-
emit(FatZebra.PublicEvent.TOKENIZATION_ERROR, {
|
|
26
|
-
message: "Card tokenization failed.",
|
|
27
|
-
errors: data.errors,
|
|
28
|
-
data: null,
|
|
29
|
-
});
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
emit(FatZebra.PublicEvent.TOKENIZATION_SUCCESS, {
|
|
34
|
-
message: "Card tokenization success.",
|
|
35
|
-
data
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
if (options.sca_enabled) {
|
|
39
|
-
sca.run({ paymentIntent, bin: data.bin, cardToken: data.token });
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
|
-
const messageHandler = (event) => {
|
|
43
|
-
if (event.data &&
|
|
44
|
-
event.data.source &&
|
|
45
|
-
event.data.source.includes("react-devtools"))
|
|
46
|
-
return;
|
|
47
|
-
if (event.data.subject === FatZebra.BridgeEvent.BIN_LOOKUP)
|
|
48
|
-
return;
|
|
49
|
-
if (event.data.subject === FatZebra.BridgeEvent.FORM_VALIDATION_ERROR) {
|
|
50
|
-
emit(FatZebra.PublicEvent.FORM_VALIDATION_ERROR, {
|
|
51
|
-
errors: event.data.data,
|
|
52
|
-
data: null,
|
|
53
|
-
});
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
if (event.data.subject === FatZebra.BridgeEvent.FORM_VALIDATION_SUCCESS) {
|
|
57
|
-
emit(FatZebra.PublicEvent.FORM_VALIDATION_SUCCESS, {
|
|
58
|
-
errors: event.data.data,
|
|
59
|
-
data: null,
|
|
60
|
-
});
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
if (event.data.subject === FatZebra.BridgeEvent.TOKENIZE_CARD_RESPONSE) {
|
|
64
|
-
handleTokenizeCardResponse(event.data.data);
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
useEffect(() => {
|
|
68
|
-
window.addEventListener("message", messageHandler);
|
|
69
|
-
return () => {
|
|
70
|
-
window.removeEventListener("message", messageHandler);
|
|
71
|
-
};
|
|
72
|
-
}, [paymentIntent]);
|
|
18
|
+
useMessage({
|
|
19
|
+
paymentIntent,
|
|
20
|
+
options,
|
|
21
|
+
handlers,
|
|
22
|
+
sca
|
|
23
|
+
});
|
|
73
24
|
const payment = paymentIntent.payment;
|
|
74
25
|
const verifyUrl = generateVerifyURL(Object.assign({ token: cardToken, verification: paymentIntent.verification, merchant: username }, options), config.environment);
|
|
75
26
|
const paymentUrl = generatePaymentURL(Object.assign({ merchant: username, reference: payment.reference, amount: payment.amount, currency: payment.currency, hash: paymentIntent.verification }, options), config.environment);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as FatZebra from "../shared/types";
|
|
2
|
+
import Sca from "../sca";
|
|
3
|
+
type UseMessageProps = {
|
|
4
|
+
paymentIntent: FatZebra.PaymentIntent;
|
|
5
|
+
handlers: FatZebra.Handlers;
|
|
6
|
+
options?: FatZebra.OptionalUrlValues;
|
|
7
|
+
sca?: InstanceType<typeof Sca>;
|
|
8
|
+
};
|
|
9
|
+
declare const useMessage: ({ paymentIntent, options, handlers, sca }: UseMessageProps) => void;
|
|
10
|
+
export default useMessage;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { useEffect } from 'react';
|
|
11
|
+
import * as FatZebra from "../shared/types";
|
|
12
|
+
const useMessage = ({ paymentIntent, options, handlers, sca }) => {
|
|
13
|
+
const emit = (event, data) => {
|
|
14
|
+
const handler = handlers[event];
|
|
15
|
+
if (handler) {
|
|
16
|
+
handler(new CustomEvent(event, { detail: data }));
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
const handleTokenizeCardResponse = (data) => __awaiter(void 0, void 0, void 0, function* () {
|
|
20
|
+
if (data.errors) {
|
|
21
|
+
emit(FatZebra.PublicEvent.TOKENIZATION_ERROR, {
|
|
22
|
+
message: "Card tokenization failed.",
|
|
23
|
+
errors: data.errors,
|
|
24
|
+
data: null,
|
|
25
|
+
});
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
emit(FatZebra.PublicEvent.TOKENIZATION_SUCCESS, {
|
|
30
|
+
message: "Card tokenization success.",
|
|
31
|
+
data,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
if (options && sca && options.sca_enabled) {
|
|
35
|
+
yield sca.run({ paymentIntent, bin: data.bin, cardToken: data.token });
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
const messageHandler = (event) => __awaiter(void 0, void 0, void 0, function* () {
|
|
39
|
+
if (event.data &&
|
|
40
|
+
event.data.source &&
|
|
41
|
+
event.data.source.includes("react-devtools"))
|
|
42
|
+
return;
|
|
43
|
+
if (event.data.subject === FatZebra.BridgeEvent.BIN_LOOKUP)
|
|
44
|
+
return;
|
|
45
|
+
if (event.data.subject === FatZebra.BridgeEvent.FORM_VALIDATION_ERROR) {
|
|
46
|
+
emit(FatZebra.PublicEvent.FORM_VALIDATION_ERROR, {
|
|
47
|
+
errors: event.data.data,
|
|
48
|
+
data: null,
|
|
49
|
+
});
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
if (event.data.subject === FatZebra.BridgeEvent.FORM_VALIDATION_SUCCESS) {
|
|
53
|
+
emit(FatZebra.PublicEvent.FORM_VALIDATION_SUCCESS, {
|
|
54
|
+
errors: event.data.data,
|
|
55
|
+
data: null,
|
|
56
|
+
});
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (event.data.subject === FatZebra.BridgeEvent.TOKENIZE_CARD_RESPONSE) {
|
|
60
|
+
yield handleTokenizeCardResponse(event.data.data);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
useEffect(() => {
|
|
64
|
+
window.addEventListener("message", messageHandler);
|
|
65
|
+
return () => {
|
|
66
|
+
window.removeEventListener("message", messageHandler);
|
|
67
|
+
};
|
|
68
|
+
}, [paymentIntent]);
|
|
69
|
+
};
|
|
70
|
+
export default useMessage;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
.checkout-button-wrapper {
|
|
2
|
+
display: flex;
|
|
3
|
+
justify-content: center;
|
|
4
|
+
align-items: center;
|
|
5
|
+
height: 200px;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.iframe-checkout {
|
|
9
|
+
flex: 1;
|
|
10
|
+
border: none;
|
|
11
|
+
width: 100%;
|
|
12
|
+
height: 100%;
|
|
13
|
+
min-height: 0;
|
|
14
|
+
overflow: auto;
|
|
15
|
+
-webkit-overflow-scrolling: touch;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.iframe-foreground,
|
|
19
|
+
.iframe-background {
|
|
20
|
+
top: 0;
|
|
21
|
+
left: 0;
|
|
22
|
+
right: 0;
|
|
23
|
+
bottom: 0;
|
|
24
|
+
flex-direction: column;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.iframe-foreground,
|
|
28
|
+
.iframe-background {
|
|
29
|
+
position: fixed;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.iframe-foreground {
|
|
33
|
+
z-index: -1;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.iframe-background {
|
|
37
|
+
background: rgba(0, 0, 0, 0.5);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.iframe-foreground {
|
|
41
|
+
flex-grow: 1;
|
|
42
|
+
top: auto;
|
|
43
|
+
width: 100%;
|
|
44
|
+
max-width: 480px;
|
|
45
|
+
height: 80vh;
|
|
46
|
+
background-color: #ffffff;
|
|
47
|
+
border-radius: 25px 25px 0 0;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.slide-in .iframe-foreground {
|
|
51
|
+
transform: translateY(100vh);
|
|
52
|
+
transition: transform 0.4s ease, z-index 0.3s ease 0.4s;
|
|
53
|
+
z-index: -1;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.slide-in .iframe-background {
|
|
57
|
+
opacity: 0;
|
|
58
|
+
z-index: -1;
|
|
59
|
+
transition: opacity 0.3s ease, z-index 0.3s ease 0.3s;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.slide-in.show .iframe-foreground {
|
|
63
|
+
transform: none;
|
|
64
|
+
transition: transform 0.4s ease;
|
|
65
|
+
z-index: 100;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.slide-in.show .iframe-background {
|
|
69
|
+
opacity: 1;
|
|
70
|
+
z-index: 0;
|
|
71
|
+
transition: opacity 0.3s ease;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
@media only screen and (min-width: 480px) {
|
|
75
|
+
.iframe-foreground {
|
|
76
|
+
margin: 0 auto;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
@media only screen and (min-width: 768px) {
|
|
81
|
+
.iframe-foreground {
|
|
82
|
+
margin: 0;
|
|
83
|
+
width: 400px;
|
|
84
|
+
height: 100vh;
|
|
85
|
+
left: 0;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.slide-in .iframe-foreground {
|
|
89
|
+
transform: translateX(-400px);
|
|
90
|
+
}
|
|
91
|
+
}
|