@braze/web-sdk
Version:
Braze SDK for web sites and other JS platforms.
74 lines (73 loc) • 2.65 kB
JavaScript
import InAppMessage from "../models/in-app-message.js";
import { _handleBrazeAction as F } from "../../Core/handle-braze-action.js";
import { logInAppMessageButtonClick } from "../log-in-app-message-button-click.js";
import { toRgba as le } from "../../util/color-utils.js";
import { addPassiveEventListener as J } from "../../util/dom-utils.js";
import { KeyCodes as mt } from "../../util/key-codes.js";
const ce = {
Lo: (t) => {
const o = t.querySelectorAll(
".ab-close-button, .ab-message-text, .ab-message-button",
);
let e;
for (let t = 0; t < o.length; t++) (e = o[t]), (e.tabIndex = 0);
if (o.length > 0) {
const e = o[0],
s = o[o.length - 1];
t.addEventListener("keydown", (o) => {
const a = document.activeElement;
o.keyCode === mt.yo &&
(o.shiftKey || (a !== s && a !== t)
? !o.shiftKey ||
(a !== e && a !== t) ||
(o.preventDefault(), s.focus())
: (o.preventDefault(), e.focus()));
});
}
},
Io: (t, o) => {
o.setAttribute("role", "dialog"),
o.setAttribute("aria-modal", "true"),
o.setAttribute("aria-label", "Modal Message"),
t && o.setAttribute("aria-labelledby", t);
},
zo: (t, o, e, s) => {
if (t.buttons && t.buttons.length > 0) {
const a = document.createElement("div");
(a.className = "ab-message-buttons"), e.appendChild(a);
const l = e.getElementsByClassName("ab-message-text")[0];
null != l && (l.className += " ab-with-buttons");
const n = (a) => (l) => (
t.ll(e, () => {
logInAppMessageButtonClick(a, t),
a.clickAction === InAppMessage.ClickAction.URI
? F(
a.uri || "",
s || t.openTarget === InAppMessage.OpenTarget.BLANK,
l,
)
: a.clickAction === InAppMessage.ClickAction.NEWS_FEED && o();
}),
l.stopPropagation(),
!1
);
for (let o = 0; o < t.buttons.length; o++) {
const e = t.buttons[o],
s = document.createElement("button");
(s.className = "ab-message-button"),
s.setAttribute("type", "button"),
J(s, "touchstart");
let l = e.text;
"" === e.text && (l = " "),
s.appendChild(document.createTextNode(l)),
t.lo() ||
((s.style.backgroundColor = le(e.backgroundColor)),
(s.style.color = le(e.textColor)),
(s.style.borderColor = le(e.borderColor))),
(s.onclick = n(e)),
a.appendChild(s);
}
}
},
};
export default ce;