@edflex-tech/keycloakify
Version:
Keycloak theme generator for Reacts app
114 lines • 12.4 kB
JavaScript
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Template = void 0;
var jsx_runtime_1 = require("react/jsx-runtime");
var react_1 = require("react");
var i18n_1 = require("../i18n");
var assert_1 = require("../tools/assert");
var useCallbackFactory_1 = require("powerhooks/useCallbackFactory");
var headInsert_1 = require("../tools/headInsert");
var pathJoin_1 = require("../tools/pathJoin");
var useConstCallback_1 = require("powerhooks/useConstCallback");
var tss_react_1 = require("tss-react");
exports.Template = (0, react_1.memo)(function (props) {
var _a = props.displayInfo, displayInfo = _a === void 0 ? false : _a, _b = props.displayMessage, displayMessage = _b === void 0 ? true : _b, _c = props.displayRequiredFields, displayRequiredFields = _c === void 0 ? false : _c, _d = props.displayWide, displayWide = _d === void 0 ? false : _d, _e = props.showAnotherWayIfPresent, showAnotherWayIfPresent = _e === void 0 ? true : _e, headerNode = props.headerNode, _f = props.showUsernameNode, showUsernameNode = _f === void 0 ? null : _f, formNode = props.formNode, _g = props.infoNode, infoNode = _g === void 0 ? null : _g, kcContext = props.kcContext, doFetchDefaultThemeResources = props.doFetchDefaultThemeResources;
var cx = (0, tss_react_1.useCssAndCx)().cx;
(0, react_1.useEffect)(function () {
console.log("Rendering this page with react using keycloakify");
}, []);
var msg = (0, i18n_1.getMsg)(kcContext).msg;
var onChangeLanguageClickFactory = (0, useCallbackFactory_1.useCallbackFactory)(function (_a) {
var _b = __read(_a, 1), kcLanguageTag = _b[0];
return (0, i18n_1.changeLocale)({
kcContext: kcContext,
kcLanguageTag: kcLanguageTag,
});
});
var onTryAnotherWayClick = (0, useConstCallback_1.useConstCallback)(function () { return (document.forms["kc-select-try-another-way-form"].submit(), false); });
var realm = kcContext.realm, locale = kcContext.locale, auth = kcContext.auth, url = kcContext.url, message = kcContext.message, isAppInitiatedAction = kcContext.isAppInitiatedAction;
var _h = __read((0, react_1.useReducer)(function () { return true; }, false), 2), isExtraCssLoaded = _h[0], setExtraCssLoaded = _h[1];
(0, react_1.useEffect)(function () {
if (!doFetchDefaultThemeResources) {
setExtraCssLoaded();
return;
}
var isUnmounted = false;
var cleanups = [];
var toArr = function (x) { return (typeof x === "string" ? x.split(" ") : x !== null && x !== void 0 ? x : []); };
Promise.all(__spreadArray(__spreadArray([], __read(toArr(props.stylesCommon).map(function (relativePath) { return (0, pathJoin_1.pathJoin)(url.resourcesCommonPath, relativePath); })), false), __read(toArr(props.styles).map(function (relativePath) { return (0, pathJoin_1.pathJoin)(url.resourcesPath, relativePath); })), false).reverse()
.map(function (href) {
return (0, headInsert_1.headInsert)({
"type": "css",
href: href,
"position": "prepend",
});
})).then(function () {
if (isUnmounted) {
return;
}
setExtraCssLoaded();
});
toArr(props.scripts).forEach(function (relativePath) {
return (0, headInsert_1.headInsert)({
"type": "javascript",
"src": (0, pathJoin_1.pathJoin)(url.resourcesPath, relativePath),
});
});
if (props.kcHtmlClass !== undefined) {
var htmlClassList_1 = document.getElementsByTagName("html")[0].classList;
var tokens_1 = cx(props.kcHtmlClass).split(" ");
htmlClassList_1.add.apply(htmlClassList_1, __spreadArray([], __read(tokens_1), false));
cleanups.push(function () { return htmlClassList_1.remove.apply(htmlClassList_1, __spreadArray([], __read(tokens_1), false)); });
}
return function () {
isUnmounted = true;
cleanups.forEach(function (f) { return f(); });
};
}, [props.kcHtmlClass]);
if (!isExtraCssLoaded) {
return null;
}
return ((0, jsx_runtime_1.jsxs)("div", __assign({ className: cx(props.kcLoginClass) }, { children: [(0, jsx_runtime_1.jsx)("div", __assign({ id: "kc-header", className: cx(props.kcHeaderClass) }, { children: (0, jsx_runtime_1.jsx)("div", __assign({ id: "kc-header-wrapper", className: cx(props.kcHeaderWrapperClass) }, { children: msg("loginTitleHtml", realm.displayNameHtml) })) })), (0, jsx_runtime_1.jsxs)("div", __assign({ className: cx(props.kcFormCardClass, displayWide && props.kcFormCardAccountClass) }, { children: [(0, jsx_runtime_1.jsxs)("header", __assign({ className: cx(props.kcFormHeaderClass) }, { children: [realm.internationalizationEnabled && ((0, assert_1.assert)(locale !== undefined), true) && locale.supported.length > 1 && ((0, jsx_runtime_1.jsx)("div", __assign({ id: "kc-locale" }, { children: (0, jsx_runtime_1.jsx)("div", __assign({ id: "kc-locale-wrapper", className: cx(props.kcLocaleWrapperClass) }, { children: (0, jsx_runtime_1.jsxs)("div", __assign({ className: "kc-dropdown", id: "kc-locale-dropdown" }, { children: [(0, jsx_runtime_1.jsx)("a", __assign({ href: "#", id: "kc-current-locale-link" }, { children: (0, i18n_1.getTagLabel)({ "kcLanguageTag": (0, i18n_1.getCurrentKcLanguageTag)(kcContext), kcContext: kcContext }) })), (0, jsx_runtime_1.jsx)("ul", { children: locale.supported.map(function (_a) {
var languageTag = _a.languageTag;
return ((0, jsx_runtime_1.jsx)("li", __assign({ className: "kc-dropdown-item" }, { children: (0, jsx_runtime_1.jsx)("a", __assign({ href: "#", onClick: onChangeLanguageClickFactory(languageTag) }, { children: (0, i18n_1.getTagLabel)({ "kcLanguageTag": languageTag, kcContext: kcContext }) })) }), languageTag));
}) })] })) })) }))), !(auth !== undefined && auth.showUsername && !auth.showResetCredentials) ? (displayRequiredFields ? ((0, jsx_runtime_1.jsxs)("div", __assign({ className: cx(props.kcContentWrapperClass) }, { children: [(0, jsx_runtime_1.jsx)("div", __assign({ className: cx(props.kcLabelWrapperClass, "subtitle") }, { children: (0, jsx_runtime_1.jsxs)("span", __assign({ className: "subtitle" }, { children: [(0, jsx_runtime_1.jsx)("span", __assign({ className: "required" }, { children: "*" })), msg("requiredFields")] })) })), (0, jsx_runtime_1.jsx)("div", __assign({ className: "col-md-10" }, { children: (0, jsx_runtime_1.jsx)("h1", __assign({ id: "kc-page-title" }, { children: headerNode })) }))] }))) : ((0, jsx_runtime_1.jsx)("h1", __assign({ id: "kc-page-title" }, { children: headerNode })))) : displayRequiredFields ? ((0, jsx_runtime_1.jsxs)("div", __assign({ className: cx(props.kcContentWrapperClass) }, { children: [(0, jsx_runtime_1.jsx)("div", __assign({ className: cx(props.kcLabelWrapperClass, "subtitle") }, { children: (0, jsx_runtime_1.jsxs)("span", __assign({ className: "subtitle" }, { children: [(0, jsx_runtime_1.jsx)("span", __assign({ className: "required" }, { children: "*" })), " ", msg("requiredFields")] })) })), (0, jsx_runtime_1.jsxs)("div", __assign({ className: "col-md-10" }, { children: [showUsernameNode, (0, jsx_runtime_1.jsx)("div", __assign({ className: cx(props.kcFormGroupClass) }, { children: (0, jsx_runtime_1.jsxs)("div", __assign({ id: "kc-username" }, { children: [(0, jsx_runtime_1.jsx)("label", __assign({ id: "kc-attempted-username" }, { children: auth === null || auth === void 0 ? void 0 : auth.attemptedUsername })), (0, jsx_runtime_1.jsx)("a", __assign({ id: "reset-login", href: url.loginRestartFlowUrl }, { children: (0, jsx_runtime_1.jsxs)("div", __assign({ className: "kc-login-tooltip" }, { children: [(0, jsx_runtime_1.jsx)("i", { className: cx(props.kcResetFlowIcon) }), (0, jsx_runtime_1.jsx)("span", __assign({ className: "kc-tooltip-text" }, { children: msg("restartLoginTooltip") }))] })) }))] })) }))] }))] }))) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [showUsernameNode, (0, jsx_runtime_1.jsx)("div", __assign({ className: cx(props.kcFormGroupClass) }, { children: (0, jsx_runtime_1.jsxs)("div", __assign({ id: "kc-username" }, { children: [(0, jsx_runtime_1.jsx)("label", __assign({ id: "kc-attempted-username" }, { children: auth === null || auth === void 0 ? void 0 : auth.attemptedUsername })), (0, jsx_runtime_1.jsx)("a", __assign({ id: "reset-login", href: url.loginRestartFlowUrl }, { children: (0, jsx_runtime_1.jsxs)("div", __assign({ className: "kc-login-tooltip" }, { children: [(0, jsx_runtime_1.jsx)("i", { className: cx(props.kcResetFlowIcon) }), (0, jsx_runtime_1.jsx)("span", __assign({ className: "kc-tooltip-text" }, { children: msg("restartLoginTooltip") }))] })) }))] })) }))] }))] })), (0, jsx_runtime_1.jsx)("div", __assign({ id: "kc-content" }, { children: (0, jsx_runtime_1.jsxs)("div", __assign({ id: "kc-content-wrapper" }, { children: [displayMessage && message !== undefined && (message.type !== "warning" || !isAppInitiatedAction) && ((0, jsx_runtime_1.jsxs)("div", __assign({ className: cx("alert", "alert-".concat(message.type)) }, { children: [message.type === "success" && (0, jsx_runtime_1.jsx)("span", { className: cx(props.kcFeedbackSuccessIcon) }), message.type === "warning" && (0, jsx_runtime_1.jsx)("span", { className: cx(props.kcFeedbackWarningIcon) }), message.type === "error" && (0, jsx_runtime_1.jsx)("span", { className: cx(props.kcFeedbackErrorIcon) }), message.type === "info" && (0, jsx_runtime_1.jsx)("span", { className: cx(props.kcFeedbackInfoIcon) }), (0, jsx_runtime_1.jsx)("span", { className: "kc-feedback-text", dangerouslySetInnerHTML: {
"__html": message.summary,
} })] }))), formNode, auth !== undefined && auth.showTryAnotherWayLink && showAnotherWayIfPresent && ((0, jsx_runtime_1.jsx)("form", __assign({ id: "kc-select-try-another-way-form", action: url.loginAction, method: "post", className: cx(displayWide && props.kcContentWrapperClass) }, { children: (0, jsx_runtime_1.jsx)("div", __assign({ className: cx(displayWide && [props.kcFormSocialAccountContentClass, props.kcFormSocialAccountClass]) }, { children: (0, jsx_runtime_1.jsxs)("div", __assign({ className: cx(props.kcFormGroupClass) }, { children: [(0, jsx_runtime_1.jsx)("input", { type: "hidden", name: "tryAnotherWay", value: "on" }), (0, jsx_runtime_1.jsx)("a", __assign({ href: "#", id: "try-another-way", onClick: onTryAnotherWayClick }, { children: msg("doTryAnotherWay") }))] })) })) }))), displayInfo && ((0, jsx_runtime_1.jsx)("div", __assign({ id: "kc-info", className: cx(props.kcSignUpClass) }, { children: (0, jsx_runtime_1.jsx)("div", __assign({ id: "kc-info-wrapper", className: cx(props.kcInfoAreaWrapperClass) }, { children: infoNode })) })))] })) }))] }))] })));
});
//# sourceMappingURL=Template.js.map