Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
7dec6c7ebe |
@ -1,9 +1,3 @@
|
|||||||
### **0.0.26** (2021-03-02)
|
|
||||||
|
|
||||||
- Login page implemented
|
|
||||||
- Implement login
|
|
||||||
- remove unesseary log
|
|
||||||
|
|
||||||
### **0.0.25** (2021-03-02)
|
### **0.0.25** (2021-03-02)
|
||||||
|
|
||||||
- Fix build and reduce size
|
- Fix build and reduce size
|
||||||
|
@ -1 +1 @@
|
|||||||
export declare const ftlValuesGlobalName = "kcContext";
|
export declare const ftlValuesGlobalName = "keycloakPagesContext";
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.ftlValuesGlobalName = void 0;
|
exports.ftlValuesGlobalName = void 0;
|
||||||
exports.ftlValuesGlobalName = "kcContext";
|
exports.ftlValuesGlobalName = "keycloakPagesContext";
|
||||||
//# sourceMappingURL=ftlValuesGlobalName.js.map
|
//# sourceMappingURL=ftlValuesGlobalName.js.map
|
@ -1 +1 @@
|
|||||||
{"version":3,"file":"ftlValuesGlobalName.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/ftlValuesGlobalName.ts"],"names":[],"mappings":";;;AACa,QAAA,mBAAmB,GAAG,WAAW,CAAC"}
|
{"version":3,"file":"ftlValuesGlobalName.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/ftlValuesGlobalName.ts"],"names":[],"mappings":";;;AACa,QAAA,mBAAmB,GAAG,sBAAsB,CAAC"}
|
@ -4,19 +4,12 @@
|
|||||||
"loginAction": "${url.loginAction}",
|
"loginAction": "${url.loginAction}",
|
||||||
"resourcesPath": "${url.resourcesPath}",
|
"resourcesPath": "${url.resourcesPath}",
|
||||||
"resourcesCommonPath": "${url.resourcesCommonPath}",
|
"resourcesCommonPath": "${url.resourcesCommonPath}",
|
||||||
"loginRestartFlowUrl": "${url.loginRestartFlowUrl}",
|
"loginRestartFlowUrl": "${url.loginRestartFlowUrl}"
|
||||||
"loginResetCredentialsUrl": "${url.loginResetCredentialsUrl}",
|
|
||||||
"registrationUrl": "${url.registrationUrl}"
|
|
||||||
},
|
},
|
||||||
"realm": {
|
"realm": {
|
||||||
"displayName": "${realm.displayName!''}" || undefined,
|
"displayName": "${realm.displayName!''}" || undefined,
|
||||||
"displayNameHtml": "${realm.displayNameHtml!''}" || undefined,
|
"displayNameHtml": "${realm.displayNameHtml!''}" || undefined,
|
||||||
"internationalizationEnabled": ${realm.internationalizationEnabled?c},
|
"internationalizationEnabled": ${realm.internationalizationEnabled?c}
|
||||||
"password": ${realm.password?c},
|
|
||||||
"loginWithEmailAllowed": ${realm.loginWithEmailAllowed?c},
|
|
||||||
"registrationEmailAsUsername": ${realm.registrationEmailAsUsername?c},
|
|
||||||
"rememberMe": ${realm.rememberMe?c},
|
|
||||||
"resetPasswordAllowed": ${realm.resetPasswordAllowed?c}
|
|
||||||
},
|
},
|
||||||
"locale": (function (){
|
"locale": (function (){
|
||||||
|
|
||||||
@ -61,7 +54,6 @@
|
|||||||
"showUsername": ${auth.showUsername()?c},
|
"showUsername": ${auth.showUsername()?c},
|
||||||
"showResetCredentials": ${auth.showResetCredentials()?c},
|
"showResetCredentials": ${auth.showResetCredentials()?c},
|
||||||
"showTryAnotherWayLink": ${auth.showTryAnotherWayLink()?c}
|
"showTryAnotherWayLink": ${auth.showTryAnotherWayLink()?c}
|
||||||
"selectedCredential": "${auth.selectedCredential!''}" || undefined
|
|
||||||
};
|
};
|
||||||
|
|
||||||
<#if auth.showUsername() && !auth.showResetCredentials()>
|
<#if auth.showUsername() && !auth.showResetCredentials()>
|
||||||
@ -87,7 +79,7 @@
|
|||||||
|
|
||||||
<#if scripts??>
|
<#if scripts??>
|
||||||
<#list scripts as script>
|
<#list scripts as script>
|
||||||
out.push("${script}");
|
out.push("${script}");
|
||||||
</#list>
|
</#list>
|
||||||
</#if>
|
</#if>
|
||||||
|
|
||||||
@ -115,59 +107,7 @@
|
|||||||
</#if>
|
</#if>
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
})(),
|
})()
|
||||||
"social": {
|
|
||||||
"displayInfo": ${social.displayInfo?c},
|
|
||||||
"providers": (()=>{
|
|
||||||
|
|
||||||
<#if social.providers??>
|
|
||||||
|
|
||||||
var out= [];
|
|
||||||
|
|
||||||
<#list social.providers as p>
|
|
||||||
out.push({
|
|
||||||
"loginUrl": "${p.loginUrl}",
|
|
||||||
"alias": "${p.alias}",
|
|
||||||
"providerId": "${p.providerId}",
|
|
||||||
"displayName": "${p.displayName}"
|
|
||||||
});
|
|
||||||
</#list>
|
|
||||||
|
|
||||||
return out;
|
|
||||||
|
|
||||||
</#if>
|
|
||||||
|
|
||||||
return undefined;
|
|
||||||
|
|
||||||
})()
|
|
||||||
},
|
|
||||||
"usernameEditDisabled": (function () {
|
|
||||||
|
|
||||||
<#if usernameEditDisabled??>
|
|
||||||
return true;
|
|
||||||
</#if>
|
|
||||||
return false;
|
|
||||||
|
|
||||||
})(),
|
|
||||||
"login": {
|
|
||||||
"username": "${login.username!''}" || undefined,
|
|
||||||
"rememberMe": (function (){
|
|
||||||
|
|
||||||
<#if login.rememberMe??>
|
|
||||||
return true;
|
|
||||||
</#if>
|
|
||||||
return false;
|
|
||||||
|
|
||||||
|
|
||||||
})()
|
|
||||||
},
|
|
||||||
"registrationDisabled": (function (){
|
|
||||||
|
|
||||||
<#if registrationDisabled??>
|
|
||||||
return true;
|
|
||||||
</#if>
|
|
||||||
return false;
|
|
||||||
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
@ -31,6 +31,7 @@ var fs_1 = __importDefault(require("fs"));
|
|||||||
function downloadAndUnzip(params) {
|
function downloadAndUnzip(params) {
|
||||||
var url = params.url, destDirPath = params.destDirPath;
|
var url = params.url, destDirPath = params.destDirPath;
|
||||||
fs_1.default.mkdirSync(destDirPath, { "recursive": true });
|
fs_1.default.mkdirSync(destDirPath, { "recursive": true });
|
||||||
|
console.log({ url: url, destDirPath: destDirPath });
|
||||||
__spreadArray([
|
__spreadArray([
|
||||||
"wget " + url
|
"wget " + url
|
||||||
], __read(["unzip", "rm"].map(function (prg) { return prg + " " + path_1.basename(url); }))).forEach(function (cmd) { return child_process_1.default.execSync(cmd, { "cwd": destDirPath }); });
|
], __read(["unzip", "rm"].map(function (prg) { return prg + " " + path_1.basename(url); }))).forEach(function (cmd) { return child_process_1.default.execSync(cmd, { "cwd": destDirPath }); });
|
||||||
|
@ -1 +1 @@
|
|||||||
{"version":3,"file":"downloadAndUnzip.js","sourceRoot":"","sources":["../../src/bin/tools/downloadAndUnzip.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,6BAAgD;AAChD,gEAA0C;AAC1C,0CAAoB;AAEpB,SAAgB,gBAAgB,CAC5B,MAGC;IAGO,IAAA,GAAG,GAAkB,MAAM,IAAxB,EAAE,WAAW,GAAK,MAAM,YAAX,CAAY;IAEpC,YAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAEjD;QACI,UAAQ,GAAK;cACV,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAG,GAAG,SAAI,eAAY,CAAC,GAAG,CAAG,EAA7B,CAA6B,CAAC,GAC9D,OAAO,CAAC,UAAA,GAAG,IAAI,OAAA,uBAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAnD,CAAmD,CAAC,CAAC;AAE1E,CAAC;AAhBD,4CAgBC"}
|
{"version":3,"file":"downloadAndUnzip.js","sourceRoot":"","sources":["../../src/bin/tools/downloadAndUnzip.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,6BAAgD;AAChD,gEAA0C;AAC1C,0CAAoB;AAEpB,SAAgB,gBAAgB,CAC5B,MAGC;IAGO,IAAA,GAAG,GAAkB,MAAM,IAAxB,EAAE,WAAW,GAAK,MAAM,YAAX,CAAY;IAEpC,YAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAEjD,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,KAAA,EAAE,WAAW,aAAA,EAAE,CAAC,CAAC;IAElC;QACI,UAAQ,GAAK;cACV,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAG,GAAG,SAAI,eAAY,CAAC,GAAG,CAAG,EAA7B,CAA6B,CAAC,GAC9D,OAAO,CAAC,UAAA,GAAG,IAAI,OAAA,uBAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAnD,CAAmD,CAAC,CAAC;AAE1E,CAAC;AAlBD,4CAkBC"}
|
1
lib/LoginPage.d.ts
vendored
Normal file
1
lib/LoginPage.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
export {};
|
31
lib/LoginPage.js
Normal file
31
lib/LoginPage.js
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
"use strict";
|
||||||
|
/*
|
||||||
|
import { useState, memo } from "react";
|
||||||
|
import { KcProperties, Template } from "./Template";
|
||||||
|
import { assert } from "evt/tools/typeSafety/assert";
|
||||||
|
import { keycloakPagesContext } from "./keycloakFtlValues";
|
||||||
|
|
||||||
|
export type Props = {
|
||||||
|
properties: KcProperties;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const LoginPage = memo((props: Props)=>{
|
||||||
|
|
||||||
|
|
||||||
|
const [{ }] = useState(() => {
|
||||||
|
|
||||||
|
assert(keycloakPagesContext !== undefined);
|
||||||
|
|
||||||
|
return keycloakPagesContext;
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Template/>
|
||||||
|
);
|
||||||
|
|
||||||
|
});
|
||||||
|
*/
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
//# sourceMappingURL=LoginPage.js.map
|
1
lib/LoginPage.js.map
Normal file
1
lib/LoginPage.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"LoginPage.js","sourceRoot":"","sources":["../src/lib/LoginPage.tsx"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BE"}
|
23
lib/Template.d.ts
vendored
Normal file
23
lib/Template.d.ts
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
import type { ReactNode } from "react";
|
||||||
|
declare type KcClasses<T extends string> = {
|
||||||
|
[key in T]?: string[] | string;
|
||||||
|
};
|
||||||
|
export declare type KcProperties = {
|
||||||
|
stylesCommon?: string[];
|
||||||
|
styles?: string[];
|
||||||
|
scripts?: string[];
|
||||||
|
} & KcClasses<"kcLoginClass" | "kcHeaderClass" | "kcHeaderWrapperClass" | "kcFormCardClass" | "kcFormCardAccountClass" | "kcFormHeaderClass" | "kcLocaleWrapperClass" | "kcContentWrapperClass" | "kcLabelWrapperClass" | "kcContentWrapperClass" | "kcLabelWrapperClass" | "kcFormGroupClass" | "kcResetFlowIcon" | "kcResetFlowIcon" | "kcFeedbackSuccessIcon" | "kcFeedbackWarningIcon" | "kcFeedbackErrorIcon" | "kcFeedbackInfoIcon" | "kcContentWrapperClass" | "kcFormSocialAccountContentClass" | "kcFormSocialAccountClass" | "kcSignUpClass" | "kcInfoAreaWrapperClass">;
|
||||||
|
export declare type Props = {
|
||||||
|
displayInfo?: boolean;
|
||||||
|
displayMessage: boolean;
|
||||||
|
displayRequiredFields: boolean;
|
||||||
|
displayWide: boolean;
|
||||||
|
showAnotherWayIfPresent: boolean;
|
||||||
|
properties?: KcProperties;
|
||||||
|
headerNode: ReactNode;
|
||||||
|
showUsernameNode: ReactNode;
|
||||||
|
formNode: ReactNode;
|
||||||
|
displayInfoNode: ReactNode;
|
||||||
|
};
|
||||||
|
export declare function Template(props: Props): JSX.Element;
|
||||||
|
export {};
|
@ -30,81 +30,82 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||||||
exports.Template = void 0;
|
exports.Template = void 0;
|
||||||
var jsx_runtime_1 = require("react/jsx-runtime");
|
var jsx_runtime_1 = require("react/jsx-runtime");
|
||||||
var react_1 = require("react");
|
var react_1 = require("react");
|
||||||
var useKcTranslation_1 = require("../i18n/useKcTranslation");
|
var useKeycloakTranslation_1 = require("./i18n/useKeycloakTranslation");
|
||||||
var kcContext_1 = require("../kcContext");
|
var keycloakFtlValues_1 = require("./keycloakFtlValues");
|
||||||
var assert_1 = require("evt/tools/typeSafety/assert");
|
var assert_1 = require("evt/tools/typeSafety/assert");
|
||||||
var tss_react_1 = require("tss-react");
|
var tss_react_1 = require("tss-react");
|
||||||
var useKcLanguageTag_1 = require("../i18n/useKcLanguageTag");
|
var useKeycloakLanguage_1 = require("./i18n/useKeycloakLanguage");
|
||||||
var KcLanguageTag_1 = require("../i18n/KcLanguageTag");
|
var getLanguageLabel_1 = require("./i18n/getLanguageLabel");
|
||||||
var powerhooks_1 = require("powerhooks");
|
var powerhooks_1 = require("powerhooks");
|
||||||
var appendLinkInHead_1 = require("../tools/appendLinkInHead");
|
var appendLinkInHead_1 = require("./tools/appendLinkInHead");
|
||||||
var appendScriptInHead_1 = require("../tools/appendScriptInHead");
|
var appendScriptInHead_1 = require("./tools/appendScriptInHead");
|
||||||
var path_1 = require("path");
|
var path_1 = require("path");
|
||||||
var powerhooks_2 = require("powerhooks");
|
var powerhooks_2 = require("powerhooks");
|
||||||
var KcProperties_1 = require("./KcProperties");
|
function Template(props) {
|
||||||
exports.Template = 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, _f = props.properties, properties = _f === void 0 ? {} : _f, headerNode = props.headerNode, showUsernameNode = props.showUsernameNode, formNode = props.formNode, displayInfoNode = props.displayInfoNode;
|
||||||
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, _f = props.kcProperties, kcProperties = _f === void 0 ? {} : _f, headerNode = props.headerNode, showUsernameNode = props.showUsernameNode, formNode = props.formNode, displayInfoNode = props.displayInfoNode;
|
var t = useKeycloakTranslation_1.useKeycloakThemeTranslation().t;
|
||||||
var t = useKcTranslation_1.useKcTranslation().t;
|
var _g = useKeycloakLanguage_1.useKeycloakLanguage(), keycloakLanguage = _g.keycloakLanguage, setKeycloakLanguage = _g.setKeycloakLanguage;
|
||||||
Object.assign(kcProperties, KcProperties_1.defaultKcTemplateProperties);
|
|
||||||
var _g = useKcLanguageTag_1.useKcLanguageTag(), kcLanguageTag = _g.kcLanguageTag, setKcLanguageTag = _g.setKcLanguageTag;
|
|
||||||
var onChangeLanguageClickFactory = powerhooks_1.useCallbackFactory(function (_a) {
|
var onChangeLanguageClickFactory = powerhooks_1.useCallbackFactory(function (_a) {
|
||||||
var _b = __read(_a, 1), languageTag = _b[0];
|
var _b = __read(_a, 1), languageTag = _b[0];
|
||||||
return setKcLanguageTag(languageTag);
|
return setKeycloakLanguage(languageTag);
|
||||||
});
|
});
|
||||||
var onTryAnotherWayClick = powerhooks_2.useConstCallback(function () {
|
var onTryAnotherWayClick = powerhooks_2.useConstCallback(function () {
|
||||||
document.forms["kc-select-try-another-way-form"].submit();
|
document.forms["kc-select-try-another-way-form"].submit();
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
var _h = __read(react_1.useState(function () { return (assert_1.assert(kcContext_1.kcContext !== undefined, "App is not currently being served by KeyCloak"),
|
var _h = __read(react_1.useState(function () {
|
||||||
kcContext_1.kcContext); }), 1), _j = _h[0], realm = _j.realm, locale = _j.locale, auth = _j.auth, url = _j.url, message = _j.message, isAppInitiatedAction = _j.isAppInitiatedAction;
|
assert_1.assert(keycloakFtlValues_1.keycloakPagesContext !== undefined);
|
||||||
|
return keycloakFtlValues_1.keycloakPagesContext;
|
||||||
|
}), 1), _j = _h[0], realm = _j.realm, locale = _j.locale, auth = _j.auth, url = _j.url, message = _j.message, isAppInitiatedAction = _j.isAppInitiatedAction;
|
||||||
react_1.useEffect(function () {
|
react_1.useEffect(function () {
|
||||||
var _a, _b, _c;
|
var _a, _b, _c;
|
||||||
(_a = kcProperties.stylesCommon) === null || _a === void 0 ? void 0 : _a.forEach(function (relativePath) {
|
(_a = properties.stylesCommon) === null || _a === void 0 ? void 0 : _a.forEach(function (relativePath) {
|
||||||
return appendLinkInHead_1.appendLinkInHead({ "href": path_1.join(url.resourcesCommonPath, relativePath) });
|
return appendLinkInHead_1.appendLinkInHead({ "href": path_1.join(url.resourcesCommonPath, relativePath) });
|
||||||
});
|
});
|
||||||
(_b = kcProperties.styles) === null || _b === void 0 ? void 0 : _b.forEach(function (relativePath) {
|
(_b = properties.styles) === null || _b === void 0 ? void 0 : _b.forEach(function (relativePath) {
|
||||||
return appendLinkInHead_1.appendLinkInHead({ "href": path_1.join(url.resourcesPath, relativePath) });
|
return appendLinkInHead_1.appendLinkInHead({ "href": path_1.join(url.resourcesPath, relativePath) });
|
||||||
});
|
});
|
||||||
(_c = kcProperties.scripts) === null || _c === void 0 ? void 0 : _c.forEach(function (relativePath) {
|
(_c = properties.scripts) === null || _c === void 0 ? void 0 : _c.forEach(function (relativePath) {
|
||||||
return appendScriptInHead_1.appendScriptInHead({ "src": path_1.join(url.resourcesPath, relativePath) });
|
return appendScriptInHead_1.appendScriptInHead({ "src": path_1.join(url.resourcesPath, relativePath) });
|
||||||
});
|
});
|
||||||
}, []);
|
}, []);
|
||||||
return (jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(kcProperties.kcLoginClass) }, { children: [jsx_runtime_1.jsx("div", __assign({ id: "kc-header", className: tss_react_1.cx(kcProperties.kcHeaderClass) }, { children: jsx_runtime_1.jsx("div", __assign({ id: "kc-header-wrapper", className: tss_react_1.cx(kcProperties.kcHeaderWrapperClass) }, { children: t("loginTitleHtml", realm.displayNameHtml) }), void 0) }), void 0),
|
return (jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(properties.kcLoginClass) }, { children: [jsx_runtime_1.jsx("div", __assign({ id: "kc-header", className: tss_react_1.cx(properties.kcHeaderClass) }, { children: jsx_runtime_1.jsx("div", __assign({ id: "kc-header-wrapper", className: tss_react_1.cx(properties.kcHeaderWrapperClass) }, { children: t("loginTitleHtml", realm.displayNameHtml) }), void 0) }), void 0),
|
||||||
jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx("kcFormCardClass", displayWide && kcProperties.kcFormCardAccountClass) }, { children: [jsx_runtime_1.jsxs("header", __assign({ className: tss_react_1.cx(kcProperties.kcFormHeaderClass) }, { children: [(realm.internationalizationEnabled &&
|
jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx("kcFormCardClass", displayWide && properties.kcFormCardAccountClass) }, { children: [jsx_runtime_1.jsxs("header", __assign({ className: tss_react_1.cx(properties.kcFormHeaderClass) }, { children: [(realm.internationalizationEnabled &&
|
||||||
(assert_1.assert(locale !== undefined), true) &&
|
(assert_1.assert(locale !== undefined), true) &&
|
||||||
locale.supported.length > 1) &&
|
locale.supported.length > 1) &&
|
||||||
jsx_runtime_1.jsx("div", __assign({ id: "kc-locale" }, { children: jsx_runtime_1.jsx("div", __assign({ id: "kc-locale-wrapper", className: tss_react_1.cx(kcProperties.kcLocaleWrapperClass) }, { children: jsx_runtime_1.jsxs("div", __assign({ className: "kc-dropdown", id: "kc-locale-dropdown" }, { children: [jsx_runtime_1.jsx("a", __assign({ href: "#", id: "kc-current-locale-link" }, { children: KcLanguageTag_1.getKcLanguageTagLabel(kcLanguageTag) }), void 0),
|
jsx_runtime_1.jsx("div", __assign({ id: "kc-locale" }, { children: jsx_runtime_1.jsx("div", __assign({ id: "kc-locale-wrapper", className: tss_react_1.cx(properties.kcLocaleWrapperClass) }, { children: jsx_runtime_1.jsxs("div", __assign({ className: "kc-dropdown", id: "kc-locale-dropdown" }, { children: [jsx_runtime_1.jsx("a", __assign({ href: "#", id: "kc-current-locale-link" }, { children: getLanguageLabel_1.getLanguageLabel(keycloakLanguage) }), void 0),
|
||||||
jsx_runtime_1.jsx("ul", { children: locale.supported.map(function (_a) {
|
jsx_runtime_1.jsx("ul", { children: locale.supported.map(function (_a) {
|
||||||
var languageTag = _a.languageTag;
|
var languageTag = _a.languageTag;
|
||||||
return jsx_runtime_1.jsx("li", __assign({ className: "kc-dropdown-item" }, { children: jsx_runtime_1.jsx("a", __assign({ href: "#", onClick: onChangeLanguageClickFactory(languageTag) }, { children: KcLanguageTag_1.getKcLanguageTagLabel(languageTag) }), void 0) }), void 0);
|
return jsx_runtime_1.jsx("li", __assign({ className: "kc-dropdown-item" }, { children: jsx_runtime_1.jsx("a", __assign({ href: "#", onClick: onChangeLanguageClickFactory(languageTag) }, { children: getLanguageLabel_1.getLanguageLabel(languageTag) }), void 0) }), void 0);
|
||||||
}) }, void 0)] }), void 0) }), void 0) }), void 0),
|
}) }, void 0)] }), void 0) }), void 0) }), void 0),
|
||||||
(auth !== undefined &&
|
(auth !== undefined &&
|
||||||
auth.showUsername &&
|
auth.showUsername &&
|
||||||
!auth.showResetCredentials) ?
|
!auth.showResetCredentials) ?
|
||||||
(displayRequiredFields ?
|
(displayRequiredFields ?
|
||||||
(jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(kcProperties.kcContentWrapperClass) }, { children: [jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(kcProperties.kcLabelWrapperClass, "subtitle") }, { children: jsx_runtime_1.jsxs("span", __assign({ className: "subtitle" }, { children: [jsx_runtime_1.jsx("span", __assign({ className: "required" }, { children: "*" }), void 0), t("requiredFields")] }), void 0) }), void 0),
|
(jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(properties.kcContentWrapperClass) }, { children: [jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(properties.kcLabelWrapperClass, "subtitle") }, { children: jsx_runtime_1.jsxs("span", __assign({ className: "subtitle" }, { children: [jsx_runtime_1.jsx("span", __assign({ className: "required" }, { children: "*" }), void 0), t("requiredFields")] }), void 0) }), void 0),
|
||||||
jsx_runtime_1.jsx("div", __assign({ className: "col-md-10" }, { children: jsx_runtime_1.jsx("h1", __assign({ id: "kc-page-title" }, { children: headerNode }), void 0) }), void 0)] }), void 0))
|
jsx_runtime_1.jsx("div", __assign({ className: "col-md-10" }, { children: jsx_runtime_1.jsx("h1", __assign({ id: "kc-page-title" }, { children: headerNode }), void 0) }), void 0)] }), void 0))
|
||||||
:
|
:
|
||||||
(jsx_runtime_1.jsx("h1", __assign({ id: "kc-page-title" }, { children: headerNode }), void 0))) : (displayRequiredFields ? (jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(kcProperties.kcContentWrapperClass) }, { children: [jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(kcProperties.kcLabelWrapperClass, "subtitle") }, { children: jsx_runtime_1.jsxs("span", __assign({ className: "subtitle" }, { children: [jsx_runtime_1.jsx("span", __assign({ className: "required" }, { children: "*" }), void 0), " ", t("requiredFields")] }), void 0) }), void 0),
|
(jsx_runtime_1.jsx("h1", __assign({ id: "kc-page-title" }, { children: headerNode }), void 0))) : (displayRequiredFields ? (jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(properties.kcContentWrapperClass) }, { children: [jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(properties.kcLabelWrapperClass, "subtitle") }, { children: jsx_runtime_1.jsxs("span", __assign({ className: "subtitle" }, { children: [jsx_runtime_1.jsx("span", __assign({ className: "required" }, { children: "*" }), void 0), " ", t("requiredFields")] }), void 0) }), void 0),
|
||||||
jsx_runtime_1.jsxs("div", __assign({ className: "col-md-10" }, { children: [showUsernameNode, jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(kcProperties.kcFormGroupClass) }, { children: jsx_runtime_1.jsxs("div", __assign({ id: "kc-username" }, { children: [jsx_runtime_1.jsx("label", __assign({ id: "kc-attempted-username" }, { children: auth === null || auth === void 0 ? void 0 : auth.attemptedUsername }), void 0),
|
jsx_runtime_1.jsxs("div", __assign({ className: "col-md-10" }, { children: [showUsernameNode, jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(properties.kcFormGroupClass) }, { children: jsx_runtime_1.jsxs("div", __assign({ id: "kc-username" }, { children: [jsx_runtime_1.jsx("label", __assign({ id: "kc-attempted-username" }, { children: auth === null || auth === void 0 ? void 0 : auth.attemptedUsername }), void 0),
|
||||||
jsx_runtime_1.jsx("a", __assign({ id: "reset-login", href: url.loginRestartFlowUrl }, { children: jsx_runtime_1.jsxs("div", __assign({ className: "kc-login-tooltip" }, { children: [jsx_runtime_1.jsx("i", { className: tss_react_1.cx(kcProperties.kcResetFlowIcon) }, void 0),
|
jsx_runtime_1.jsx("a", __assign({ id: "reset-login", href: url.loginRestartFlowUrl }, { children: jsx_runtime_1.jsxs("div", __assign({ className: "kc-login-tooltip" }, { children: [jsx_runtime_1.jsx("i", { className: tss_react_1.cx(properties.kcResetFlowIcon) }, void 0),
|
||||||
jsx_runtime_1.jsx("span", __assign({ className: "kc-tooltip-text" }, { children: t("restartLoginTooltip") }), void 0)] }), void 0) }), void 0)] }), void 0) }), void 0)] }), void 0)] }), void 0)) : (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [showUsernameNode, jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(kcProperties.kcFormGroupClass) }, { children: jsx_runtime_1.jsxs("div", __assign({ id: "kc-username" }, { children: [jsx_runtime_1.jsx("label", __assign({ id: "kc-attempted-username" }, { children: auth === null || auth === void 0 ? void 0 : auth.attemptedUsername }), void 0),
|
jsx_runtime_1.jsx("span", __assign({ className: "kc-tooltip-text" }, { children: t("restartLoginTooltip") }), void 0)] }), void 0) }), void 0)] }), void 0) }), void 0)] }), void 0)] }), void 0)) : (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [showUsernameNode, jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(properties.kcFormGroupClass) }, { children: jsx_runtime_1.jsxs("div", __assign({ id: "kc-username" }, { children: [jsx_runtime_1.jsx("label", __assign({ id: "kc-attempted-username" }, { children: auth === null || auth === void 0 ? void 0 : auth.attemptedUsername }), void 0),
|
||||||
jsx_runtime_1.jsx("a", __assign({ id: "reset-login", href: url.loginRestartFlowUrl }, { children: jsx_runtime_1.jsxs("div", __assign({ className: "kc-login-tooltip" }, { children: [jsx_runtime_1.jsx("i", { className: tss_react_1.cx(kcProperties.kcResetFlowIcon) }, void 0),
|
jsx_runtime_1.jsx("a", __assign({ id: "reset-login", href: url.loginRestartFlowUrl }, { children: jsx_runtime_1.jsxs("div", __assign({ className: "kc-login-tooltip" }, { children: [jsx_runtime_1.jsx("i", { className: tss_react_1.cx(properties.kcResetFlowIcon) }, void 0),
|
||||||
jsx_runtime_1.jsx("span", __assign({ className: "kc-tooltip-text" }, { children: t("restartLoginTooltip") }), void 0)] }), void 0) }), void 0)] }), void 0) }), void 0)] }, void 0)))] }), void 0),
|
jsx_runtime_1.jsx("span", __assign({ className: "kc-tooltip-text" }, { children: t("restartLoginTooltip") }), void 0)] }), void 0) }), void 0)] }), void 0) }), void 0)] }, void 0)))] }), void 0),
|
||||||
jsx_runtime_1.jsx("div", __assign({ id: "kc-content" }, { children: jsx_runtime_1.jsxs("div", __assign({ id: "kc-content-wrapper" }, { children: [(displayMessage &&
|
jsx_runtime_1.jsx("div", __assign({ id: "kc-content" }, { children: jsx_runtime_1.jsxs("div", __assign({ id: "kc-content-wrapper" }, { children: [(displayMessage &&
|
||||||
message !== undefined &&
|
message !== undefined &&
|
||||||
(message.type !== "warning" ||
|
(message.type !== "warning" ||
|
||||||
!isAppInitiatedAction)) &&
|
!isAppInitiatedAction)) &&
|
||||||
jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx("alert", "alert-" + message.type) }, { children: [message.type === "success" && jsx_runtime_1.jsx("span", { className: tss_react_1.cx(kcProperties.kcFeedbackSuccessIcon) }, void 0),
|
jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx("alert", "alert-" + message.type) }, { children: [message.type === "success" && jsx_runtime_1.jsx("span", { className: tss_react_1.cx(properties.kcFeedbackSuccessIcon) }, void 0),
|
||||||
message.type === "warning" && jsx_runtime_1.jsx("span", { className: tss_react_1.cx(kcProperties.kcFeedbackWarningIcon) }, void 0),
|
message.type === "warning" && jsx_runtime_1.jsx("span", { className: tss_react_1.cx(properties.kcFeedbackWarningIcon) }, void 0),
|
||||||
message.type === "error" && jsx_runtime_1.jsx("span", { className: tss_react_1.cx(kcProperties.kcFeedbackErrorIcon) }, void 0),
|
message.type === "error" && jsx_runtime_1.jsx("span", { className: tss_react_1.cx(properties.kcFeedbackErrorIcon) }, void 0),
|
||||||
message.type === "info" && jsx_runtime_1.jsx("span", { className: tss_react_1.cx(kcProperties.kcFeedbackInfoIcon) }, void 0),
|
message.type === "info" && jsx_runtime_1.jsx("span", { className: tss_react_1.cx(properties.kcFeedbackInfoIcon) }, void 0),
|
||||||
jsx_runtime_1.jsx("span", __assign({ className: "kc-feedback-text" }, { children: message.summary }), void 0)] }), void 0), formNode, (auth !== undefined &&
|
jsx_runtime_1.jsx("span", __assign({ className: "kc-feedback-text" }, { children: message.summary }), void 0)] }), void 0), formNode, (auth !== undefined &&
|
||||||
auth.showTryAnotherWayLink &&
|
auth.showTryAnotherWayLink &&
|
||||||
showAnotherWayIfPresent) &&
|
showAnotherWayIfPresent) &&
|
||||||
jsx_runtime_1.jsx("form", __assign({ id: "kc-select-try-another-way-form", action: url.loginAction, method: "post", className: tss_react_1.cx(displayWide && kcProperties.kcContentWrapperClass) }, { children: jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(displayWide && [kcProperties.kcFormSocialAccountContentClass, kcProperties.kcFormSocialAccountClass]) }, { children: jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(kcProperties.kcFormGroupClass) }, { children: [jsx_runtime_1.jsx("input", { type: "hidden", name: "tryAnotherWay", value: "on" }, void 0),
|
jsx_runtime_1.jsx("form", __assign({ id: "kc-select-try-another-way-form", action: url.loginAction, method: "post", className: tss_react_1.cx(displayWide && properties.kcContentWrapperClass) }, { children: jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(displayWide && [properties.kcFormSocialAccountContentClass, properties.kcFormSocialAccountClass]) }, { children: jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(properties.kcFormGroupClass) }, { children: [jsx_runtime_1.jsx("input", { type: "hidden", name: "tryAnotherWay", value: "on" }, void 0),
|
||||||
jsx_runtime_1.jsx("a", __assign({ href: "#", id: "try-another-way", onClick: onTryAnotherWayClick }, { children: t("doTryAnotherWay") }), void 0)] }), void 0) }), void 0) }), void 0),
|
jsx_runtime_1.jsx("a", __assign({ href: "#", id: "try-another-way", onClick: onTryAnotherWayClick }, { children: t("doTryAnotherWay") }), void 0)] }), void 0) }), void 0) }), void 0),
|
||||||
displayInfo &&
|
displayInfo &&
|
||||||
jsx_runtime_1.jsx("div", __assign({ id: "kc-info", className: tss_react_1.cx(kcProperties.kcSignUpClass) }, { children: jsx_runtime_1.jsx("div", __assign({ id: "kc-info-wrapper", className: tss_react_1.cx(kcProperties.kcInfoAreaWrapperClass) }, { children: displayInfoNode }), void 0) }), void 0)] }), void 0) }), void 0)] }), void 0)] }), void 0));
|
jsx_runtime_1.jsx("div", __assign({ id: "kc-info", className: tss_react_1.cx(properties.kcSignUpClass) }, { children: jsx_runtime_1.jsx("div", __assign({ id: "kc-info-wrapper", className: tss_react_1.cx(properties.kcInfoAreaWrapperClass) }, { children: displayInfoNode }), void 0) }), void 0)] }), void 0) }), void 0)] }), void 0)] }), void 0));
|
||||||
});
|
}
|
||||||
|
exports.Template = Template;
|
||||||
//# sourceMappingURL=Template.js.map
|
//# sourceMappingURL=Template.js.map
|
1
lib/Template.js.map
Normal file
1
lib/Template.js.map
Normal file
File diff suppressed because one or more lines are too long
17
lib/components/KcProperties.d.ts
vendored
17
lib/components/KcProperties.d.ts
vendored
@ -1,17 +0,0 @@
|
|||||||
/** Class names can be provided as an array or separated by whitespace */
|
|
||||||
export declare type KcClasses<CssClasses extends string> = {
|
|
||||||
[key in CssClasses]?: string[] | string;
|
|
||||||
};
|
|
||||||
export declare type KcTemplateCssClasses = "kcLoginClass" | "kcHeaderClass" | "kcHeaderWrapperClass" | "kcFormCardClass" | "kcFormCardAccountClass" | "kcFormHeaderClass" | "kcLocaleWrapperClass" | "kcContentWrapperClass" | "kcLabelWrapperClass" | "kcContentWrapperClass" | "kcLabelWrapperClass" | "kcFormGroupClass" | "kcResetFlowIcon" | "kcResetFlowIcon" | "kcFeedbackSuccessIcon" | "kcFeedbackWarningIcon" | "kcFeedbackErrorIcon" | "kcFeedbackInfoIcon" | "kcContentWrapperClass" | "kcFormSocialAccountContentClass" | "kcFormSocialAccountClass" | "kcSignUpClass" | "kcInfoAreaWrapperClass";
|
|
||||||
export declare type KcTemplateProperties = {
|
|
||||||
stylesCommon?: string[];
|
|
||||||
styles?: string[];
|
|
||||||
scripts?: string[];
|
|
||||||
} & KcClasses<KcTemplateCssClasses>;
|
|
||||||
export declare const defaultKcTemplateProperties: KcTemplateProperties;
|
|
||||||
/** Tu use if you don't want any default */
|
|
||||||
export declare const allClearKcTemplateProperties: Record<KcTemplateCssClasses | "stylesCommon" | "styles" | "scripts", undefined>;
|
|
||||||
export declare type KcPagesProperties = KcClasses<KcTemplateCssClasses | "kcLogoLink" | "kcLogoClass" | "kcContainerClass" | "kcContentClass" | "kcFeedbackAreaClass" | "kcLocaleClass" | "kcAlertIconClasserror" | "kcFormAreaClass" | "kcFormSocialAccountListClass" | "kcFormSocialAccountDoubleListClass" | "kcFormSocialAccountListLinkClass" | "kcWebAuthnKeyIcon" | "kcFormClass" | "kcFormGroupErrorClass" | "kcLabelClass" | "kcInputClass" | "kcInputWrapperClass" | "kcFormOptionsClass" | "kcFormButtonsClass" | "kcFormSettingClass" | "kcTextareaClass" | "kcInfoAreaClass" | "kcButtonClass" | "kcButtonPrimaryClass" | "kcButtonDefaultClass" | "kcButtonLargeClass" | "kcButtonBlockClass" | "kcInputLargeClass" | "kcSrOnlyClass" | "kcSelectAuthListClass" | "kcSelectAuthListItemClass" | "kcSelectAuthListItemInfoClass" | "kcSelectAuthListItemLeftClass" | "kcSelectAuthListItemBodyClass" | "kcSelectAuthListItemDescriptionClass" | "kcSelectAuthListItemHeadingClass" | "kcSelectAuthListItemHelpTextClass" | "kcAuthenticatorDefaultClass" | "kcAuthenticatorPasswordClass" | "kcAuthenticatorOTPClass" | "kcAuthenticatorWebAuthnClass" | "kcAuthenticatorWebAuthnPasswordlessClass" | "kcSelectOTPListClass" | "kcSelectOTPListItemClass" | "kcAuthenticatorOtpCircleClass" | "kcSelectOTPItemHeadingClass" | "kcFormOptionsWrapperClass">;
|
|
||||||
export declare const defaultKcPagesProperties: KcPagesProperties;
|
|
||||||
/** Tu use if you don't want any default */
|
|
||||||
export declare const allClearKcLoginPageProperties: Record<KcTemplateCssClasses | "kcLogoLink" | "kcLogoClass" | "kcContainerClass" | "kcContentClass" | "kcFeedbackAreaClass" | "kcLocaleClass" | "kcAlertIconClasserror" | "kcFormAreaClass" | "kcFormSocialAccountListClass" | "kcFormSocialAccountDoubleListClass" | "kcFormSocialAccountListLinkClass" | "kcWebAuthnKeyIcon" | "kcFormClass" | "kcFormGroupErrorClass" | "kcLabelClass" | "kcInputClass" | "kcInputWrapperClass" | "kcFormOptionsClass" | "kcFormButtonsClass" | "kcFormSettingClass" | "kcTextareaClass" | "kcInfoAreaClass" | "kcButtonClass" | "kcButtonPrimaryClass" | "kcButtonDefaultClass" | "kcButtonLargeClass" | "kcButtonBlockClass" | "kcInputLargeClass" | "kcSrOnlyClass" | "kcSelectAuthListClass" | "kcSelectAuthListItemClass" | "kcSelectAuthListItemInfoClass" | "kcSelectAuthListItemLeftClass" | "kcSelectAuthListItemBodyClass" | "kcSelectAuthListItemDescriptionClass" | "kcSelectAuthListItemHeadingClass" | "kcSelectAuthListItemHelpTextClass" | "kcAuthenticatorDefaultClass" | "kcAuthenticatorPasswordClass" | "kcAuthenticatorOTPClass" | "kcAuthenticatorWebAuthnClass" | "kcAuthenticatorWebAuthnPasswordlessClass" | "kcSelectOTPListClass" | "kcSelectOTPListItemClass" | "kcAuthenticatorOtpCircleClass" | "kcSelectOTPItemHeadingClass" | "kcFormOptionsWrapperClass", undefined>;
|
|
@ -1,81 +0,0 @@
|
|||||||
"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) {
|
|
||||||
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
|
|
||||||
to[j] = from[i];
|
|
||||||
return to;
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
exports.allClearKcLoginPageProperties = exports.defaultKcPagesProperties = exports.allClearKcTemplateProperties = exports.defaultKcTemplateProperties = void 0;
|
|
||||||
var allPropertiesValuesToUndefined_1 = require("../tools/allPropertiesValuesToUndefined");
|
|
||||||
exports.defaultKcTemplateProperties = {
|
|
||||||
"styles": ["css/login.css"],
|
|
||||||
"stylesCommon": __spreadArray(__spreadArray([], __read([".min.css", "-additions.min.css"]
|
|
||||||
.map(function (end) { return "node_modules/patternfly/dist/css/patternfly" + end; }))), [
|
|
||||||
"lib/zocial/zocial.css"
|
|
||||||
]),
|
|
||||||
"kcLoginClass": "login-pf-page",
|
|
||||||
"kcContentWrapperClass": "row",
|
|
||||||
"kcHeaderClass": "login-pf-page-header",
|
|
||||||
"kcFormCardClass": "card-pf",
|
|
||||||
"kcFormCardAccountClass": "login-pf-accounts",
|
|
||||||
"kcFormSocialAccountClass": "login-pf-social-section",
|
|
||||||
"kcFormSocialAccountContentClass": "col-xs-12 col-sm-6",
|
|
||||||
"kcFormHeaderClass": "login-pf-header",
|
|
||||||
"kcFeedbackErrorIcon": "pficon pficon-error-circle-o",
|
|
||||||
"kcFeedbackWarningIcon": "pficon pficon-warning-triangle-o",
|
|
||||||
"kcFeedbackSuccessIcon": "pficon pficon-ok",
|
|
||||||
"kcFeedbackInfoIcon": "pficon pficon-info",
|
|
||||||
"kcResetFlowIcon": "pficon pficon-arrow fa-2x",
|
|
||||||
"kcFormGroupClass": "form-group",
|
|
||||||
"kcLabelWrapperClass": "col-xs-12 col-sm-12 col-md-12 col-lg-12",
|
|
||||||
"kcSignUpClass": "login-pf-sighup"
|
|
||||||
};
|
|
||||||
/** Tu use if you don't want any default */
|
|
||||||
exports.allClearKcTemplateProperties = allPropertiesValuesToUndefined_1.allPropertiesValuesToUndefined(exports.defaultKcTemplateProperties);
|
|
||||||
exports.defaultKcPagesProperties = __assign(__assign({}, exports.defaultKcTemplateProperties), { "kcLogoLink": "http://www.keycloak.org", "kcLogoClass": "login-pf-brand", "kcContainerClass": "container-fluid", "kcContentClass": "col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3 col-lg-6 col-lg-offset-3", "kcFeedbackAreaClass": "col-md-12", "kcLocaleClass": "col-xs-12 col-sm-1", "kcAlertIconClasserror": "pficon pficon-error-circle-o", "kcFormAreaClass": "col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2 col-lg-8 col-lg-offset-2", "kcFormSocialAccountListClass": "login-pf-social list-unstyled login-pf-social-all", "kcFormSocialAccountDoubleListClass": "login-pf-social-double-col", "kcFormSocialAccountListLinkClass": "login-pf-social-link", "kcWebAuthnKeyIcon": "pficon pficon-key", "kcFormClass": "form-horizontal", "kcFormGroupErrorClass": "has-error", "kcLabelClass": "control-label", "kcInputClass": "form-control", "kcInputWrapperClass": "col-xs-12 col-sm-12 col-md-12 col-lg-12", "kcFormOptionsClass": "col-xs-12 col-sm-12 col-md-12 col-lg-12", "kcFormButtonsClass": "col-xs-12 col-sm-12 col-md-12 col-lg-12", "kcFormSettingClass": "login-pf-settings", "kcTextareaClass": "form-control", "kcInfoAreaClass": "col-xs-12 col-sm-4 col-md-4 col-lg-5 details",
|
|
||||||
// css classes for form buttons main class used for all buttons
|
|
||||||
"kcButtonClass": "btn",
|
|
||||||
// classes defining priority of the button - primary or default (there is typically only one priority button for the form)
|
|
||||||
"kcButtonPrimaryClass": "btn-primary", "kcButtonDefaultClass": "btn-default",
|
|
||||||
// classes defining size of the button
|
|
||||||
"kcButtonLargeClass": "btn-lg", "kcButtonBlockClass": "btn-block",
|
|
||||||
// css classes for input
|
|
||||||
"kcInputLargeClass": "input-lg",
|
|
||||||
// css classes for form accessability
|
|
||||||
"kcSrOnlyClass": "sr-only",
|
|
||||||
// css classes for select-authenticator form
|
|
||||||
"kcSelectAuthListClass": "list-group list-view-pf", "kcSelectAuthListItemClass": "list-group-item list-view-pf-stacked", "kcSelectAuthListItemInfoClass": "list-view-pf-main-info", "kcSelectAuthListItemLeftClass": "list-view-pf-left", "kcSelectAuthListItemBodyClass": "list-view-pf-body", "kcSelectAuthListItemDescriptionClass": "list-view-pf-description", "kcSelectAuthListItemHeadingClass": "list-group-item-heading", "kcSelectAuthListItemHelpTextClass": "list-group-item-text",
|
|
||||||
// css classes for the authenticators
|
|
||||||
"kcAuthenticatorDefaultClass": "fa list-view-pf-icon-lg", "kcAuthenticatorPasswordClass": "fa fa-unlock list-view-pf-icon-lg", "kcAuthenticatorOTPClass": "fa fa-mobile list-view-pf-icon-lg", "kcAuthenticatorWebAuthnClass": "fa fa-key list-view-pf-icon-lg", "kcAuthenticatorWebAuthnPasswordlessClass": "fa fa-key list-view-pf-icon-lg",
|
|
||||||
//css classes for the OTP Login Form
|
|
||||||
"kcSelectOTPListClass": "card-pf card-pf-view card-pf-view-select card-pf-view-single-select", "kcSelectOTPListItemClass": "card-pf-body card-pf-top-element", "kcAuthenticatorOtpCircleClass": "fa fa-mobile card-pf-icon-circle", "kcSelectOTPItemHeadingClass": "card-pf-title text-center" });
|
|
||||||
/** Tu use if you don't want any default */
|
|
||||||
exports.allClearKcLoginPageProperties = allPropertiesValuesToUndefined_1.allPropertiesValuesToUndefined(exports.defaultKcPagesProperties);
|
|
||||||
//# sourceMappingURL=KcProperties.js.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"KcProperties.js","sourceRoot":"","sources":["../../src/lib/components/KcProperties.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,0FAAyF;AAqC5E,QAAA,2BAA2B,GAAyB;IAC7D,QAAQ,EAAE,CAAC,eAAe,CAAC;IAC3B,cAAc,yCACP,CAAC,UAAU,EAAE,oBAAoB,CAAC;SAChC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,gDAA8C,GAAK,EAAnD,CAAmD,CAAC;QACpE,uBAAuB;MAC1B;IACD,cAAc,EAAE,eAAe;IAC/B,uBAAuB,EAAE,KAAK;IAC9B,eAAe,EAAE,sBAAsB;IACvC,iBAAiB,EAAE,SAAS;IAC5B,wBAAwB,EAAE,mBAAmB;IAC7C,0BAA0B,EAAE,yBAAyB;IACrD,iCAAiC,EAAE,oBAAoB;IACvD,mBAAmB,EAAE,iBAAiB;IACtC,qBAAqB,EAAE,8BAA8B;IACrD,uBAAuB,EAAE,kCAAkC;IAC3D,uBAAuB,EAAE,kBAAkB;IAC3C,oBAAoB,EAAE,oBAAoB;IAC1C,iBAAiB,EAAE,2BAA2B;IAC9C,kBAAkB,EAAE,YAAY;IAChC,qBAAqB,EAAE,yCAAyC;IAChE,eAAe,EAAE,iBAAiB;CACrC,CAAC;AAEF,2CAA2C;AAC9B,QAAA,4BAA4B,GACrC,+DAA8B,CAAC,mCAA2B,CAAC,CAAC;AAqDnD,QAAA,wBAAwB,yBAC9B,mCAA2B,KAC9B,YAAY,EAAE,yBAAyB,EACvC,aAAa,EAAE,gBAAgB,EAC/B,kBAAkB,EAAE,iBAAiB,EACrC,gBAAgB,EAAE,4EAA4E,EAC9F,qBAAqB,EAAE,WAAW,EAClC,eAAe,EAAE,oBAAoB,EACrC,uBAAuB,EAAE,8BAA8B,EAEvD,iBAAiB,EAAE,6EAA6E,EAChG,8BAA8B,EAAE,mDAAmD,EACnF,oCAAoC,EAAE,4BAA4B,EAClE,kCAAkC,EAAE,sBAAsB,EAC1D,mBAAmB,EAAE,mBAAmB,EAExC,aAAa,EAAE,iBAAiB,EAChC,uBAAuB,EAAE,WAAW,EACpC,cAAc,EAAE,eAAe,EAC/B,cAAc,EAAE,cAAc,EAC9B,qBAAqB,EAAE,yCAAyC,EAChE,oBAAoB,EAAE,yCAAyC,EAC/D,oBAAoB,EAAE,yCAAyC,EAC/D,oBAAoB,EAAE,mBAAmB,EACzC,iBAAiB,EAAE,cAAc,EAEjC,iBAAiB,EAAE,8CAA8C;IAEjE,+DAA+D;IAC/D,eAAe,EAAE,KAAK;IACtB,0HAA0H;IAC1H,sBAAsB,EAAE,aAAa,EACrC,sBAAsB,EAAE,aAAa;IACrC,sCAAsC;IACtC,oBAAoB,EAAE,QAAQ,EAC9B,oBAAoB,EAAE,WAAW;IAEjC,wBAAwB;IACxB,mBAAmB,EAAE,UAAU;IAE/B,qCAAqC;IACrC,eAAe,EAAE,SAAS;IAE1B,4CAA4C;IAC5C,uBAAuB,EAAE,yBAAyB,EAClD,2BAA2B,EAAE,sCAAsC,EACnE,+BAA+B,EAAE,wBAAwB,EACzD,+BAA+B,EAAE,mBAAmB,EACpD,+BAA+B,EAAE,mBAAmB,EACpD,sCAAsC,EAAE,0BAA0B,EAClE,kCAAkC,EAAE,yBAAyB,EAC7D,mCAAmC,EAAE,sBAAsB;IAE3D,qCAAqC;IACrC,6BAA6B,EAAE,yBAAyB,EACxD,8BAA8B,EAAE,mCAAmC,EACnE,yBAAyB,EAAE,mCAAmC,EAC9D,8BAA8B,EAAE,gCAAgC,EAChE,0CAA0C,EAAE,gCAAgC;IAE5E,oCAAoC;IACpC,sBAAsB,EAAE,qEAAqE,EAC7F,0BAA0B,EAAE,kCAAkC,EAC9D,+BAA+B,EAAE,kCAAkC,EACnE,6BAA6B,EAAE,2BAA2B,IAC5D;AAIF,2CAA2C;AAC9B,QAAA,6BAA6B,GACtC,+DAA8B,CAAC,gCAAwB,CAAC,CAAC"}
|
|
6
lib/components/Login.d.ts
vendored
6
lib/components/Login.d.ts
vendored
@ -1,6 +0,0 @@
|
|||||||
/// <reference types="react" />
|
|
||||||
import type { KcPagesProperties } from "./KcProperties";
|
|
||||||
export declare type LoginProps = {
|
|
||||||
kcProperties?: KcPagesProperties;
|
|
||||||
};
|
|
||||||
export declare const Login: import("react").MemoExoticComponent<(props: LoginProps) => JSX.Element>;
|
|
@ -1,76 +0,0 @@
|
|||||||
"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;
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
exports.Login = void 0;
|
|
||||||
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
||||||
var react_1 = require("react");
|
|
||||||
var Template_1 = require("./Template");
|
|
||||||
var KcProperties_1 = require("./KcProperties");
|
|
||||||
var assert_1 = require("evt/tools/typeSafety/assert");
|
|
||||||
var kcContext_1 = require("../kcContext");
|
|
||||||
var useKcTranslation_1 = require("../i18n/useKcTranslation");
|
|
||||||
var tss_react_1 = require("tss-react");
|
|
||||||
var powerhooks_1 = require("powerhooks");
|
|
||||||
exports.Login = react_1.memo(function (props) {
|
|
||||||
var _a;
|
|
||||||
var _b = props.kcProperties, kcProperties = _b === void 0 ? {} : _b;
|
|
||||||
var _c = useKcTranslation_1.useKcTranslation(), t = _c.t, tStr = _c.tStr;
|
|
||||||
Object.assign(kcProperties, KcProperties_1.defaultKcPagesProperties);
|
|
||||||
var _d = __read(react_1.useState(function () { return (assert_1.assert(kcContext_1.kcContext !== undefined, "App is currently being served by keycloak"),
|
|
||||||
kcContext_1.kcContext); }), 1), _e = _d[0], social = _e.social, realm = _e.realm, url = _e.url, usernameEditDisabled = _e.usernameEditDisabled, login = _e.login, auth = _e.auth, registrationDisabled = _e.registrationDisabled;
|
|
||||||
var _f = __read(react_1.useState(false), 2), isLoginButtonDisabled = _f[0], setIsLoginButtonDisabled = _f[1];
|
|
||||||
var onSubmit = powerhooks_1.useConstCallback(function () {
|
|
||||||
return (setIsLoginButtonDisabled(true), true);
|
|
||||||
});
|
|
||||||
return (jsx_runtime_1.jsx(Template_1.Template, { displayInfo: social.displayInfo, displayWide: realm.password && social.providers !== undefined, kcProperties: kcProperties, headerNode: t("doLogIn"), showUsernameNode: null, formNode: jsx_runtime_1.jsxs("div", __assign({ id: "kc-form", className: tss_react_1.cx(realm.password && social.providers !== undefined && kcProperties.kcContentWrapperClass) }, { children: [jsx_runtime_1.jsx("div", __assign({ id: "kc-form-wrapper", className: tss_react_1.cx(realm.password && social.providers && [kcProperties.kcFormSocialAccountContentClass, kcProperties.kcFormSocialAccountClass]) }, { children: realm.password &&
|
|
||||||
(jsx_runtime_1.jsxs("form", __assign({ id: "kc-form-login", onSubmit: onSubmit, action: url.loginAction, method: "post" }, { children: [jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(kcProperties.kcFormGroupClass) }, { children: [jsx_runtime_1.jsx("label", __assign({ htmlFor: "username", className: tss_react_1.cx(kcProperties.kcLabelClass) }, { children: !realm.loginWithEmailAllowed ?
|
|
||||||
t("username")
|
|
||||||
:
|
|
||||||
(!realm.registrationEmailAsUsername ?
|
|
||||||
t("usernameOrEmail") :
|
|
||||||
t("email")) }), void 0),
|
|
||||||
jsx_runtime_1.jsx("input", __assign({ tabIndex: 1, id: "username", className: tss_react_1.cx(kcProperties.kcInputClass), name: "username", value: (_a = login.username) !== null && _a !== void 0 ? _a : '', type: "text" }, (usernameEditDisabled ? { "disabled": true } : { "autofocus": true, "autocomplete": "off" })), void 0)] }), void 0),
|
|
||||||
jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(kcProperties.kcFormGroupClass) }, { children: [jsx_runtime_1.jsx("label", __assign({ htmlFor: "password", className: tss_react_1.cx(kcProperties.kcLabelClass) }, { children: t("password") }), void 0),
|
|
||||||
jsx_runtime_1.jsx("input", { tabIndex: 2, id: "password", className: tss_react_1.cx(kcProperties.kcInputClass), name: "password", type: "password", autoComplete: "off" }, void 0)] }), void 0),
|
|
||||||
jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(kcProperties.kcFormGroupClass, kcProperties.kcFormSettingClass) }, { children: [jsx_runtime_1.jsx("div", __assign({ id: "kc-form-options" }, { children: (realm.rememberMe &&
|
|
||||||
!usernameEditDisabled) &&
|
|
||||||
jsx_runtime_1.jsx("div", __assign({ className: "checkbox" }, { children: jsx_runtime_1.jsx("label", { children: jsx_runtime_1.jsxs("input", __assign({ tabIndex: 3, id: "rememberMe", name: "rememberMe", type: "checkbox" }, (login.rememberMe ? { "checked": true } : {}), { children: [" ", t("rememberMe")] }), void 0) }, void 0) }), void 0) }), void 0),
|
|
||||||
jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(kcProperties.kcFormOptionsWrapperClass) }, { children: realm.resetPasswordAllowed &&
|
|
||||||
jsx_runtime_1.jsx("span", { children: jsx_runtime_1.jsx("a", __assign({ tabIndex: 5, href: url.loginResetCredentialsUrl }, { children: t("doForgotPassword") }), void 0) }, void 0) }), void 0)] }), void 0),
|
|
||||||
jsx_runtime_1.jsxs("div", __assign({ id: "kc-form-buttons", className: tss_react_1.cx(kcProperties.kcFormGroupClass) }, { children: [jsx_runtime_1.jsx("input", __assign({ type: "hidden", id: "id-hidden-input", name: "credentialId" }, ((auth === null || auth === void 0 ? void 0 : auth.selectedCredential) !== undefined ? { "value": auth.selectedCredential } : {})), void 0),
|
|
||||||
jsx_runtime_1.jsx("input", { tabIndex: 4, className: tss_react_1.cx(kcProperties.kcButtonClass, kcProperties.kcButtonPrimaryClass, kcProperties.kcButtonBlockClass, kcProperties.kcButtonLargeClass), name: "login", id: "kc-login", type: "submit", value: tStr("doLogIn"), disabled: isLoginButtonDisabled }, void 0)] }), void 0)] }), void 0)) }), void 0),
|
|
||||||
(realm.password && social.providers !== undefined) &&
|
|
||||||
jsx_runtime_1.jsx("div", __assign({ id: "kc-social-providers", className: tss_react_1.cx(kcProperties.kcFormSocialAccountContentClass, kcProperties.kcFormSocialAccountClass) }, { children: jsx_runtime_1.jsx("ul", __assign({ className: tss_react_1.cx(kcProperties.kcFormSocialAccountListClass, social.providers.length > 4 && kcProperties.kcFormSocialAccountDoubleListClass) }, { children: social.providers.map(function (p) {
|
|
||||||
return jsx_runtime_1.jsx("li", __assign({ className: tss_react_1.cx(kcProperties.kcFormSocialAccountListLinkClass) }, { children: jsx_runtime_1.jsx("a", __assign({ href: p.loginUrl, id: "zocial-" + p.alias, className: tss_react_1.cx("zocial", p.providerId) }, { children: jsx_runtime_1.jsx("span", { children: p.displayName }, void 0) }), void 0) }), void 0);
|
|
||||||
}) }), void 0) }), void 0)] }), void 0), displayInfoNode: (realm.password &&
|
|
||||||
realm.resetPasswordAllowed &&
|
|
||||||
!registrationDisabled) &&
|
|
||||||
jsx_runtime_1.jsx("div", __assign({ id: "kc-registration" }, { children: jsx_runtime_1.jsxs("span", { children: [t("noAccount"), jsx_runtime_1.jsx("a", __assign({ tabIndex: 6, href: url.registrationUrl }, { children: t("doRegister") }), void 0)] }, void 0) }), void 0) }, void 0));
|
|
||||||
});
|
|
||||||
//# sourceMappingURL=Login.js.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"Login.js","sourceRoot":"","sources":["../../src/lib/components/Login.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+BAAuC;AACvC,uCAAsC;AAEtC,+CAA0D;AAC1D,sDAAqD;AACrD,0CAAyC;AACzC,6DAA4D;AAC5D,uCAA+B;AAC/B,yCAA8C;AAMjC,QAAA,KAAK,GAAG,YAAI,CAAC,UAAC,KAAiB;;IAEhC,IAAA,KAAsB,KAAK,aAAV,EAAjB,YAAY,mBAAG,EAAE,KAAA,CAAW;IAE9B,IAAA,KAAc,mCAAgB,EAAE,EAA9B,CAAC,OAAA,EAAE,IAAI,UAAuB,CAAC;IAEvC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,uCAAwB,CAAC,CAAC;IAEhD,IAAA,KAAA,OAID,gBAAQ,CAAC,cAAM,OAAA,CAChB,eAAM,CACF,qBAAS,KAAK,SAAS,EACvB,2CAA2C,CAC9C;QACD,qBAAS,CACZ,EANmB,CAMnB,CAAC,IAAA,EAVK,UAIN,EAHG,MAAM,YAAA,EAAE,KAAK,WAAA,EAAE,GAAG,SAAA,EAClB,oBAAoB,0BAAA,EAAE,KAAK,WAAA,EAC3B,IAAI,UAAA,EAAE,oBAAoB,0BAO5B,CAAC;IAEG,IAAA,KAAA,OAAoD,gBAAQ,CAAC,KAAK,CAAC,IAAA,EAAlE,qBAAqB,QAAA,EAAE,wBAAwB,QAAmB,CAAC;IAE1E,IAAM,QAAQ,GAAG,6BAAgB,CAAC;QAC9B,OAAA,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IAAtC,CAAsC,CACzC,CAAC;IAGF,OAAO,CACH,kBAAC,mBAAQ,IACL,WAAW,EAAE,MAAM,CAAC,WAAW,EAC/B,WAAW,EAAE,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAC7D,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,CAAC,CAAC,SAAS,CAAC,EACxB,gBAAgB,EAAE,IAAI,EACtB,QAAQ,EACJ,qCACI,EAAE,EAAC,SAAS,EACZ,SAAS,EAAE,cAAE,CAAC,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,YAAY,CAAC,qBAAqB,CAAC,iBAErG,oCACI,EAAE,EAAC,iBAAiB,EACpB,SAAS,EAAE,cAAE,CAAC,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,YAAY,CAAC,+BAA+B,EAAE,YAAY,CAAC,wBAAwB,CAAC,CAAC,gBAGtI,KAAK,CAAC,QAAQ;wBACd,CACI,sCAAM,EAAE,EAAC,eAAe,EAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE,MAAM,EAAC,MAAM,iBAC/E,qCAAK,SAAS,EAAE,cAAE,CAAC,YAAY,CAAC,gBAAgB,CAAC,iBAC7C,sCAAO,OAAO,EAAC,UAAU,EAAC,SAAS,EAAE,cAAE,CAAC,YAAY,CAAC,YAAY,CAAC,gBAE1D,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;gDAC1B,CAAC,CAAC,UAAU,CAAC;gDACb,CAAC;oDACD,CACI,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;wDAChC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;wDACtB,CAAC,CAAC,OAAO,CAAC,CACjB,YAEL;wCACR,sCACI,QAAQ,EAAE,CAAC,EACX,EAAE,EAAC,UAAU,EACb,SAAS,EAAE,cAAE,CAAC,YAAY,CAAC,YAAY,CAAC,EACxC,IAAI,EAAC,UAAU,EACf,KAAK,EAAE,MAAA,KAAK,CAAC,QAAQ,mCAAI,EAAE,EAC3B,IAAI,EAAC,MAAM,IACP,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,UAClG,aACA;gCACN,qCAAK,SAAS,EAAE,cAAE,CAAC,YAAY,CAAC,gBAAgB,CAAC,iBAC7C,sCAAO,OAAO,EAAC,UAAU,EAAC,SAAS,EAAE,cAAE,CAAC,YAAY,CAAC,YAAY,CAAC,gBAC7D,CAAC,CAAC,UAAU,CAAC,YACV;wCACR,6BAAO,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAC,UAAU,EAAC,SAAS,EAAE,cAAE,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,IAAI,EAAC,UAAU,EAAC,IAAI,EAAC,UAAU,EAAC,YAAY,EAAC,KAAK,WAAG,aAC/H;gCACN,qCAAK,SAAS,EAAE,cAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,YAAY,CAAC,kBAAkB,CAAC,iBAC9E,oCAAK,EAAE,EAAC,iBAAiB,gBAEjB,CACI,KAAK,CAAC,UAAU;gDAChB,CAAC,oBAAoB,CACxB;gDACD,oCAAK,SAAS,EAAC,UAAU,gBACrB,uCACI,uCAAO,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAC,YAAY,EAAC,IAAI,EAAC,YAAY,EAAC,IAAI,EAAC,UAAU,IAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,oBAAI,CAAC,CAAC,YAAY,CAAC,aAAS,WAC/I,YACN,YAER;wCACN,oCAAK,SAAS,EAAE,cAAE,CAAC,YAAY,CAAC,yBAAyB,CAAC,gBAElD,KAAK,CAAC,oBAAoB;gDAC1B,sCACI,kCAAG,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,wBAAwB,gBAAG,CAAC,CAAC,kBAAkB,CAAC,YAAK,WAC5E,YAET,aAEJ;gCACN,qCAAK,EAAE,EAAC,iBAAiB,EAAC,SAAS,EAAE,cAAE,CAAC,YAAY,CAAC,gBAAgB,CAAC,iBAClE,sCACI,IAAI,EAAC,QAAQ,EACb,EAAE,EAAC,iBAAiB,EACpB,IAAI,EAAC,cAAc,IACf,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,kBAAkB,MAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,UAC1F;wCACF,6BACI,QAAQ,EAAE,CAAC,EACX,SAAS,EAAE,cAAE,CAAC,YAAY,CAAC,aAAa,EAAE,YAAY,CAAC,oBAAoB,EAAE,YAAY,CAAC,kBAAkB,EAAE,YAAY,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAC,OAAO,EAAC,EAAE,EAAC,UAAU,EAAC,IAAI,EAAC,QAAQ,EACxL,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EACtB,QAAQ,EAAE,qBAAqB,WACjC,aACA,aACH,CACV,YAEH;gBAEF,CAAC,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC;oBAClD,oCAAK,EAAE,EAAC,qBAAqB,EAAC,SAAS,EAAE,cAAE,CAAC,YAAY,CAAC,+BAA+B,EAAE,YAAY,CAAC,wBAAwB,CAAC,gBAC5H,mCAAI,SAAS,EAAE,cAAE,CAAC,YAAY,CAAC,4BAA4B,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,kCAAkC,CAAC,gBAEpI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,UAAA,CAAC;gCAClB,OAAA,mCAAI,SAAS,EAAE,cAAE,CAAC,YAAY,CAAC,gCAAgC,CAAC,gBAC5D,kCAAG,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,YAAU,CAAC,CAAC,KAAO,EAAE,SAAS,EAAE,cAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,gBAC/E,sCAAO,CAAC,CAAC,WAAW,WAAQ,YAC5B,YACH;4BAJL,CAIK,CACR,YAEJ,YACH,aAER,EAEV,eAAe,EACX,CACI,KAAK,CAAC,QAAQ;YACd,KAAK,CAAC,oBAAoB;YAC1B,CAAC,oBAAoB,CACxB;YACD,oCAAK,EAAE,EAAC,iBAAiB,gBACrB,wCACK,CAAC,CAAC,WAAW,CAAC,EACf,kCAAG,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,eAAe,gBACpC,CAAC,CAAC,YAAY,CAAC,YAChB,YACD,YACL,WAEZ,CACL,CAAC;AACN,CAAC,CAAC,CAAC"}
|
|
15
lib/components/Template.d.ts
vendored
15
lib/components/Template.d.ts
vendored
@ -1,15 +0,0 @@
|
|||||||
import type { ReactNode } from "react";
|
|
||||||
import type { KcTemplateProperties } from "./KcProperties";
|
|
||||||
export declare type TemplateProps = {
|
|
||||||
kcProperties: KcTemplateProperties;
|
|
||||||
displayInfo?: boolean;
|
|
||||||
displayMessage?: boolean;
|
|
||||||
displayRequiredFields?: boolean;
|
|
||||||
displayWide?: boolean;
|
|
||||||
showAnotherWayIfPresent?: boolean;
|
|
||||||
headerNode: ReactNode;
|
|
||||||
showUsernameNode: ReactNode;
|
|
||||||
formNode: ReactNode;
|
|
||||||
displayInfoNode: ReactNode;
|
|
||||||
};
|
|
||||||
export declare const Template: import("react").MemoExoticComponent<(props: TemplateProps) => JSX.Element>;
|
|
File diff suppressed because one or more lines are too long
11
lib/i18n/KcLanguageTag.d.ts
vendored
11
lib/i18n/KcLanguageTag.d.ts
vendored
@ -1,11 +0,0 @@
|
|||||||
import { messages } from "./generated_messages/login";
|
|
||||||
export declare type KcLanguageTag = keyof typeof messages;
|
|
||||||
export declare type LanguageLabel = "Deutsch" | "Norsk" | "Русский" | "Svenska" | "Português (Brasil)" | "Lietuvių" | "English" | "Italiano" | "Français" | "中文简体" | "Español" | "Čeština" | "日本語" | "Slovenčina" | "Polish" | "Català" | "Nederlands" | "tr";
|
|
||||||
export declare function getKcLanguageTagLabel(language: KcLanguageTag): LanguageLabel;
|
|
||||||
/**
|
|
||||||
* Pass in "fr-FR" or "français" for example, it will return the AvailableLanguage
|
|
||||||
* it corresponds to: "fr".
|
|
||||||
* If there is no reasonable match it's guessed from navigator.language.
|
|
||||||
* If still no matches "en" is returned.
|
|
||||||
*/
|
|
||||||
export declare function getBestMatchAmongKcLanguageTag(languageLike: string): KcLanguageTag;
|
|
@ -1,53 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
exports.getBestMatchAmongKcLanguageTag = exports.getKcLanguageTagLabel = void 0;
|
|
||||||
var objectKeys_1 = require("evt/tools/typeSafety/objectKeys");
|
|
||||||
var login_1 = require("./generated_messages/login");
|
|
||||||
/* spell-checker: enable */
|
|
||||||
function getKcLanguageTagLabel(language) {
|
|
||||||
switch (language) {
|
|
||||||
/* spell-checker: disable */
|
|
||||||
case "es": return "Español";
|
|
||||||
case "it": return "Italiano";
|
|
||||||
case "fr": return "Français";
|
|
||||||
case "ca": return "Català";
|
|
||||||
case "en": return "English";
|
|
||||||
case "de": return "Deutsch";
|
|
||||||
case "no": return "Norsk";
|
|
||||||
case "pt_BR": return "Português (Brasil)";
|
|
||||||
case "ru": return "Русский";
|
|
||||||
case "sk":
|
|
||||||
case "sv": return "Slovenčina";
|
|
||||||
case "ja": return "日本語";
|
|
||||||
case "pl": return "Polish";
|
|
||||||
case "zh_CN": return "中文简体";
|
|
||||||
case "sv": return "Svenska";
|
|
||||||
case "lt": return "Lietuvių";
|
|
||||||
case "cs": return "Čeština";
|
|
||||||
case "nl": return "Nederlands";
|
|
||||||
case "tr": return "tr";
|
|
||||||
/* spell-checker: enable */
|
|
||||||
}
|
|
||||||
return language;
|
|
||||||
}
|
|
||||||
exports.getKcLanguageTagLabel = getKcLanguageTagLabel;
|
|
||||||
var availableLanguages = objectKeys_1.objectKeys(login_1.messages);
|
|
||||||
/**
|
|
||||||
* Pass in "fr-FR" or "français" for example, it will return the AvailableLanguage
|
|
||||||
* it corresponds to: "fr".
|
|
||||||
* If there is no reasonable match it's guessed from navigator.language.
|
|
||||||
* If still no matches "en" is returned.
|
|
||||||
*/
|
|
||||||
function getBestMatchAmongKcLanguageTag(languageLike) {
|
|
||||||
var iso2LanguageLike = languageLike.split("-")[0].toLowerCase();
|
|
||||||
var language = availableLanguages.find(function (language) {
|
|
||||||
return language.toLowerCase().includes(iso2LanguageLike) ||
|
|
||||||
getKcLanguageTagLabel(language).toLocaleLowerCase() === languageLike.toLocaleLowerCase();
|
|
||||||
});
|
|
||||||
if (language === undefined && languageLike !== navigator.language) {
|
|
||||||
return getBestMatchAmongKcLanguageTag(navigator.language);
|
|
||||||
}
|
|
||||||
return "en";
|
|
||||||
}
|
|
||||||
exports.getBestMatchAmongKcLanguageTag = getBestMatchAmongKcLanguageTag;
|
|
||||||
//# sourceMappingURL=KcLanguageTag.js.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"KcLanguageTag.js","sourceRoot":"","sources":["../../src/lib/i18n/KcLanguageTag.ts"],"names":[],"mappings":";;;AACA,8DAA6D;AAC7D,oDAAsD;AAStD,2BAA2B;AAE3B,SAAgB,qBAAqB,CAAC,QAAuB;IAEzD,QAAQ,QAAQ,EAAE;QACd,4BAA4B;QAC5B,KAAK,IAAI,CAAC,CAAC,OAAO,SAAS,CAAC;QAC5B,KAAK,IAAI,CAAC,CAAC,OAAO,UAAU,CAAC;QAC7B,KAAK,IAAI,CAAC,CAAC,OAAO,UAAU,CAAC;QAC7B,KAAK,IAAI,CAAC,CAAC,OAAO,QAAQ,CAAC;QAC3B,KAAK,IAAI,CAAC,CAAC,OAAO,SAAS,CAAC;QAC5B,KAAK,IAAI,CAAC,CAAC,OAAO,SAAS,CAAC;QAC5B,KAAK,IAAI,CAAC,CAAC,OAAO,OAAO,CAAC;QAC1B,KAAK,OAAO,CAAC,CAAC,OAAO,oBAAoB,CAAC;QAC1C,KAAK,IAAI,CAAC,CAAC,OAAO,SAAS,CAAC;QAC5B,KAAK,IAAI,CAAC;QACV,KAAK,IAAI,CAAC,CAAC,OAAO,YAAY,CAAC;QAC/B,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC;QACxB,KAAK,IAAI,CAAC,CAAC,OAAO,QAAQ,CAAC;QAC3B,KAAK,OAAO,CAAC,CAAC,OAAO,MAAM,CAAA;QAC3B,KAAK,IAAI,CAAC,CAAC,OAAO,SAAS,CAAC;QAC5B,KAAK,IAAI,CAAC,CAAC,OAAO,UAAU,CAAC;QAC7B,KAAK,IAAI,CAAC,CAAC,OAAO,SAAS,CAAC;QAC5B,KAAK,IAAI,CAAC,CAAC,OAAO,YAAY,CAAC;QAC/B,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAA;QACtB,2BAA2B;KAC9B;IAED,OAAO,QAAQ,CAAC;AAEpB,CAAC;AA5BD,sDA4BC;AAED,IAAM,kBAAkB,GAAG,uBAAU,CAAC,gBAAQ,CAAC,CAAC;AAEhD;;;;;EAKE;AACF,SAAgB,8BAA8B,CAC1C,YAAoB;IAGpB,IAAM,gBAAgB,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAElE,IAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,UAAA,QAAQ;QAC7C,OAAA,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACjD,qBAAqB,CAAC,QAAQ,CAAC,CAAC,iBAAiB,EAAE,KAAK,YAAY,CAAC,iBAAiB,EAAE;IADxF,CACwF,CAC3F,CAAC;IAEF,IAAI,QAAQ,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,CAAC,QAAQ,EAAE;QAC/D,OAAO,8BAA8B,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;KAC7D;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAhBD,wEAgBC"}
|
|
3
lib/i18n/getLanguageLabel.d.ts
vendored
Normal file
3
lib/i18n/getLanguageLabel.d.ts
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
import type { AvailableLanguages } from "./useKeycloakLanguage";
|
||||||
|
export declare function getLanguageLabel(language: AvailableLanguages): LanguageLabel;
|
||||||
|
export declare type LanguageLabel = "Deutsch" | "Norsk" | "Русский" | "Svenska" | "Português (Brasil)" | "Lietuvių" | "English" | "Italiano" | "Français" | "中文简体" | "Español" | "Čeština" | "日本語" | "Slovenčina" | "Polish" | "Català" | "Nederlands" | "tr";
|
32
lib/i18n/getLanguageLabel.js
Normal file
32
lib/i18n/getLanguageLabel.js
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
exports.getLanguageLabel = void 0;
|
||||||
|
function getLanguageLabel(language) {
|
||||||
|
switch (language) {
|
||||||
|
/* spell-checker: disable */
|
||||||
|
case "es": return "Español";
|
||||||
|
case "it": return "Italiano";
|
||||||
|
case "fr": return "Français";
|
||||||
|
case "ca": return "Català";
|
||||||
|
case "en": return "English";
|
||||||
|
case "de": return "Deutsch";
|
||||||
|
case "no": return "Norsk";
|
||||||
|
case "pt_BR": return "Português (Brasil)";
|
||||||
|
case "ru": return "Русский";
|
||||||
|
case "sk":
|
||||||
|
case "sv": return "Slovenčina";
|
||||||
|
case "ja": return "日本語";
|
||||||
|
case "pl": return "Polish";
|
||||||
|
case "zh_CN": return "中文简体";
|
||||||
|
case "sv": return "Svenska";
|
||||||
|
case "lt": return "Lietuvių";
|
||||||
|
case "cs": return "Čeština";
|
||||||
|
case "nl": return "Nederlands";
|
||||||
|
case "tr": return "tr";
|
||||||
|
/* spell-checker: enable */
|
||||||
|
}
|
||||||
|
return language;
|
||||||
|
}
|
||||||
|
exports.getLanguageLabel = getLanguageLabel;
|
||||||
|
/* spell-checker: enable */
|
||||||
|
//# sourceMappingURL=getLanguageLabel.js.map
|
1
lib/i18n/getLanguageLabel.js.map
Normal file
1
lib/i18n/getLanguageLabel.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"getLanguageLabel.js","sourceRoot":"","sources":["../../src/lib/i18n/getLanguageLabel.ts"],"names":[],"mappings":";;;AAGA,SAAgB,gBAAgB,CAAC,QAA4B;IAEzD,QAAQ,QAAQ,EAAE;QACd,4BAA4B;QAC5B,KAAK,IAAI,CAAC,CAAC,OAAO,SAAS,CAAC;QAC5B,KAAK,IAAI,CAAC,CAAC,OAAO,UAAU,CAAC;QAC7B,KAAK,IAAI,CAAC,CAAC,OAAO,UAAU,CAAC;QAC7B,KAAK,IAAI,CAAC,CAAC,OAAO,QAAQ,CAAC;QAC3B,KAAK,IAAI,CAAC,CAAC,OAAO,SAAS,CAAC;QAC5B,KAAK,IAAI,CAAC,CAAC,OAAO,SAAS,CAAC;QAC5B,KAAK,IAAI,CAAC,CAAC,OAAO,OAAO,CAAC;QAC1B,KAAK,OAAO,CAAC,CAAC,OAAO,oBAAoB,CAAC;QAC1C,KAAK,IAAI,CAAC,CAAC,OAAO,SAAS,CAAC;QAC5B,KAAK,IAAI,CAAC;QACV,KAAK,IAAI,CAAC,CAAC,OAAO,YAAY,CAAC;QAC/B,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC;QACxB,KAAK,IAAI,CAAC,CAAC,OAAO,QAAQ,CAAC;QAC3B,KAAK,OAAO,CAAC,CAAC,OAAO,MAAM,CAAA;QAC3B,KAAK,IAAI,CAAC,CAAC,OAAO,SAAS,CAAC;QAC5B,KAAK,IAAI,CAAC,CAAC,OAAO,UAAU,CAAC;QAC7B,KAAK,IAAI,CAAC,CAAC,OAAO,SAAS,CAAC;QAC5B,KAAK,IAAI,CAAC,CAAC,OAAO,YAAY,CAAC;QAC/B,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAA;QACtB,2BAA2B;KAC9B;IAED,OAAO,QAAQ,CAAC;AAEpB,CAAC;AA5BD,4CA4BC;AAOD,2BAA2B"}
|
1
lib/i18n/useKcLanguageTag.d.ts
vendored
1
lib/i18n/useKcLanguageTag.d.ts
vendored
@ -1 +0,0 @@
|
|||||||
export declare const useKcLanguageTag: () => import("powerhooks").UseNamedStateReturnType<"tr" | "no" | "en" | "ca" | "cs" | "de" | "es" | "fr" | "it" | "ja" | "lt" | "nl" | "pl" | "pt_BR" | "ru" | "sk" | "sv" | "zh_CN", "kcLanguageTag">;
|
|
@ -1,13 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
exports.useKcLanguageTag = void 0;
|
|
||||||
var powerhooks_1 = require("powerhooks");
|
|
||||||
var kcContext_1 = require("../kcContext");
|
|
||||||
var KcLanguageTag_1 = require("./KcLanguageTag");
|
|
||||||
var assert_1 = require("evt/tools/typeSafety/assert");
|
|
||||||
exports.useKcLanguageTag = powerhooks_1.createUseGlobalState("kcLanguageTag", function () {
|
|
||||||
var _a, _b;
|
|
||||||
return KcLanguageTag_1.getBestMatchAmongKcLanguageTag((assert_1.assert(kcContext_1.kcContext !== undefined, "Page not served by KeyCloak"),
|
|
||||||
(_b = (_a = kcContext_1.kcContext.locale) === null || _a === void 0 ? void 0 : _a["current"]) !== null && _b !== void 0 ? _b : navigator.language));
|
|
||||||
}, { "persistance": "cookies" }).useKcLanguageTag;
|
|
||||||
//# sourceMappingURL=useKcLanguageTag.js.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"useKcLanguageTag.js","sourceRoot":"","sources":["../../src/lib/i18n/useKcLanguageTag.ts"],"names":[],"mappings":";;;AACA,yCAAkD;AAClD,0CAAyC;AACzC,iDAAiE;AACjE,sDAAqD;AAEtC,QAAA,gBAAgB,GAAK,iCAAoB,CACpD,eAAe,EACf;;IAAM,OAAA,8CAA8B,CAAC,CACjC,eAAM,CAAC,qBAAS,KAAK,SAAS,EAAE,6BAA6B,CAAC;QAC9D,MAAA,MAAA,qBAAS,CAAC,MAAM,0CAAG,SAAkB,CAAC,mCACtC,SAAS,CAAC,QAAQ,CACrB,CAAC,CAAA;CAAA,EACF,EAAE,aAAa,EAAE,SAAS,EAAE,CAC/B,kBAAC"}
|
|
7
lib/i18n/useKcTranslation.d.ts
vendored
7
lib/i18n/useKcTranslation.d.ts
vendored
File diff suppressed because one or more lines are too long
@ -1,57 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
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) {
|
|
||||||
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
|
|
||||||
to[j] = from[i];
|
|
||||||
return to;
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
exports.useKcTranslation = void 0;
|
|
||||||
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
||||||
var useKcLanguageTag_1 = require("./useKcLanguageTag");
|
|
||||||
var login_1 = require("./generated_messages/login");
|
|
||||||
var powerhooks_1 = require("powerhooks");
|
|
||||||
var id_1 = require("evt/tools/typeSafety/id");
|
|
||||||
function useKcTranslation() {
|
|
||||||
var kcLanguageTag = useKcLanguageTag_1.useKcLanguageTag().kcLanguageTag;
|
|
||||||
var tStr = powerhooks_1.useConstCallback(function (key) {
|
|
||||||
var _a;
|
|
||||||
var args = [];
|
|
||||||
for (var _i = 1; _i < arguments.length; _i++) {
|
|
||||||
args[_i - 1] = arguments[_i];
|
|
||||||
}
|
|
||||||
var str = (_a = login_1.messages[kcLanguageTag][key]) !== null && _a !== void 0 ? _a : login_1.messages["en"][key];
|
|
||||||
args.forEach(function (arg, i) {
|
|
||||||
if (arg === undefined) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
str = str.replace(new RegExp("\\{" + i + "\\}", "g"), arg);
|
|
||||||
});
|
|
||||||
return str;
|
|
||||||
});
|
|
||||||
var t = powerhooks_1.useConstCallback(id_1.id(function (key) {
|
|
||||||
var args = [];
|
|
||||||
for (var _i = 1; _i < arguments.length; _i++) {
|
|
||||||
args[_i - 1] = arguments[_i];
|
|
||||||
}
|
|
||||||
return jsx_runtime_1.jsx("span", { className: key, dangerouslySetInnerHTML: { "__html": tStr.apply(void 0, __spreadArray([key], __read(args))) } }, void 0);
|
|
||||||
}));
|
|
||||||
return { t: t, tStr: tStr };
|
|
||||||
}
|
|
||||||
exports.useKcTranslation = useKcTranslation;
|
|
||||||
//# sourceMappingURL=useKcTranslation.js.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"useKcTranslation.js","sourceRoot":"","sources":["../../src/lib/i18n/useKcTranslation.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AACA,uDAAsD;AACtD,oDAAsD;AACtD,yCAA8C;AAE9C,8CAA6C;AAI7C,SAAgB,gBAAgB;IAEpB,IAAA,aAAa,GAAK,mCAAgB,EAAE,cAAvB,CAAwB;IAE7C,IAAM,IAAI,GAAG,6BAAgB,CACzB,UAAC,GAAe;;QAAE,cAA+B;aAA/B,UAA+B,EAA/B,qBAA+B,EAA/B,IAA+B;YAA/B,6BAA+B;;QAE7C,IAAI,GAAG,GAAW,MAAA,gBAAQ,CAAC,aAA4B,CAAC,CAAC,GAAG,CAAC,mCAAI,gBAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAErF,IAAI,CAAC,OAAO,CAAC,UAAC,GAAG,EAAE,CAAC;YAEhB,IAAI,GAAG,KAAK,SAAS,EAAE;gBACnB,OAAO;aACV;YAED,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,QAAM,CAAC,QAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QAE1D,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IAEf,CAAC,CACJ,CAAC;IAEF,IAAM,CAAC,GAAG,6BAAgB,CACtB,OAAE,CACE,UAAC,GAAG;QAAE,cAAO;aAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;YAAP,6BAAO;;QACT,OAAA,4BAAM,SAAS,EAAE,GAAG,EAAE,uBAAuB,EAAE,EAAE,QAAQ,EAAE,IAAI,8BAAC,GAAG,UAAK,IAAI,GAAC,EAAE,WAAI;IAAnF,CAAmF,CAC1F,CACJ,CAAC;IAEF,OAAO,EAAE,CAAC,GAAA,EAAE,IAAI,MAAA,EAAE,CAAC;AAEvB,CAAC;AAjCD,4CAiCC"}
|
|
11
lib/i18n/useKeycloakLanguage.d.ts
vendored
Normal file
11
lib/i18n/useKeycloakLanguage.d.ts
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
declare const availableLanguages: ("tr" | "no" | "en" | "ca" | "cs" | "de" | "es" | "fr" | "it" | "ja" | "lt" | "nl" | "pl" | "pt_BR" | "ru" | "sk" | "sv" | "zh_CN")[];
|
||||||
|
export declare type AvailableLanguages = typeof availableLanguages[number];
|
||||||
|
export declare const useKeycloakLanguage: () => import("powerhooks").UseNamedStateReturnType<"tr" | "no" | "en" | "ca" | "cs" | "de" | "es" | "fr" | "it" | "ja" | "lt" | "nl" | "pl" | "pt_BR" | "ru" | "sk" | "sv" | "zh_CN", "keycloakLanguage">;
|
||||||
|
/**
|
||||||
|
* Pass in "fr-FR" or "français" for example, it will return the AvailableLanguage
|
||||||
|
* it corresponds to: "fr".
|
||||||
|
* If there is no reasonable match it's guessed from navigator.language.
|
||||||
|
* If still no matches "en" is returned.
|
||||||
|
*/
|
||||||
|
export declare function getBestMatchAmongKeycloakAvailableLanguages(languageLike: string): AvailableLanguages;
|
||||||
|
export {};
|
32
lib/i18n/useKeycloakLanguage.js
Normal file
32
lib/i18n/useKeycloakLanguage.js
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
exports.getBestMatchAmongKeycloakAvailableLanguages = exports.useKeycloakLanguage = void 0;
|
||||||
|
var powerhooks_1 = require("powerhooks");
|
||||||
|
var login_1 = require("./generated_messages/login");
|
||||||
|
var objectKeys_1 = require("evt/tools/typeSafety/objectKeys");
|
||||||
|
var getLanguageLabel_1 = require("./getLanguageLabel");
|
||||||
|
var keycloakFtlValues_1 = require("../keycloakFtlValues");
|
||||||
|
var availableLanguages = objectKeys_1.objectKeys(login_1.messages);
|
||||||
|
exports.useKeycloakLanguage = powerhooks_1.createUseGlobalState("keycloakLanguage", function () {
|
||||||
|
var _a, _b;
|
||||||
|
return getBestMatchAmongKeycloakAvailableLanguages((_b = (_a = keycloakFtlValues_1.keycloakPagesContext === null || keycloakFtlValues_1.keycloakPagesContext === void 0 ? void 0 : keycloakFtlValues_1.keycloakPagesContext.locale) === null || _a === void 0 ? void 0 : _a["current"]) !== null && _b !== void 0 ? _b : navigator.language);
|
||||||
|
}, { "persistance": "cookies" }).useKeycloakLanguage;
|
||||||
|
/**
|
||||||
|
* Pass in "fr-FR" or "français" for example, it will return the AvailableLanguage
|
||||||
|
* it corresponds to: "fr".
|
||||||
|
* If there is no reasonable match it's guessed from navigator.language.
|
||||||
|
* If still no matches "en" is returned.
|
||||||
|
*/
|
||||||
|
function getBestMatchAmongKeycloakAvailableLanguages(languageLike) {
|
||||||
|
var iso2LanguageLike = languageLike.split("-")[0].toLowerCase();
|
||||||
|
var language = availableLanguages.find(function (language) {
|
||||||
|
return language.toLowerCase().includes(iso2LanguageLike) ||
|
||||||
|
getLanguageLabel_1.getLanguageLabel(language).toLocaleLowerCase() === languageLike.toLocaleLowerCase();
|
||||||
|
});
|
||||||
|
if (language === undefined && languageLike !== navigator.language) {
|
||||||
|
return getBestMatchAmongKeycloakAvailableLanguages(navigator.language);
|
||||||
|
}
|
||||||
|
return "en";
|
||||||
|
}
|
||||||
|
exports.getBestMatchAmongKeycloakAvailableLanguages = getBestMatchAmongKeycloakAvailableLanguages;
|
||||||
|
//# sourceMappingURL=useKeycloakLanguage.js.map
|
1
lib/i18n/useKeycloakLanguage.js.map
Normal file
1
lib/i18n/useKeycloakLanguage.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"useKeycloakLanguage.js","sourceRoot":"","sources":["../../src/lib/i18n/useKeycloakLanguage.ts"],"names":[],"mappings":";;;AACA,yCAAkD;AAClD,oDAAsD;AACtD,8DAA6D;AAC7D,uDAAsD;AACtD,0DAA4D;AAE5D,IAAM,kBAAkB,GAAG,uBAAU,CAAC,gBAAQ,CAAC,CAAC;AAIjC,QAAA,mBAAmB,GAAK,iCAAoB,CACvD,kBAAkB,EAClB;;IAAM,OAAA,2CAA2C,CAC7C,MAAA,MAAA,wCAAoB,aAApB,wCAAoB,uBAApB,wCAAoB,CAAE,MAAM,0CAAG,SAAkB,CAAC,mCAClD,SAAS,CAAC,QAAQ,CACrB,CAAA;CAAA,EACD,EAAE,aAAa,EAAE,SAAS,EAAE,CAC/B,qBAAC;AAEF;;;;;EAKE;AACF,SAAgB,2CAA2C,CACvD,YAAoB;IAGpB,IAAM,gBAAgB,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAElE,IAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,UAAA,QAAQ;QAC7C,OAAA,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACjD,mCAAgB,CAAC,QAAQ,CAAC,CAAC,iBAAiB,EAAE,KAAK,YAAY,CAAC,iBAAiB,EAAE;IADnF,CACmF,CACtF,CAAC;IAEF,IAAI,QAAQ,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,CAAC,QAAQ,EAAE;QAC/D,OAAO,2CAA2C,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;KAC1E;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAhBD,kGAgBC"}
|
6
lib/i18n/useKeycloakTranslation.d.ts
vendored
Normal file
6
lib/i18n/useKeycloakTranslation.d.ts
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
import { messages } from "./generated_messages/login";
|
||||||
|
import type { ReactNode } from "react";
|
||||||
|
export declare type MessageKey = keyof typeof messages["en"];
|
||||||
|
export declare function useKeycloakThemeTranslation(): {
|
||||||
|
t: (key: MessageKey, ...args: (string | undefined)[]) => ReactNode;
|
||||||
|
};
|
28
lib/i18n/useKeycloakTranslation.js
Normal file
28
lib/i18n/useKeycloakTranslation.js
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
exports.useKeycloakThemeTranslation = void 0;
|
||||||
|
var jsx_runtime_1 = require("react/jsx-runtime");
|
||||||
|
var useKeycloakLanguage_1 = require("./useKeycloakLanguage");
|
||||||
|
var login_1 = require("./generated_messages/login");
|
||||||
|
var powerhooks_1 = require("powerhooks");
|
||||||
|
function useKeycloakThemeTranslation() {
|
||||||
|
var keycloakLanguage = useKeycloakLanguage_1.useKeycloakLanguage().keycloakLanguage;
|
||||||
|
var t = powerhooks_1.useConstCallback(function (key) {
|
||||||
|
var _a;
|
||||||
|
var args = [];
|
||||||
|
for (var _i = 1; _i < arguments.length; _i++) {
|
||||||
|
args[_i - 1] = arguments[_i];
|
||||||
|
}
|
||||||
|
var out = (_a = login_1.messages[keycloakLanguage][key]) !== null && _a !== void 0 ? _a : login_1.messages["en"][key];
|
||||||
|
args.forEach(function (arg, i) {
|
||||||
|
if (arg === undefined) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
out = out.replace(new RegExp("\\{" + i + "\\}", "g"), arg);
|
||||||
|
});
|
||||||
|
return jsx_runtime_1.jsx("span", { className: key, dangerouslySetInnerHTML: { "__html": out } }, void 0);
|
||||||
|
});
|
||||||
|
return { t: t };
|
||||||
|
}
|
||||||
|
exports.useKeycloakThemeTranslation = useKeycloakThemeTranslation;
|
||||||
|
//# sourceMappingURL=useKeycloakTranslation.js.map
|
1
lib/i18n/useKeycloakTranslation.js.map
Normal file
1
lib/i18n/useKeycloakTranslation.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"useKeycloakTranslation.js","sourceRoot":"","sources":["../../src/lib/i18n/useKeycloakTranslation.tsx"],"names":[],"mappings":";;;;AACA,6DAA4D;AAC5D,oDAAsD;AACtD,yCAA8C;AAM9C,SAAgB,2BAA2B;IAE/B,IAAA,gBAAgB,GAAK,yCAAmB,EAAE,iBAA1B,CAA2B;IAEnD,IAAM,CAAC,GAAG,6BAAgB,CACtB,UAAC,GAAe;;QAAE,cAA+B;aAA/B,UAA+B,EAA/B,qBAA+B,EAA/B,IAA+B;YAA/B,6BAA+B;;QAE7C,IAAI,GAAG,GAAW,MAAA,gBAAQ,CAAC,gBAA+B,CAAC,CAAC,GAAG,CAAC,mCAAI,gBAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAExF,IAAI,CAAC,OAAO,CAAC,UAAC,GAAG,EAAE,CAAC;YAEhB,IAAI,GAAG,KAAK,SAAS,EAAE;gBACnB,OAAO;aACV;YAED,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,QAAM,CAAC,QAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QAE1D,CAAC,CAAC,CAAC;QAEH,OAAO,4BAAM,SAAS,EAAE,GAAG,EAAE,uBAAuB,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAI,CAAC;IAEhF,CAAC,CACJ,CAAC;IAEF,OAAO,EAAE,CAAC,GAAA,EAAE,CAAC;AAEjB,CAAC;AA1BD,kEA0BC"}
|
11
lib/index.d.ts
vendored
11
lib/index.d.ts
vendored
@ -1,7 +1,4 @@
|
|||||||
export * from "./kcContext";
|
export * from "./keycloakFtlValues";
|
||||||
export * from "./i18n/KcLanguageTag";
|
export * from "./i18n/useKeycloakLanguage";
|
||||||
export * from "./i18n/useKcLanguageTag";
|
export * from "./i18n/useKeycloakTranslation";
|
||||||
export * from "./i18n/useKcTranslation";
|
export * from "./i18n/getLanguageLabel";
|
||||||
export * from "./components/KcProperties";
|
|
||||||
export * from "./components/Login";
|
|
||||||
export * from "./components/Template";
|
|
||||||
|
11
lib/index.js
11
lib/index.js
@ -10,11 +10,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|||||||
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
||||||
};
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
__exportStar(require("./kcContext"), exports);
|
__exportStar(require("./keycloakFtlValues"), exports);
|
||||||
__exportStar(require("./i18n/KcLanguageTag"), exports);
|
__exportStar(require("./i18n/useKeycloakLanguage"), exports);
|
||||||
__exportStar(require("./i18n/useKcLanguageTag"), exports);
|
__exportStar(require("./i18n/useKeycloakTranslation"), exports);
|
||||||
__exportStar(require("./i18n/useKcTranslation"), exports);
|
__exportStar(require("./i18n/getLanguageLabel"), exports);
|
||||||
__exportStar(require("./components/KcProperties"), exports);
|
|
||||||
__exportStar(require("./components/Login"), exports);
|
|
||||||
__exportStar(require("./components/Template"), exports);
|
|
||||||
//# sourceMappingURL=index.js.map
|
//# sourceMappingURL=index.js.map
|
@ -1 +1 @@
|
|||||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA4B;AAE5B,uDAAqC;AACrC,0DAAwC;AACxC,0DAAwC;AAExC,4DAA0C;AAC1C,qDAAmC;AACnC,wDAAsC"}
|
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sDAAoC;AACpC,6DAA2C;AAC3C,gEAA8C;AAC9C,0DAAwC"}
|
@ -1,7 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
exports.kcContext = void 0;
|
|
||||||
var ftlValuesGlobalName_1 = require("../bin/build-keycloak-theme/ftlValuesGlobalName");
|
|
||||||
var id_1 = require("evt/tools/typeSafety/id");
|
|
||||||
exports.kcContext = id_1.id(window[ftlValuesGlobalName_1.ftlValuesGlobalName]);
|
|
||||||
//# sourceMappingURL=kcContext.js.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"kcContext.js","sourceRoot":"","sources":["../src/lib/kcContext.ts"],"names":[],"mappings":";;;AACA,uFAAsF;AAEtF,8CAA6C;AAoEhC,QAAA,SAAS,GAAG,OAAE,CAAyB,MAAc,CAAC,yCAAmB,CAAC,CAAC,CAAC"}
|
|
31
lib/kcContext.d.ts → lib/keycloakFtlValues.d.ts
vendored
31
lib/kcContext.d.ts → lib/keycloakFtlValues.d.ts
vendored
@ -1,29 +1,22 @@
|
|||||||
import type { generateFtlFilesCodeFactory } from "../bin/build-keycloak-theme/generateFtl";
|
import type { generateFtlFilesCodeFactory } from "../bin/build-keycloak-theme/generateFtl";
|
||||||
import type { KcLanguageTag } from "./i18n/KcLanguageTag";
|
import type { AvailableLanguages } from "./i18n/useKeycloakLanguage";
|
||||||
export declare type KcContext = {
|
export declare type KeycloakFtlValues = {
|
||||||
pageBasename: Parameters<ReturnType<typeof generateFtlFilesCodeFactory>["generateFtlFilesCode"]>[0]["pageBasename"];
|
pageBasename: Parameters<ReturnType<typeof generateFtlFilesCodeFactory>["generateFtlFilesCode"]>[0]["pageBasename"];
|
||||||
url: {
|
url: {
|
||||||
loginAction: string;
|
loginAction: string;
|
||||||
resourcesPath: string;
|
resourcesPath: string;
|
||||||
resourcesCommonPath: string;
|
resourcesCommonPath: string;
|
||||||
loginRestartFlowUrl: string;
|
loginRestartFlowUrl: string;
|
||||||
loginResetCredentialsUrl: string;
|
|
||||||
registrationUrl: string;
|
|
||||||
};
|
};
|
||||||
realm: {
|
realm: {
|
||||||
displayName?: string;
|
displayName?: string;
|
||||||
displayNameHtml?: string;
|
displayNameHtml?: string;
|
||||||
internationalizationEnabled: boolean;
|
internationalizationEnabled: boolean;
|
||||||
password: boolean;
|
|
||||||
loginWithEmailAllowed: boolean;
|
|
||||||
registrationEmailAsUsername: boolean;
|
|
||||||
rememberMe: boolean;
|
|
||||||
resetPasswordAllowed: boolean;
|
|
||||||
};
|
};
|
||||||
/** Undefined if !realm.internationalizationEnabled */
|
/** Undefined if !realm.internationalizationEnabled */
|
||||||
locale?: {
|
locale?: {
|
||||||
supported: {
|
supported: {
|
||||||
languageTag: KcLanguageTag;
|
languageTag: AvailableLanguages;
|
||||||
}[];
|
}[];
|
||||||
};
|
};
|
||||||
auth?: {
|
auth?: {
|
||||||
@ -31,7 +24,6 @@ export declare type KcContext = {
|
|||||||
showResetCredentials: boolean;
|
showResetCredentials: boolean;
|
||||||
showTryAnotherWayLink: boolean;
|
showTryAnotherWayLink: boolean;
|
||||||
attemptedUsername?: boolean;
|
attemptedUsername?: boolean;
|
||||||
selectedCredential?: string;
|
|
||||||
};
|
};
|
||||||
scripts: string[];
|
scripts: string[];
|
||||||
message?: {
|
message?: {
|
||||||
@ -39,20 +31,5 @@ export declare type KcContext = {
|
|||||||
summary: string;
|
summary: string;
|
||||||
};
|
};
|
||||||
isAppInitiatedAction: boolean;
|
isAppInitiatedAction: boolean;
|
||||||
social: {
|
|
||||||
displayInfo: boolean;
|
|
||||||
providers?: {
|
|
||||||
loginUrl: string;
|
|
||||||
alias: string;
|
|
||||||
providerId: string;
|
|
||||||
displayName: string;
|
|
||||||
}[];
|
|
||||||
};
|
|
||||||
usernameEditDisabled: boolean;
|
|
||||||
login: {
|
|
||||||
username?: string;
|
|
||||||
rememberMe: boolean;
|
|
||||||
};
|
|
||||||
registrationDisabled: boolean;
|
|
||||||
};
|
};
|
||||||
export declare const kcContext: KcContext | undefined;
|
export declare const keycloakPagesContext: KeycloakFtlValues | undefined;
|
9
lib/keycloakFtlValues.js
Normal file
9
lib/keycloakFtlValues.js
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
"use strict";
|
||||||
|
var _a;
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
exports.keycloakPagesContext = void 0;
|
||||||
|
var ftlValuesGlobalName_1 = require("../bin/build-keycloak-theme/ftlValuesGlobalName");
|
||||||
|
var id_1 = require("evt/tools/typeSafety/id");
|
||||||
|
exports.keycloakPagesContext = (_a = {}, _a[ftlValuesGlobalName_1.ftlValuesGlobalName] = id_1.id(window[ftlValuesGlobalName_1.ftlValuesGlobalName]), _a).keycloakPagesContext;
|
||||||
|
;
|
||||||
|
//# sourceMappingURL=keycloakFtlValues.js.map
|
1
lib/keycloakFtlValues.js.map
Normal file
1
lib/keycloakFtlValues.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"keycloakFtlValues.js","sourceRoot":"","sources":["../src/lib/keycloakFtlValues.ts"],"names":[],"mappings":";;;;AACA,uFAAsF;AAEtF,8CAA6C;AA8C9B,QAAA,oBAAoB,aAC7B,GAAC,yCAAmB,IAAG,OAAE,CAAiC,MAAc,CAAC,yCAAmB,CAAC,CAAC,2BAAG;AACvG,CAAC"}
|
@ -1,2 +0,0 @@
|
|||||||
import "minimal-polyfills/Object.fromEntries";
|
|
||||||
export declare function allPropertiesValuesToUndefined<T extends Record<string, unknown>>(obj: T): Record<keyof T, undefined>;
|
|
@ -1,29 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
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;
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
exports.allPropertiesValuesToUndefined = void 0;
|
|
||||||
require("minimal-polyfills/Object.fromEntries");
|
|
||||||
function allPropertiesValuesToUndefined(obj) {
|
|
||||||
return Object.fromEntries(Object.entries(obj)
|
|
||||||
.map(function (_a) {
|
|
||||||
var _b = __read(_a, 1), key = _b[0];
|
|
||||||
return [key, undefined];
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
exports.allPropertiesValuesToUndefined = allPropertiesValuesToUndefined;
|
|
||||||
//# sourceMappingURL=allPropertiesValuesToUndefined.js.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"allPropertiesValuesToUndefined.js","sourceRoot":"","sources":["../../src/lib/tools/allPropertiesValuesToUndefined.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAEA,gDAA8C;AAE9C,SAAgB,8BAA8B,CAAoC,GAAM;IACpF,OAAO,MAAM,CAAC,WAAW,CACrB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;SACd,GAAG,CAAC,UAAC,EAAK;YAAL,KAAA,aAAK,EAAJ,GAAG,QAAA;QAAM,OAAA,CAAC,GAAG,EAAE,SAAS,CAAC;IAAhB,CAAgB,CAAC,CACjC,CAAC;AACb,CAAC;AALD,wEAKC"}
|
|
59
package.json
59
package.json
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "keycloak-react-theming",
|
"name": "keycloak-react-theming",
|
||||||
"version": "0.0.26",
|
"version": "0.0.25",
|
||||||
"description": "Keycloak theme generator for Reacts app",
|
"description": "Keycloak theme generator for Reacts app",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@ -31,19 +31,17 @@
|
|||||||
"src/bin/tools/getProjectRoot.ts",
|
"src/bin/tools/getProjectRoot.ts",
|
||||||
"src/bin/tools/grant-exec-perms.ts",
|
"src/bin/tools/grant-exec-perms.ts",
|
||||||
"src/bin/tools/transformCodebase.ts",
|
"src/bin/tools/transformCodebase.ts",
|
||||||
"src/lib/components/KcProperties.ts",
|
"src/lib/LoginPage.tsx",
|
||||||
"src/lib/components/Login.tsx",
|
"src/lib/Template.tsx",
|
||||||
"src/lib/components/Template.tsx",
|
|
||||||
"src/lib/i18n/KcLanguageTag.ts",
|
|
||||||
"src/lib/i18n/generated_messages/account.ts",
|
"src/lib/i18n/generated_messages/account.ts",
|
||||||
"src/lib/i18n/generated_messages/admin.ts",
|
"src/lib/i18n/generated_messages/admin.ts",
|
||||||
"src/lib/i18n/generated_messages/email.ts",
|
"src/lib/i18n/generated_messages/email.ts",
|
||||||
"src/lib/i18n/generated_messages/login.ts",
|
"src/lib/i18n/generated_messages/login.ts",
|
||||||
"src/lib/i18n/useKcLanguageTag.ts",
|
"src/lib/i18n/getLanguageLabel.ts",
|
||||||
"src/lib/i18n/useKcTranslation.tsx",
|
"src/lib/i18n/useKeycloakLanguage.ts",
|
||||||
|
"src/lib/i18n/useKeycloakTranslation.tsx",
|
||||||
"src/lib/index.ts",
|
"src/lib/index.ts",
|
||||||
"src/lib/kcContext.ts",
|
"src/lib/keycloakFtlValues.ts",
|
||||||
"src/lib/tools/allPropertiesValuesToUndefined.ts",
|
|
||||||
"src/lib/tools/appendLinkInHead.ts",
|
"src/lib/tools/appendLinkInHead.ts",
|
||||||
"src/lib/tools/appendScriptInHead.ts",
|
"src/lib/tools/appendScriptInHead.ts",
|
||||||
"bin/build-keycloak-theme/ftlValuesGlobalName.d.ts",
|
"bin/build-keycloak-theme/ftlValuesGlobalName.d.ts",
|
||||||
@ -90,18 +88,12 @@
|
|||||||
"bin/tools/transformCodebase.d.ts",
|
"bin/tools/transformCodebase.d.ts",
|
||||||
"bin/tools/transformCodebase.js",
|
"bin/tools/transformCodebase.js",
|
||||||
"bin/tools/transformCodebase.js.map",
|
"bin/tools/transformCodebase.js.map",
|
||||||
"lib/components/KcProperties.d.ts",
|
"lib/LoginPage.d.ts",
|
||||||
"lib/components/KcProperties.js",
|
"lib/LoginPage.js",
|
||||||
"lib/components/KcProperties.js.map",
|
"lib/LoginPage.js.map",
|
||||||
"lib/components/Login.d.ts",
|
"lib/Template.d.ts",
|
||||||
"lib/components/Login.js",
|
"lib/Template.js",
|
||||||
"lib/components/Login.js.map",
|
"lib/Template.js.map",
|
||||||
"lib/components/Template.d.ts",
|
|
||||||
"lib/components/Template.js",
|
|
||||||
"lib/components/Template.js.map",
|
|
||||||
"lib/i18n/KcLanguageTag.d.ts",
|
|
||||||
"lib/i18n/KcLanguageTag.js",
|
|
||||||
"lib/i18n/KcLanguageTag.js.map",
|
|
||||||
"lib/i18n/generated_messages/account.d.ts",
|
"lib/i18n/generated_messages/account.d.ts",
|
||||||
"lib/i18n/generated_messages/account.js",
|
"lib/i18n/generated_messages/account.js",
|
||||||
"lib/i18n/generated_messages/account.js.map",
|
"lib/i18n/generated_messages/account.js.map",
|
||||||
@ -114,21 +106,21 @@
|
|||||||
"lib/i18n/generated_messages/login.d.ts",
|
"lib/i18n/generated_messages/login.d.ts",
|
||||||
"lib/i18n/generated_messages/login.js",
|
"lib/i18n/generated_messages/login.js",
|
||||||
"lib/i18n/generated_messages/login.js.map",
|
"lib/i18n/generated_messages/login.js.map",
|
||||||
"lib/i18n/useKcLanguageTag.d.ts",
|
"lib/i18n/getLanguageLabel.d.ts",
|
||||||
"lib/i18n/useKcLanguageTag.js",
|
"lib/i18n/getLanguageLabel.js",
|
||||||
"lib/i18n/useKcLanguageTag.js.map",
|
"lib/i18n/getLanguageLabel.js.map",
|
||||||
"lib/i18n/useKcTranslation.d.ts",
|
"lib/i18n/useKeycloakLanguage.d.ts",
|
||||||
"lib/i18n/useKcTranslation.js",
|
"lib/i18n/useKeycloakLanguage.js",
|
||||||
"lib/i18n/useKcTranslation.js.map",
|
"lib/i18n/useKeycloakLanguage.js.map",
|
||||||
|
"lib/i18n/useKeycloakTranslation.d.ts",
|
||||||
|
"lib/i18n/useKeycloakTranslation.js",
|
||||||
|
"lib/i18n/useKeycloakTranslation.js.map",
|
||||||
"lib/index.d.ts",
|
"lib/index.d.ts",
|
||||||
"lib/index.js",
|
"lib/index.js",
|
||||||
"lib/index.js.map",
|
"lib/index.js.map",
|
||||||
"lib/kcContext.d.ts",
|
"lib/keycloakFtlValues.d.ts",
|
||||||
"lib/kcContext.js",
|
"lib/keycloakFtlValues.js",
|
||||||
"lib/kcContext.js.map",
|
"lib/keycloakFtlValues.js.map",
|
||||||
"lib/tools/allPropertiesValuesToUndefined.d.ts",
|
|
||||||
"lib/tools/allPropertiesValuesToUndefined.js",
|
|
||||||
"lib/tools/allPropertiesValuesToUndefined.js.map",
|
|
||||||
"lib/tools/appendLinkInHead.d.ts",
|
"lib/tools/appendLinkInHead.d.ts",
|
||||||
"lib/tools/appendLinkInHead.js",
|
"lib/tools/appendLinkInHead.js",
|
||||||
"lib/tools/appendLinkInHead.js.map",
|
"lib/tools/appendLinkInHead.js.map",
|
||||||
@ -160,7 +152,6 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"cheerio": "^1.0.0-rc.5",
|
"cheerio": "^1.0.0-rc.5",
|
||||||
"evt": "^1.9.12",
|
"evt": "^1.9.12",
|
||||||
"minimal-polyfills": "^2.1.6",
|
|
||||||
"powerhooks": "^0.0.14",
|
"powerhooks": "^0.0.14",
|
||||||
"tss-react": "^0.0.9"
|
"tss-react": "^0.0.9"
|
||||||
}
|
}
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
|
|
||||||
export const ftlValuesGlobalName = "kcContext";
|
export const ftlValuesGlobalName = "keycloakPagesContext";
|
@ -4,19 +4,12 @@
|
|||||||
"loginAction": "${url.loginAction}",
|
"loginAction": "${url.loginAction}",
|
||||||
"resourcesPath": "${url.resourcesPath}",
|
"resourcesPath": "${url.resourcesPath}",
|
||||||
"resourcesCommonPath": "${url.resourcesCommonPath}",
|
"resourcesCommonPath": "${url.resourcesCommonPath}",
|
||||||
"loginRestartFlowUrl": "${url.loginRestartFlowUrl}",
|
"loginRestartFlowUrl": "${url.loginRestartFlowUrl}"
|
||||||
"loginResetCredentialsUrl": "${url.loginResetCredentialsUrl}",
|
|
||||||
"registrationUrl": "${url.registrationUrl}"
|
|
||||||
},
|
},
|
||||||
"realm": {
|
"realm": {
|
||||||
"displayName": "${realm.displayName!''}" || undefined,
|
"displayName": "${realm.displayName!''}" || undefined,
|
||||||
"displayNameHtml": "${realm.displayNameHtml!''}" || undefined,
|
"displayNameHtml": "${realm.displayNameHtml!''}" || undefined,
|
||||||
"internationalizationEnabled": ${realm.internationalizationEnabled?c},
|
"internationalizationEnabled": ${realm.internationalizationEnabled?c}
|
||||||
"password": ${realm.password?c},
|
|
||||||
"loginWithEmailAllowed": ${realm.loginWithEmailAllowed?c},
|
|
||||||
"registrationEmailAsUsername": ${realm.registrationEmailAsUsername?c},
|
|
||||||
"rememberMe": ${realm.rememberMe?c},
|
|
||||||
"resetPasswordAllowed": ${realm.resetPasswordAllowed?c}
|
|
||||||
},
|
},
|
||||||
"locale": (function (){
|
"locale": (function (){
|
||||||
|
|
||||||
@ -61,7 +54,6 @@
|
|||||||
"showUsername": ${auth.showUsername()?c},
|
"showUsername": ${auth.showUsername()?c},
|
||||||
"showResetCredentials": ${auth.showResetCredentials()?c},
|
"showResetCredentials": ${auth.showResetCredentials()?c},
|
||||||
"showTryAnotherWayLink": ${auth.showTryAnotherWayLink()?c}
|
"showTryAnotherWayLink": ${auth.showTryAnotherWayLink()?c}
|
||||||
"selectedCredential": "${auth.selectedCredential!''}" || undefined
|
|
||||||
};
|
};
|
||||||
|
|
||||||
<#if auth.showUsername() && !auth.showResetCredentials()>
|
<#if auth.showUsername() && !auth.showResetCredentials()>
|
||||||
@ -87,7 +79,7 @@
|
|||||||
|
|
||||||
<#if scripts??>
|
<#if scripts??>
|
||||||
<#list scripts as script>
|
<#list scripts as script>
|
||||||
out.push("${script}");
|
out.push("${script}");
|
||||||
</#list>
|
</#list>
|
||||||
</#if>
|
</#if>
|
||||||
|
|
||||||
@ -115,59 +107,7 @@
|
|||||||
</#if>
|
</#if>
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
})(),
|
})()
|
||||||
"social": {
|
|
||||||
"displayInfo": ${social.displayInfo?c},
|
|
||||||
"providers": (()=>{
|
|
||||||
|
|
||||||
<#if social.providers??>
|
|
||||||
|
|
||||||
var out= [];
|
|
||||||
|
|
||||||
<#list social.providers as p>
|
|
||||||
out.push({
|
|
||||||
"loginUrl": "${p.loginUrl}",
|
|
||||||
"alias": "${p.alias}",
|
|
||||||
"providerId": "${p.providerId}",
|
|
||||||
"displayName": "${p.displayName}"
|
|
||||||
});
|
|
||||||
</#list>
|
|
||||||
|
|
||||||
return out;
|
|
||||||
|
|
||||||
</#if>
|
|
||||||
|
|
||||||
return undefined;
|
|
||||||
|
|
||||||
})()
|
|
||||||
},
|
|
||||||
"usernameEditDisabled": (function () {
|
|
||||||
|
|
||||||
<#if usernameEditDisabled??>
|
|
||||||
return true;
|
|
||||||
</#if>
|
|
||||||
return false;
|
|
||||||
|
|
||||||
})(),
|
|
||||||
"login": {
|
|
||||||
"username": "${login.username!''}" || undefined,
|
|
||||||
"rememberMe": (function (){
|
|
||||||
|
|
||||||
<#if login.rememberMe??>
|
|
||||||
return true;
|
|
||||||
</#if>
|
|
||||||
return false;
|
|
||||||
|
|
||||||
|
|
||||||
})()
|
|
||||||
},
|
|
||||||
"registrationDisabled": (function (){
|
|
||||||
|
|
||||||
<#if registrationDisabled??>
|
|
||||||
return true;
|
|
||||||
</#if>
|
|
||||||
return false;
|
|
||||||
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
@ -14,6 +14,8 @@ export function downloadAndUnzip(
|
|||||||
|
|
||||||
fs.mkdirSync(destDirPath, { "recursive": true });
|
fs.mkdirSync(destDirPath, { "recursive": true });
|
||||||
|
|
||||||
|
console.log({ url, destDirPath });
|
||||||
|
|
||||||
[
|
[
|
||||||
`wget ${url}`,
|
`wget ${url}`,
|
||||||
...["unzip", "rm"].map(prg => `${prg} ${pathBasename(url)}`),
|
...["unzip", "rm"].map(prg => `${prg} ${pathBasename(url)}`),
|
||||||
|
31
src/lib/LoginPage.tsx
Normal file
31
src/lib/LoginPage.tsx
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
|
||||||
|
/*
|
||||||
|
import { useState, memo } from "react";
|
||||||
|
import { KcProperties, Template } from "./Template";
|
||||||
|
import { assert } from "evt/tools/typeSafety/assert";
|
||||||
|
import { keycloakPagesContext } from "./keycloakFtlValues";
|
||||||
|
|
||||||
|
export type Props = {
|
||||||
|
properties: KcProperties;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const LoginPage = memo((props: Props)=>{
|
||||||
|
|
||||||
|
|
||||||
|
const [{ }] = useState(() => {
|
||||||
|
|
||||||
|
assert(keycloakPagesContext !== undefined);
|
||||||
|
|
||||||
|
return keycloakPagesContext;
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Template/>
|
||||||
|
);
|
||||||
|
|
||||||
|
});
|
||||||
|
*/
|
||||||
|
|
||||||
|
export {};
|
@ -1,36 +1,64 @@
|
|||||||
|
|
||||||
import { useState, useEffect, memo } from "react";
|
|
||||||
import type { ReactNode } from "react";
|
import type { ReactNode } from "react";
|
||||||
import { useKcTranslation } from "../i18n/useKcTranslation";
|
import { useState, useEffect } from "react";
|
||||||
import { kcContext } from "../kcContext";
|
import { useKeycloakThemeTranslation } from "./i18n/useKeycloakTranslation";
|
||||||
|
import { keycloakPagesContext } from "./keycloakFtlValues";
|
||||||
import { assert } from "evt/tools/typeSafety/assert";
|
import { assert } from "evt/tools/typeSafety/assert";
|
||||||
import { cx } from "tss-react";
|
import { cx } from "tss-react";
|
||||||
import { useKcLanguageTag } from "../i18n/useKcLanguageTag";
|
import { useKeycloakLanguage, AvailableLanguages } from "./i18n/useKeycloakLanguage";
|
||||||
import type { KcLanguageTag } from "../i18n/KcLanguageTag";
|
import { getLanguageLabel } from "./i18n/getLanguageLabel";
|
||||||
import { getKcLanguageTagLabel } from "../i18n/KcLanguageTag";
|
|
||||||
import { useCallbackFactory } from "powerhooks";
|
import { useCallbackFactory } from "powerhooks";
|
||||||
import { appendLinkInHead } from "../tools/appendLinkInHead";
|
import { appendLinkInHead } from "./tools/appendLinkInHead";
|
||||||
import { appendScriptInHead } from "../tools/appendScriptInHead";
|
import { appendScriptInHead } from "./tools/appendScriptInHead";
|
||||||
import { join as pathJoin } from "path";
|
import { join as pathJoin } from "path";
|
||||||
import { useConstCallback } from "powerhooks";
|
import { useConstCallback } from "powerhooks";
|
||||||
import type { KcTemplateProperties } from "./KcProperties";
|
|
||||||
import { defaultKcTemplateProperties } from "./KcProperties";
|
|
||||||
|
|
||||||
export type TemplateProps = {
|
type KcClasses<T extends string> = { [key in T]?: string[] | string };
|
||||||
kcProperties: KcTemplateProperties;
|
|
||||||
|
export type KcProperties = {
|
||||||
|
stylesCommon?: string[];
|
||||||
|
styles?: string[];
|
||||||
|
scripts?: string[];
|
||||||
|
} & KcClasses<
|
||||||
|
"kcLoginClass" |
|
||||||
|
"kcHeaderClass" |
|
||||||
|
"kcHeaderWrapperClass" |
|
||||||
|
"kcFormCardClass" |
|
||||||
|
"kcFormCardAccountClass" |
|
||||||
|
"kcFormHeaderClass" |
|
||||||
|
"kcLocaleWrapperClass" |
|
||||||
|
"kcContentWrapperClass" |
|
||||||
|
"kcLabelWrapperClass" |
|
||||||
|
"kcContentWrapperClass" |
|
||||||
|
"kcLabelWrapperClass" |
|
||||||
|
"kcFormGroupClass" |
|
||||||
|
"kcResetFlowIcon" |
|
||||||
|
"kcResetFlowIcon" |
|
||||||
|
"kcFeedbackSuccessIcon" |
|
||||||
|
"kcFeedbackWarningIcon" |
|
||||||
|
"kcFeedbackErrorIcon" |
|
||||||
|
"kcFeedbackInfoIcon" |
|
||||||
|
"kcContentWrapperClass" |
|
||||||
|
"kcFormSocialAccountContentClass" |
|
||||||
|
"kcFormSocialAccountClass" |
|
||||||
|
"kcSignUpClass" |
|
||||||
|
"kcInfoAreaWrapperClass"
|
||||||
|
>;
|
||||||
|
|
||||||
|
export type Props = {
|
||||||
displayInfo?: boolean;
|
displayInfo?: boolean;
|
||||||
displayMessage?: boolean;
|
displayMessage: boolean;
|
||||||
displayRequiredFields?: boolean;
|
displayRequiredFields: boolean;
|
||||||
displayWide?: boolean;
|
displayWide: boolean;
|
||||||
showAnotherWayIfPresent?: boolean;
|
showAnotherWayIfPresent: boolean;
|
||||||
|
properties?: KcProperties;
|
||||||
headerNode: ReactNode;
|
headerNode: ReactNode;
|
||||||
showUsernameNode: ReactNode;
|
showUsernameNode: ReactNode;
|
||||||
formNode: ReactNode;
|
formNode: ReactNode;
|
||||||
displayInfoNode: ReactNode;
|
displayInfoNode: ReactNode;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export function Template(props: Props) {
|
||||||
export const Template = memo((props: TemplateProps) => {
|
|
||||||
|
|
||||||
const {
|
const {
|
||||||
displayInfo = false,
|
displayInfo = false,
|
||||||
@ -38,22 +66,20 @@ export const Template = memo((props: TemplateProps) => {
|
|||||||
displayRequiredFields = false,
|
displayRequiredFields = false,
|
||||||
displayWide = false,
|
displayWide = false,
|
||||||
showAnotherWayIfPresent = true,
|
showAnotherWayIfPresent = true,
|
||||||
kcProperties = {},
|
properties = {},
|
||||||
headerNode,
|
headerNode,
|
||||||
showUsernameNode,
|
showUsernameNode,
|
||||||
formNode,
|
formNode,
|
||||||
displayInfoNode
|
displayInfoNode
|
||||||
} = props;
|
} = props;
|
||||||
|
|
||||||
const { t } = useKcTranslation();
|
const { t } = useKeycloakThemeTranslation();
|
||||||
|
|
||||||
Object.assign(kcProperties, defaultKcTemplateProperties);
|
const { keycloakLanguage, setKeycloakLanguage } = useKeycloakLanguage();
|
||||||
|
|
||||||
const { kcLanguageTag, setKcLanguageTag } = useKcLanguageTag();
|
|
||||||
|
|
||||||
const onChangeLanguageClickFactory = useCallbackFactory(
|
const onChangeLanguageClickFactory = useCallbackFactory(
|
||||||
([languageTag]: [KcLanguageTag]) =>
|
([languageTag]: [AvailableLanguages]) =>
|
||||||
setKcLanguageTag(languageTag)
|
setKeycloakLanguage(languageTag)
|
||||||
);
|
);
|
||||||
|
|
||||||
const onTryAnotherWayClick = useConstCallback(() => {
|
const onTryAnotherWayClick = useConstCallback(() => {
|
||||||
@ -64,28 +90,31 @@ export const Template = memo((props: TemplateProps) => {
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const [{ realm, locale, auth, url, message, isAppInitiatedAction }] = useState(() => (
|
const [{ realm, locale, auth, url, message, isAppInitiatedAction }] = useState(() => {
|
||||||
assert(kcContext !== undefined, "App is not currently being served by KeyCloak"),
|
|
||||||
kcContext
|
assert(keycloakPagesContext !== undefined);
|
||||||
));
|
|
||||||
|
return keycloakPagesContext;
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|
||||||
kcProperties.stylesCommon?.forEach(
|
properties.stylesCommon?.forEach(
|
||||||
relativePath =>
|
relativePath =>
|
||||||
appendLinkInHead(
|
appendLinkInHead(
|
||||||
{ "href": pathJoin(url.resourcesCommonPath, relativePath) }
|
{ "href": pathJoin(url.resourcesCommonPath, relativePath) }
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
kcProperties.styles?.forEach(
|
properties.styles?.forEach(
|
||||||
relativePath =>
|
relativePath =>
|
||||||
appendLinkInHead(
|
appendLinkInHead(
|
||||||
{ "href": pathJoin(url.resourcesPath, relativePath) }
|
{ "href": pathJoin(url.resourcesPath, relativePath) }
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
kcProperties.scripts?.forEach(
|
properties.scripts?.forEach(
|
||||||
relativePath =>
|
relativePath =>
|
||||||
appendScriptInHead(
|
appendScriptInHead(
|
||||||
{ "src": pathJoin(url.resourcesPath, relativePath) }
|
{ "src": pathJoin(url.resourcesPath, relativePath) }
|
||||||
@ -96,16 +125,16 @@ export const Template = memo((props: TemplateProps) => {
|
|||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={cx(kcProperties.kcLoginClass)}>
|
<div className={cx(properties.kcLoginClass)}>
|
||||||
|
|
||||||
<div id="kc-header" className={cx(kcProperties.kcHeaderClass)}>
|
<div id="kc-header" className={cx(properties.kcHeaderClass)}>
|
||||||
<div id="kc-header-wrapper" className={cx(kcProperties.kcHeaderWrapperClass)}>
|
<div id="kc-header-wrapper" className={cx(properties.kcHeaderWrapperClass)}>
|
||||||
{t("loginTitleHtml", realm.displayNameHtml)}
|
{t("loginTitleHtml", realm.displayNameHtml)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className={cx("kcFormCardClass", displayWide && kcProperties.kcFormCardAccountClass)}>
|
<div className={cx("kcFormCardClass", displayWide && properties.kcFormCardAccountClass)}>
|
||||||
<header className={cx(kcProperties.kcFormHeaderClass)}>
|
<header className={cx(properties.kcFormHeaderClass)}>
|
||||||
{
|
{
|
||||||
(
|
(
|
||||||
realm.internationalizationEnabled &&
|
realm.internationalizationEnabled &&
|
||||||
@ -113,10 +142,10 @@ export const Template = memo((props: TemplateProps) => {
|
|||||||
locale.supported.length > 1
|
locale.supported.length > 1
|
||||||
) &&
|
) &&
|
||||||
<div id="kc-locale">
|
<div id="kc-locale">
|
||||||
<div id="kc-locale-wrapper" className={cx(kcProperties.kcLocaleWrapperClass)}>
|
<div id="kc-locale-wrapper" className={cx(properties.kcLocaleWrapperClass)}>
|
||||||
<div className="kc-dropdown" id="kc-locale-dropdown">
|
<div className="kc-dropdown" id="kc-locale-dropdown">
|
||||||
<a href="#" id="kc-current-locale-link">
|
<a href="#" id="kc-current-locale-link">
|
||||||
{getKcLanguageTagLabel(kcLanguageTag)}
|
{getLanguageLabel(keycloakLanguage)}
|
||||||
</a>
|
</a>
|
||||||
<ul>
|
<ul>
|
||||||
{
|
{
|
||||||
@ -124,7 +153,7 @@ export const Template = memo((props: TemplateProps) => {
|
|||||||
({ languageTag }) =>
|
({ languageTag }) =>
|
||||||
<li className="kc-dropdown-item">
|
<li className="kc-dropdown-item">
|
||||||
<a href="#" onClick={onChangeLanguageClickFactory(languageTag)}>
|
<a href="#" onClick={onChangeLanguageClickFactory(languageTag)}>
|
||||||
{getKcLanguageTagLabel(languageTag)}
|
{getLanguageLabel(languageTag)}
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
@ -147,8 +176,8 @@ export const Template = memo((props: TemplateProps) => {
|
|||||||
displayRequiredFields ?
|
displayRequiredFields ?
|
||||||
(
|
(
|
||||||
|
|
||||||
<div className={cx(kcProperties.kcContentWrapperClass)}>
|
<div className={cx(properties.kcContentWrapperClass)}>
|
||||||
<div className={cx(kcProperties.kcLabelWrapperClass, "subtitle")}>
|
<div className={cx(properties.kcLabelWrapperClass, "subtitle")}>
|
||||||
<span className="subtitle">
|
<span className="subtitle">
|
||||||
<span className="required">*</span>
|
<span className="required">*</span>
|
||||||
{t("requiredFields")}
|
{t("requiredFields")}
|
||||||
@ -168,18 +197,18 @@ export const Template = memo((props: TemplateProps) => {
|
|||||||
)
|
)
|
||||||
) : (
|
) : (
|
||||||
displayRequiredFields ? (
|
displayRequiredFields ? (
|
||||||
<div className={cx(kcProperties.kcContentWrapperClass)}>
|
<div className={cx(properties.kcContentWrapperClass)}>
|
||||||
<div className={cx(kcProperties.kcLabelWrapperClass, "subtitle")}>
|
<div className={cx(properties.kcLabelWrapperClass, "subtitle")}>
|
||||||
<span className="subtitle"><span className="required">*</span> {t("requiredFields")}</span>
|
<span className="subtitle"><span className="required">*</span> {t("requiredFields")}</span>
|
||||||
</div>
|
</div>
|
||||||
<div className="col-md-10">
|
<div className="col-md-10">
|
||||||
{showUsernameNode}
|
{showUsernameNode}
|
||||||
<div className={cx(kcProperties.kcFormGroupClass)}>
|
<div className={cx(properties.kcFormGroupClass)}>
|
||||||
<div id="kc-username">
|
<div id="kc-username">
|
||||||
<label id="kc-attempted-username">{auth?.attemptedUsername}</label>
|
<label id="kc-attempted-username">{auth?.attemptedUsername}</label>
|
||||||
<a id="reset-login" href={url.loginRestartFlowUrl}>
|
<a id="reset-login" href={url.loginRestartFlowUrl}>
|
||||||
<div className="kc-login-tooltip">
|
<div className="kc-login-tooltip">
|
||||||
<i className={cx(kcProperties.kcResetFlowIcon)}></i>
|
<i className={cx(properties.kcResetFlowIcon)}></i>
|
||||||
<span className="kc-tooltip-text">{t("restartLoginTooltip")}</span>
|
<span className="kc-tooltip-text">{t("restartLoginTooltip")}</span>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
@ -190,12 +219,12 @@ export const Template = memo((props: TemplateProps) => {
|
|||||||
) : (
|
) : (
|
||||||
<>
|
<>
|
||||||
{showUsernameNode}
|
{showUsernameNode}
|
||||||
<div className={cx(kcProperties.kcFormGroupClass)}>
|
<div className={cx(properties.kcFormGroupClass)}>
|
||||||
<div id="kc-username">
|
<div id="kc-username">
|
||||||
<label id="kc-attempted-username">{auth?.attemptedUsername}</label>
|
<label id="kc-attempted-username">{auth?.attemptedUsername}</label>
|
||||||
<a id="reset-login" href={url.loginRestartFlowUrl}>
|
<a id="reset-login" href={url.loginRestartFlowUrl}>
|
||||||
<div className="kc-login-tooltip">
|
<div className="kc-login-tooltip">
|
||||||
<i className={cx(kcProperties.kcResetFlowIcon)}></i>
|
<i className={cx(properties.kcResetFlowIcon)}></i>
|
||||||
<span className="kc-tooltip-text">{t("restartLoginTooltip")}</span>
|
<span className="kc-tooltip-text">{t("restartLoginTooltip")}</span>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
@ -219,10 +248,10 @@ export const Template = memo((props: TemplateProps) => {
|
|||||||
)
|
)
|
||||||
) &&
|
) &&
|
||||||
<div className={cx("alert", `alert-${message.type}`)}>
|
<div className={cx("alert", `alert-${message.type}`)}>
|
||||||
{message.type === "success" && <span className={cx(kcProperties.kcFeedbackSuccessIcon)}></span>}
|
{message.type === "success" && <span className={cx(properties.kcFeedbackSuccessIcon)}></span>}
|
||||||
{message.type === "warning" && <span className={cx(kcProperties.kcFeedbackWarningIcon)}></span>}
|
{message.type === "warning" && <span className={cx(properties.kcFeedbackWarningIcon)}></span>}
|
||||||
{message.type === "error" && <span className={cx(kcProperties.kcFeedbackErrorIcon)}></span>}
|
{message.type === "error" && <span className={cx(properties.kcFeedbackErrorIcon)}></span>}
|
||||||
{message.type === "info" && <span className={cx(kcProperties.kcFeedbackInfoIcon)}></span>}
|
{message.type === "info" && <span className={cx(properties.kcFeedbackInfoIcon)}></span>}
|
||||||
<span className="kc-feedback-text">{message.summary}</span>
|
<span className="kc-feedback-text">{message.summary}</span>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
@ -234,9 +263,9 @@ export const Template = memo((props: TemplateProps) => {
|
|||||||
showAnotherWayIfPresent
|
showAnotherWayIfPresent
|
||||||
) &&
|
) &&
|
||||||
|
|
||||||
<form id="kc-select-try-another-way-form" action={url.loginAction} method="post" className={cx(displayWide && kcProperties.kcContentWrapperClass)} >
|
<form id="kc-select-try-another-way-form" action={url.loginAction} method="post" className={cx(displayWide && properties.kcContentWrapperClass)} >
|
||||||
<div className={cx(displayWide && [kcProperties.kcFormSocialAccountContentClass, kcProperties.kcFormSocialAccountClass])} >
|
<div className={cx(displayWide && [properties.kcFormSocialAccountContentClass, properties.kcFormSocialAccountClass])} >
|
||||||
<div className={cx(kcProperties.kcFormGroupClass)}>
|
<div className={cx(properties.kcFormGroupClass)}>
|
||||||
<input type="hidden" name="tryAnotherWay" value="on" />
|
<input type="hidden" name="tryAnotherWay" value="on" />
|
||||||
<a href="#" id="try-another-way" onClick={onTryAnotherWayClick}>{t("doTryAnotherWay")}</a>
|
<a href="#" id="try-another-way" onClick={onTryAnotherWayClick}>{t("doTryAnotherWay")}</a>
|
||||||
</div>
|
</div>
|
||||||
@ -246,15 +275,15 @@ export const Template = memo((props: TemplateProps) => {
|
|||||||
{
|
{
|
||||||
displayInfo &&
|
displayInfo &&
|
||||||
|
|
||||||
<div id="kc-info" className={cx(kcProperties.kcSignUpClass)}>
|
<div id="kc-info" className={cx(properties.kcSignUpClass)}>
|
||||||
<div id="kc-info-wrapper" className={cx(kcProperties.kcInfoAreaWrapperClass)}>
|
<div id="kc-info-wrapper" className={cx(properties.kcInfoAreaWrapperClass)}>
|
||||||
{displayInfoNode}
|
{displayInfoNode}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
</div>
|
</div >
|
||||||
</div>
|
</div >
|
||||||
</div>
|
</div >
|
||||||
</div>
|
</div >
|
||||||
);
|
);
|
||||||
});
|
}
|
@ -1,190 +0,0 @@
|
|||||||
|
|
||||||
import { allPropertiesValuesToUndefined } from "../tools/allPropertiesValuesToUndefined";
|
|
||||||
|
|
||||||
/** Class names can be provided as an array or separated by whitespace */
|
|
||||||
export type KcClasses<CssClasses extends string> = { [key in CssClasses]?: string[] | string };
|
|
||||||
|
|
||||||
export type KcTemplateCssClasses =
|
|
||||||
"kcLoginClass" |
|
|
||||||
"kcHeaderClass" |
|
|
||||||
"kcHeaderWrapperClass" |
|
|
||||||
"kcFormCardClass" |
|
|
||||||
"kcFormCardAccountClass" |
|
|
||||||
"kcFormHeaderClass" |
|
|
||||||
"kcLocaleWrapperClass" |
|
|
||||||
"kcContentWrapperClass" |
|
|
||||||
"kcLabelWrapperClass" |
|
|
||||||
"kcContentWrapperClass" |
|
|
||||||
"kcLabelWrapperClass" |
|
|
||||||
"kcFormGroupClass" |
|
|
||||||
"kcResetFlowIcon" |
|
|
||||||
"kcResetFlowIcon" |
|
|
||||||
"kcFeedbackSuccessIcon" |
|
|
||||||
"kcFeedbackWarningIcon" |
|
|
||||||
"kcFeedbackErrorIcon" |
|
|
||||||
"kcFeedbackInfoIcon" |
|
|
||||||
"kcContentWrapperClass" |
|
|
||||||
"kcFormSocialAccountContentClass" |
|
|
||||||
"kcFormSocialAccountClass" |
|
|
||||||
"kcSignUpClass" |
|
|
||||||
"kcInfoAreaWrapperClass"
|
|
||||||
;
|
|
||||||
|
|
||||||
export type KcTemplateProperties = {
|
|
||||||
stylesCommon?: string[];
|
|
||||||
styles?: string[];
|
|
||||||
scripts?: string[];
|
|
||||||
} & KcClasses<KcTemplateCssClasses>;
|
|
||||||
|
|
||||||
export const defaultKcTemplateProperties: KcTemplateProperties = {
|
|
||||||
"styles": ["css/login.css"],
|
|
||||||
"stylesCommon": [
|
|
||||||
...[".min.css", "-additions.min.css"]
|
|
||||||
.map(end => `node_modules/patternfly/dist/css/patternfly${end}`),
|
|
||||||
"lib/zocial/zocial.css"
|
|
||||||
],
|
|
||||||
"kcLoginClass": "login-pf-page",
|
|
||||||
"kcContentWrapperClass": "row",
|
|
||||||
"kcHeaderClass": "login-pf-page-header",
|
|
||||||
"kcFormCardClass": "card-pf",
|
|
||||||
"kcFormCardAccountClass": "login-pf-accounts",
|
|
||||||
"kcFormSocialAccountClass": "login-pf-social-section",
|
|
||||||
"kcFormSocialAccountContentClass": "col-xs-12 col-sm-6",
|
|
||||||
"kcFormHeaderClass": "login-pf-header",
|
|
||||||
"kcFeedbackErrorIcon": "pficon pficon-error-circle-o",
|
|
||||||
"kcFeedbackWarningIcon": "pficon pficon-warning-triangle-o",
|
|
||||||
"kcFeedbackSuccessIcon": "pficon pficon-ok",
|
|
||||||
"kcFeedbackInfoIcon": "pficon pficon-info",
|
|
||||||
"kcResetFlowIcon": "pficon pficon-arrow fa-2x",
|
|
||||||
"kcFormGroupClass": "form-group",
|
|
||||||
"kcLabelWrapperClass": "col-xs-12 col-sm-12 col-md-12 col-lg-12",
|
|
||||||
"kcSignUpClass": "login-pf-sighup"
|
|
||||||
};
|
|
||||||
|
|
||||||
/** Tu use if you don't want any default */
|
|
||||||
export const allClearKcTemplateProperties =
|
|
||||||
allPropertiesValuesToUndefined(defaultKcTemplateProperties);
|
|
||||||
|
|
||||||
export type KcPagesProperties = KcClasses<
|
|
||||||
KcTemplateCssClasses |
|
|
||||||
"kcLogoLink" |
|
|
||||||
"kcLogoClass" |
|
|
||||||
"kcContainerClass" |
|
|
||||||
"kcContentClass" |
|
|
||||||
"kcFeedbackAreaClass" |
|
|
||||||
"kcLocaleClass" |
|
|
||||||
"kcAlertIconClasserror" |
|
|
||||||
"kcFormAreaClass" |
|
|
||||||
"kcFormSocialAccountListClass" |
|
|
||||||
"kcFormSocialAccountDoubleListClass" |
|
|
||||||
"kcFormSocialAccountListLinkClass" |
|
|
||||||
"kcWebAuthnKeyIcon" |
|
|
||||||
"kcFormClass" |
|
|
||||||
"kcFormGroupErrorClass" |
|
|
||||||
"kcLabelClass" |
|
|
||||||
"kcInputClass" |
|
|
||||||
"kcInputWrapperClass" |
|
|
||||||
"kcFormOptionsClass" |
|
|
||||||
"kcFormButtonsClass" |
|
|
||||||
"kcFormSettingClass" |
|
|
||||||
"kcTextareaClass" |
|
|
||||||
"kcInfoAreaClass" |
|
|
||||||
"kcButtonClass" |
|
|
||||||
"kcButtonPrimaryClass" |
|
|
||||||
"kcButtonDefaultClass" |
|
|
||||||
"kcButtonLargeClass" |
|
|
||||||
"kcButtonBlockClass" |
|
|
||||||
"kcInputLargeClass" |
|
|
||||||
"kcSrOnlyClass" |
|
|
||||||
"kcSelectAuthListClass" |
|
|
||||||
"kcSelectAuthListItemClass" |
|
|
||||||
"kcSelectAuthListItemInfoClass" |
|
|
||||||
"kcSelectAuthListItemLeftClass" |
|
|
||||||
"kcSelectAuthListItemBodyClass" |
|
|
||||||
"kcSelectAuthListItemDescriptionClass" |
|
|
||||||
"kcSelectAuthListItemHeadingClass" |
|
|
||||||
"kcSelectAuthListItemHelpTextClass" |
|
|
||||||
"kcAuthenticatorDefaultClass" |
|
|
||||||
"kcAuthenticatorPasswordClass" |
|
|
||||||
"kcAuthenticatorOTPClass" |
|
|
||||||
"kcAuthenticatorWebAuthnClass" |
|
|
||||||
"kcAuthenticatorWebAuthnPasswordlessClass" |
|
|
||||||
"kcSelectOTPListClass" |
|
|
||||||
"kcSelectOTPListItemClass" |
|
|
||||||
"kcAuthenticatorOtpCircleClass" |
|
|
||||||
"kcSelectOTPItemHeadingClass" |
|
|
||||||
"kcFormOptionsWrapperClass"
|
|
||||||
>;
|
|
||||||
|
|
||||||
export const defaultKcPagesProperties: KcPagesProperties = {
|
|
||||||
...defaultKcTemplateProperties,
|
|
||||||
"kcLogoLink": "http://www.keycloak.org",
|
|
||||||
"kcLogoClass": "login-pf-brand",
|
|
||||||
"kcContainerClass": "container-fluid",
|
|
||||||
"kcContentClass": "col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3 col-lg-6 col-lg-offset-3",
|
|
||||||
"kcFeedbackAreaClass": "col-md-12",
|
|
||||||
"kcLocaleClass": "col-xs-12 col-sm-1",
|
|
||||||
"kcAlertIconClasserror": "pficon pficon-error-circle-o",
|
|
||||||
|
|
||||||
"kcFormAreaClass": "col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-2 col-lg-8 col-lg-offset-2",
|
|
||||||
"kcFormSocialAccountListClass": "login-pf-social list-unstyled login-pf-social-all",
|
|
||||||
"kcFormSocialAccountDoubleListClass": "login-pf-social-double-col",
|
|
||||||
"kcFormSocialAccountListLinkClass": "login-pf-social-link",
|
|
||||||
"kcWebAuthnKeyIcon": "pficon pficon-key",
|
|
||||||
|
|
||||||
"kcFormClass": "form-horizontal",
|
|
||||||
"kcFormGroupErrorClass": "has-error",
|
|
||||||
"kcLabelClass": "control-label",
|
|
||||||
"kcInputClass": "form-control",
|
|
||||||
"kcInputWrapperClass": "col-xs-12 col-sm-12 col-md-12 col-lg-12",
|
|
||||||
"kcFormOptionsClass": "col-xs-12 col-sm-12 col-md-12 col-lg-12",
|
|
||||||
"kcFormButtonsClass": "col-xs-12 col-sm-12 col-md-12 col-lg-12",
|
|
||||||
"kcFormSettingClass": "login-pf-settings",
|
|
||||||
"kcTextareaClass": "form-control",
|
|
||||||
|
|
||||||
"kcInfoAreaClass": "col-xs-12 col-sm-4 col-md-4 col-lg-5 details",
|
|
||||||
|
|
||||||
// css classes for form buttons main class used for all buttons
|
|
||||||
"kcButtonClass": "btn",
|
|
||||||
// classes defining priority of the button - primary or default (there is typically only one priority button for the form)
|
|
||||||
"kcButtonPrimaryClass": "btn-primary",
|
|
||||||
"kcButtonDefaultClass": "btn-default",
|
|
||||||
// classes defining size of the button
|
|
||||||
"kcButtonLargeClass": "btn-lg",
|
|
||||||
"kcButtonBlockClass": "btn-block",
|
|
||||||
|
|
||||||
// css classes for input
|
|
||||||
"kcInputLargeClass": "input-lg",
|
|
||||||
|
|
||||||
// css classes for form accessability
|
|
||||||
"kcSrOnlyClass": "sr-only",
|
|
||||||
|
|
||||||
// css classes for select-authenticator form
|
|
||||||
"kcSelectAuthListClass": "list-group list-view-pf",
|
|
||||||
"kcSelectAuthListItemClass": "list-group-item list-view-pf-stacked",
|
|
||||||
"kcSelectAuthListItemInfoClass": "list-view-pf-main-info",
|
|
||||||
"kcSelectAuthListItemLeftClass": "list-view-pf-left",
|
|
||||||
"kcSelectAuthListItemBodyClass": "list-view-pf-body",
|
|
||||||
"kcSelectAuthListItemDescriptionClass": "list-view-pf-description",
|
|
||||||
"kcSelectAuthListItemHeadingClass": "list-group-item-heading",
|
|
||||||
"kcSelectAuthListItemHelpTextClass": "list-group-item-text",
|
|
||||||
|
|
||||||
// css classes for the authenticators
|
|
||||||
"kcAuthenticatorDefaultClass": "fa list-view-pf-icon-lg",
|
|
||||||
"kcAuthenticatorPasswordClass": "fa fa-unlock list-view-pf-icon-lg",
|
|
||||||
"kcAuthenticatorOTPClass": "fa fa-mobile list-view-pf-icon-lg",
|
|
||||||
"kcAuthenticatorWebAuthnClass": "fa fa-key list-view-pf-icon-lg",
|
|
||||||
"kcAuthenticatorWebAuthnPasswordlessClass": "fa fa-key list-view-pf-icon-lg",
|
|
||||||
|
|
||||||
//css classes for the OTP Login Form
|
|
||||||
"kcSelectOTPListClass": "card-pf card-pf-view card-pf-view-select card-pf-view-single-select",
|
|
||||||
"kcSelectOTPListItemClass": "card-pf-body card-pf-top-element",
|
|
||||||
"kcAuthenticatorOtpCircleClass": "fa fa-mobile card-pf-icon-circle",
|
|
||||||
"kcSelectOTPItemHeadingClass": "card-pf-title text-center"
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** Tu use if you don't want any default */
|
|
||||||
export const allClearKcLoginPageProperties =
|
|
||||||
allPropertiesValuesToUndefined(defaultKcPagesProperties);
|
|
@ -1,171 +0,0 @@
|
|||||||
|
|
||||||
import { useState, memo } from "react";
|
|
||||||
import { Template } from "./Template";
|
|
||||||
import type { KcPagesProperties } from "./KcProperties";
|
|
||||||
import { defaultKcPagesProperties } from "./KcProperties";
|
|
||||||
import { assert } from "evt/tools/typeSafety/assert";
|
|
||||||
import { kcContext } from "../kcContext";
|
|
||||||
import { useKcTranslation } from "../i18n/useKcTranslation";
|
|
||||||
import { cx } from "tss-react";
|
|
||||||
import { useConstCallback } from "powerhooks";
|
|
||||||
|
|
||||||
export type LoginProps = {
|
|
||||||
kcProperties?: KcPagesProperties;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const Login = memo((props: LoginProps) => {
|
|
||||||
|
|
||||||
const { kcProperties = {} } = props;
|
|
||||||
|
|
||||||
const { t, tStr } = useKcTranslation();
|
|
||||||
|
|
||||||
Object.assign(kcProperties, defaultKcPagesProperties);
|
|
||||||
|
|
||||||
const [{
|
|
||||||
social, realm, url,
|
|
||||||
usernameEditDisabled, login,
|
|
||||||
auth, registrationDisabled
|
|
||||||
}] = useState(() => (
|
|
||||||
assert(
|
|
||||||
kcContext !== undefined,
|
|
||||||
"App is currently being served by keycloak"
|
|
||||||
),
|
|
||||||
kcContext
|
|
||||||
));
|
|
||||||
|
|
||||||
const [isLoginButtonDisabled, setIsLoginButtonDisabled] = useState(false);
|
|
||||||
|
|
||||||
const onSubmit = useConstCallback(() =>
|
|
||||||
(setIsLoginButtonDisabled(true), true)
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Template
|
|
||||||
displayInfo={social.displayInfo}
|
|
||||||
displayWide={realm.password && social.providers !== undefined}
|
|
||||||
kcProperties={kcProperties}
|
|
||||||
headerNode={t("doLogIn")}
|
|
||||||
showUsernameNode={null}
|
|
||||||
formNode={
|
|
||||||
<div
|
|
||||||
id="kc-form"
|
|
||||||
className={cx(realm.password && social.providers !== undefined && kcProperties.kcContentWrapperClass)}
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
id="kc-form-wrapper"
|
|
||||||
className={cx(realm.password && social.providers && [kcProperties.kcFormSocialAccountContentClass, kcProperties.kcFormSocialAccountClass])}
|
|
||||||
>
|
|
||||||
{
|
|
||||||
realm.password &&
|
|
||||||
(
|
|
||||||
<form id="kc-form-login" onSubmit={onSubmit} action={url.loginAction} method="post">
|
|
||||||
<div className={cx(kcProperties.kcFormGroupClass)}>
|
|
||||||
<label htmlFor="username" className={cx(kcProperties.kcLabelClass)}>
|
|
||||||
{
|
|
||||||
!realm.loginWithEmailAllowed ?
|
|
||||||
t("username")
|
|
||||||
:
|
|
||||||
(
|
|
||||||
!realm.registrationEmailAsUsername ?
|
|
||||||
t("usernameOrEmail") :
|
|
||||||
t("email")
|
|
||||||
)
|
|
||||||
}
|
|
||||||
</label>
|
|
||||||
<input
|
|
||||||
tabIndex={1}
|
|
||||||
id="username"
|
|
||||||
className={cx(kcProperties.kcInputClass)}
|
|
||||||
name="username"
|
|
||||||
value={login.username ?? ''}
|
|
||||||
type="text"
|
|
||||||
{...(usernameEditDisabled ? { "disabled": true } : { "autofocus": true, "autocomplete": "off" })}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div className={cx(kcProperties.kcFormGroupClass)}>
|
|
||||||
<label htmlFor="password" className={cx(kcProperties.kcLabelClass)}>
|
|
||||||
{t("password")}
|
|
||||||
</label>
|
|
||||||
<input tabIndex={2} id="password" className={cx(kcProperties.kcInputClass)} name="password" type="password" autoComplete="off" />
|
|
||||||
</div>
|
|
||||||
<div className={cx(kcProperties.kcFormGroupClass, kcProperties.kcFormSettingClass)}>
|
|
||||||
<div id="kc-form-options">
|
|
||||||
{
|
|
||||||
(
|
|
||||||
realm.rememberMe &&
|
|
||||||
!usernameEditDisabled
|
|
||||||
) &&
|
|
||||||
<div className="checkbox">
|
|
||||||
<label>
|
|
||||||
<input tabIndex={3} id="rememberMe" name="rememberMe" type="checkbox" {...(login.rememberMe ? { "checked": true } : {})}> {t("rememberMe")}</input>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
}
|
|
||||||
</div>
|
|
||||||
<div className={cx(kcProperties.kcFormOptionsWrapperClass)}>
|
|
||||||
{
|
|
||||||
realm.resetPasswordAllowed &&
|
|
||||||
<span>
|
|
||||||
<a tabIndex={5} href={url.loginResetCredentialsUrl}>{t("doForgotPassword")}</a>
|
|
||||||
</span>
|
|
||||||
}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div id="kc-form-buttons" className={cx(kcProperties.kcFormGroupClass)}>
|
|
||||||
<input
|
|
||||||
type="hidden"
|
|
||||||
id="id-hidden-input"
|
|
||||||
name="credentialId"
|
|
||||||
{...(auth?.selectedCredential !== undefined ? { "value": auth.selectedCredential } : {})}
|
|
||||||
/>
|
|
||||||
<input
|
|
||||||
tabIndex={4}
|
|
||||||
className={cx(kcProperties.kcButtonClass, kcProperties.kcButtonPrimaryClass, kcProperties.kcButtonBlockClass, kcProperties.kcButtonLargeClass)} name="login" id="kc-login" type="submit"
|
|
||||||
value={tStr("doLogIn")}
|
|
||||||
disabled={isLoginButtonDisabled}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
</div>
|
|
||||||
{
|
|
||||||
(realm.password && social.providers !== undefined) &&
|
|
||||||
<div id="kc-social-providers" className={cx(kcProperties.kcFormSocialAccountContentClass, kcProperties.kcFormSocialAccountClass)}>
|
|
||||||
<ul className={cx(kcProperties.kcFormSocialAccountListClass, social.providers.length > 4 && kcProperties.kcFormSocialAccountDoubleListClass)}>
|
|
||||||
{
|
|
||||||
social.providers.map(p =>
|
|
||||||
<li className={cx(kcProperties.kcFormSocialAccountListLinkClass)}>
|
|
||||||
<a href={p.loginUrl} id={`zocial-${p.alias}`} className={cx("zocial", p.providerId)}>
|
|
||||||
<span>{p.displayName}</span>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
}
|
|
||||||
</div>
|
|
||||||
}
|
|
||||||
displayInfoNode={
|
|
||||||
(
|
|
||||||
realm.password &&
|
|
||||||
realm.resetPasswordAllowed &&
|
|
||||||
!registrationDisabled
|
|
||||||
) &&
|
|
||||||
<div id="kc-registration">
|
|
||||||
<span>
|
|
||||||
{t("noAccount")}
|
|
||||||
<a tabIndex={6} href={url.registrationUrl}>
|
|
||||||
{t("doRegister")}
|
|
||||||
</a>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
@ -1,17 +1,7 @@
|
|||||||
|
|
||||||
import { objectKeys } from "evt/tools/typeSafety/objectKeys";
|
import type { AvailableLanguages } from "./useKeycloakLanguage";
|
||||||
import { messages } from "./generated_messages/login";
|
|
||||||
|
|
||||||
export type KcLanguageTag = keyof typeof messages;
|
export function getLanguageLabel(language: AvailableLanguages): LanguageLabel {
|
||||||
|
|
||||||
export type LanguageLabel =
|
|
||||||
/* spell-checker: disable */
|
|
||||||
"Deutsch" | "Norsk" | "Русский" | "Svenska" | "Português (Brasil)" | "Lietuvių" |
|
|
||||||
"English" | "Italiano" | "Français" | "中文简体" | "Español" | "Čeština" | "日本語" |
|
|
||||||
"Slovenčina" | "Polish" | "Català" | "Nederlands" | "tr";
|
|
||||||
/* spell-checker: enable */
|
|
||||||
|
|
||||||
export function getKcLanguageTagLabel(language: KcLanguageTag): LanguageLabel {
|
|
||||||
|
|
||||||
switch (language) {
|
switch (language) {
|
||||||
/* spell-checker: disable */
|
/* spell-checker: disable */
|
||||||
@ -41,29 +31,9 @@ export function getKcLanguageTagLabel(language: KcLanguageTag): LanguageLabel {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const availableLanguages = objectKeys(messages);
|
export type LanguageLabel =
|
||||||
|
/* spell-checker: disable */
|
||||||
/**
|
"Deutsch" | "Norsk" | "Русский" | "Svenska" | "Português (Brasil)" | "Lietuvių" |
|
||||||
* Pass in "fr-FR" or "français" for example, it will return the AvailableLanguage
|
"English" | "Italiano" | "Français" | "中文简体" | "Español" | "Čeština" | "日本語" |
|
||||||
* it corresponds to: "fr".
|
"Slovenčina" | "Polish" | "Català" | "Nederlands" | "tr";
|
||||||
* If there is no reasonable match it's guessed from navigator.language.
|
/* spell-checker: enable */
|
||||||
* If still no matches "en" is returned.
|
|
||||||
*/
|
|
||||||
export function getBestMatchAmongKcLanguageTag(
|
|
||||||
languageLike: string
|
|
||||||
): KcLanguageTag {
|
|
||||||
|
|
||||||
const iso2LanguageLike = languageLike.split("-")[0].toLowerCase();
|
|
||||||
|
|
||||||
const language = availableLanguages.find(language =>
|
|
||||||
language.toLowerCase().includes(iso2LanguageLike) ||
|
|
||||||
getKcLanguageTagLabel(language).toLocaleLowerCase() === languageLike.toLocaleLowerCase()
|
|
||||||
);
|
|
||||||
|
|
||||||
if (language === undefined && languageLike !== navigator.language) {
|
|
||||||
return getBestMatchAmongKcLanguageTag(navigator.language);
|
|
||||||
}
|
|
||||||
|
|
||||||
return "en";
|
|
||||||
}
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
|||||||
|
|
||||||
import { createUseGlobalState } from "powerhooks";
|
|
||||||
import { kcContext } from "../kcContext";
|
|
||||||
import { getBestMatchAmongKcLanguageTag } from "./KcLanguageTag";
|
|
||||||
import { assert } from "evt/tools/typeSafety/assert";
|
|
||||||
|
|
||||||
export const { useKcLanguageTag } = createUseGlobalState(
|
|
||||||
"kcLanguageTag",
|
|
||||||
() => getBestMatchAmongKcLanguageTag((
|
|
||||||
assert(kcContext !== undefined, "Page not served by KeyCloak"),
|
|
||||||
kcContext.locale?.["current" as never] ??
|
|
||||||
navigator.language
|
|
||||||
)),
|
|
||||||
{ "persistance": "cookies" }
|
|
||||||
);
|
|
@ -1,43 +0,0 @@
|
|||||||
|
|
||||||
import { useKcLanguageTag } from "./useKcLanguageTag";
|
|
||||||
import { messages } from "./generated_messages/login";
|
|
||||||
import { useConstCallback } from "powerhooks";
|
|
||||||
import type { ReactNode } from "react";
|
|
||||||
import { id } from "evt/tools/typeSafety/id";
|
|
||||||
|
|
||||||
export type MessageKey = keyof typeof messages["en"];
|
|
||||||
|
|
||||||
export function useKcTranslation() {
|
|
||||||
|
|
||||||
const { kcLanguageTag } = useKcLanguageTag();
|
|
||||||
|
|
||||||
const tStr = useConstCallback(
|
|
||||||
(key: MessageKey, ...args: (string | undefined)[]): string => {
|
|
||||||
|
|
||||||
let str: string = messages[kcLanguageTag as any as "en"][key] ?? messages["en"][key];
|
|
||||||
|
|
||||||
args.forEach((arg, i) => {
|
|
||||||
|
|
||||||
if (arg === undefined) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
str = str.replace(new RegExp(`\\{${i}\\}`, "g"), arg);
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
return str;
|
|
||||||
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
const t = useConstCallback(
|
|
||||||
id<(...args: Parameters<typeof tStr>) => ReactNode>(
|
|
||||||
(key, ...args) =>
|
|
||||||
<span className={key} dangerouslySetInnerHTML={{ "__html": tStr(key, ...args) }} />
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
return { t, tStr };
|
|
||||||
|
|
||||||
}
|
|
44
src/lib/i18n/useKeycloakLanguage.ts
Normal file
44
src/lib/i18n/useKeycloakLanguage.ts
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
|
||||||
|
import { createUseGlobalState } from "powerhooks";
|
||||||
|
import { messages } from "./generated_messages/login";
|
||||||
|
import { objectKeys } from "evt/tools/typeSafety/objectKeys";
|
||||||
|
import { getLanguageLabel } from "./getLanguageLabel";
|
||||||
|
import { keycloakPagesContext } from "../keycloakFtlValues";
|
||||||
|
|
||||||
|
const availableLanguages = objectKeys(messages);
|
||||||
|
|
||||||
|
export type AvailableLanguages = typeof availableLanguages[number];
|
||||||
|
|
||||||
|
export const { useKeycloakLanguage } = createUseGlobalState(
|
||||||
|
"keycloakLanguage",
|
||||||
|
() => getBestMatchAmongKeycloakAvailableLanguages(
|
||||||
|
keycloakPagesContext?.locale?.["current" as never] ??
|
||||||
|
navigator.language
|
||||||
|
),
|
||||||
|
{ "persistance": "cookies" }
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pass in "fr-FR" or "français" for example, it will return the AvailableLanguage
|
||||||
|
* it corresponds to: "fr".
|
||||||
|
* If there is no reasonable match it's guessed from navigator.language.
|
||||||
|
* If still no matches "en" is returned.
|
||||||
|
*/
|
||||||
|
export function getBestMatchAmongKeycloakAvailableLanguages(
|
||||||
|
languageLike: string
|
||||||
|
): AvailableLanguages {
|
||||||
|
|
||||||
|
const iso2LanguageLike = languageLike.split("-")[0].toLowerCase();
|
||||||
|
|
||||||
|
const language = availableLanguages.find(language =>
|
||||||
|
language.toLowerCase().includes(iso2LanguageLike) ||
|
||||||
|
getLanguageLabel(language).toLocaleLowerCase() === languageLike.toLocaleLowerCase()
|
||||||
|
);
|
||||||
|
|
||||||
|
if (language === undefined && languageLike !== navigator.language) {
|
||||||
|
return getBestMatchAmongKeycloakAvailableLanguages(navigator.language);
|
||||||
|
}
|
||||||
|
|
||||||
|
return "en";
|
||||||
|
}
|
||||||
|
|
36
src/lib/i18n/useKeycloakTranslation.tsx
Normal file
36
src/lib/i18n/useKeycloakTranslation.tsx
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
|
||||||
|
import { useKeycloakLanguage } from "./useKeycloakLanguage";
|
||||||
|
import { messages } from "./generated_messages/login";
|
||||||
|
import { useConstCallback } from "powerhooks";
|
||||||
|
import type { ReactNode } from "react";
|
||||||
|
|
||||||
|
export type MessageKey = keyof typeof messages["en"]
|
||||||
|
|
||||||
|
|
||||||
|
export function useKeycloakThemeTranslation() {
|
||||||
|
|
||||||
|
const { keycloakLanguage } = useKeycloakLanguage();
|
||||||
|
|
||||||
|
const t = useConstCallback(
|
||||||
|
(key: MessageKey, ...args: (string | undefined)[]): ReactNode => {
|
||||||
|
|
||||||
|
let out: string = messages[keycloakLanguage as any as "en"][key] ?? messages["en"][key];
|
||||||
|
|
||||||
|
args.forEach((arg, i) => {
|
||||||
|
|
||||||
|
if (arg === undefined) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
out = out.replace(new RegExp(`\\{${i}\\}`, "g"), arg);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
return <span className={key} dangerouslySetInnerHTML={{ "__html": out }} />;
|
||||||
|
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
return { t };
|
||||||
|
|
||||||
|
}
|
@ -1,9 +1,4 @@
|
|||||||
export * from "./kcContext";
|
export * from "./keycloakFtlValues";
|
||||||
|
export * from "./i18n/useKeycloakLanguage";
|
||||||
export * from "./i18n/KcLanguageTag";
|
export * from "./i18n/useKeycloakTranslation";
|
||||||
export * from "./i18n/useKcLanguageTag";
|
export * from "./i18n/getLanguageLabel";
|
||||||
export * from "./i18n/useKcTranslation";
|
|
||||||
|
|
||||||
export * from "./components/KcProperties";
|
|
||||||
export * from "./components/Login";
|
|
||||||
export * from "./components/Template";
|
|
@ -2,34 +2,28 @@
|
|||||||
import { ftlValuesGlobalName } from "../bin/build-keycloak-theme/ftlValuesGlobalName";
|
import { ftlValuesGlobalName } from "../bin/build-keycloak-theme/ftlValuesGlobalName";
|
||||||
import type { generateFtlFilesCodeFactory } from "../bin/build-keycloak-theme/generateFtl";
|
import type { generateFtlFilesCodeFactory } from "../bin/build-keycloak-theme/generateFtl";
|
||||||
import { id } from "evt/tools/typeSafety/id";
|
import { id } from "evt/tools/typeSafety/id";
|
||||||
import type { KcLanguageTag } from "./i18n/KcLanguageTag";
|
//import type { LanguageLabel } from "./i18n/getLanguageLabel";
|
||||||
|
import type { AvailableLanguages } from "./i18n/useKeycloakLanguage";
|
||||||
|
|
||||||
|
|
||||||
export type KcContext = {
|
export type KeycloakFtlValues = {
|
||||||
pageBasename: Parameters<ReturnType<typeof generateFtlFilesCodeFactory>["generateFtlFilesCode"]>[0]["pageBasename"];
|
pageBasename: Parameters<ReturnType<typeof generateFtlFilesCodeFactory>["generateFtlFilesCode"]>[0]["pageBasename"];
|
||||||
url: {
|
url: {
|
||||||
loginAction: string;
|
loginAction: string;
|
||||||
resourcesPath: string;
|
resourcesPath: string;
|
||||||
resourcesCommonPath: string;
|
resourcesCommonPath: string;
|
||||||
loginRestartFlowUrl: string;
|
loginRestartFlowUrl: string;
|
||||||
loginResetCredentialsUrl: string;
|
},
|
||||||
registrationUrl: string;
|
|
||||||
};
|
|
||||||
realm: {
|
realm: {
|
||||||
displayName?: string;
|
displayName?: string;
|
||||||
displayNameHtml?: string;
|
displayNameHtml?: string;
|
||||||
internationalizationEnabled: boolean;
|
internationalizationEnabled: boolean;
|
||||||
password: boolean;
|
},
|
||||||
loginWithEmailAllowed: boolean;
|
|
||||||
registrationEmailAsUsername: boolean;
|
|
||||||
rememberMe: boolean;
|
|
||||||
resetPasswordAllowed: boolean;
|
|
||||||
};
|
|
||||||
/** Undefined if !realm.internationalizationEnabled */
|
/** Undefined if !realm.internationalizationEnabled */
|
||||||
locale?: {
|
locale?: {
|
||||||
supported: {
|
supported: {
|
||||||
//url: string;
|
//url: string;
|
||||||
languageTag: KcLanguageTag;
|
languageTag: AvailableLanguages;
|
||||||
/** Is determined by languageTag. Ex: languageTag === "en" => label === "English"
|
/** Is determined by languageTag. Ex: languageTag === "en" => label === "English"
|
||||||
* or getLanguageLabel(languageTag) === label
|
* or getLanguageLabel(languageTag) === label
|
||||||
*/
|
*/
|
||||||
@ -44,29 +38,15 @@ export type KcContext = {
|
|||||||
showResetCredentials: boolean;
|
showResetCredentials: boolean;
|
||||||
showTryAnotherWayLink: boolean;
|
showTryAnotherWayLink: boolean;
|
||||||
attemptedUsername?: boolean;
|
attemptedUsername?: boolean;
|
||||||
selectedCredential?: string;
|
},
|
||||||
};
|
|
||||||
scripts: string[];
|
scripts: string[];
|
||||||
message?: {
|
message?: {
|
||||||
type: "success" | "warning" | "error" | "info";
|
type: "success" | "warning" | "error" | "info";
|
||||||
summary: string;
|
summary: string;
|
||||||
};
|
},
|
||||||
isAppInitiatedAction: boolean;
|
isAppInitiatedAction: boolean;
|
||||||
social: {
|
|
||||||
displayInfo: boolean;
|
|
||||||
providers?: {
|
|
||||||
loginUrl: string;
|
|
||||||
alias: string;
|
|
||||||
providerId: string;
|
|
||||||
displayName: string;
|
|
||||||
}[]
|
|
||||||
};
|
|
||||||
usernameEditDisabled: boolean;
|
|
||||||
login: {
|
|
||||||
username?: string;
|
|
||||||
rememberMe: boolean;
|
|
||||||
};
|
|
||||||
registrationDisabled: boolean;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export const kcContext = id<KcContext | undefined>((window as any)[ftlValuesGlobalName]);
|
export const { keycloakPagesContext } =
|
||||||
|
{ [ftlValuesGlobalName]: id<KeycloakFtlValues | undefined>((window as any)[ftlValuesGlobalName]) };
|
||||||
|
;
|
@ -1,10 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
import "minimal-polyfills/Object.fromEntries";
|
|
||||||
|
|
||||||
export function allPropertiesValuesToUndefined<T extends Record<string, unknown>>(obj: T): Record<keyof T, undefined> {
|
|
||||||
return Object.fromEntries(
|
|
||||||
Object.entries(obj)
|
|
||||||
.map(([key]) => [key, undefined])
|
|
||||||
) as any;
|
|
||||||
}
|
|
@ -2,7 +2,7 @@
|
|||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"module": "CommonJS",
|
"module": "CommonJS",
|
||||||
"target": "es5",
|
"target": "es5",
|
||||||
"lib": ["es2015", "DOM", "ES2019.Object"],
|
"lib": ["es2015", "DOM"],
|
||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
"declaration": true,
|
"declaration": true,
|
||||||
"outDir": "./dist",
|
"outDir": "./dist",
|
||||||
|
@ -131,11 +131,6 @@
|
|||||||
"signature": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
|
"signature": "c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8",
|
||||||
"affectsGlobalScope": true
|
"affectsGlobalScope": true
|
||||||
},
|
},
|
||||||
"../node_modules/typescript/lib/lib.es2019.object.d.ts": {
|
|
||||||
"version": "6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de",
|
|
||||||
"signature": "6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de",
|
|
||||||
"affectsGlobalScope": true
|
|
||||||
},
|
|
||||||
"../node_modules/typescript/lib/lib.es2020.bigint.d.ts": {
|
"../node_modules/typescript/lib/lib.es2020.bigint.d.ts": {
|
||||||
"version": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
|
"version": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
|
||||||
"signature": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
|
"signature": "7b5a10e3c897fabece5a51aa85b4111727d7adb53c2734b5d37230ff96802a09",
|
||||||
@ -282,13 +277,13 @@
|
|||||||
"affectsGlobalScope": false
|
"affectsGlobalScope": false
|
||||||
},
|
},
|
||||||
"../src/bin/tools/downloadAndUnzip.ts": {
|
"../src/bin/tools/downloadAndUnzip.ts": {
|
||||||
"version": "b89489224a2f4b7172c50f8e3f667a5e71d119b3f01113a8885448fe6fd73ed8",
|
"version": "8fa092b1883d7c37682d5cedac52cf42a8bde33adf0c6329c75c20fa94cb9203",
|
||||||
"signature": "4fdfe9418b5a6a5b03a719ab67e03a3a393129c129ec1d01e5cb06d8b5ce7104",
|
"signature": "4fdfe9418b5a6a5b03a719ab67e03a3a393129c129ec1d01e5cb06d8b5ce7104",
|
||||||
"affectsGlobalScope": false
|
"affectsGlobalScope": false
|
||||||
},
|
},
|
||||||
"../src/bin/build-keycloak-theme/ftlValuesGlobalName.ts": {
|
"../src/bin/build-keycloak-theme/ftlValuesGlobalName.ts": {
|
||||||
"version": "f7cca39a25069f9eade9ecd19429d68d46f33981ae10801cd9ebc5686194737a",
|
"version": "e2234455ea2b73e12ffae5c6b694829c57ed0187fdce2b56ae8f84af109ff7ab",
|
||||||
"signature": "f433ba7538e542cf157faa77f7ed388de070cab33fd699e16cd94c833d87226b",
|
"signature": "a6a3e3f3938990c0ac7cfd0199654d42675100d82eee03da4ed5a065a2b8534d",
|
||||||
"affectsGlobalScope": false
|
"affectsGlobalScope": false
|
||||||
},
|
},
|
||||||
"../src/bin/build-keycloak-theme/generateKeycloakThemeResources.ts": {
|
"../src/bin/build-keycloak-theme/generateKeycloakThemeResources.ts": {
|
||||||
@ -331,24 +326,9 @@
|
|||||||
"signature": "8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881",
|
"signature": "8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881",
|
||||||
"affectsGlobalScope": false
|
"affectsGlobalScope": false
|
||||||
},
|
},
|
||||||
"../node_modules/evt/tools/typeSafety/id.d.ts": {
|
"../src/lib/LoginPage.tsx": {
|
||||||
"version": "9b4cbbc5d76a0e78a053503ed153a83f48799f1519e3aef593cb0987700704b8",
|
"version": "6e1a9037c36fb289e5b26e099be9a6cf5904e4685b32634eb37024bc77104cde",
|
||||||
"signature": "9b4cbbc5d76a0e78a053503ed153a83f48799f1519e3aef593cb0987700704b8",
|
"signature": "8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881",
|
||||||
"affectsGlobalScope": false
|
|
||||||
},
|
|
||||||
"../src/lib/i18n/generated_messages/login.ts": {
|
|
||||||
"version": "d0ef29558975516f5df6f56981b3f1ec3582d3535050134421c953999ac9c187",
|
|
||||||
"signature": "132a7be6c96260e3171ea263eeb06a1117d9d97851afcc0c351258e37d39bee5",
|
|
||||||
"affectsGlobalScope": false
|
|
||||||
},
|
|
||||||
"../src/lib/i18n/KcLanguageTag.ts": {
|
|
||||||
"version": "fb5d82e0a3d72698401c823e8c672f8bb10e3fbc7b4f1e22b0c0ef9d72b62d71",
|
|
||||||
"signature": "32a51753658af81ebb7e4139a1085f625e18bd0cb67d1027f30481967d7c69fd",
|
|
||||||
"affectsGlobalScope": false
|
|
||||||
},
|
|
||||||
"../src/lib/kcContext.ts": {
|
|
||||||
"version": "970a58f22d4aacd16cf980064551817b9f3b11dc71a07021aedddf3d6f630374",
|
|
||||||
"signature": "7aa2e369c6d81452ce8bf8fe3d7e136b7151e85036b897cb015db462af96d08d",
|
|
||||||
"affectsGlobalScope": false
|
"affectsGlobalScope": false
|
||||||
},
|
},
|
||||||
"../node_modules/powerhooks/useArrayDiff.d.ts": {
|
"../node_modules/powerhooks/useArrayDiff.d.ts": {
|
||||||
@ -421,36 +401,41 @@
|
|||||||
"signature": "842cf60645647486885d3d7c146e23e976782458b50ade9116c01334132dbe60",
|
"signature": "842cf60645647486885d3d7c146e23e976782458b50ade9116c01334132dbe60",
|
||||||
"affectsGlobalScope": false
|
"affectsGlobalScope": false
|
||||||
},
|
},
|
||||||
|
"../src/lib/i18n/generated_messages/login.ts": {
|
||||||
|
"version": "d0ef29558975516f5df6f56981b3f1ec3582d3535050134421c953999ac9c187",
|
||||||
|
"signature": "132a7be6c96260e3171ea263eeb06a1117d9d97851afcc0c351258e37d39bee5",
|
||||||
|
"affectsGlobalScope": false
|
||||||
|
},
|
||||||
|
"../src/lib/i18n/getLanguageLabel.ts": {
|
||||||
|
"version": "ee36fe1507770f9b227839cd107746a4d65d5bb057b994d6b76f03b4308b87fd",
|
||||||
|
"signature": "2b6288ae572cb54ba4bb9306904c6c58a4b874f833829cb40eb12a3777c8ce28",
|
||||||
|
"affectsGlobalScope": false
|
||||||
|
},
|
||||||
|
"../node_modules/evt/tools/typeSafety/id.d.ts": {
|
||||||
|
"version": "9b4cbbc5d76a0e78a053503ed153a83f48799f1519e3aef593cb0987700704b8",
|
||||||
|
"signature": "9b4cbbc5d76a0e78a053503ed153a83f48799f1519e3aef593cb0987700704b8",
|
||||||
|
"affectsGlobalScope": false
|
||||||
|
},
|
||||||
|
"../src/lib/keycloakFtlValues.ts": {
|
||||||
|
"version": "c54ff5f00b00ea2b749111b44d591fb53face4c1517332e11fa07aef2da766e3",
|
||||||
|
"signature": "e394ca5507b65dbfbf54256c32fab2c1b71d15135025a467ac87d968d5d59655",
|
||||||
|
"affectsGlobalScope": false
|
||||||
|
},
|
||||||
|
"../src/lib/i18n/useKeycloakLanguage.ts": {
|
||||||
|
"version": "dfbf6417d0e2e10ca0ad485a0ec54c0e681512490df4ea946868852e4fce23d4",
|
||||||
|
"signature": "b03730ceb41dd050b1c3723327e29775905de7efc565957b4b5bf0768da1ed94",
|
||||||
|
"affectsGlobalScope": false
|
||||||
|
},
|
||||||
|
"../src/lib/i18n/useKeycloakTranslation.tsx": {
|
||||||
|
"version": "d8f149429e2fd893654831be56b8a664b97da41d386a1f51b24e328b224d7f10",
|
||||||
|
"signature": "4421afada3ed04e56a9c3e67ec48cfcabf90e085a861f8ca930cbf0fe25188ee",
|
||||||
|
"affectsGlobalScope": false
|
||||||
|
},
|
||||||
"../node_modules/evt/tools/typeSafety/assert.d.ts": {
|
"../node_modules/evt/tools/typeSafety/assert.d.ts": {
|
||||||
"version": "ce5d5fee87218d3b112beb80802ffa8cc6622f07984d59b88cb784f4002272ea",
|
"version": "ce5d5fee87218d3b112beb80802ffa8cc6622f07984d59b88cb784f4002272ea",
|
||||||
"signature": "ce5d5fee87218d3b112beb80802ffa8cc6622f07984d59b88cb784f4002272ea",
|
"signature": "ce5d5fee87218d3b112beb80802ffa8cc6622f07984d59b88cb784f4002272ea",
|
||||||
"affectsGlobalScope": false
|
"affectsGlobalScope": false
|
||||||
},
|
},
|
||||||
"../src/lib/i18n/useKcLanguageTag.ts": {
|
|
||||||
"version": "6680e1b2735f9a06a09b7a4fd0f56d4a2ef97894b5f41123cd1990d4c4e4d4da",
|
|
||||||
"signature": "bd7e7f53e7ef1bbd48435b731f7437eeb1fcd2b93d16382f442801b8e48a81cb",
|
|
||||||
"affectsGlobalScope": false
|
|
||||||
},
|
|
||||||
"../src/lib/i18n/useKcTranslation.tsx": {
|
|
||||||
"version": "b7ff7d6a60f789876e4c1989e9ce07638dcd72fbc89d346669bfd8c6b13d78b1",
|
|
||||||
"signature": "da6283e16140fbb9da517f6cc8158c0c04cbf1d6a3b82029ba3c6009d7c33ddf",
|
|
||||||
"affectsGlobalScope": false
|
|
||||||
},
|
|
||||||
"../node_modules/minimal-polyfills/Object.fromEntries.d.ts": {
|
|
||||||
"version": "8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881",
|
|
||||||
"signature": "8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881",
|
|
||||||
"affectsGlobalScope": false
|
|
||||||
},
|
|
||||||
"../src/lib/tools/allPropertiesValuesToUndefined.ts": {
|
|
||||||
"version": "f93662dd9db384afbb0bd5f18385df5d18250dd408750c34a0aacad632c0712b",
|
|
||||||
"signature": "0def15cba1960127b829b47cb9e6e3f1600aac348a2a311d99982318f6490f0c",
|
|
||||||
"affectsGlobalScope": false
|
|
||||||
},
|
|
||||||
"../src/lib/components/KcProperties.ts": {
|
|
||||||
"version": "cd17ad026db3b1770c0ea4821dee99abb6f4ad6984c62a9ed40f2074241c4951",
|
|
||||||
"signature": "7f2609e4fb3874e4e64ee05452003f061fa2850f32f5f27d71fffc95f8c31e54",
|
|
||||||
"affectsGlobalScope": false
|
|
||||||
},
|
|
||||||
"../node_modules/@emotion/utils/types/index.d.ts": {
|
"../node_modules/@emotion/utils/types/index.d.ts": {
|
||||||
"version": "4b46f4712ae966996b2cc81949d482063887c55478706e25d942482a44b99b71",
|
"version": "4b46f4712ae966996b2cc81949d482063887c55478706e25d942482a44b99b71",
|
||||||
"signature": "4b46f4712ae966996b2cc81949d482063887c55478706e25d942482a44b99b71",
|
"signature": "4b46f4712ae966996b2cc81949d482063887c55478706e25d942482a44b99b71",
|
||||||
@ -496,19 +481,14 @@
|
|||||||
"signature": "21f2e40dfae1bc0a1dab00a004cb49f93209f49231d129d09277b297dec07525",
|
"signature": "21f2e40dfae1bc0a1dab00a004cb49f93209f49231d129d09277b297dec07525",
|
||||||
"affectsGlobalScope": false
|
"affectsGlobalScope": false
|
||||||
},
|
},
|
||||||
"../src/lib/components/Template.tsx": {
|
"../src/lib/Template.tsx": {
|
||||||
"version": "af3ea6a4e66450806d52241b9ee46a406de8560e363cf7fd2d09e0aa9d0891c6",
|
"version": "fba25529d281bab712c3da5dd513ba1f77fcf1a957a8814fbcfe11880baf0e13",
|
||||||
"signature": "5819531407c279a04fb2fa379d807999f30757996e561d95769ab661837cfa00",
|
"signature": "eb92c0a47d38b07a3f9587bf6b473a4ae14371595dfba41e8f36bc9fc20bf0a9",
|
||||||
"affectsGlobalScope": false
|
|
||||||
},
|
|
||||||
"../src/lib/components/Login.tsx": {
|
|
||||||
"version": "a3dd428187b4594b82ec3a70cf278dcc0613985090b4aa89366eaf7954067198",
|
|
||||||
"signature": "b140c6befa7cffb7a1ba17cd337326993258beb795aa99d9495c01727cd732da",
|
|
||||||
"affectsGlobalScope": false
|
"affectsGlobalScope": false
|
||||||
},
|
},
|
||||||
"../src/lib/index.ts": {
|
"../src/lib/index.ts": {
|
||||||
"version": "57ce3866aa67ccd2a899eaa6deea5c60452edb5bcfdefed7fdd3f757387f8de6",
|
"version": "8baee7ac19e659661ccbfaa9447bf106bcca907c505ad6afdeab78e6b6846e5c",
|
||||||
"signature": "ede4a52c319dbd5e4af56958957e4881904104cff5b5d25adb3c1c095e0dc7f1",
|
"signature": "38e39be533e70bd563f6de8762c11f27d97a1162bb121ca7d2614703b38e15d7",
|
||||||
"affectsGlobalScope": false
|
"affectsGlobalScope": false
|
||||||
},
|
},
|
||||||
"../src/lib/i18n/generated_messages/account.ts": {
|
"../src/lib/i18n/generated_messages/account.ts": {
|
||||||
@ -792,8 +772,7 @@
|
|||||||
"target": 1,
|
"target": 1,
|
||||||
"lib": [
|
"lib": [
|
||||||
"lib.es2015.d.ts",
|
"lib.es2015.d.ts",
|
||||||
"lib.dom.d.ts",
|
"lib.dom.d.ts"
|
||||||
"lib.es2019.object.d.ts"
|
|
||||||
],
|
],
|
||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
"declaration": true,
|
"declaration": true,
|
||||||
@ -1169,41 +1148,23 @@
|
|||||||
"../node_modules/@types/react/jsx-runtime.d.ts",
|
"../node_modules/@types/react/jsx-runtime.d.ts",
|
||||||
"../src/bin/tools/crawl.ts"
|
"../src/bin/tools/crawl.ts"
|
||||||
],
|
],
|
||||||
"../src/lib/components/KcProperties.ts": [
|
"../src/lib/LoginPage.tsx": [
|
||||||
"../node_modules/@types/react/jsx-runtime.d.ts",
|
"../node_modules/@types/react/jsx-runtime.d.ts"
|
||||||
"../src/lib/tools/allPropertiesValuesToUndefined.ts"
|
|
||||||
],
|
],
|
||||||
"../src/lib/components/Login.tsx": [
|
"../src/lib/Template.tsx": [
|
||||||
"../node_modules/@types/react/index.d.ts",
|
|
||||||
"../node_modules/@types/react/jsx-runtime.d.ts",
|
|
||||||
"../node_modules/evt/tools/typeSafety/assert.d.ts",
|
|
||||||
"../node_modules/powerhooks/index.d.ts",
|
|
||||||
"../node_modules/tss-react/index.d.ts",
|
|
||||||
"../src/lib/components/KcProperties.ts",
|
|
||||||
"../src/lib/components/Template.tsx",
|
|
||||||
"../src/lib/i18n/useKcTranslation.tsx",
|
|
||||||
"../src/lib/kcContext.ts"
|
|
||||||
],
|
|
||||||
"../src/lib/components/Template.tsx": [
|
|
||||||
"../node_modules/@types/node/path.d.ts",
|
"../node_modules/@types/node/path.d.ts",
|
||||||
"../node_modules/@types/react/index.d.ts",
|
"../node_modules/@types/react/index.d.ts",
|
||||||
"../node_modules/@types/react/jsx-runtime.d.ts",
|
"../node_modules/@types/react/jsx-runtime.d.ts",
|
||||||
"../node_modules/evt/tools/typeSafety/assert.d.ts",
|
"../node_modules/evt/tools/typeSafety/assert.d.ts",
|
||||||
"../node_modules/powerhooks/index.d.ts",
|
"../node_modules/powerhooks/index.d.ts",
|
||||||
"../node_modules/tss-react/index.d.ts",
|
"../node_modules/tss-react/index.d.ts",
|
||||||
"../src/lib/components/KcProperties.ts",
|
"../src/lib/i18n/getLanguageLabel.ts",
|
||||||
"../src/lib/i18n/KcLanguageTag.ts",
|
"../src/lib/i18n/useKeycloakLanguage.ts",
|
||||||
"../src/lib/i18n/useKcLanguageTag.ts",
|
"../src/lib/i18n/useKeycloakTranslation.tsx",
|
||||||
"../src/lib/i18n/useKcTranslation.tsx",
|
"../src/lib/keycloakFtlValues.ts",
|
||||||
"../src/lib/kcContext.ts",
|
|
||||||
"../src/lib/tools/appendLinkInHead.ts",
|
"../src/lib/tools/appendLinkInHead.ts",
|
||||||
"../src/lib/tools/appendScriptInHead.ts"
|
"../src/lib/tools/appendScriptInHead.ts"
|
||||||
],
|
],
|
||||||
"../src/lib/i18n/KcLanguageTag.ts": [
|
|
||||||
"../node_modules/@types/react/jsx-runtime.d.ts",
|
|
||||||
"../node_modules/evt/tools/typeSafety/objectKeys.d.ts",
|
|
||||||
"../src/lib/i18n/generated_messages/login.ts"
|
|
||||||
],
|
|
||||||
"../src/lib/i18n/generated_messages/account.ts": [
|
"../src/lib/i18n/generated_messages/account.ts": [
|
||||||
"../node_modules/@types/react/jsx-runtime.d.ts"
|
"../node_modules/@types/react/jsx-runtime.d.ts"
|
||||||
],
|
],
|
||||||
@ -1216,41 +1177,38 @@
|
|||||||
"../src/lib/i18n/generated_messages/login.ts": [
|
"../src/lib/i18n/generated_messages/login.ts": [
|
||||||
"../node_modules/@types/react/jsx-runtime.d.ts"
|
"../node_modules/@types/react/jsx-runtime.d.ts"
|
||||||
],
|
],
|
||||||
"../src/lib/i18n/useKcLanguageTag.ts": [
|
"../src/lib/i18n/getLanguageLabel.ts": [
|
||||||
"../node_modules/@types/react/jsx-runtime.d.ts",
|
"../node_modules/@types/react/jsx-runtime.d.ts",
|
||||||
"../node_modules/evt/tools/typeSafety/assert.d.ts",
|
"../src/lib/i18n/useKeycloakLanguage.ts"
|
||||||
"../node_modules/powerhooks/index.d.ts",
|
|
||||||
"../src/lib/i18n/KcLanguageTag.ts",
|
|
||||||
"../src/lib/kcContext.ts"
|
|
||||||
],
|
],
|
||||||
"../src/lib/i18n/useKcTranslation.tsx": [
|
"../src/lib/i18n/useKeycloakLanguage.ts": [
|
||||||
"../node_modules/@types/react/index.d.ts",
|
|
||||||
"../node_modules/@types/react/jsx-runtime.d.ts",
|
"../node_modules/@types/react/jsx-runtime.d.ts",
|
||||||
"../node_modules/evt/tools/typeSafety/id.d.ts",
|
"../node_modules/evt/tools/typeSafety/objectKeys.d.ts",
|
||||||
"../node_modules/powerhooks/index.d.ts",
|
"../node_modules/powerhooks/index.d.ts",
|
||||||
"../src/lib/i18n/generated_messages/login.ts",
|
"../src/lib/i18n/generated_messages/login.ts",
|
||||||
"../src/lib/i18n/useKcLanguageTag.ts"
|
"../src/lib/i18n/getLanguageLabel.ts",
|
||||||
|
"../src/lib/keycloakFtlValues.ts"
|
||||||
|
],
|
||||||
|
"../src/lib/i18n/useKeycloakTranslation.tsx": [
|
||||||
|
"../node_modules/@types/react/index.d.ts",
|
||||||
|
"../node_modules/@types/react/jsx-runtime.d.ts",
|
||||||
|
"../node_modules/powerhooks/index.d.ts",
|
||||||
|
"../src/lib/i18n/generated_messages/login.ts",
|
||||||
|
"../src/lib/i18n/useKeycloakLanguage.ts"
|
||||||
],
|
],
|
||||||
"../src/lib/index.ts": [
|
"../src/lib/index.ts": [
|
||||||
"../node_modules/@types/react/jsx-runtime.d.ts",
|
"../node_modules/@types/react/jsx-runtime.d.ts",
|
||||||
"../src/lib/components/KcProperties.ts",
|
"../src/lib/i18n/getLanguageLabel.ts",
|
||||||
"../src/lib/components/Login.tsx",
|
"../src/lib/i18n/useKeycloakLanguage.ts",
|
||||||
"../src/lib/components/Template.tsx",
|
"../src/lib/i18n/useKeycloakTranslation.tsx",
|
||||||
"../src/lib/i18n/KcLanguageTag.ts",
|
"../src/lib/keycloakFtlValues.ts"
|
||||||
"../src/lib/i18n/useKcLanguageTag.ts",
|
|
||||||
"../src/lib/i18n/useKcTranslation.tsx",
|
|
||||||
"../src/lib/kcContext.ts"
|
|
||||||
],
|
],
|
||||||
"../src/lib/kcContext.ts": [
|
"../src/lib/keycloakFtlValues.ts": [
|
||||||
"../node_modules/@types/react/jsx-runtime.d.ts",
|
"../node_modules/@types/react/jsx-runtime.d.ts",
|
||||||
"../node_modules/evt/tools/typeSafety/id.d.ts",
|
"../node_modules/evt/tools/typeSafety/id.d.ts",
|
||||||
"../src/bin/build-keycloak-theme/ftlValuesGlobalName.ts",
|
"../src/bin/build-keycloak-theme/ftlValuesGlobalName.ts",
|
||||||
"../src/bin/build-keycloak-theme/generateFtl/index.ts",
|
"../src/bin/build-keycloak-theme/generateFtl/index.ts",
|
||||||
"../src/lib/i18n/KcLanguageTag.ts"
|
"../src/lib/i18n/useKeycloakLanguage.ts"
|
||||||
],
|
|
||||||
"../src/lib/tools/allPropertiesValuesToUndefined.ts": [
|
|
||||||
"../node_modules/@types/react/jsx-runtime.d.ts",
|
|
||||||
"../node_modules/minimal-polyfills/Object.fromEntries.d.ts"
|
|
||||||
],
|
],
|
||||||
"../src/lib/tools/appendLinkInHead.ts": [
|
"../src/lib/tools/appendLinkInHead.ts": [
|
||||||
"../node_modules/@types/react/jsx-runtime.d.ts"
|
"../node_modules/@types/react/jsx-runtime.d.ts"
|
||||||
@ -1559,39 +1517,28 @@
|
|||||||
"../node_modules/@emotion/css/types/index.d.ts",
|
"../node_modules/@emotion/css/types/index.d.ts",
|
||||||
"../node_modules/@emotion/serialize/types/index.d.ts"
|
"../node_modules/@emotion/serialize/types/index.d.ts"
|
||||||
],
|
],
|
||||||
"../src/lib/components/Login.tsx": [
|
"../src/lib/Template.tsx": [
|
||||||
"../node_modules/@types/react/index.d.ts",
|
"../node_modules/@types/react/index.d.ts"
|
||||||
"../src/lib/components/KcProperties.ts"
|
|
||||||
],
|
],
|
||||||
"../src/lib/components/Template.tsx": [
|
"../src/lib/i18n/getLanguageLabel.ts": [
|
||||||
"../node_modules/@types/react/index.d.ts",
|
"../src/lib/i18n/useKeycloakLanguage.ts"
|
||||||
"../src/lib/components/KcProperties.ts"
|
|
||||||
],
|
],
|
||||||
"../src/lib/i18n/KcLanguageTag.ts": [
|
"../src/lib/i18n/useKeycloakLanguage.ts": [
|
||||||
"../src/lib/i18n/generated_messages/login.ts"
|
|
||||||
],
|
|
||||||
"../src/lib/i18n/useKcLanguageTag.ts": [
|
|
||||||
"../node_modules/powerhooks/index.d.ts"
|
"../node_modules/powerhooks/index.d.ts"
|
||||||
],
|
],
|
||||||
"../src/lib/i18n/useKcTranslation.tsx": [
|
"../src/lib/i18n/useKeycloakTranslation.tsx": [
|
||||||
"../node_modules/@types/react/index.d.ts",
|
"../node_modules/@types/react/index.d.ts",
|
||||||
"../src/lib/i18n/generated_messages/login.ts"
|
"../src/lib/i18n/generated_messages/login.ts"
|
||||||
],
|
],
|
||||||
"../src/lib/index.ts": [
|
"../src/lib/index.ts": [
|
||||||
"../src/lib/components/KcProperties.ts",
|
"../src/lib/i18n/getLanguageLabel.ts",
|
||||||
"../src/lib/components/Login.tsx",
|
"../src/lib/i18n/useKeycloakLanguage.ts",
|
||||||
"../src/lib/components/Template.tsx",
|
"../src/lib/i18n/useKeycloakTranslation.tsx",
|
||||||
"../src/lib/i18n/KcLanguageTag.ts",
|
"../src/lib/keycloakFtlValues.ts"
|
||||||
"../src/lib/i18n/useKcLanguageTag.ts",
|
|
||||||
"../src/lib/i18n/useKcTranslation.tsx",
|
|
||||||
"../src/lib/kcContext.ts"
|
|
||||||
],
|
],
|
||||||
"../src/lib/kcContext.ts": [
|
"../src/lib/keycloakFtlValues.ts": [
|
||||||
"../src/bin/build-keycloak-theme/generateFtl/index.ts",
|
"../src/bin/build-keycloak-theme/generateFtl/index.ts",
|
||||||
"../src/lib/i18n/KcLanguageTag.ts"
|
"../src/lib/i18n/useKeycloakLanguage.ts"
|
||||||
],
|
|
||||||
"../src/lib/tools/allPropertiesValuesToUndefined.ts": [
|
|
||||||
"../node_modules/minimal-polyfills/Object.fromEntries.d.ts"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"semanticDiagnosticsPerFile": [
|
"semanticDiagnosticsPerFile": [
|
||||||
@ -1671,7 +1618,6 @@
|
|||||||
"../node_modules/htmlparser2/lib/Parser.d.ts",
|
"../node_modules/htmlparser2/lib/Parser.d.ts",
|
||||||
"../node_modules/htmlparser2/lib/Tokenizer.d.ts",
|
"../node_modules/htmlparser2/lib/Tokenizer.d.ts",
|
||||||
"../node_modules/htmlparser2/lib/index.d.ts",
|
"../node_modules/htmlparser2/lib/index.d.ts",
|
||||||
"../node_modules/minimal-polyfills/Object.fromEntries.d.ts",
|
|
||||||
"../node_modules/powerhooks/index.d.ts",
|
"../node_modules/powerhooks/index.d.ts",
|
||||||
"../node_modules/powerhooks/useArrayDiff.d.ts",
|
"../node_modules/powerhooks/useArrayDiff.d.ts",
|
||||||
"../node_modules/powerhooks/useCallbackFactory.d.ts",
|
"../node_modules/powerhooks/useCallbackFactory.d.ts",
|
||||||
@ -1714,7 +1660,6 @@
|
|||||||
"../node_modules/typescript/lib/lib.es2018.intl.d.ts",
|
"../node_modules/typescript/lib/lib.es2018.intl.d.ts",
|
||||||
"../node_modules/typescript/lib/lib.es2018.promise.d.ts",
|
"../node_modules/typescript/lib/lib.es2018.promise.d.ts",
|
||||||
"../node_modules/typescript/lib/lib.es2018.regexp.d.ts",
|
"../node_modules/typescript/lib/lib.es2018.regexp.d.ts",
|
||||||
"../node_modules/typescript/lib/lib.es2019.object.d.ts",
|
|
||||||
"../node_modules/typescript/lib/lib.es2020.bigint.d.ts",
|
"../node_modules/typescript/lib/lib.es2020.bigint.d.ts",
|
||||||
"../node_modules/typescript/lib/lib.es5.d.ts",
|
"../node_modules/typescript/lib/lib.es5.d.ts",
|
||||||
"../node_modules/typescript/lib/lib.esnext.intl.d.ts",
|
"../node_modules/typescript/lib/lib.esnext.intl.d.ts",
|
||||||
@ -1732,19 +1677,17 @@
|
|||||||
"../src/bin/tools/getProjectRoot.ts",
|
"../src/bin/tools/getProjectRoot.ts",
|
||||||
"../src/bin/tools/grant-exec-perms.ts",
|
"../src/bin/tools/grant-exec-perms.ts",
|
||||||
"../src/bin/tools/transformCodebase.ts",
|
"../src/bin/tools/transformCodebase.ts",
|
||||||
"../src/lib/components/KcProperties.ts",
|
"../src/lib/LoginPage.tsx",
|
||||||
"../src/lib/components/Login.tsx",
|
"../src/lib/Template.tsx",
|
||||||
"../src/lib/components/Template.tsx",
|
|
||||||
"../src/lib/i18n/KcLanguageTag.ts",
|
|
||||||
"../src/lib/i18n/generated_messages/account.ts",
|
"../src/lib/i18n/generated_messages/account.ts",
|
||||||
"../src/lib/i18n/generated_messages/admin.ts",
|
"../src/lib/i18n/generated_messages/admin.ts",
|
||||||
"../src/lib/i18n/generated_messages/email.ts",
|
"../src/lib/i18n/generated_messages/email.ts",
|
||||||
"../src/lib/i18n/generated_messages/login.ts",
|
"../src/lib/i18n/generated_messages/login.ts",
|
||||||
"../src/lib/i18n/useKcLanguageTag.ts",
|
"../src/lib/i18n/getLanguageLabel.ts",
|
||||||
"../src/lib/i18n/useKcTranslation.tsx",
|
"../src/lib/i18n/useKeycloakLanguage.ts",
|
||||||
|
"../src/lib/i18n/useKeycloakTranslation.tsx",
|
||||||
"../src/lib/index.ts",
|
"../src/lib/index.ts",
|
||||||
"../src/lib/kcContext.ts",
|
"../src/lib/keycloakFtlValues.ts",
|
||||||
"../src/lib/tools/allPropertiesValuesToUndefined.ts",
|
|
||||||
"../src/lib/tools/appendLinkInHead.ts",
|
"../src/lib/tools/appendLinkInHead.ts",
|
||||||
"../src/lib/tools/appendScriptInHead.ts",
|
"../src/lib/tools/appendScriptInHead.ts",
|
||||||
"../src/test/build-keycloak-theme.ts",
|
"../src/test/build-keycloak-theme.ts",
|
||||||
|
@ -816,7 +816,7 @@ memoizee@^0.4.15:
|
|||||||
next-tick "^1.1.0"
|
next-tick "^1.1.0"
|
||||||
timers-ext "^0.1.7"
|
timers-ext "^0.1.7"
|
||||||
|
|
||||||
minimal-polyfills@^2.1.5, minimal-polyfills@^2.1.6:
|
minimal-polyfills@^2.1.5:
|
||||||
version "2.1.6"
|
version "2.1.6"
|
||||||
resolved "https://registry.yarnpkg.com/minimal-polyfills/-/minimal-polyfills-2.1.6.tgz#eab50832add31afd40a22b38fb76d1fdcd2a51e4"
|
resolved "https://registry.yarnpkg.com/minimal-polyfills/-/minimal-polyfills-2.1.6.tgz#eab50832add31afd40a22b38fb76d1fdcd2a51e4"
|
||||||
integrity sha512-vqoxj7eMzsqX0M6/dkgoNFPw6Mztgn5qjSl0bWGboQeU7Y4UPLeyoqQw6JI+0qmBcJYdkr3nK7dqY8u/fgRp5g==
|
integrity sha512-vqoxj7eMzsqX0M6/dkgoNFPw6Mztgn5qjSl0bWGboQeU7Y4UPLeyoqQw6JI+0qmBcJYdkr3nK7dqY8u/fgRp5g==
|
||||||
|
Reference in New Issue
Block a user