Compare commits

..

19 Commits

Author SHA1 Message Date
9502f193d3 Enabling shorter import paths [automatic] 2021-03-07 01:18:30 +00:00
919a6947bc Update changelog v0.1.2 2021-03-07 01:17:32 +00:00
85fdaa2f22 Bump version (changelog version) 2021-03-07 02:15:51 +01:00
6ade3d6375 Fix build 2021-03-07 02:15:21 +01:00
73e9ebbe40 Merge branch 'develop' of https://github.com/garronej/keycloakify into develop 2021-03-07 01:47:10 +01:00
ad78221025 Fix build 2021-03-07 01:47:03 +01:00
714fec0bf3 Update changelog v0.1.1 2021-03-06 22:06:48 +00:00
de312c60b1 Bump version (changelog ignore) 2021-03-06 23:05:15 +01:00
1d07fd7675 Implement Error page 2021-03-06 23:03:03 +01:00
307650aaea rename pageBasename by pageId 2021-03-06 22:41:36 +01:00
6eccd313b6 Implement reactive programing for language switching 2021-03-06 15:16:21 +01:00
b8751d67db Merge branch 'develop' of https://github.com/garronej/keycloakify into develop 2021-03-06 14:43:03 +01:00
25d9d3dc26 Add Info page, refactor 2021-03-06 14:42:56 +01:00
68e6c9faaf Update changelog v0.1.0 2021-03-05 19:44:56 +00:00
f3fb360ce0 Rename keycloakify 2021-03-05 20:43:22 +01:00
d3631dd10c Update changelog v0.0.33 2021-03-05 18:52:19 +00:00
891c91aa20 bump version (changelog ignore) 2021-03-05 19:50:40 +01:00
880018e926 Merge branch 'develop' of https://github.com/garronej/keycloak-react-theming into develop 2021-03-05 19:50:14 +01:00
06ab2ab82e Fix syncronization with non react pages 2021-03-05 19:50:08 +01:00
78 changed files with 2277 additions and 880 deletions

View File

@ -1,3 +1,23 @@
### **0.1.2** (2021-03-07)
- Fix build
- Fix build
### **0.1.1** (2021-03-06)
- Implement Error page
- rename pageBasename by pageId
- Implement reactive programing for language switching
- Add Info page, refactor
## **0.1.0** (2021-03-05)
- Rename keycloakify
### **0.0.33** (2021-03-05)
- Fix syncronization with non react pages
### **0.0.32** (2021-03-05)
- bump version

View File

@ -5,10 +5,10 @@
<i>🔏 Keycloak theme generator for Reacts app 🔏</i>
<br>
<br>
<img src="https://github.com/garronej/keycloak-react-theming/workflows/ci/badge.svg?branch=develop">
<img src="https://img.shields.io/bundlephobia/minzip/keycloak-react-theming">
<img src="https://img.shields.io/npm/dw/keycloak-react-theming">
<img src="https://img.shields.io/npm/l/keycloak-react-theming">
<img src="https://github.com/garronej/keycloakify/workflows/ci/badge.svg?branch=develop">
<img src="https://img.shields.io/bundlephobia/minzip/keycloakify">
<img src="https://img.shields.io/npm/dw/keycloakify">
<img src="https://img.shields.io/npm/l/keycloakify">
</p>
@ -30,7 +30,7 @@ to reproduce the look and feel of a specific app. Not mentioning the maintenance
Wouldn't it be great if we could just design the login and register pages as if they where part of our app while
still letting Keycloak handle the heavy lifting of actually authenticating the users?
Here is `yarn add keycloak-react-theming` for you 🍸
Here is `yarn add keycloakify` for you 🍸
TODO: Insert video after.
@ -38,7 +38,7 @@ TODO: Insert video after.
## Setting up the build tool
Add `keycloak-react-theming` to the dev dependencies of your project `npm install --save-dev keycloak-react-theming` or `yarn add --dev keycloak-react-theming`
Add `keycloakify` to the dev dependencies of your project `npm install --save-dev keycloakify` or `yarn add --dev keycloakify`
then configure your `package.json` build's script to build the keycloak's theme by adding `&& build-keycloak-theme`.
Typically you will get:
@ -46,7 +46,7 @@ Typically you will get:
`package.json`:
```json
"devDependencies": {
"keycloak-react-theming": "^0.0.10"
"keycloakify": "^0.0.10"
},
"scripts": {
"build": "react-scripts build && build-keycloak-theme"

View File

@ -0,0 +1,28 @@
Object.defineProperty(
Object,
"deepAssign",
{
"value": function callee(target, source) {
Object.keys(source).forEach(function (key) {
var value = source[key];
if (target[key] === undefined) {
target[key] = value;
return;
}
if (value instanceof Object) {
if (value instanceof Array) {
value.forEach(function (entry) {
target[key].push(entry);
});
return;
}
callee(target[key], value);
return;
}
target[key] = value;
});
return target;
}
}
);

View File

@ -0,0 +1,26 @@
var es = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34);/g;
var unes = {
'&amp;': '&',
'&#38;': '&',
'&lt;': '<',
'&#60;': '<',
'&gt;': '>',
'&#62;': '>',
'&apos;': "'",
'&#39;': "'",
'&quot;': '"',
'&#34;': '"'
};
var cape = function (m) { return unes[m]; };
Object.defineProperty(
String,
"htmlUnescape",
{
"value": function (un) {
return String.prototype.replace.call(un, es, cape);
}
}
);

View File

@ -0,0 +1,15 @@
<script>const _=
{
"client": (function (){
<#if client??>
return {
"baseUrl": "${(client.baseUrl!'')?no_esc}" || undefined
};
</#if>
return undefined;
})()
}
</script>

View File

@ -1,10 +1,12 @@
export declare const pageIds: readonly ["login.ftl", "register.ftl", "info.ftl", "error.ftl"];
export declare type PageId = typeof pageIds[number];
export declare function generateFtlFilesCodeFactory(params: {
ftlValuesGlobalName: string;
cssGlobalsToDefine: Record<string, string>;
indexHtmlCode: string;
}): {
generateFtlFilesCode: (params: {
pageBasename: "login.ftl" | "register.ftl";
pageId: PageId;
}) => {
ftlCode: string;
};

View File

@ -35,15 +35,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateFtlFilesCodeFactory = void 0;
exports.generateFtlFilesCodeFactory = exports.pageIds = void 0;
var cheerio_1 = __importDefault(require("cheerio"));
var replaceImportFromStatic_1 = require("../replaceImportFromStatic");
var fs_1 = __importDefault(require("fs"));
var path_1 = require("path");
var objectKeys_1 = require("evt/tools/typeSafety/objectKeys");
exports.pageIds = ["login.ftl", "register.ftl", "info.ftl", "error.ftl"];
function loadAdjacentFile(fileBasename) {
return fs_1.default.readFileSync(path_1.join(__dirname, fileBasename))
.toString("utf8");
}
;
function loadFtlFile(ftlFileBasename) {
return fs_1.default.readFileSync(path_1.join(__dirname, ftlFileBasename))
.toString("utf8")
return loadAdjacentFile(ftlFileBasename)
.match(/^<script>const _=((?:.|\n)+)<\/script>[\n]?$/)[1];
}
function generateFtlFilesCodeFactory(params) {
@ -87,72 +92,50 @@ function generateFtlFilesCodeFactory(params) {
' <#list scripts as script>',
' <script src="${script}" type="text/javascript"></script>',
' </#list>',
'</#if>',
'</#if>'
].join("\n")
};
$("head").prepend(__spreadArray(__spreadArray([], __read((Object.keys(cssGlobalsToDefine).length === 0 ? [] : [
var pageSpecificCodePlaceholder = "<!-- dIddLqMeOedErIdLsPdNdI9dSl42sw -->";
$("head").prepend(__spreadArray(__spreadArray(__spreadArray([], __read((Object.keys(cssGlobalsToDefine).length === 0 ? [] : [
'',
'<style>',
replaceImportFromStatic_1.generateCssCodeToDefineGlobals({ cssGlobalsToDefine: cssGlobalsToDefine }).cssCodeToPrependInHead,
'</style>',
''
]))), [
]))), __read(["Object.deepAssign.js", "String.htmlUnescape.js"].map(function (fileBasename) { return [
"<script>",
loadAdjacentFile(fileBasename),
"</script>"
].join("\n"); }))), [
'<script>',
' Object.deepAssign(',
" window." + ftlValuesGlobalName + ",",
" window." + ftlValuesGlobalName + "= Object.assign(",
" {},",
" " + objectKeys_1.objectKeys(ftlCommonPlaceholders)[0],
' );',
'</script>',
'',
objectKeys_1.objectKeys(ftlCommonPlaceholders)[1],
''
pageSpecificCodePlaceholder,
'',
objectKeys_1.objectKeys(ftlCommonPlaceholders)[1]
]).join("\n"));
var partiallyFixedIndexHtmlCode = $.html();
function generateFtlFilesCode(params) {
var pageBasename = params.pageBasename;
var pageId = params.pageId;
var $ = cheerio_1.default.load(partiallyFixedIndexHtmlCode);
var ftlPlaceholders = __assign({ '{ "x": "kxOlLqMeOed9sdLdIdOxd444" }': loadFtlFile(pageBasename) }, ftlCommonPlaceholders);
$("head").prepend([
'',
var ftlPlaceholders = __assign({ '{ "x": "kxOlLqMeOed9sdLdIdOxd444" }': loadFtlFile(pageId) }, ftlCommonPlaceholders);
var ftlCode = $.html()
.replace(pageSpecificCodePlaceholder, [
'<script>',
'',
" window." + ftlValuesGlobalName + " = Object.assign(",
" { \"pageBasename\": \"" + pageBasename + "\" },",
" Object.deepAssign(",
" window." + ftlValuesGlobalName + ",",
" { \"pageId\": \"" + pageId + "\" }",
' );',
" Object.deepAssign(",
" window." + ftlValuesGlobalName + ",",
" " + objectKeys_1.objectKeys(ftlPlaceholders)[0],
' );',
'',
' Object.defineProperty(',
' Object,',
' "deepAssign",',
' {',
' "value": function callee(target, source) {',
' Object.keys(source).forEach(function (key) {',
' var value = source[key];',
' if( target[key] === undefined ){',
' target[key]= value;',
' return;',
' }',
' if( value instanceof Object ){',
' if( value instanceof Array ){',
' value.forEach(function (entry){',
' target[key].push(entry);',
' });',
' return;',
' }',
' callee(target[key], value);',
' return;',
' }',
' target[key]= value;',
' });',
' return target;',
' }',
' }',
' );',
'',
'</script>',
''
'</script>'
].join("\n"));
var ftlCode = $.html();
objectKeys_1.objectKeys(ftlPlaceholders)
.forEach(function (id) { return ftlCode = ftlCode.replace(id, ftlPlaceholders[id]); });
return { ftlCode: ftlCode };

View File

@ -1 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bin/build-keycloak-theme/generateFtl/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,oDAA8B;AAC9B,sEAGoC;AACpC,0CAAoB;AACpB,6BAAwC;AACxC,8DAA6D;AAE7D,SAAS,WAAW,CAAC,eAA8D;IAC/E,OAAO,YAAE,CAAC,YAAY,CAAC,WAAQ,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;SACvD,QAAQ,CAAC,MAAM,CAAC;SAChB,KAAK,CAAC,8CAA8C,CAAE,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAGD,SAAgB,2BAA2B,CACvC,MAIC;IAGO,IAAA,mBAAmB,GAAwC,MAAM,oBAA9C,EAAE,kBAAkB,GAAoB,MAAM,mBAA1B,EAAE,aAAa,GAAK,MAAM,cAAX,CAAY;IAE1E,IAAM,CAAC,GAAG,iBAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAEtC,CAAC,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC;QAAC,YAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,uBAAc;;QAAd,IAAA,KAAA,aAAc,EAAR,OAAO,QAAA,CAAC;QAE/B,IAAA,WAAW,GAAK,yDAA+B,CAAC;YACpD,mBAAmB,qBAAA;YACnB,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAG;SAC/B,CAAC,YAHiB,CAGhB;QAEH,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAEjC,CAAC,CAAC,CAAC;IAGF;QACG,CAAC,MAAM,EAAE,MAAM,CAAC;QAChB,CAAC,QAAQ,EAAE,KAAK,CAAC;KACV,CAAC,OAAO,CAAC,UAAC,EAAoB;YAApB,KAAA,aAAoB,EAAnB,QAAQ,QAAA,EAAE,QAAQ,QAAA;QACpC,OAAA,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;YAAC,YAAc;iBAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;gBAAd,uBAAc;;YAAd,IAAA,KAAA,aAAc,EAAR,OAAO,QAAA,CAAC;YAE5B,IAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEvC,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,CAAC,GAAG,CAAC,CAAA,EAAE;gBACxB,OAAO;aACV;YAED,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,4BAA4B,GAAG,IAAI,CAAC,CAAC;QAEnE,CAAC,CAAC;IAVF,CAUE,CACL,CAAC;IAEF,6FAA6F;IAC7F,IAAM,qBAAqB,GAAG;QAC1B,oCAAoC,EAAE,WAAW,CAAC,cAAc,CAAC;QACjE,sCAAsC,EAClC;YACI,iBAAiB;YACjB,+BAA+B;YAC/B,kEAAkE;YAClE,cAAc;YACd,QAAQ;SACX,CAAC,IAAI,CAAC,IAAI,CAAC;KACnB,CAAC;IAEF,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CACb,uCACO,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpD,EAAE;QACF,SAAS;QACT,wDAA8B,CAC1B,EAAE,kBAAkB,oBAAA,EAAE,CACzB,CAAC,sBAAsB;QACxB,UAAU;QACV,EAAE;KACL,CAAC;QACF,UAAU;QACV,wBAAwB;QACxB,oBAAkB,mBAAmB,MAAG;QACxC,aAAW,uBAAU,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAG;QACjD,QAAQ;QACR,WAAW;QACX,EAAE;QACF,uBAAU,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACpC,EAAE;OACJ,IAAI,CAAC,IAAI,CAAC,CACf,CAAC;IAGF,IAAM,2BAA2B,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAE7C,SAAS,oBAAoB,CACzB,MAEC;QAGO,IAAA,YAAY,GAAK,MAAM,aAAX,CAAY;QAEhC,IAAM,CAAC,GAAG,iBAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAEpD,IAAM,eAAe,cACjB,qCAAqC,EAAE,WAAW,CAAC,YAAY,CAAC,IAC7D,qBAAqB,CAC3B,CAAC;QAEF,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CACb;YACI,EAAE;YACF,UAAU;YACV,EAAE;YACF,gBAAc,mBAAmB,sBAAmB;YACpD,mCAA8B,YAAY,UAAM;YAChD,aAAW,uBAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAG;YAC3C,QAAQ;YACR,EAAE;YACF,4BAA4B;YAC5B,iBAAiB;YACjB,uBAAuB;YACvB,WAAW;YACX,wDAAwD;YACxD,8DAA8D;YAC9D,8CAA8C;YAC9C,sDAAsD;YACtD,iDAAiD;YACjD,qCAAqC;YACrC,uBAAuB;YACvB,oDAAoD;YACpD,2DAA2D;YAC3D,iEAAiE;YACjE,kEAAkE;YAClE,qCAAqC;YACrC,yCAAyC;YACzC,+BAA+B;YAC/B,yDAAyD;YACzD,qCAAqC;YACrC,uBAAuB;YACvB,yCAAyC;YACzC,qBAAqB;YACrB,gCAAgC;YAChC,eAAe;YACf,WAAW;YACX,QAAQ;YACR,EAAE;YACF,WAAW;YACX,EAAE;SACL,CAAC,IAAI,CAAC,IAAI,CAAC,CACf,CAAC;QAEF,IAAI,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAEvB,uBAAU,CAAC,eAAe,CAAC;aACtB,OAAO,CAAC,UAAA,EAAE,IAAI,OAAA,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC,EAAlD,CAAkD,CAAC,CAAC;QAEvE,OAAO,EAAE,OAAO,SAAA,EAAE,CAAC;IAEvB,CAAC;IAED,OAAO,EAAE,oBAAoB,sBAAA,EAAE,CAAC;AAGpC,CAAC;AAtJD,kEAsJC"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bin/build-keycloak-theme/generateFtl/index.ts"],"names":[],"mappings":"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"}

View File

@ -0,0 +1,37 @@
<script>const _=
{
"messageHeader": "${messageHeader!''}" || undefined,
"requiredActions": (function (){
<#if requiredActions??>
var out =[];
<#list requiredActions>
<#items as reqActionItem>
out.push("${reqActionItem}");
</#items></b>
</#list>
return out;
<#else>
return undefined;
})(),
"skipLink": (function (){
<#if skipLink??>
return true;
</#if>
return false;
})(),
"pageRedirectUri": "${(pageRedirectUri!'')?no_esc}" || undefined,
"actionUri": "${(actionUri!'')?no_esc}" || undefined,
"client": {
"baseUrl": "${(client.baseUrl!'')?no_esc}" || undefined
}
}
</script>

View File

@ -7,6 +7,7 @@
"realm": {
"loginWithEmailAllowed": ${realm.loginWithEmailAllowed?c},
"rememberMe": ${realm.rememberMe?c},
"password": ${realm.password?c},
"resetPasswordAllowed": ${realm.resetPasswordAllowed?c},
"registrationAllowed": ${realm.registrationAllowed?c}
},

View File

@ -11,7 +11,6 @@
"displayName": "${realm.displayName!''}" || undefined,
"displayNameHtml": "${realm.displayNameHtml!''}" || undefined,
"internationalizationEnabled": ${realm.internationalizationEnabled?c},
"password": ${realm.password?c},
"registrationEmailAsUsername": ${realm.registrationEmailAsUsername?c},
},
"locale": (function (){
@ -95,7 +94,7 @@
return { 
"type": "${message.type}",
"summary": "${kcSanitize(message.summary)?no_esc}"
"summary": String.htmlUnescape("${message.summary}")
};
</#if>

View File

@ -69,9 +69,9 @@ function generateKeycloakThemeResources(params) {
ftlValuesGlobalName: ftlValuesGlobalName_1.ftlValuesGlobalName,
"indexHtmlCode": fs.readFileSync(path_1.join(reactAppBuildDirPath, "index.html")).toString("utf8")
}).generateFtlFilesCode;
["login.ftl", "register.ftl"].forEach(function (pageBasename) {
var ftlCode = generateFtlFilesCode({ pageBasename: pageBasename }).ftlCode;
fs.writeFileSync(path_1.join(themeDirPath, pageBasename), Buffer.from(ftlCode, "utf8"));
generateFtl_1.pageIds.forEach(function (pageId) {
var ftlCode = generateFtlFilesCode({ pageId: pageId }).ftlCode;
fs.writeFileSync(path_1.join(themeDirPath, pageId), Buffer.from(ftlCode, "utf8"));
});
{
var tmpDirPath = path_1.join(themeDirPath, "..", "tmp_xxKdLpdIdLd");
@ -79,20 +79,13 @@ function generateKeycloakThemeResources(params) {
"url": install_builtin_keycloak_themes_1.builtinThemesUrl,
"destDirPath": tmpDirPath
});
transformCodebase_1.transformCodebase({
"srcDirPath": path_1.join(tmpDirPath, "keycloak", "common"),
"destDirPath": path_1.join(tmpDirPath, "..", "common")
});
transformCodebase_1.transformCodebase({
"srcDirPath": path_1.join(tmpDirPath, "keycloak", "login", "resources"),
"destDirPath": path_1.join(themeDirPath, "resources")
});
child_process.execSync("rm -r " + tmpDirPath);
}
fs.writeFileSync(path_1.join(themeDirPath, "theme.properties"), Buffer.from([
"import=common/" + themeName,
"locales=ca,cs,de,en,es,fr,it,ja,lt,nl,no,pl,pt-BR,ru,sk,sv,tr,zh-CN"
].join("\n"), "utf8"));
fs.writeFileSync(path_1.join(themeDirPath, "theme.properties"), Buffer.from("parent=keycloak", "utf8"));
}
exports.generateKeycloakThemeResources = generateKeycloakThemeResources;
//# sourceMappingURL=generateKeycloakThemeResources.js.map

View File

@ -1 +1 @@
{"version":3,"file":"generateKeycloakThemeResources.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/generateKeycloakThemeResources.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,gEAA+D;AAC/D,qCAAyB;AACzB,6BAAwC;AACxC,qEAGmC;AACnC,6CAA4D;AAC5D,sFAAsE;AACtE,8DAA6D;AAC7D,2DAA+C;AAC/C,6DAA4D;AAE5D,SAAgB,8BAA8B,CAC1C,MAIC;IAGO,IAAA,SAAS,GAAyD,MAAM,UAA/D,EAAE,oBAAoB,GAAmC,MAAM,qBAAzC,EAAE,4BAA4B,GAAK,MAAM,6BAAX,CAAY;IAEjF,IAAM,YAAY,GAAG,WAAQ,CAAC,4BAA4B,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAErH,IAAI,qBAAqB,GAA2B,EAAE,CAAC;IAEvD,qCAAiB,CAAC;QACd,aAAa,EAAE,WAAQ,CAAC,YAAY,EAAE,WAAW,EAAE,OAAO,CAAC;QAC3D,YAAY,EAAE,oBAAoB;QAClC,qBAAqB,EAAE,UAAC,EAAwB;gBAAtB,QAAQ,cAAA,EAAE,UAAU,gBAAA;YAE1C,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAErB,IAAA,KAAuC,0DAAgC,CACzE,EAAE,SAAS,EAAE,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAC7C,EAFO,kBAAkB,wBAAA,EAAE,YAAY,kBAEvC,CAAC;gBAEF,qBAAqB,yBACd,qBAAqB,GACrB,kBAAkB,CACxB,CAAC;gBAEF,OAAO,EAAE,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC;aAEtE;YAED,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAElB,IAAA,WAAW,GAAK,yDAA+B,CAAC;oBACpD,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACrC,mBAAmB,2CAAA;iBACtB,CAAC,YAHiB,CAGhB;gBAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC;aAErE;YAED,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,CAAC;QAEhD,CAAC;KACJ,CAAC,CAAC;IAEK,IAAA,oBAAoB,GAAK,yCAA2B,CAAC;QACzD,oBAAoB,EAAE,qBAAqB;QAC3C,mBAAmB,2CAAA;QACnB,eAAe,EAAE,EAAE,CAAC,YAAY,CAC5B,WAAQ,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAC/C,CAAC,QAAQ,CAAC,MAAM,CAAC;KACrB,CAAC,qBAN0B,CAMzB;IAEF,CAAC,WAAW,EAAE,cAAc,CAAW,CAAC,OAAO,CAAC,UAAA,YAAY;QAEjD,IAAA,OAAO,GAAK,oBAAoB,CAAC,EAAE,YAAY,cAAA,EAAE,CAAC,QAA3C,CAA4C;QAE3D,EAAE,CAAC,aAAa,CACZ,WAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,EACpC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAC/B,CAAA;IAEL,CAAC,CAAC,CAAC;IAEH;QAEI,IAAM,UAAU,GAAG,WAAQ,CAAC,YAAY,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAEnE,mCAAgB,CAAC;YACb,KAAK,EAAE,kDAAgB;YACvB,aAAa,EAAE,UAAU;SAC5B,CAAC,CAAC;QAEH,qCAAiB,CAAC;YACd,YAAY,EAAE,WAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC;YACxD,aAAa,EAAE,WAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC;SACtD,CAAC,CAAC;QAEH,qCAAiB,CAAC;YACd,YAAY,EAAE,WAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC;YACpE,aAAa,EAAE,WAAQ,CAAC,YAAY,EAAE,WAAW,CAAC;SACrD,CAAC,CAAC;QAEH,aAAa,CAAC,QAAQ,CAAC,WAAS,UAAY,CAAC,CAAC;KAEjD;IAED,EAAE,CAAC,aAAa,CACZ,WAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAC,EAC1C,MAAM,CAAC,IAAI,CAAC;QACR,mBAAiB,SAAW;QAC5B,qEAAqE;KACxE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CACxB,CAAC;AAEN,CAAC;AApGD,wEAoGC"}
{"version":3,"file":"generateKeycloakThemeResources.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/generateKeycloakThemeResources.ts"],"names":[],"mappings":"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"}

View File

@ -1,2 +1,2 @@
#!/usr/bin/env node
export declare const builtinThemesUrl = "https://github.com/garronej/keycloak-react-theming/releases/download/v0.0.1/keycloak_11.0.3_builtin_themes.zip";
export declare const builtinThemesUrl = "https://github.com/garronej/keycloakify/releases/download/v0.0.1/keycloak_11.0.3_builtin_themes.zip";

View File

@ -5,7 +5,7 @@ exports.builtinThemesUrl = void 0;
var build_keycloak_theme_1 = require("./build-keycloak-theme");
var downloadAndUnzip_1 = require("./tools/downloadAndUnzip");
var path_1 = require("path");
exports.builtinThemesUrl = "https://github.com/garronej/keycloak-react-theming/releases/download/v0.0.1/keycloak_11.0.3_builtin_themes.zip";
exports.builtinThemesUrl = "https://github.com/garronej/keycloakify/releases/download/v0.0.1/keycloak_11.0.3_builtin_themes.zip";
if (require.main === module) {
downloadAndUnzip_1.downloadAndUnzip({
"url": exports.builtinThemesUrl,

View File

@ -1 +1 @@
{"version":3,"file":"install-builtin-keycloak-themes.js","sourceRoot":"","sources":["../src/bin/install-builtin-keycloak-themes.ts"],"names":[],"mappings":";;;;AAEA,+DAAsE;AACtE,6DAA4D;AAC5D,6BAAwC;AAE3B,QAAA,gBAAgB,GACzB,gHAAgH,CAAC;AAErH,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE;IAEzB,mCAAgB,CAAC;QACb,KAAK,EAAE,wBAAgB;QACvB,aAAa,EAAE,WAAQ,CAAC,mDAA4B,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC;KAC7F,CAAC,CAAC;CAEN"}
{"version":3,"file":"install-builtin-keycloak-themes.js","sourceRoot":"","sources":["../src/bin/install-builtin-keycloak-themes.ts"],"names":[],"mappings":";;;;AAEA,+DAAsE;AACtE,6DAA4D;AAC5D,6BAAwC;AAE3B,QAAA,gBAAgB,GACzB,qGAAqG,CAAC;AAE1G,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE;IAEzB,mCAAgB,CAAC;QACb,KAAK,EAAE,wBAAgB;QACvB,aAAa,EAAE,WAAQ,CAAC,mDAA4B,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC;KAC7F,CAAC,CAAC;CAEN"}

3
lib/components/Error.d.ts vendored Normal file
View File

@ -0,0 +1,3 @@
/// <reference types="react" />
import type { KcProps } from "./KcProps";
export declare const Error: import("react").MemoExoticComponent<(props: KcProps) => JSX.Element>;

31
lib/components/Error.js Normal file
View File

@ -0,0 +1,31 @@
"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);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Error = void 0;
var jsx_runtime_1 = require("react/jsx-runtime");
var react_1 = require("react");
var Template_1 = require("./Template");
var assert_1 = require("../tools/assert");
var kcContext_1 = require("../kcContext");
var useKcTranslation_1 = require("../i18n/useKcTranslation");
exports.Error = react_1.memo(function (props) {
var t = useKcTranslation_1.useKcTranslation().t;
assert_1.assert(kcContext_1.kcContext !== undefined &&
kcContext_1.kcContext.pageId === "error.ftl" &&
kcContext_1.kcContext.message !== undefined);
var message = kcContext_1.kcContext.message, client = kcContext_1.kcContext.client;
return (jsx_runtime_1.jsx(Template_1.Template, __assign({}, props, { displayMessage: false, headerNode: t("errorTitle"), formNode: jsx_runtime_1.jsxs("div", __assign({ id: "kc-error-message" }, { children: [jsx_runtime_1.jsx("p", __assign({ className: "instruction" }, { children: message.summary }), void 0),
client !== undefined && client.baseUrl !== undefined &&
jsx_runtime_1.jsx("p", { children: jsx_runtime_1.jsx("a", __assign({ id: "backToApplication", href: client.baseUrl }, { children: t("backToApplication") }), void 0) }, void 0)] }), void 0) }), void 0));
});
//# sourceMappingURL=Error.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"Error.js","sourceRoot":"","sources":["../../src/lib/components/Error.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,+BAA6B;AAC7B,uCAAsC;AAEtC,0CAAyC;AACzC,0CAAyC;AACzC,6DAA4D;AAE/C,QAAA,KAAK,GAAG,YAAI,CAAC,UAAC,KAAc;IAE7B,IAAA,CAAC,GAAK,mCAAgB,EAAE,EAAvB,CAAwB;IAEjC,eAAM,CACF,qBAAS,KAAK,SAAS;QACvB,qBAAS,CAAC,MAAM,KAAK,WAAW;QAChC,qBAAS,CAAC,OAAO,KAAK,SAAS,CAClC,CAAC;IAEM,IAAA,OAAO,GAAa,qBAAS,QAAtB,EAAE,MAAM,GAAK,qBAAS,OAAd,CAAe;IAEtC,OAAO,CACH,kBAAC,mBAAQ,eACD,KAAK,IACT,cAAc,EAAE,KAAK,EACrB,UAAU,EAAE,CAAC,CAAC,YAAY,CAAC,EAC3B,QAAQ,EACJ,qCAAK,EAAE,EAAC,kBAAkB,iBACtB,kCAAG,SAAS,EAAC,aAAa,gBAAE,OAAO,CAAC,OAAO,YAAK;gBAE5C,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;oBACpD,mCACI,kCAAG,EAAE,EAAC,mBAAmB,EAAC,IAAI,EAAE,MAAM,CAAC,OAAO,gBACzC,CAAC,CAAC,mBAAmB,CAAC,YACvB,WACJ,aAEN,YAEZ,CACL,CAAC;AACN,CAAC,CAAC,CAAC"}

3
lib/components/Info.d.ts vendored Normal file
View File

@ -0,0 +1,3 @@
/// <reference types="react" />
import type { KcProps } from "./KcProps";
export declare const Info: import("react").MemoExoticComponent<(props: KcProps) => JSX.Element>;

44
lib/components/Info.js Normal file
View File

@ -0,0 +1,44 @@
"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);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Info = void 0;
var jsx_runtime_1 = require("react/jsx-runtime");
var react_1 = require("react");
var Template_1 = require("./Template");
var assert_1 = require("../tools/assert");
var kcContext_1 = require("../kcContext");
var useKcTranslation_1 = require("../i18n/useKcTranslation");
exports.Info = react_1.memo(function (props) {
var t = useKcTranslation_1.useKcTranslation().t;
assert_1.assert(kcContext_1.kcContext !== undefined &&
kcContext_1.kcContext.pageId === "info.ftl" &&
kcContext_1.kcContext.message !== undefined);
var messageHeader = kcContext_1.kcContext.messageHeader, message = kcContext_1.kcContext.message, requiredActions = kcContext_1.kcContext.requiredActions, skipLink = kcContext_1.kcContext.skipLink, pageRedirectUri = kcContext_1.kcContext.pageRedirectUri, actionUri = kcContext_1.kcContext.actionUri, client = kcContext_1.kcContext.client;
return (jsx_runtime_1.jsx(Template_1.Template, __assign({}, props, { displayMessage: false, headerNode: messageHeader !== undefined ?
jsx_runtime_1.jsx(jsx_runtime_1.Fragment, { children: messageHeader }, void 0)
:
jsx_runtime_1.jsx(jsx_runtime_1.Fragment, { children: message.summary }, void 0), formNode: jsx_runtime_1.jsxs("div", __assign({ id: "kc-info-message" }, { children: [jsx_runtime_1.jsxs("p", __assign({ className: "instruction" }, { children: [message.summary, requiredActions !== undefined &&
jsx_runtime_1.jsx("b", { children: requiredActions
.map(function (requiredAction) { return t("requiredAction." + requiredAction); })
.join(",") }, void 0)] }), void 0),
!skipLink &&
pageRedirectUri !== undefined ?
jsx_runtime_1.jsx("p", { children: jsx_runtime_1.jsxs("a", __assign({ href: "${pageRedirectUri}" }, { children: ["$", (t("backToApplication"))] }), void 0) }, void 0)
:
actionUri !== undefined ?
jsx_runtime_1.jsx("p", { children: jsx_runtime_1.jsxs("a", __assign({ href: "${actionUri}" }, { children: ["$", t("proceedWithAction")] }), void 0) }, void 0)
:
client.baseUrl !== undefined &&
jsx_runtime_1.jsx("p", { children: jsx_runtime_1.jsxs("a", __assign({ href: "${client.baseUrl}" }, { children: ["$", t("backToApplication")] }), void 0) }, void 0)] }), void 0) }), void 0));
});
//# sourceMappingURL=Info.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"Info.js","sourceRoot":"","sources":["../../src/lib/components/Info.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,+BAA6B;AAC7B,uCAAsC;AAEtC,0CAAyC;AACzC,0CAAyC;AACzC,6DAA4D;AAE/C,QAAA,IAAI,GAAG,YAAI,CAAC,UAAC,KAAc;IAE5B,IAAA,CAAC,GAAK,mCAAgB,EAAE,EAAvB,CAAwB;IAEjC,eAAM,CACF,qBAAS,KAAK,SAAS;QACvB,qBAAS,CAAC,MAAM,KAAK,UAAU;QAC/B,qBAAS,CAAC,OAAO,KAAK,SAAS,CAClC,CAAC;IAGE,IAAA,aAAa,GAOb,qBAAS,cAPI,EACb,OAAO,GAMP,qBAAS,QANF,EACP,eAAe,GAKf,qBAAS,gBALM,EACf,QAAQ,GAIR,qBAAS,SAJD,EACR,eAAe,GAGf,qBAAS,gBAHM,EACf,SAAS,GAET,qBAAS,UAFA,EACT,MAAM,GACN,qBAAS,OADH,CACI;IAEd,OAAO,CACH,kBAAC,mBAAQ,eACD,KAAK,IACT,cAAc,EAAE,KAAK,EACrB,UAAU,EACN,aAAa,KAAK,SAAS,CAAC,CAAC;YACzB,sDAAG,aAAa,WAAI;YACpB,CAAC;gBACD,sDAAG,OAAO,CAAC,OAAO,WAAI,EAE9B,QAAQ,EACJ,qCAAK,EAAE,EAAC,iBAAiB,iBACrB,mCAAG,SAAS,EAAC,aAAa,iBAAE,OAAO,CAAC,OAAO,EAGnC,eAAe,KAAK,SAAS;4BAC7B,mCAEQ,eAAe;qCACV,GAAG,CAAC,UAAA,cAAc,IAAI,OAAA,CAAC,CAAC,oBAAkB,cAAyB,CAAC,EAA9C,CAA8C,CAAC;qCACrE,IAAI,CAAC,GAAG,CAAC,WAGlB,aAIR;gBAEA,CAAC,QAAQ;oBACL,eAAe,KAAK,SAAS,CAAC,CAAC;oBAC/B,mCAAG,mCAAG,IAAI,EAAC,oBAAoB,sBAAG,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,aAAK,WAAI;oBACnE,CAAC;wBACD,SAAS,KAAK,SAAS,CAAC,CAAC;4BACrB,mCAAG,mCAAG,IAAI,EAAC,cAAc,sBAAG,CAAC,CAAC,mBAAmB,CAAC,aAAK,WAAI;4BAC3D,CAAC;gCACD,MAAM,CAAC,OAAO,KAAK,SAAS;oCAC5B,mCAAG,mCAAG,IAAI,EAAC,mBAAmB,sBAAG,CAAC,CAAC,mBAAmB,CAAC,aAAK,WAAI,aAE1E,YAIZ,CACL,CAAC;AACN,CAAC,CAAC,CAAC"}

View File

@ -1,6 +1,3 @@
/// <reference types="react" />
import type { KcPagesProperties } from "./KcProperties";
export declare type KcAppProps = {
kcProperties?: KcPagesProperties;
};
export declare const KcApp: import("react").MemoExoticComponent<(props: KcAppProps) => JSX.Element>;
import type { KcProps } from "./KcProps";
export declare const KcApp: import("react").MemoExoticComponent<(props: KcProps) => JSX.Element>;

View File

@ -1,4 +1,15 @@
"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);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.KcApp = void 0;
var jsx_runtime_1 = require("react/jsx-runtime");
@ -7,12 +18,15 @@ var kcContext_1 = require("../kcContext");
var assert_1 = require("../tools/assert");
var Login_1 = require("./Login");
var Register_1 = require("./Register");
var Info_1 = require("./Info");
var Error_1 = require("./Error");
exports.KcApp = react_1.memo(function (props) {
var kcProperties = props.kcProperties;
assert_1.assert(kcContext_1.kcContext !== undefined, "App is not currently served by a Keycloak server");
switch (kcContext_1.kcContext.pageBasename) {
case "login.ftl": return jsx_runtime_1.jsx(Login_1.Login, { kcProperties: kcProperties }, void 0);
case "register.ftl": return jsx_runtime_1.jsx(Register_1.Register, { kcProperties: kcProperties }, void 0);
switch (kcContext_1.kcContext.pageId) {
case "login.ftl": return jsx_runtime_1.jsx(Login_1.Login, __assign({}, props), void 0);
case "register.ftl": return jsx_runtime_1.jsx(Register_1.Register, __assign({}, props), void 0);
case "info.ftl": return jsx_runtime_1.jsx(Info_1.Info, __assign({}, props), void 0);
case "error.ftl": return jsx_runtime_1.jsx(Error_1.Error, __assign({}, props), void 0);
}
});
//# sourceMappingURL=KcApp.js.map

View File

@ -1 +1 @@
{"version":3,"file":"KcApp.js","sourceRoot":"","sources":["../../src/lib/components/KcApp.tsx"],"names":[],"mappings":";;;;AACA,+BAA6B;AAC7B,0CAAyC;AACzC,0CAAyC;AAEzC,iCAAgC;AAChC,uCAAsC;AAMzB,QAAA,KAAK,GAAG,YAAI,CAAC,UAAC,KAAiB;IAEhC,IAAA,YAAY,GAAK,KAAK,aAAV,CAAW;IAE/B,eAAM,CAAC,qBAAS,KAAK,SAAS,EAAE,kDAAkD,CAAC,CAAC;IAEpF,QAAQ,qBAAS,CAAC,YAAY,EAAE;QAC5B,KAAK,WAAW,CAAC,CAAC,OAAO,kBAAC,aAAK,IAAC,YAAY,EAAE,YAAY,WAAI,CAAC;QAC/D,KAAK,cAAc,CAAC,CAAC,OAAO,kBAAC,mBAAQ,IAAC,YAAY,EAAE,YAAY,WAAI,CAAC;KACxE;AAEL,CAAC,CAAC,CAAC"}
{"version":3,"file":"KcApp.js","sourceRoot":"","sources":["../../src/lib/components/KcApp.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,+BAA6B;AAC7B,0CAAyC;AACzC,0CAAyC;AAEzC,iCAAgC;AAChC,uCAAsC;AACtC,+BAA8B;AAC9B,iCAAgC;AAGnB,QAAA,KAAK,GAAG,YAAI,CAAC,UAAC,KAAc;IAErC,eAAM,CAAC,qBAAS,KAAK,SAAS,EAAE,kDAAkD,CAAC,CAAC;IAEpF,QAAQ,qBAAS,CAAC,MAAM,EAAE;QACtB,KAAK,WAAW,CAAC,CAAC,OAAO,kBAAC,aAAK,eAAK,KAAK,UAAI,CAAC;QAC9C,KAAK,cAAc,CAAC,CAAC,OAAO,kBAAC,mBAAQ,eAAK,KAAK,UAAI,CAAC;QACpD,KAAK,UAAU,CAAC,CAAC,OAAO,kBAAC,WAAI,eAAK,KAAK,UAAI,CAAC;QAC5C,KAAK,WAAW,CAAC,CAAC,OAAO,kBAAC,aAAK,eAAK,KAAK,UAAI,CAAC;KACjD;AAEL,CAAC,CAAC,CAAC"}

View File

@ -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 = "kcHtmlClass" | "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>;

View File

@ -1,82 +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"
]),
"kcHtmlClass": "login-pf",
"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-signup"
};
/** 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

View File

@ -1 +0,0 @@
{"version":3,"file":"KcProperties.js","sourceRoot":"","sources":["../../src/lib/components/KcProperties.ts"],"names":[],"mappings":"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"}

108
lib/components/KcProps.d.ts vendored Normal file
View File

@ -0,0 +1,108 @@
/** Class names can be provided as an array or separated by whitespace */
export declare type KcPropsGeneric<CssClasses extends string> = {
[key in CssClasses]: readonly string[] | string | undefined;
};
export declare type KcTemplateClassKey = "stylesCommon" | "styles" | "scripts" | "kcHtmlClass" | "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 KcTemplateProps = KcPropsGeneric<KcTemplateClassKey>;
export declare const defaultKcTemplateProps: {
readonly stylesCommon: readonly ["node_modules/patternfly/dist/css/patternfly.min.css", "node_modules/patternfly/dist/css/patternfly-additions.min.css", "lib/zocial/zocial.css"];
readonly styles: readonly ["css/login.css"];
readonly scripts: readonly [];
readonly kcHtmlClass: readonly ["login-pf"];
readonly kcLoginClass: readonly ["login-pf-page"];
readonly kcContentWrapperClass: readonly ["row"];
readonly kcHeaderClass: readonly ["login-pf-page-header"];
readonly kcHeaderWrapperClass: readonly [];
readonly kcFormCardClass: readonly ["card-pf"];
readonly kcFormCardAccountClass: readonly ["login-pf-accounts"];
readonly kcFormSocialAccountClass: readonly ["login-pf-social-section"];
readonly kcFormSocialAccountContentClass: readonly ["col-xs-12", "col-sm-6"];
readonly kcFormHeaderClass: readonly ["login-pf-header"];
readonly kcLocaleWrapperClass: readonly [];
readonly kcFeedbackErrorIcon: readonly ["pficon", "pficon-error-circle-o"];
readonly kcFeedbackWarningIcon: readonly ["pficon", "pficon-warning-triangle-o"];
readonly kcFeedbackSuccessIcon: readonly ["pficon", "pficon-ok"];
readonly kcFeedbackInfoIcon: readonly ["pficon", "pficon-info"];
readonly kcResetFlowIcon: readonly ["pficon", "pficon-arrow fa-2x"];
readonly kcFormGroupClass: readonly ["form-group"];
readonly kcLabelWrapperClass: readonly ["col-xs-12", "col-sm-12", "col-md-12", "col-lg-12"];
readonly kcSignUpClass: readonly ["login-pf-signup"];
readonly kcInfoAreaWrapperClass: readonly [];
};
/** Tu use if you don't want any default */
export declare const allClearKcTemplateProps: Record<"stylesCommon" | "styles" | "scripts" | "kcHtmlClass" | "kcLoginClass" | "kcHeaderClass" | "kcHeaderWrapperClass" | "kcFormCardClass" | "kcFormCardAccountClass" | "kcFormHeaderClass" | "kcLocaleWrapperClass" | "kcContentWrapperClass" | "kcLabelWrapperClass" | "kcFormGroupClass" | "kcResetFlowIcon" | "kcFeedbackSuccessIcon" | "kcFeedbackWarningIcon" | "kcFeedbackErrorIcon" | "kcFeedbackInfoIcon" | "kcFormSocialAccountContentClass" | "kcFormSocialAccountClass" | "kcSignUpClass" | "kcInfoAreaWrapperClass", undefined>;
export declare type KcProps = KcPropsGeneric<KcTemplateClassKey | "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 defaultKcProps: {
readonly kcLogoLink: "http://www.keycloak.org";
readonly kcLogoClass: "login-pf-brand";
readonly kcContainerClass: "container-fluid";
readonly kcContentClass: readonly ["col-sm-8", "col-sm-offset-2", "col-md-6", "col-md-offset-3", "col-lg-6", "col-lg-offset-3"];
readonly kcFeedbackAreaClass: readonly ["col-md-12"];
readonly kcLocaleClass: readonly ["col-xs-12", "col-sm-1"];
readonly kcAlertIconClasserror: readonly ["pficon", "pficon-error-circle-o"];
readonly kcFormAreaClass: readonly ["col-sm-10", "col-sm-offset-1", "col-md-8", "col-md-offset-2", "col-lg-8", "col-lg-offset-2"];
readonly kcFormSocialAccountListClass: readonly ["login-pf-social", "list-unstyled", "login-pf-social-all"];
readonly kcFormSocialAccountDoubleListClass: readonly ["login-pf-social-double-col"];
readonly kcFormSocialAccountListLinkClass: readonly ["login-pf-social-link"];
readonly kcWebAuthnKeyIcon: readonly ["pficon", "pficon-key"];
readonly kcFormClass: readonly ["form-horizontal"];
readonly kcFormGroupErrorClass: readonly ["has-error"];
readonly kcLabelClass: readonly ["control-label"];
readonly kcInputClass: readonly ["form-control"];
readonly kcInputWrapperClass: readonly ["col-xs-12", "col-sm-12", "col-md-12", "col-lg-12"];
readonly kcFormOptionsClass: readonly ["col-xs-12", "col-sm-12", "col-md-12", "col-lg-12"];
readonly kcFormButtonsClass: readonly ["col-xs-12", "col-sm-12", "col-md-12", "col-lg-12"];
readonly kcFormSettingClass: readonly ["login-pf-settings"];
readonly kcTextareaClass: readonly ["form-control"];
readonly kcInfoAreaClass: readonly ["col-xs-12", "col-sm-4", "col-md-4", "col-lg-5", "details"];
readonly kcButtonClass: readonly ["btn"];
readonly kcButtonPrimaryClass: readonly ["btn-primary"];
readonly kcButtonDefaultClass: readonly ["btn-default"];
readonly kcButtonLargeClass: readonly ["btn-lg"];
readonly kcButtonBlockClass: readonly ["btn-block"];
readonly kcInputLargeClass: readonly ["input-lg"];
readonly kcSrOnlyClass: readonly ["sr-only"];
readonly kcSelectAuthListClass: readonly ["list-group", "list-view-pf"];
readonly kcSelectAuthListItemClass: readonly ["list-group-item", "list-view-pf-stacked"];
readonly kcSelectAuthListItemInfoClass: readonly ["list-view-pf-main-info"];
readonly kcSelectAuthListItemLeftClass: readonly ["list-view-pf-left"];
readonly kcSelectAuthListItemBodyClass: readonly ["list-view-pf-body"];
readonly kcSelectAuthListItemDescriptionClass: readonly ["list-view-pf-description"];
readonly kcSelectAuthListItemHeadingClass: readonly ["list-group-item-heading"];
readonly kcSelectAuthListItemHelpTextClass: readonly ["list-group-item-text"];
readonly kcAuthenticatorDefaultClass: readonly ["fa", "list-view-pf-icon-lg"];
readonly kcAuthenticatorPasswordClass: readonly ["fa", "fa-unlock list-view-pf-icon-lg"];
readonly kcAuthenticatorOTPClass: readonly ["fa", "fa-mobile", "list-view-pf-icon-lg"];
readonly kcAuthenticatorWebAuthnClass: readonly ["fa", "fa-key", "list-view-pf-icon-lg"];
readonly kcAuthenticatorWebAuthnPasswordlessClass: readonly ["fa", "fa-key", "list-view-pf-icon-lg"];
readonly kcSelectOTPListClass: readonly ["card-pf", "card-pf-view", "card-pf-view-select", "card-pf-view-single-select"];
readonly kcSelectOTPListItemClass: readonly ["card-pf-body", "card-pf-top-element"];
readonly kcAuthenticatorOtpCircleClass: readonly ["fa", "fa-mobile", "card-pf-icon-circle"];
readonly kcSelectOTPItemHeadingClass: readonly ["card-pf-title", "text-center"];
readonly kcFormOptionsWrapperClass: readonly [];
readonly stylesCommon: readonly ["node_modules/patternfly/dist/css/patternfly.min.css", "node_modules/patternfly/dist/css/patternfly-additions.min.css", "lib/zocial/zocial.css"];
readonly styles: readonly ["css/login.css"];
readonly scripts: readonly [];
readonly kcHtmlClass: readonly ["login-pf"];
readonly kcLoginClass: readonly ["login-pf-page"];
readonly kcContentWrapperClass: readonly ["row"];
readonly kcHeaderClass: readonly ["login-pf-page-header"];
readonly kcHeaderWrapperClass: readonly [];
readonly kcFormCardClass: readonly ["card-pf"];
readonly kcFormCardAccountClass: readonly ["login-pf-accounts"];
readonly kcFormSocialAccountClass: readonly ["login-pf-social-section"];
readonly kcFormSocialAccountContentClass: readonly ["col-xs-12", "col-sm-6"];
readonly kcFormHeaderClass: readonly ["login-pf-header"];
readonly kcLocaleWrapperClass: readonly [];
readonly kcFeedbackErrorIcon: readonly ["pficon", "pficon-error-circle-o"];
readonly kcFeedbackWarningIcon: readonly ["pficon", "pficon-warning-triangle-o"];
readonly kcFeedbackSuccessIcon: readonly ["pficon", "pficon-ok"];
readonly kcFeedbackInfoIcon: readonly ["pficon", "pficon-info"];
readonly kcResetFlowIcon: readonly ["pficon", "pficon-arrow fa-2x"];
readonly kcFormGroupClass: readonly ["form-group"];
readonly kcLabelWrapperClass: readonly ["col-xs-12", "col-sm-12", "col-md-12", "col-lg-12"];
readonly kcSignUpClass: readonly ["login-pf-signup"];
readonly kcInfoAreaWrapperClass: readonly [];
};
/** Tu use if you don't want any default */
export declare const allClearKcProps: Record<"stylesCommon" | "styles" | "scripts" | "kcHtmlClass" | "kcLoginClass" | "kcHeaderClass" | "kcHeaderWrapperClass" | "kcFormCardClass" | "kcFormCardAccountClass" | "kcFormHeaderClass" | "kcLocaleWrapperClass" | "kcContentWrapperClass" | "kcLabelWrapperClass" | "kcFormGroupClass" | "kcResetFlowIcon" | "kcFeedbackSuccessIcon" | "kcFeedbackWarningIcon" | "kcFeedbackErrorIcon" | "kcFeedbackInfoIcon" | "kcFormSocialAccountContentClass" | "kcFormSocialAccountClass" | "kcSignUpClass" | "kcInfoAreaWrapperClass" | "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>;

71
lib/components/KcProps.js Normal file
View File

@ -0,0 +1,71 @@
"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);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.allClearKcProps = exports.defaultKcProps = exports.allClearKcTemplateProps = exports.defaultKcTemplateProps = void 0;
var allPropertiesValuesToUndefined_1 = require("../tools/allPropertiesValuesToUndefined");
var doExtends_1 = require("evt/tools/typeSafety/doExtends");
exports.defaultKcTemplateProps = {
"stylesCommon": [
"node_modules/patternfly/dist/css/patternfly.min.css",
"node_modules/patternfly/dist/css/patternfly-additions.min.css",
"lib/zocial/zocial.css"
],
"styles": ["css/login.css"],
"scripts": [],
"kcHtmlClass": ["login-pf"],
"kcLoginClass": ["login-pf-page"],
"kcContentWrapperClass": ["row"],
"kcHeaderClass": ["login-pf-page-header"],
"kcHeaderWrapperClass": [],
"kcFormCardClass": ["card-pf"],
"kcFormCardAccountClass": ["login-pf-accounts"],
"kcFormSocialAccountClass": ["login-pf-social-section"],
"kcFormSocialAccountContentClass": ["col-xs-12", "col-sm-6"],
"kcFormHeaderClass": ["login-pf-header"],
"kcLocaleWrapperClass": [],
"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-signup"],
"kcInfoAreaWrapperClass": []
};
doExtends_1.doExtends();
/** Tu use if you don't want any default */
exports.allClearKcTemplateProps = allPropertiesValuesToUndefined_1.allPropertiesValuesToUndefined(exports.defaultKcTemplateProps);
doExtends_1.doExtends();
exports.defaultKcProps = __assign(__assign({}, exports.defaultKcTemplateProps), { "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"], "kcFormOptionsWrapperClass": [] });
doExtends_1.doExtends();
/** Tu use if you don't want any default */
exports.allClearKcProps = allPropertiesValuesToUndefined_1.allPropertiesValuesToUndefined(exports.defaultKcProps);
doExtends_1.doExtends();
//# sourceMappingURL=KcProps.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"KcProps.js","sourceRoot":"","sources":["../../src/lib/components/KcProps.ts"],"names":[],"mappings":"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"}

View File

@ -1,6 +1,3 @@
/// <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>;
import type { KcProps } from "./KcProps";
export declare const Login: import("react").MemoExoticComponent<(props: KcProps) => JSX.Element>;

View File

@ -31,7 +31,6 @@ 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("../tools/assert");
var kcContext_1 = require("../kcContext");
var useKcTranslation_1 = require("../i18n/useKcTranslation");
@ -39,41 +38,37 @@ 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 () {
assert_1.assert(kcContext_1.kcContext !== undefined &&
kcContext_1.kcContext.pageBasename === "login.ftl");
return 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 _b = useKcTranslation_1.useKcTranslation(), t = _b.t, tStr = _b.tStr;
assert_1.assert(kcContext_1.kcContext !== undefined &&
kcContext_1.kcContext.pageId === "login.ftl");
var social = kcContext_1.kcContext.social, realm = kcContext_1.kcContext.realm, url = kcContext_1.kcContext.url, usernameEditDisabled = kcContext_1.kcContext.usernameEditDisabled, login = kcContext_1.kcContext.login, auth = kcContext_1.kcContext.auth, registrationDisabled = kcContext_1.kcContext.registrationDisabled;
var _c = __read(react_1.useState(false), 2), isLoginButtonDisabled = _c[0], setIsLoginButtonDisabled = _c[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"), 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 ?
return (jsx_runtime_1.jsx(Template_1.Template, __assign({}, props, { displayInfo: social.displayInfo, displayWide: realm.password && social.providers !== undefined, headerNode: t("doLogIn"), formNode: jsx_runtime_1.jsxs("div", __assign({ id: "kc-form", className: tss_react_1.cx(realm.password && social.providers !== undefined && props.kcContentWrapperClass) }, { children: [jsx_runtime_1.jsx("div", __assign({ id: "kc-form-wrapper", className: tss_react_1.cx(realm.password && social.providers && [props.kcFormSocialAccountContentClass, props.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(props.kcFormGroupClass) }, { children: [jsx_runtime_1.jsx("label", __assign({ htmlFor: "username", className: tss_react_1.cx(props.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", defaultValue: (_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 &&
jsx_runtime_1.jsx("input", __assign({ tabIndex: 1, id: "username", className: tss_react_1.cx(props.kcInputClass), name: "username", defaultValue: (_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(props.kcFormGroupClass) }, { children: [jsx_runtime_1.jsx("label", __assign({ htmlFor: "password", className: tss_react_1.cx(props.kcLabelClass) }, { children: t("password") }), void 0),
jsx_runtime_1.jsx("input", { tabIndex: 2, id: "password", className: tss_react_1.cx(props.kcInputClass), name: "password", type: "password", autoComplete: "off" }, void 0)] }), void 0),
jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(props.kcFormGroupClass, props.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.jsxs("label", { children: [jsx_runtime_1.jsx("input", __assign({ tabIndex: 3, id: "rememberMe", name: "rememberMe", type: "checkbox" }, (login.rememberMe ? { "checked": true } : {})), void 0), t("rememberMe")] }, 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("div", __assign({ className: tss_react_1.cx(props.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),
jsx_runtime_1.jsxs("div", __assign({ id: "kc-form-buttons", className: tss_react_1.cx(props.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(props.kcButtonClass, props.kcButtonPrimaryClass, props.kcButtonBlockClass, props.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);
jsx_runtime_1.jsx("div", __assign({ id: "kc-social-providers", className: tss_react_1.cx(props.kcFormSocialAccountContentClass, props.kcFormSocialAccountClass) }, { children: jsx_runtime_1.jsx("ul", __assign({ className: tss_react_1.cx(props.kcFormSocialAccountListClass, social.providers.length > 4 && props.kcFormSocialAccountDoubleListClass) }, { children: social.providers.map(function (p) {
return jsx_runtime_1.jsx("li", __assign({ className: tss_react_1.cx(props.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.registrationAllowed &&
!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));
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

View File

@ -1 +1 @@
{"version":3,"file":"Login.js","sourceRoot":"","sources":["../../src/lib/components/Login.tsx"],"names":[],"mappings":"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"}
{"version":3,"file":"Login.js","sourceRoot":"","sources":["../../src/lib/components/Login.tsx"],"names":[],"mappings":"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"}

View File

@ -1,6 +1,3 @@
/// <reference types="react" />
import type { KcPagesProperties } from "./KcProperties";
export declare type RegisterPageProps = {
kcProperties?: KcPagesProperties;
};
export declare const Register: import("react").MemoExoticComponent<(props: RegisterPageProps) => JSX.Element>;
import type { KcProps } from "./KcProps";
export declare const Register: import("react").MemoExoticComponent<(props: KcProps) => JSX.Element>;

View File

@ -10,59 +10,38 @@ var __assign = (this && this.__assign) || function () {
};
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.Register = 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("../tools/assert");
var kcContext_1 = require("../kcContext");
var useKcTranslation_1 = require("../i18n/useKcTranslation");
var tss_react_1 = require("tss-react");
exports.Register = react_1.memo(function (props) {
var _a, _b, _c, _d;
var _e = props.kcProperties, kcProperties = _e === void 0 ? {} : _e;
var _f = useKcTranslation_1.useKcTranslation(), t = _f.t, tStr = _f.tStr;
Object.assign(kcProperties, KcProperties_1.defaultKcPagesProperties);
var _g = __read(react_1.useState(function () {
assert_1.assert(kcContext_1.kcContext !== undefined &&
kcContext_1.kcContext.pageBasename === "register.ftl");
return kcContext_1.kcContext;
}), 1), _h = _g[0], url = _h.url, messagesPerField = _h.messagesPerField, register = _h.register, realm = _h.realm, passwordRequired = _h.passwordRequired, recaptchaRequired = _h.recaptchaRequired, recaptchaSiteKey = _h.recaptchaSiteKey;
return (jsx_runtime_1.jsx(Template_1.Template, { kcProperties: kcProperties, headerNode: t("registerTitle"), formNode: jsx_runtime_1.jsxs("form", __assign({ id: "kc-register-form", className: tss_react_1.cx(kcProperties.kcFormClass), action: url.registrationAction, method: "post" }, { children: [jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(kcProperties.kcFormGroupClass, messagesPerField.printIfExists('firstName', kcProperties.kcFormGroupErrorClass)) }, { children: [jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(kcProperties.kcLabelWrapperClass) }, { children: jsx_runtime_1.jsx("label", __assign({ htmlFor: "firstName", className: tss_react_1.cx(kcProperties.kcLabelClass) }, { children: t("firstName") }), void 0) }), void 0),
jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(kcProperties.kcInputWrapperClass) }, { children: jsx_runtime_1.jsx("input", { type: "text", id: "firstName", className: tss_react_1.cx(kcProperties.kcInputClass), name: "firstName", defaultValue: (_a = register.formData.firstName) !== null && _a !== void 0 ? _a : "" }, void 0) }), void 0)] }), void 0),
jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(kcProperties.kcFormGroupClass, messagesPerField.printIfExists("lastName", kcProperties.kcFormGroupErrorClass)) }, { children: [jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(kcProperties.kcLabelWrapperClass) }, { children: jsx_runtime_1.jsx("label", __assign({ htmlFor: "lastName", className: tss_react_1.cx(kcProperties.kcLabelClass) }, { children: t("lastName") }), void 0) }), void 0),
jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(kcProperties.kcInputWrapperClass) }, { children: jsx_runtime_1.jsx("input", { type: "text", id: "lastName", className: tss_react_1.cx(kcProperties.kcInputClass), name: "lastName", defaultValue: (_b = register.formData.lastName) !== null && _b !== void 0 ? _b : "" }, void 0) }), void 0)] }), void 0),
jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(kcProperties.kcFormGroupClass, messagesPerField.printIfExists('email', kcProperties.kcFormGroupErrorClass)) }, { children: [jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(kcProperties.kcLabelWrapperClass) }, { children: jsx_runtime_1.jsx("label", __assign({ htmlFor: "email", className: tss_react_1.cx(kcProperties.kcLabelClass) }, { children: t("email") }), void 0) }), void 0),
jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(kcProperties.kcInputWrapperClass) }, { children: jsx_runtime_1.jsx("input", { type: "text", id: "email", className: tss_react_1.cx(kcProperties.kcInputClass), name: "email", defaultValue: (_c = register.formData.email) !== null && _c !== void 0 ? _c : "", autoComplete: "email" }, void 0) }), void 0)] }), void 0),
var _e = useKcTranslation_1.useKcTranslation(), t = _e.t, tStr = _e.tStr;
assert_1.assert(kcContext_1.kcContext !== undefined &&
kcContext_1.kcContext.pageId === "register.ftl");
var url = kcContext_1.kcContext.url, messagesPerField = kcContext_1.kcContext.messagesPerField, register = kcContext_1.kcContext.register, realm = kcContext_1.kcContext.realm, passwordRequired = kcContext_1.kcContext.passwordRequired, recaptchaRequired = kcContext_1.kcContext.recaptchaRequired, recaptchaSiteKey = kcContext_1.kcContext.recaptchaSiteKey;
return (jsx_runtime_1.jsx(Template_1.Template, __assign({}, props, { headerNode: t("registerTitle"), formNode: jsx_runtime_1.jsxs("form", __assign({ id: "kc-register-form", className: tss_react_1.cx(props.kcFormClass), action: url.registrationAction, method: "post" }, { children: [jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(props.kcFormGroupClass, messagesPerField.printIfExists('firstName', props.kcFormGroupErrorClass)) }, { children: [jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcLabelWrapperClass) }, { children: jsx_runtime_1.jsx("label", __assign({ htmlFor: "firstName", className: tss_react_1.cx(props.kcLabelClass) }, { children: t("firstName") }), void 0) }), void 0),
jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcInputWrapperClass) }, { children: jsx_runtime_1.jsx("input", { type: "text", id: "firstName", className: tss_react_1.cx(props.kcInputClass), name: "firstName", defaultValue: (_a = register.formData.firstName) !== null && _a !== void 0 ? _a : "" }, void 0) }), void 0)] }), void 0),
jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(props.kcFormGroupClass, messagesPerField.printIfExists("lastName", props.kcFormGroupErrorClass)) }, { children: [jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcLabelWrapperClass) }, { children: jsx_runtime_1.jsx("label", __assign({ htmlFor: "lastName", className: tss_react_1.cx(props.kcLabelClass) }, { children: t("lastName") }), void 0) }), void 0),
jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcInputWrapperClass) }, { children: jsx_runtime_1.jsx("input", { type: "text", id: "lastName", className: tss_react_1.cx(props.kcInputClass), name: "lastName", defaultValue: (_b = register.formData.lastName) !== null && _b !== void 0 ? _b : "" }, void 0) }), void 0)] }), void 0),
jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(props.kcFormGroupClass, messagesPerField.printIfExists('email', props.kcFormGroupErrorClass)) }, { children: [jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcLabelWrapperClass) }, { children: jsx_runtime_1.jsx("label", __assign({ htmlFor: "email", className: tss_react_1.cx(props.kcLabelClass) }, { children: t("email") }), void 0) }), void 0),
jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcInputWrapperClass) }, { children: jsx_runtime_1.jsx("input", { type: "text", id: "email", className: tss_react_1.cx(props.kcInputClass), name: "email", defaultValue: (_c = register.formData.email) !== null && _c !== void 0 ? _c : "", autoComplete: "email" }, void 0) }), void 0)] }), void 0),
!realm.registrationEmailAsUsername &&
jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(kcProperties.kcFormGroupClass, messagesPerField.printIfExists('username', kcProperties.kcFormGroupErrorClass)) }, { children: [jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(kcProperties.kcLabelWrapperClass) }, { children: jsx_runtime_1.jsx("label", __assign({ htmlFor: "username", className: tss_react_1.cx(kcProperties.kcLabelClass) }, { children: t("username") }), void 0) }), void 0),
jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(kcProperties.kcInputWrapperClass) }, { children: jsx_runtime_1.jsx("input", { type: "text", id: "username", className: tss_react_1.cx(kcProperties.kcInputClass), name: "username", defaultValue: (_d = register.formData.username) !== null && _d !== void 0 ? _d : "", autoComplete: "username" }, void 0) }), void 0)] }), void 0),
jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(props.kcFormGroupClass, messagesPerField.printIfExists('username', props.kcFormGroupErrorClass)) }, { children: [jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcLabelWrapperClass) }, { children: jsx_runtime_1.jsx("label", __assign({ htmlFor: "username", className: tss_react_1.cx(props.kcLabelClass) }, { children: t("username") }), void 0) }), void 0),
jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcInputWrapperClass) }, { children: jsx_runtime_1.jsx("input", { type: "text", id: "username", className: tss_react_1.cx(props.kcInputClass), name: "username", defaultValue: (_d = register.formData.username) !== null && _d !== void 0 ? _d : "", autoComplete: "username" }, void 0) }), void 0)] }), void 0),
passwordRequired &&
jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(kcProperties.kcFormGroupClass, messagesPerField.printIfExists("password", kcProperties.kcFormGroupErrorClass)) }, { children: [jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(kcProperties.kcLabelWrapperClass) }, { children: jsx_runtime_1.jsx("label", __assign({ htmlFor: "password", className: tss_react_1.cx(kcProperties.kcLabelClass) }, { children: t("password") }), void 0) }), void 0),
jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(kcProperties.kcInputWrapperClass) }, { children: jsx_runtime_1.jsx("input", { type: "password", id: "password", className: tss_react_1.cx(kcProperties.kcInputClass), name: "password", autoComplete: "new-password" }, void 0) }), void 0)] }), void 0),
jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(kcProperties.kcFormGroupClass, messagesPerField.printIfExists("password-confirm", kcProperties.kcFormGroupErrorClass)) }, { children: [jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(kcProperties.kcLabelWrapperClass) }, { children: jsx_runtime_1.jsx("label", __assign({ htmlFor: "password-confirm", className: tss_react_1.cx(kcProperties.kcLabelClass) }, { children: t("passwordConfirm") }), void 0) }), void 0),
jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(kcProperties.kcInputWrapperClass) }, { children: jsx_runtime_1.jsx("input", { type: "password", id: "password-confirm", className: tss_react_1.cx(kcProperties.kcInputClass), name: "password-confirm" }, void 0) }), void 0)] }), void 0)] }, void 0),
jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(props.kcFormGroupClass, messagesPerField.printIfExists("password", props.kcFormGroupErrorClass)) }, { children: [jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcLabelWrapperClass) }, { children: jsx_runtime_1.jsx("label", __assign({ htmlFor: "password", className: tss_react_1.cx(props.kcLabelClass) }, { children: t("password") }), void 0) }), void 0),
jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcInputWrapperClass) }, { children: jsx_runtime_1.jsx("input", { type: "password", id: "password", className: tss_react_1.cx(props.kcInputClass), name: "password", autoComplete: "new-password" }, void 0) }), void 0)] }), void 0),
jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(props.kcFormGroupClass, messagesPerField.printIfExists("password-confirm", props.kcFormGroupErrorClass)) }, { children: [jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcLabelWrapperClass) }, { children: jsx_runtime_1.jsx("label", __assign({ htmlFor: "password-confirm", className: tss_react_1.cx(props.kcLabelClass) }, { children: t("passwordConfirm") }), void 0) }), void 0),
jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcInputWrapperClass) }, { children: jsx_runtime_1.jsx("input", { type: "password", id: "password-confirm", className: tss_react_1.cx(props.kcInputClass), name: "password-confirm" }, void 0) }), void 0)] }), void 0)] }, void 0),
recaptchaRequired &&
jsx_runtime_1.jsx("div", __assign({ className: "form-group" }, { children: jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(kcProperties.kcInputWrapperClass) }, { children: jsx_runtime_1.jsx("div", { className: "g-recaptcha", "data-size": "compact", "data-sitekey": recaptchaSiteKey }, void 0) }), void 0) }), void 0),
jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(kcProperties.kcFormGroupClass) }, { children: [jsx_runtime_1.jsx("div", __assign({ id: "kc-form-options", className: tss_react_1.cx(kcProperties.kcFormOptionsClass) }, { children: jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(kcProperties.kcFormOptionsWrapperClass) }, { children: jsx_runtime_1.jsx("span", { children: jsx_runtime_1.jsx("a", __assign({ href: url.loginUrl }, { children: t("backToLogin") }), void 0) }, void 0) }), void 0) }), void 0),
jsx_runtime_1.jsx("div", __assign({ id: "kc-form-buttons", className: tss_react_1.cx(kcProperties.kcFormButtonsClass) }, { children: jsx_runtime_1.jsx("input", { className: tss_react_1.cx(kcProperties.kcButtonClass, kcProperties.kcButtonPrimaryClass, kcProperties.kcButtonBlockClass, kcProperties.kcButtonLargeClass), type: "submit", defaultValue: tStr("doRegister") }, void 0) }), void 0)] }), void 0)] }), void 0) }, void 0));
jsx_runtime_1.jsx("div", __assign({ className: "form-group" }, { children: jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcInputWrapperClass) }, { children: jsx_runtime_1.jsx("div", { className: "g-recaptcha", "data-size": "compact", "data-sitekey": recaptchaSiteKey }, void 0) }), void 0) }), void 0),
jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(props.kcFormGroupClass) }, { children: [jsx_runtime_1.jsx("div", __assign({ id: "kc-form-options", className: tss_react_1.cx(props.kcFormOptionsClass) }, { children: jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.kcFormOptionsWrapperClass) }, { children: jsx_runtime_1.jsx("span", { children: jsx_runtime_1.jsx("a", __assign({ href: url.loginUrl }, { children: t("backToLogin") }), void 0) }, void 0) }), void 0) }), void 0),
jsx_runtime_1.jsx("div", __assign({ id: "kc-form-buttons", className: tss_react_1.cx(props.kcFormButtonsClass) }, { children: jsx_runtime_1.jsx("input", { className: tss_react_1.cx(props.kcButtonClass, props.kcButtonPrimaryClass, props.kcButtonBlockClass, props.kcButtonLargeClass), type: "submit", defaultValue: tStr("doRegister") }, void 0) }), void 0)] }), void 0)] }), void 0) }), void 0));
});
//# sourceMappingURL=Register.js.map

View File

@ -1 +1 @@
{"version":3,"file":"Register.js","sourceRoot":"","sources":["../../src/lib/components/Register.tsx"],"names":[],"mappings":"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"}
{"version":3,"file":"Register.js","sourceRoot":"","sources":["../../src/lib/components/Register.tsx"],"names":[],"mappings":"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"}

View File

@ -1,7 +1,6 @@
import type { ReactNode } from "react";
import type { KcTemplateProperties } from "./KcProperties";
import type { KcTemplateProps } from "./KcProps";
export declare type TemplateProps = {
kcProperties: KcTemplateProperties;
displayInfo?: boolean;
displayMessage?: boolean;
displayRequiredFields?: boolean;
@ -11,5 +10,5 @@ export declare type TemplateProps = {
showUsernameNode?: ReactNode;
formNode: ReactNode;
displayInfoNode?: ReactNode;
};
} & KcTemplateProps;
export declare const Template: import("react").MemoExoticComponent<(props: TemplateProps) => JSX.Element | null>;

View File

@ -36,37 +36,51 @@ exports.Template = void 0;
var jsx_runtime_1 = require("react/jsx-runtime");
var react_1 = require("react");
var useKcTranslation_1 = require("../i18n/useKcTranslation");
var useKcLanguageTag_1 = require("../i18n/useKcLanguageTag");
var kcContext_1 = require("../kcContext");
var assert_1 = require("../tools/assert");
var tss_react_1 = require("tss-react");
var useKcLanguageTag_1 = require("../i18n/useKcLanguageTag");
var KcLanguageTag_1 = require("../i18n/KcLanguageTag");
var KcLanguageTag_2 = require("../i18n/KcLanguageTag");
var powerhooks_1 = require("powerhooks");
var appendHead_1 = require("../tools/appendHead");
var path_1 = require("path");
var powerhooks_2 = require("powerhooks");
var KcProperties_1 = require("./KcProperties");
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.kcProperties, kcProperties = _f === void 0 ? {} : _f, headerNode = props.headerNode, _g = props.showUsernameNode, showUsernameNode = _g === void 0 ? null : _g, formNode = props.formNode, _h = props.displayInfoNode, displayInfoNode = _h === void 0 ? null : _h;
console.log("Rendering this page with react using keycloak-react-theming");
var _a = props.displayInfo, displayInfo = _a === void 0 ? false : _a, _b = props.displayMessage, displayMessage = _b === void 0 ? true : _b, _c = props.displayRequiredFields, displayRequiredFields = _c === void 0 ? false : _c, _d = props.displayWide, displayWide = _d === void 0 ? false : _d, _e = props.showAnotherWayIfPresent, showAnotherWayIfPresent = _e === void 0 ? true : _e, headerNode = props.headerNode, _f = props.showUsernameNode, showUsernameNode = _f === void 0 ? null : _f, formNode = props.formNode, _g = props.displayInfoNode, displayInfoNode = _g === void 0 ? null : _g;
react_1.useEffect(function () { console.log("Rendering this page with react using keycloakify"); }, []);
var t = useKcTranslation_1.useKcTranslation().t;
Object.assign(kcProperties, KcProperties_1.defaultKcTemplateProperties);
var _j = useKcLanguageTag_1.useKcLanguageTag(), kcLanguageTag = _j.kcLanguageTag, setKcLanguageTag = _j.setKcLanguageTag;
var _h = useKcLanguageTag_1.useKcLanguageTag(), kcLanguageTag = _h.kcLanguageTag, setKcLanguageTag = _h.setKcLanguageTag;
var onChangeLanguageClickFactory = powerhooks_1.useCallbackFactory(function (_a) {
var _b = __read(_a, 1), languageTag = _b[0];
return setKcLanguageTag(languageTag);
});
var onTryAnotherWayClick = powerhooks_2.useConstCallback(function () {
document.forms["kc-select-try-another-way-form"].submit();
return false;
return (document.forms["kc-select-try-another-way-form"].submit(), false);
});
var _k = __read(react_1.useState(function () { return (assert_1.assert(kcContext_1.kcContext !== undefined, "App is not currently being served by KeyCloak"),
kcContext_1.kcContext); }), 1), _l = _k[0], realm = _l.realm, locale = _l.locale, auth = _l.auth, url = _l.url, message = _l.message, isAppInitiatedAction = _l.isAppInitiatedAction;
var _m = __read(react_1.useReducer(function () { return true; }, false), 2), isExtraCssLoaded = _m[0], setExtraCssLoaded = _m[1];
assert_1.assert(kcContext_1.kcContext !== undefined);
var realm = kcContext_1.kcContext.realm, locale = kcContext_1.kcContext.locale, auth = kcContext_1.kcContext.auth, url = kcContext_1.kcContext.url, message = kcContext_1.kcContext.message, isAppInitiatedAction = kcContext_1.kcContext.isAppInitiatedAction;
react_1.useEffect(function () {
if (!realm.internationalizationEnabled) {
return;
}
assert_1.assert(locale !== undefined);
if (kcLanguageTag === KcLanguageTag_1.getBestMatchAmongKcLanguageTag(locale.current)) {
return;
}
window.location.href =
locale.supported.find(function (_a) {
var languageTag = _a.languageTag;
return languageTag === kcLanguageTag;
}).url;
}, [kcLanguageTag]);
var _j = __read(react_1.useReducer(function () { return true; }, false), 2), isExtraCssLoaded = _j[0], setExtraCssLoaded = _j[1];
react_1.useEffect(function () {
var _a, _b, _c;
var isUnmounted = false;
Promise.all(__spreadArray(__spreadArray([], __read(((_a = kcProperties.stylesCommon) !== null && _a !== void 0 ? _a : []).map(function (relativePath) { return path_1.join(url.resourcesCommonPath, relativePath); }))), __read(((_b = kcProperties.styles) !== null && _b !== void 0 ? _b : []).map(function (relativePath) { return path_1.join(url.resourcesPath, relativePath); }))).map(function (href) { return appendHead_1.appendHead({
var toArr = function (x) {
return typeof x === "string" ? x.split(" ") : x !== null && x !== void 0 ? x : [];
};
Promise.all(__spreadArray(__spreadArray([], __read(toArr(props.stylesCommon).map(function (relativePath) { return path_1.join(url.resourcesCommonPath, relativePath); }))), __read(toArr(props.styles).map(function (relativePath) { return path_1.join(url.resourcesPath, relativePath); }))).map(function (href) { return appendHead_1.appendHead({
"type": "css",
href: href
}); })).then(function () {
@ -75,54 +89,54 @@ exports.Template = react_1.memo(function (props) {
}
setExtraCssLoaded();
});
(_c = kcProperties.scripts) === null || _c === void 0 ? void 0 : _c.forEach(function (relativePath) { return appendHead_1.appendHead({
toArr(props.scripts).forEach(function (relativePath) { return appendHead_1.appendHead({
"type": "javascript",
"src": path_1.join(url.resourcesPath, relativePath)
}); });
document.getElementsByTagName("html")[0]
.classList
.add(tss_react_1.cx(kcProperties.kcHtmlClass));
.add(tss_react_1.cx(props.kcHtmlClass));
return function () { isUnmounted = true; };
}, []);
if (!isExtraCssLoaded) {
return null;
}
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),
jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(kcProperties.kcFormCardClass, displayWide && kcProperties.kcFormCardAccountClass) }, { children: [jsx_runtime_1.jsxs("header", __assign({ className: tss_react_1.cx(kcProperties.kcFormHeaderClass) }, { children: [(realm.internationalizationEnabled &&
return (jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(props.kcLoginClass) }, { children: [jsx_runtime_1.jsx("div", __assign({ id: "kc-header", className: tss_react_1.cx(props.kcHeaderClass) }, { children: jsx_runtime_1.jsx("div", __assign({ id: "kc-header-wrapper", className: tss_react_1.cx(props.kcHeaderWrapperClass) }, { children: t("loginTitleHtml", realm.displayNameHtml) }), void 0) }), void 0),
jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(props.kcFormCardClass, displayWide && props.kcFormCardAccountClass) }, { children: [jsx_runtime_1.jsxs("header", __assign({ className: tss_react_1.cx(props.kcFormHeaderClass) }, { children: [(realm.internationalizationEnabled &&
(assert_1.assert(locale !== undefined), true) &&
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(props.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_2.getKcLanguageTagLabel(kcLanguageTag) }), void 0),
jsx_runtime_1.jsx("ul", { children: locale.supported.map(function (_a) {
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: KcLanguageTag_2.getKcLanguageTagLabel(languageTag) }), void 0) }), void 0);
}) }, void 0)] }), void 0) }), void 0) }), void 0),
!(auth !== undefined &&
auth.showUsername &&
!auth.showResetCredentials) ?
(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(props.kcContentWrapperClass) }, { children: [jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.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("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.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.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("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("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("h1", __assign({ id: "kc-page-title" }, { children: headerNode }), void 0))) : (displayRequiredFields ? (jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(props.kcContentWrapperClass) }, { children: [jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(props.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(props.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(props.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(props.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(props.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("div", __assign({ id: "kc-content" }, { children: jsx_runtime_1.jsxs("div", __assign({ id: "kc-content-wrapper" }, { children: [(displayMessage &&
message !== undefined &&
(message.type !== "warning" ||
!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),
message.type === "warning" && jsx_runtime_1.jsx("span", { className: tss_react_1.cx(kcProperties.kcFeedbackWarningIcon) }, void 0),
message.type === "error" && jsx_runtime_1.jsx("span", { className: tss_react_1.cx(kcProperties.kcFeedbackErrorIcon) }, void 0),
message.type === "info" && jsx_runtime_1.jsx("span", { className: tss_react_1.cx(kcProperties.kcFeedbackInfoIcon) }, 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(props.kcFeedbackSuccessIcon) }, void 0),
message.type === "warning" && jsx_runtime_1.jsx("span", { className: tss_react_1.cx(props.kcFeedbackWarningIcon) }, void 0),
message.type === "error" && jsx_runtime_1.jsx("span", { className: tss_react_1.cx(props.kcFeedbackErrorIcon) }, void 0),
message.type === "info" && jsx_runtime_1.jsx("span", { className: tss_react_1.cx(props.kcFeedbackInfoIcon) }, void 0),
jsx_runtime_1.jsx("span", __assign({ className: "kc-feedback-text" }, { children: message.summary }), void 0)] }), void 0), formNode, (auth !== undefined &&
auth.showTryAnotherWayLink &&
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 && props.kcContentWrapperClass) }, { children: jsx_runtime_1.jsx("div", __assign({ className: tss_react_1.cx(displayWide && [props.kcFormSocialAccountContentClass, props.kcFormSocialAccountClass]) }, { children: jsx_runtime_1.jsxs("div", __assign({ className: tss_react_1.cx(props.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),
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(props.kcSignUpClass) }, { children: jsx_runtime_1.jsx("div", __assign({ id: "kc-info-wrapper", className: tss_react_1.cx(props.kcInfoAreaWrapperClass) }, { children: displayInfoNode }), void 0) }), void 0)] }), void 0) }), void 0)] }), void 0)] }), void 0));
});
//# sourceMappingURL=Template.js.map

File diff suppressed because one or more lines are too long

View File

@ -40,11 +40,14 @@ var availableLanguages = objectKeys_1.objectKeys(login_1.messages);
*/
function getBestMatchAmongKcLanguageTag(languageLike) {
var iso2LanguageLike = languageLike.split("-")[0].toLowerCase();
var language = availableLanguages.find(function (language) {
var kcLanguageTag = availableLanguages.find(function (language) {
return language.toLowerCase().includes(iso2LanguageLike) ||
getKcLanguageTagLabel(language).toLocaleLowerCase() === languageLike.toLocaleLowerCase();
});
if (language === undefined && languageLike !== navigator.language) {
if (kcLanguageTag !== undefined) {
return kcLanguageTag;
}
if (languageLike !== navigator.language) {
return getBestMatchAmongKcLanguageTag(navigator.language);
}
return "en";

View File

@ -1 +1 @@
{"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"}
{"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,aAAa,GAAG,kBAAkB,CAAC,IAAI,CAAC,UAAA,QAAQ;QAClD,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,aAAa,KAAK,SAAS,EAAE;QAC7B,OAAO,aAAa,CAAC;KACxB;IAED,IAAI,YAAY,KAAK,SAAS,CAAC,QAAQ,EAAE;QACrC,OAAO,8BAA8B,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;KAC7D;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AApBD,wEAoBC"}

View File

@ -6,6 +6,6 @@ var kcContext_1 = require("../kcContext");
var KcLanguageTag_1 = require("./KcLanguageTag");
exports.useKcLanguageTag = powerhooks_1.createUseGlobalState("kcLanguageTag", function () {
var _a, _b;
return KcLanguageTag_1.getBestMatchAmongKcLanguageTag((_b = (_a = kcContext_1.kcContext === null || kcContext_1.kcContext === void 0 ? void 0 : kcContext_1.kcContext.locale) === null || _a === void 0 ? void 0 : _a["current"]) !== null && _b !== void 0 ? _b : navigator.language);
}, { "persistance": "cookies" }).useKcLanguageTag;
return KcLanguageTag_1.getBestMatchAmongKcLanguageTag((_b = (_a = kcContext_1.kcContext === null || kcContext_1.kcContext === void 0 ? void 0 : kcContext_1.kcContext.locale) === null || _a === void 0 ? void 0 : _a.current) !== null && _b !== void 0 ? _b : navigator.language);
}, { "persistance": "cookie" }).useKcLanguageTag;
//# sourceMappingURL=useKcLanguageTag.js.map

View File

@ -1 +1 @@
{"version":3,"file":"useKcLanguageTag.js","sourceRoot":"","sources":["../../src/lib/i18n/useKcLanguageTag.ts"],"names":[],"mappings":";;;AACA,yCAAkD;AAClD,0CAAyC;AACzC,iDAAiE;AAElD,QAAA,gBAAgB,GAAK,iCAAoB,CACpD,eAAe,EACf;;IAAM,OAAA,8CAA8B,CAChC,MAAA,MAAA,qBAAS,aAAT,qBAAS,uBAAT,qBAAS,CAAE,MAAM,0CAAG,SAAkB,CAAC,mCACvC,SAAS,CAAC,QAAQ,CACrB,CAAA;CAAA,EACD,EAAE,aAAa,EAAE,SAAS,EAAE,CAC/B,kBAAC"}
{"version":3,"file":"useKcLanguageTag.js","sourceRoot":"","sources":["../../src/lib/i18n/useKcLanguageTag.ts"],"names":[],"mappings":";;;AACA,yCAAkD;AAClD,0CAAyC;AACzC,iDAAiE;AAElD,QAAA,gBAAgB,GAAK,iCAAoB,CACpD,eAAe,EACf;;IAAM,OAAA,8CAA8B,CAChC,MAAA,MAAA,qBAAS,aAAT,qBAAS,uBAAT,qBAAS,CAAE,MAAM,0CAAE,OAAO,mCAC1B,SAAS,CAAC,QAAQ,CACrB,CAAA;CAAA,EACD,EAAE,aAAa,EAAE,QAAQ,EAAE,CAC9B,kBAAC"}

File diff suppressed because one or more lines are too long

5
lib/index.d.ts vendored
View File

@ -2,7 +2,10 @@ export * from "./kcContext";
export * from "./i18n/KcLanguageTag";
export * from "./i18n/useKcLanguageTag";
export * from "./i18n/useKcTranslation";
export * from "./components/KcProperties";
export * from "./components/KcProps";
export * from "./components/Login";
export * from "./components/Template";
export * from "./components/KcApp";
export * from "./components/Info";
export * from "./components/Error";
export * from "./tools/assert";

View File

@ -14,8 +14,11 @@ __exportStar(require("./kcContext"), exports);
__exportStar(require("./i18n/KcLanguageTag"), exports);
__exportStar(require("./i18n/useKcLanguageTag"), exports);
__exportStar(require("./i18n/useKcTranslation"), exports);
__exportStar(require("./components/KcProperties"), exports);
__exportStar(require("./components/KcProps"), exports);
__exportStar(require("./components/Login"), exports);
__exportStar(require("./components/Template"), exports);
__exportStar(require("./components/KcApp"), exports);
__exportStar(require("./components/Info"), exports);
__exportStar(require("./components/Error"), exports);
__exportStar(require("./tools/assert"), exports);
//# sourceMappingURL=index.js.map

View File

@ -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;AACtC,qDAAmC"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA4B;AAE5B,uDAAqC;AACrC,0DAAwC;AACxC,0DAAwC;AAExC,uDAAqC;AACrC,qDAAmC;AACnC,wDAAsC;AACtC,qDAAmC;AACnC,oDAAkC;AAClC,qDAAmC;AAEnC,iDAA+B"}

31
lib/kcContext.d.ts vendored
View File

@ -1,5 +1,8 @@
import type { KcLanguageTag } from "./i18n/KcLanguageTag";
export declare type KcContext = KcContext.Login | KcContext.Register;
import type { MessageKey } from "./i18n/useKcTranslation";
import type { LanguageLabel } from "./i18n/KcLanguageTag";
declare type ExtractAfterStartingWith<Prefix extends string, StrEnum> = StrEnum extends `${Prefix}${infer U}` ? U : never;
export declare type KcContext = KcContext.Login | KcContext.Register | KcContext.Info | KcContext.Error;
export declare namespace KcContext {
type Template = {
url: {
@ -13,14 +16,15 @@ export declare namespace KcContext {
displayName?: string;
displayNameHtml?: string;
internationalizationEnabled: boolean;
password: boolean;
registrationEmailAsUsername: boolean;
};
/** Undefined if !realm.internationalizationEnabled */
locale?: {
supported: {
url: string;
languageTag: KcLanguageTag;
}[];
current: LanguageLabel;
};
auth?: {
showUsername: boolean;
@ -36,7 +40,7 @@ export declare namespace KcContext {
isAppInitiatedAction: boolean;
};
type Login = Template & {
pageBasename: "login.ftl";
pageId: "login.ftl";
url: {
loginResetCredentialsUrl: string;
registrationUrl: string;
@ -44,6 +48,7 @@ export declare namespace KcContext {
realm: {
loginWithEmailAllowed: boolean;
rememberMe: boolean;
password: boolean;
resetPasswordAllowed: boolean;
registrationAllowed: boolean;
};
@ -67,7 +72,7 @@ export declare namespace KcContext {
};
};
type Register = Template & {
pageBasename: "register.ftl";
pageId: "register.ftl";
url: {
registrationAction: string;
};
@ -88,5 +93,23 @@ export declare namespace KcContext {
/** undefined if !recaptchaRequired */
recaptchaSiteKey?: string;
};
type Info = Template & {
pageId: "info.ftl";
messageHeader?: string;
requiredActions?: ExtractAfterStartingWith<"requiredAction.", MessageKey>[];
skipLink: boolean;
pageRedirectUri?: string;
actionUri?: string;
client: {
baseUrl?: string;
};
};
type Error = Template & {
pageId: "error.ftl";
client?: {
baseUrl?: string;
};
};
}
export declare const kcContext: KcContext | undefined;
export {};

View File

@ -4,9 +4,7 @@ exports.kcContext = void 0;
var ftlValuesGlobalName_1 = require("../bin/build-keycloak-theme/ftlValuesGlobalName");
var id_1 = require("evt/tools/typeSafety/id");
var doExtends_1 = require("evt/tools/typeSafety/doExtends");
{
doExtends_1.doExtends();
doExtends_1.doExtends();
}
doExtends_1.doExtends();
doExtends_1.doExtends();
exports.kcContext = id_1.id(window[ftlValuesGlobalName_1.ftlValuesGlobalName]);
//# sourceMappingURL=kcContext.js.map

View File

@ -1 +1 @@
{"version":3,"file":"kcContext.js","sourceRoot":"","sources":["../src/lib/kcContext.ts"],"names":[],"mappings":";;;AACA,uFAAsF;AAEtF,8CAA6C;AAE7C,4DAA2D;AAoH3D;IAII,qBAAS,EAAQ,CAAC;IAClB,qBAAS,EAAQ,CAAC;CACrB;AAEY,QAAA,SAAS,GAAG,OAAE,CAAyB,MAAc,CAAC,yCAAmB,CAAC,CAAC,CAAC"}
{"version":3,"file":"kcContext.js","sourceRoot":"","sources":["../src/lib/kcContext.ts"],"names":[],"mappings":";;;AACA,uFAAsF;AAEtF,8CAA6C;AAE7C,4DAA2D;AAyI3D,qBAAS,EAA+B,CAAC;AACzC,qBAAS,EAA+B,CAAC;AAE5B,QAAA,SAAS,GAAG,OAAE,CAAyB,MAAc,CAAC,yCAAmB,CAAC,CAAC,CAAC"}

View File

@ -1,10 +1,10 @@
{
"name": "keycloak-react-theming",
"version": "0.0.32",
"name": "keycloakify",
"version": "0.1.2",
"description": "Keycloak theme generator for Reacts app",
"repository": {
"type": "git",
"url": "git://github.com/garronej/keycloak-react-theming.git"
"url": "git://github.com/garronej/keycloakify.git"
},
"main": "lib/index.js",
"types": "lib/index.d.ts",
@ -18,7 +18,11 @@
"src/bin/build-keycloak-theme/ftlValuesGlobalName.ts",
"src/bin/build-keycloak-theme/generateDebugFiles/index.ts",
"src/bin/build-keycloak-theme/generateDebugFiles/standalone-ha.xml",
"src/bin/build-keycloak-theme/generateFtl/Object.deepAssign.js",
"src/bin/build-keycloak-theme/generateFtl/String.htmlUnescape.js",
"src/bin/build-keycloak-theme/generateFtl/error.ftl",
"src/bin/build-keycloak-theme/generateFtl/index.ts",
"src/bin/build-keycloak-theme/generateFtl/info.ftl",
"src/bin/build-keycloak-theme/generateFtl/login.ftl",
"src/bin/build-keycloak-theme/generateFtl/register.ftl",
"src/bin/build-keycloak-theme/generateFtl/template.ftl",
@ -33,8 +37,10 @@
"src/bin/tools/getProjectRoot.ts",
"src/bin/tools/grant-exec-perms.ts",
"src/bin/tools/transformCodebase.ts",
"src/lib/components/Error.tsx",
"src/lib/components/Info.tsx",
"src/lib/components/KcApp.tsx",
"src/lib/components/KcProperties.ts",
"src/lib/components/KcProps.ts",
"src/lib/components/Login.tsx",
"src/lib/components/Register.tsx",
"src/lib/components/Template.tsx",
@ -57,9 +63,13 @@
"bin/build-keycloak-theme/generateDebugFiles/index.js",
"bin/build-keycloak-theme/generateDebugFiles/index.js.map",
"bin/build-keycloak-theme/generateDebugFiles/standalone-ha.xml",
"bin/build-keycloak-theme/generateFtl/Object.deepAssign.js",
"bin/build-keycloak-theme/generateFtl/String.htmlUnescape.js",
"bin/build-keycloak-theme/generateFtl/error.ftl",
"bin/build-keycloak-theme/generateFtl/index.d.ts",
"bin/build-keycloak-theme/generateFtl/index.js",
"bin/build-keycloak-theme/generateFtl/index.js.map",
"bin/build-keycloak-theme/generateFtl/info.ftl",
"bin/build-keycloak-theme/generateFtl/login.ftl",
"bin/build-keycloak-theme/generateFtl/register.ftl",
"bin/build-keycloak-theme/generateFtl/template.ftl",
@ -96,12 +106,18 @@
"bin/tools/transformCodebase.d.ts",
"bin/tools/transformCodebase.js",
"bin/tools/transformCodebase.js.map",
"lib/components/Error.d.ts",
"lib/components/Error.js",
"lib/components/Error.js.map",
"lib/components/Info.d.ts",
"lib/components/Info.js",
"lib/components/Info.js.map",
"lib/components/KcApp.d.ts",
"lib/components/KcApp.js",
"lib/components/KcApp.js.map",
"lib/components/KcProperties.d.ts",
"lib/components/KcProperties.js",
"lib/components/KcProperties.js.map",
"lib/components/KcProps.d.ts",
"lib/components/KcProps.js",
"lib/components/KcProps.js.map",
"lib/components/Login.d.ts",
"lib/components/Login.js",
"lib/components/Login.js.map",
@ -157,7 +173,7 @@
"login",
"register"
],
"homepage": "https://github.com/garronej/keycloak-react-theming",
"homepage": "https://github.com/garronej/keycloakify",
"devDependencies": {
"@types/node": "^10.0.0",
"@types/react": "^17.0.0",
@ -169,11 +185,11 @@
"typescript": "^4.1.5"
},
"dependencies": {
"scripting-tools": "^0.19.13",
"cheerio": "^1.0.0-rc.5",
"evt": "2.0.0-beta.15",
"minimal-polyfills": "^2.1.6",
"powerhooks": "^0.0.14",
"tss-react": "^0.0.9"
"powerhooks": "^0.0.19",
"scripting-tools": "^0.19.13",
"tss-react": "^0.0.11"
}
}

View File

@ -0,0 +1,28 @@
Object.defineProperty(
Object,
"deepAssign",
{
"value": function callee(target, source) {
Object.keys(source).forEach(function (key) {
var value = source[key];
if (target[key] === undefined) {
target[key] = value;
return;
}
if (value instanceof Object) {
if (value instanceof Array) {
value.forEach(function (entry) {
target[key].push(entry);
});
return;
}
callee(target[key], value);
return;
}
target[key] = value;
});
return target;
}
}
);

View File

@ -0,0 +1,26 @@
var es = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34);/g;
var unes = {
'&amp;': '&',
'&#38;': '&',
'&lt;': '<',
'&#60;': '<',
'&gt;': '>',
'&#62;': '>',
'&apos;': "'",
'&#39;': "'",
'&quot;': '"',
'&#34;': '"'
};
var cape = function (m) { return unes[m]; };
Object.defineProperty(
String,
"htmlUnescape",
{
"value": function (un) {
return String.prototype.replace.call(un, es, cape);
}
}
);

View File

@ -0,0 +1,15 @@
<script>const _=
{
"client": (function (){
<#if client??>
return {
"baseUrl": "${(client.baseUrl!'')?no_esc}" || undefined
};
</#if>
return undefined;
})()
}
</script>

View File

@ -9,13 +9,20 @@ import fs from "fs";
import { join as pathJoin } from "path";
import { objectKeys } from "evt/tools/typeSafety/objectKeys";
function loadFtlFile(ftlFileBasename: "template.ftl" | "login.ftl" | "register.ftl") {
return fs.readFileSync(pathJoin(__dirname, ftlFileBasename))
.toString("utf8")
export const pageIds= [ "login.ftl", "register.ftl", "info.ftl", "error.ftl"] as const;
export type PageId = typeof pageIds[number];
function loadAdjacentFile(fileBasename: string){
return fs.readFileSync(pathJoin(__dirname, fileBasename))
.toString("utf8");
};
function loadFtlFile(ftlFileBasename: PageId | "template.ftl") {
return loadAdjacentFile(ftlFileBasename)
.match(/^<script>const _=((?:.|\n)+)<\/script>[\n]?$/)![1];
}
export function generateFtlFilesCodeFactory(
params: {
ftlValuesGlobalName: string;
@ -39,7 +46,6 @@ export function generateFtlFilesCodeFactory(
});
([
["link", "href"],
["script", "src"],
@ -66,10 +72,12 @@ export function generateFtlFilesCodeFactory(
' <#list scripts as script>',
' <script src="${script}" type="text/javascript"></script>',
' </#list>',
'</#if>',
'</#if>'
].join("\n")
};
const pageSpecificCodePlaceholder = "<!-- dIddLqMeOedErIdLsPdNdI9dSl42sw -->";
$("head").prepend(
[
...(Object.keys(cssGlobalsToDefine).length === 0 ? [] : [
@ -81,80 +89,59 @@ export function generateFtlFilesCodeFactory(
'</style>',
''
]),
...["Object.deepAssign.js", "String.htmlUnescape.js"].map(
fileBasename => [
"<script>",
loadAdjacentFile(fileBasename),
"</script>"
].join("\n")
),
'<script>',
' Object.deepAssign(',
` window.${ftlValuesGlobalName},`,
` window.${ftlValuesGlobalName}= Object.assign(`,
` {},`,
` ${objectKeys(ftlCommonPlaceholders)[0]}`,
' );',
'</script>',
'',
objectKeys(ftlCommonPlaceholders)[1],
''
pageSpecificCodePlaceholder,
'',
objectKeys(ftlCommonPlaceholders)[1]
].join("\n"),
);
const partiallyFixedIndexHtmlCode = $.html();
function generateFtlFilesCode(
params: {
pageBasename: "login.ftl" | "register.ftl"
pageId: PageId;
}
): { ftlCode: string; } {
const { pageBasename } = params;
const { pageId } = params;
const $ = cheerio.load(partiallyFixedIndexHtmlCode);
const ftlPlaceholders = {
'{ "x": "kxOlLqMeOed9sdLdIdOxd444" }': loadFtlFile(pageBasename),
'{ "x": "kxOlLqMeOed9sdLdIdOxd444" }': loadFtlFile(pageId),
...ftlCommonPlaceholders
};
$("head").prepend(
[
'',
'<script>',
'',
` window.${ftlValuesGlobalName} = Object.assign(`,
` { "pageBasename": "${pageBasename}" },`,
` ${objectKeys(ftlPlaceholders)[0]}`,
' );',
'',
' Object.defineProperty(',
' Object,',
' "deepAssign",',
' {',
' "value": function callee(target, source) {',
' Object.keys(source).forEach(function (key) {',
' var value = source[key];',
' if( target[key] === undefined ){',
' target[key]= value;',
' return;',
' }',
' if( value instanceof Object ){',
' if( value instanceof Array ){',
' value.forEach(function (entry){',
' target[key].push(entry);',
' });',
' return;',
' }',
' callee(target[key], value);',
' return;',
' }',
' target[key]= value;',
' });',
' return target;',
' }',
' }',
' );',
'',
'</script>',
''
].join("\n")
);
let ftlCode = $.html();
let ftlCode = $.html()
.replace(
pageSpecificCodePlaceholder,
[
'<script>',
` Object.deepAssign(`,
` window.${ftlValuesGlobalName},`,
` { "pageId": "${pageId}" }`,
' );',
` Object.deepAssign(`,
` window.${ftlValuesGlobalName},`,
` ${objectKeys(ftlPlaceholders)[0]}`,
' );',
'</script>'
].join("\n")
);
objectKeys(ftlPlaceholders)
.forEach(id => ftlCode = ftlCode.replace(id, ftlPlaceholders[id]));

View File

@ -0,0 +1,37 @@
<script>const _=
{
"messageHeader": "${messageHeader!''}" || undefined,
"requiredActions": (function (){
<#if requiredActions??>
var out =[];
<#list requiredActions>
<#items as reqActionItem>
out.push("${reqActionItem}");
</#items></b>
</#list>
return out;
<#else>
return undefined;
})(),
"skipLink": (function (){
<#if skipLink??>
return true;
</#if>
return false;
})(),
"pageRedirectUri": "${(pageRedirectUri!'')?no_esc}" || undefined,
"actionUri": "${(actionUri!'')?no_esc}" || undefined,
"client": {
"baseUrl": "${(client.baseUrl!'')?no_esc}" || undefined
}
}
</script>

View File

@ -7,6 +7,7 @@
"realm": {
"loginWithEmailAllowed": ${realm.loginWithEmailAllowed?c},
"rememberMe": ${realm.rememberMe?c},
"password": ${realm.password?c},
"resetPasswordAllowed": ${realm.resetPasswordAllowed?c},
"registrationAllowed": ${realm.registrationAllowed?c}
},

View File

@ -11,7 +11,6 @@
"displayName": "${realm.displayName!''}" || undefined,
"displayNameHtml": "${realm.displayNameHtml!''}" || undefined,
"internationalizationEnabled": ${realm.internationalizationEnabled?c},
"password": ${realm.password?c},
"registrationEmailAsUsername": ${realm.registrationEmailAsUsername?c},
},
"locale": (function (){
@ -95,7 +94,7 @@
return { 
"type": "${message.type}",
"summary": "${kcSanitize(message.summary)?no_esc}"
"summary": String.htmlUnescape("${message.summary}")
};
</#if>

View File

@ -6,7 +6,7 @@ import {
replaceImportFromStaticInCssCode,
replaceImportFromStaticInJsCode
} from "./replaceImportFromStatic";
import { generateFtlFilesCodeFactory } from "./generateFtl";
import { generateFtlFilesCodeFactory, pageIds } from "./generateFtl";
import { builtinThemesUrl } from "../install-builtin-keycloak-themes";
import { downloadAndUnzip } from "../tools/downloadAndUnzip";
import * as child_process from "child_process";
@ -70,14 +70,14 @@ export function generateKeycloakThemeResources(
).toString("utf8")
});
(["login.ftl", "register.ftl"] as const).forEach(pageBasename => {
pageIds.forEach(pageId => {
const { ftlCode } = generateFtlFilesCode({ pageBasename });
const { ftlCode } = generateFtlFilesCode({ pageId });
fs.writeFileSync(
pathJoin(themeDirPath, pageBasename),
pathJoin(themeDirPath, pageId),
Buffer.from(ftlCode, "utf8")
)
);
});
@ -90,11 +90,6 @@ export function generateKeycloakThemeResources(
"destDirPath": tmpDirPath
});
transformCodebase({
"srcDirPath": pathJoin(tmpDirPath, "keycloak", "common"),
"destDirPath": pathJoin(tmpDirPath, "..", "common")
});
transformCodebase({
"srcDirPath": pathJoin(tmpDirPath, "keycloak", "login", "resources"),
"destDirPath": pathJoin(themeDirPath, "resources")
@ -106,10 +101,7 @@ export function generateKeycloakThemeResources(
fs.writeFileSync(
pathJoin(themeDirPath, "theme.properties"),
Buffer.from([
`import=common/${themeName}`,
"locales=ca,cs,de,en,es,fr,it,ja,lt,nl,no,pl,pt-BR,ru,sk,sv,tr,zh-CN"
].join("\n"), "utf8")
Buffer.from("parent=keycloak", "utf8")
);
}

View File

@ -5,7 +5,7 @@ import { downloadAndUnzip } from "./tools/downloadAndUnzip";
import { join as pathJoin } from "path";
export const builtinThemesUrl =
"https://github.com/garronej/keycloak-react-theming/releases/download/v0.0.1/keycloak_11.0.3_builtin_themes.zip";
"https://github.com/garronej/keycloakify/releases/download/v0.0.1/keycloak_11.0.3_builtin_themes.zip";
if (require.main === module) {

View File

@ -0,0 +1,43 @@
import { memo } from "react";
import { Template } from "./Template";
import type { KcProps } from "./KcProps";
import { assert } from "../tools/assert";
import { kcContext } from "../kcContext";
import { useKcTranslation } from "../i18n/useKcTranslation";
export const Error = memo((props: KcProps) => {
const { t } = useKcTranslation();
assert(
kcContext !== undefined &&
kcContext.pageId === "error.ftl" &&
kcContext.message !== undefined
);
const { message, client } = kcContext;
return (
<Template
{...props}
displayMessage={false}
headerNode={t("errorTitle")}
formNode={
<div id="kc-error-message">
<p className="instruction">{message.summary}</p>
{
client !== undefined && client.baseUrl !== undefined &&
<p>
<a id="backToApplication" href={client.baseUrl}>
{t("backToApplication")}
</a>
</p>
}
</div>
}
/>
);
});

View File

@ -0,0 +1,76 @@
import { memo } from "react";
import { Template } from "./Template";
import type { KcProps } from "./KcProps";
import { assert } from "../tools/assert";
import { kcContext } from "../kcContext";
import { useKcTranslation } from "../i18n/useKcTranslation";
export const Info = memo((props: KcProps) => {
const { t } = useKcTranslation();
assert(
kcContext !== undefined &&
kcContext.pageId === "info.ftl" &&
kcContext.message !== undefined
);
const {
messageHeader,
message,
requiredActions,
skipLink,
pageRedirectUri,
actionUri,
client
} = kcContext;
return (
<Template
{...props}
displayMessage={false}
headerNode={
messageHeader !== undefined ?
<>{messageHeader}</>
:
<>{message.summary}</>
}
formNode={
<div id="kc-info-message">
<p className="instruction">{message.summary}
{
requiredActions !== undefined &&
<b>
{
requiredActions
.map(requiredAction => t(`requiredAction.${requiredAction}` as const))
.join(",")
}
</b>
}
</p>
{
!skipLink &&
pageRedirectUri !== undefined ?
<p><a href="${pageRedirectUri}">${(t("backToApplication"))}</a></p>
:
actionUri !== undefined ?
<p><a href="${actionUri}">${t("proceedWithAction")}</a></p>
:
client.baseUrl !== undefined &&
<p><a href="${client.baseUrl}">${t("backToApplication")}</a></p>
}
</div>
}
/>
);
});

View File

@ -2,23 +2,22 @@
import { memo } from "react";
import { kcContext } from "../kcContext";
import { assert } from "../tools/assert";
import type { KcPagesProperties } from "./KcProperties";
import type { KcProps } from "./KcProps";
import { Login } from "./Login";
import { Register } from "./Register";
import { Info } from "./Info";
import { Error } from "./Error";
export type KcAppProps = {
kcProperties?: KcPagesProperties;
};
export const KcApp = memo((props: KcAppProps) => {
const { kcProperties } = props;
export const KcApp = memo((props: KcProps) => {
assert(kcContext !== undefined, "App is not currently served by a Keycloak server");
switch (kcContext.pageBasename) {
case "login.ftl": return <Login kcProperties={kcProperties} />;
case "register.ftl": return <Register kcProperties={kcProperties} />;
switch (kcContext.pageId) {
case "login.ftl": return <Login {...props} />;
case "register.ftl": return <Register {...props} />;
case "info.ftl": return <Info {...props} />;
case "error.ftl": return <Error {...props} />;
}
});

View File

@ -1,192 +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 =
"kcHtmlClass" |
"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"
],
"kcHtmlClass": "login-pf",
"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-signup"
};
/** 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);

View File

@ -0,0 +1,205 @@
import { allPropertiesValuesToUndefined } from "../tools/allPropertiesValuesToUndefined";
import { doExtends } from "evt/tools/typeSafety/doExtends";
/** Class names can be provided as an array or separated by whitespace */
export type KcPropsGeneric<CssClasses extends string> = { [key in CssClasses]: readonly string[] | string | undefined; };
export type KcTemplateClassKey =
"stylesCommon" |
"styles" |
"scripts" |
"kcHtmlClass" |
"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 KcTemplateProps = KcPropsGeneric<KcTemplateClassKey>;
export const defaultKcTemplateProps = {
"stylesCommon": [
"node_modules/patternfly/dist/css/patternfly.min.css",
"node_modules/patternfly/dist/css/patternfly-additions.min.css",
"lib/zocial/zocial.css"
],
"styles": ["css/login.css"],
"scripts": [],
"kcHtmlClass": ["login-pf"],
"kcLoginClass": ["login-pf-page"],
"kcContentWrapperClass": ["row"],
"kcHeaderClass": ["login-pf-page-header"],
"kcHeaderWrapperClass": [],
"kcFormCardClass": ["card-pf"],
"kcFormCardAccountClass": ["login-pf-accounts"],
"kcFormSocialAccountClass": ["login-pf-social-section"],
"kcFormSocialAccountContentClass": ["col-xs-12", "col-sm-6"],
"kcFormHeaderClass": ["login-pf-header"],
"kcLocaleWrapperClass": [],
"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-signup"],
"kcInfoAreaWrapperClass": []
} as const;
doExtends<typeof defaultKcTemplateProps, KcTemplateProps>();
/** Tu use if you don't want any default */
export const allClearKcTemplateProps =
allPropertiesValuesToUndefined(defaultKcTemplateProps);
doExtends<typeof allClearKcTemplateProps, KcTemplateProps>();
export type KcProps = KcPropsGeneric<
KcTemplateClassKey |
"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 defaultKcProps = {
...defaultKcTemplateProps,
"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"],
"kcFormOptionsWrapperClass": []
} as const;
doExtends<typeof defaultKcProps, KcProps>();
/** Tu use if you don't want any default */
export const allClearKcProps =
allPropertiesValuesToUndefined(defaultKcProps);
doExtends<typeof allClearKcProps, KcProps>();

View File

@ -1,40 +1,27 @@
import { useState, memo } from "react";
import { Template } from "./Template";
import type { KcPagesProperties } from "./KcProperties";
import { defaultKcPagesProperties } from "./KcProperties";
import type { KcProps } from "./KcProps";
import { assert } from "../tools/assert";
import { kcContext } from "../kcContext";
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;
export const Login = memo((props: KcProps) => {
const { t, tStr } = useKcTranslation();
Object.assign(kcProperties, defaultKcPagesProperties);
assert(
kcContext !== undefined &&
kcContext.pageId === "login.ftl"
);
const [{
const {
social, realm, url,
usernameEditDisabled, login,
auth, registrationDisabled
}] = useState(() => {
assert(
kcContext !== undefined &&
kcContext.pageBasename === "login.ftl"
);
return kcContext;
});
} = kcContext;
const [isLoginButtonDisabled, setIsLoginButtonDisabled] = useState(false);
@ -44,25 +31,25 @@ export const Login = memo((props: LoginProps) => {
return (
<Template
{...props}
displayInfo={social.displayInfo}
displayWide={realm.password && social.providers !== undefined}
kcProperties={kcProperties}
headerNode={t("doLogIn")}
formNode={
<div
id="kc-form"
className={cx(realm.password && social.providers !== undefined && kcProperties.kcContentWrapperClass)}
className={cx(realm.password && social.providers !== undefined && props.kcContentWrapperClass)}
>
<div
id="kc-form-wrapper"
className={cx(realm.password && social.providers && [kcProperties.kcFormSocialAccountContentClass, kcProperties.kcFormSocialAccountClass])}
className={cx(realm.password && social.providers && [props.kcFormSocialAccountContentClass, props.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)}>
<div className={cx(props.kcFormGroupClass)}>
<label htmlFor="username" className={cx(props.kcLabelClass)}>
{
!realm.loginWithEmailAllowed ?
t("username")
@ -77,35 +64,35 @@ export const Login = memo((props: LoginProps) => {
<input
tabIndex={1}
id="username"
className={cx(kcProperties.kcInputClass)}
className={cx(props.kcInputClass)}
name="username"
defaultValue={login.username ?? ''}
type="text"
{...(usernameEditDisabled ? { "disabled": true } : { "autoFocus": true, "autocomplete": "off" })}
/>
</div>
<div className={cx(kcProperties.kcFormGroupClass)}>
<label htmlFor="password" className={cx(kcProperties.kcLabelClass)}>
<div className={cx(props.kcFormGroupClass)}>
<label htmlFor="password" className={cx(props.kcLabelClass)}>
{t("password")}
</label>
<input tabIndex={2} id="password" className={cx(kcProperties.kcInputClass)} name="password" type="password" autoComplete="off" />
<input tabIndex={2} id="password" className={cx(props.kcInputClass)} name="password" type="password" autoComplete="off" />
</div>
<div className={cx(kcProperties.kcFormGroupClass, kcProperties.kcFormSettingClass)}>
<div className={cx(props.kcFormGroupClass, props.kcFormSettingClass)}>
<div id="kc-form-options">
{
(
realm.rememberMe &&
(
realm.rememberMe &&
!usernameEditDisabled
) &&
<div className="checkbox">
<label>
<input tabIndex={3} id="rememberMe" name="rememberMe" type="checkbox" {...(login.rememberMe ? { "checked": true } : {})}/>
<input tabIndex={3} id="rememberMe" name="rememberMe" type="checkbox" {...(login.rememberMe ? { "checked": true } : {})} />
{t("rememberMe")}
</label>
</div>
}
</div>
<div className={cx(kcProperties.kcFormOptionsWrapperClass)}>
<div className={cx(props.kcFormOptionsWrapperClass)}>
{
realm.resetPasswordAllowed &&
<span>
@ -115,7 +102,7 @@ export const Login = memo((props: LoginProps) => {
</div>
</div>
<div id="kc-form-buttons" className={cx(kcProperties.kcFormGroupClass)}>
<div id="kc-form-buttons" className={cx(props.kcFormGroupClass)}>
<input
type="hidden"
id="id-hidden-input"
@ -124,7 +111,7 @@ export const Login = memo((props: LoginProps) => {
/>
<input
tabIndex={4}
className={cx(kcProperties.kcButtonClass, kcProperties.kcButtonPrimaryClass, kcProperties.kcButtonBlockClass, kcProperties.kcButtonLargeClass)} name="login" id="kc-login" type="submit"
className={cx(props.kcButtonClass, props.kcButtonPrimaryClass, props.kcButtonBlockClass, props.kcButtonLargeClass)} name="login" id="kc-login" type="submit"
value={tStr("doLogIn")}
disabled={isLoginButtonDisabled}
/>
@ -135,11 +122,11 @@ export const Login = memo((props: LoginProps) => {
</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)}>
<div id="kc-social-providers" className={cx(props.kcFormSocialAccountContentClass, props.kcFormSocialAccountClass)}>
<ul className={cx(props.kcFormSocialAccountListClass, social.providers.length > 4 && props.kcFormSocialAccountDoubleListClass)}>
{
social.providers.map(p =>
<li className={cx(kcProperties.kcFormSocialAccountListLinkClass)}>
<li className={cx(props.kcFormSocialAccountListLinkClass)}>
<a href={p.loginUrl} id={`zocial-${p.alias}`} className={cx("zocial", p.providerId)}>
<span>{p.displayName}</span>
</a>

View File

@ -1,27 +1,21 @@
import { useState, memo } from "react";
import { memo } from "react";
import { Template } from "./Template";
import type { KcPagesProperties } from "./KcProperties";
import { defaultKcPagesProperties } from "./KcProperties";
import type { KcProps } from "./KcProps";
import { assert } from "../tools/assert";
import { kcContext } from "../kcContext";
import { useKcTranslation } from "../i18n/useKcTranslation";
import { cx } from "tss-react";
export type RegisterPageProps = {
kcProperties?: KcPagesProperties;
};
export const Register = memo((props: RegisterPageProps) => {
const { kcProperties = {} } = props;
export const Register = memo((props: KcProps) => {
const { t, tStr } = useKcTranslation();
Object.assign(kcProperties, defaultKcPagesProperties);
assert(
kcContext !== undefined &&
kcContext.pageId === "register.ftl"
);
const [{
const {
url,
messagesPerField,
register,
@ -29,91 +23,80 @@ export const Register = memo((props: RegisterPageProps) => {
passwordRequired,
recaptchaRequired,
recaptchaSiteKey
}] = useState(() => {
assert(
kcContext !== undefined &&
kcContext.pageBasename === "register.ftl"
);
return kcContext;
});
} = kcContext;
return (
<Template
kcProperties={kcProperties}
{...props}
headerNode={t("registerTitle")}
formNode={
<form id="kc-register-form" className={cx(kcProperties.kcFormClass)} action={url.registrationAction} method="post">
<form id="kc-register-form" className={cx(props.kcFormClass)} action={url.registrationAction} method="post">
<div className={cx(kcProperties.kcFormGroupClass, messagesPerField.printIfExists('firstName', kcProperties.kcFormGroupErrorClass))}>
<div className={cx(kcProperties.kcLabelWrapperClass)}>
<label htmlFor="firstName" className={cx(kcProperties.kcLabelClass)}>{t("firstName")}</label>
<div className={cx(props.kcFormGroupClass, messagesPerField.printIfExists('firstName', props.kcFormGroupErrorClass))}>
<div className={cx(props.kcLabelWrapperClass)}>
<label htmlFor="firstName" className={cx(props.kcLabelClass)}>{t("firstName")}</label>
</div>
<div className={cx(kcProperties.kcInputWrapperClass)}>
<input type="text" id="firstName" className={cx(kcProperties.kcInputClass)} name="firstName"
<div className={cx(props.kcInputWrapperClass)}>
<input type="text" id="firstName" className={cx(props.kcInputClass)} name="firstName"
defaultValue={register.formData.firstName ?? ""}
/>
</div>
</div>
<div className={cx(kcProperties.kcFormGroupClass, messagesPerField.printIfExists("lastName", kcProperties.kcFormGroupErrorClass))}>
<div className={cx(kcProperties.kcLabelWrapperClass)}>
<label htmlFor="lastName" className={cx(kcProperties.kcLabelClass)}>{t("lastName")}</label>
<div className={cx(props.kcFormGroupClass, messagesPerField.printIfExists("lastName", props.kcFormGroupErrorClass))}>
<div className={cx(props.kcLabelWrapperClass)}>
<label htmlFor="lastName" className={cx(props.kcLabelClass)}>{t("lastName")}</label>
</div>
<div className={cx(kcProperties.kcInputWrapperClass)}>
<input type="text" id="lastName" className={cx(kcProperties.kcInputClass)} name="lastName"
<div className={cx(props.kcInputWrapperClass)}>
<input type="text" id="lastName" className={cx(props.kcInputClass)} name="lastName"
defaultValue={register.formData.lastName ?? ""}
/>
</div>
</div>
<div className={cx(kcProperties.kcFormGroupClass, messagesPerField.printIfExists('email', kcProperties.kcFormGroupErrorClass))}>
<div className={cx(kcProperties.kcLabelWrapperClass)}>
<label htmlFor="email" className={cx(kcProperties.kcLabelClass)}>{t("email")}</label>
<div className={cx(props.kcFormGroupClass, messagesPerField.printIfExists('email', props.kcFormGroupErrorClass))}>
<div className={cx(props.kcLabelWrapperClass)}>
<label htmlFor="email" className={cx(props.kcLabelClass)}>{t("email")}</label>
</div>
<div className={cx(kcProperties.kcInputWrapperClass)}>
<input type="text" id="email" className={cx(kcProperties.kcInputClass)} name="email"
<div className={cx(props.kcInputWrapperClass)}>
<input type="text" id="email" className={cx(props.kcInputClass)} name="email"
defaultValue={register.formData.email ?? ""} autoComplete="email"
/>
</div>
</div>
{
!realm.registrationEmailAsUsername &&
<div className={cx(kcProperties.kcFormGroupClass, messagesPerField.printIfExists('username', kcProperties.kcFormGroupErrorClass))}>
<div className={cx(kcProperties.kcLabelWrapperClass)}>
<label htmlFor="username" className={cx(kcProperties.kcLabelClass)}>{t("username")}</label>
<div className={cx(props.kcFormGroupClass, messagesPerField.printIfExists('username', props.kcFormGroupErrorClass))}>
<div className={cx(props.kcLabelWrapperClass)}>
<label htmlFor="username" className={cx(props.kcLabelClass)}>{t("username")}</label>
</div>
<div className={cx(kcProperties.kcInputWrapperClass)}>
<input type="text" id="username" className={cx(kcProperties.kcInputClass)} name="username"
<div className={cx(props.kcInputWrapperClass)}>
<input type="text" id="username" className={cx(props.kcInputClass)} name="username"
defaultValue={register.formData.username ?? ""} autoComplete="username" />
</div>
</div >
}
{
passwordRequired &&
<>
<div className={cx(kcProperties.kcFormGroupClass, messagesPerField.printIfExists("password", kcProperties.kcFormGroupErrorClass))}>
<div className={cx(kcProperties.kcLabelWrapperClass)}>
<label htmlFor="password" className={cx(kcProperties.kcLabelClass)}>{t("password")}</label>
<div className={cx(props.kcFormGroupClass, messagesPerField.printIfExists("password", props.kcFormGroupErrorClass))}>
<div className={cx(props.kcLabelWrapperClass)}>
<label htmlFor="password" className={cx(props.kcLabelClass)}>{t("password")}</label>
</div>
<div className={cx(kcProperties.kcInputWrapperClass)}>
<input type="password" id="password" className={cx(kcProperties.kcInputClass)} name="password" autoComplete="new-password" />
<div className={cx(props.kcInputWrapperClass)}>
<input type="password" id="password" className={cx(props.kcInputClass)} name="password" autoComplete="new-password" />
</div>
</div>
<div className={cx(kcProperties.kcFormGroupClass, messagesPerField.printIfExists("password-confirm", kcProperties.kcFormGroupErrorClass))}>
<div className={cx(kcProperties.kcLabelWrapperClass)}>
<label htmlFor="password-confirm" className={cx(kcProperties.kcLabelClass)}>{t("passwordConfirm")}</label>
<div className={cx(props.kcFormGroupClass, messagesPerField.printIfExists("password-confirm", props.kcFormGroupErrorClass))}>
<div className={cx(props.kcLabelWrapperClass)}>
<label htmlFor="password-confirm" className={cx(props.kcLabelClass)}>{t("passwordConfirm")}</label>
</div>
<div className={cx(kcProperties.kcInputWrapperClass)}>
<input type="password" id="password-confirm" className={cx(kcProperties.kcInputClass)} name="password-confirm" />
<div className={cx(props.kcInputWrapperClass)}>
<input type="password" id="password-confirm" className={cx(props.kcInputClass)} name="password-confirm" />
</div>
</div>
</>
@ -122,23 +105,20 @@ export const Register = memo((props: RegisterPageProps) => {
{
recaptchaRequired &&
<div className="form-group">
<div className={cx(kcProperties.kcInputWrapperClass)}>
<div className={cx(props.kcInputWrapperClass)}>
<div className="g-recaptcha" data-size="compact" data-sitekey={recaptchaSiteKey}></div>
</div>
</div>
}
<div className={cx(kcProperties.kcFormGroupClass)}>
<div id="kc-form-options" className={cx(kcProperties.kcFormOptionsClass)}>
<div className={cx(kcProperties.kcFormOptionsWrapperClass)}>
<div className={cx(props.kcFormGroupClass)}>
<div id="kc-form-options" className={cx(props.kcFormOptionsClass)}>
<div className={cx(props.kcFormOptionsWrapperClass)}>
<span><a href={url.loginUrl}>{t("backToLogin")}</a></span>
</div>
</div>
<div id="kc-form-buttons" className={cx(kcProperties.kcFormButtonsClass)}>
<input className={cx(kcProperties.kcButtonClass, kcProperties.kcButtonPrimaryClass, kcProperties.kcButtonBlockClass, kcProperties.kcButtonLargeClass)} type="submit"
<div id="kc-form-buttons" className={cx(props.kcFormButtonsClass)}>
<input className={cx(props.kcButtonClass, props.kcButtonPrimaryClass, props.kcButtonBlockClass, props.kcButtonLargeClass)} type="submit"
defaultValue={tStr("doRegister")} />
</div>
</div>
@ -147,10 +127,3 @@ export const Register = memo((props: RegisterPageProps) => {
/>
);
});
// JSX.IntrinsicElements.input: React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>

View File

@ -1,22 +1,21 @@
import { useState, useReducer ,useEffect, memo } from "react";
import { useReducer, useEffect, memo } from "react";
import type { ReactNode } from "react";
import { useKcTranslation } from "../i18n/useKcTranslation";
import { useKcLanguageTag } from "../i18n/useKcLanguageTag";
import { kcContext } from "../kcContext";
import { assert } from "../tools/assert";
import { cx } from "tss-react";
import { useKcLanguageTag } from "../i18n/useKcLanguageTag";
import type { KcLanguageTag } from "../i18n/KcLanguageTag";
import { getBestMatchAmongKcLanguageTag } from "../i18n/KcLanguageTag";
import { getKcLanguageTagLabel } from "../i18n/KcLanguageTag";
import { useCallbackFactory } from "powerhooks";
import { appendHead } from "../tools/appendHead";
import { join as pathJoin } from "path";
import { useConstCallback } from "powerhooks";
import type { KcTemplateProperties } from "./KcProperties";
import { defaultKcTemplateProperties } from "./KcProperties";
import type { KcTemplateProps } from "./KcProps";
export type TemplateProps = {
kcProperties: KcTemplateProperties;
displayInfo?: boolean;
displayMessage?: boolean;
displayRequiredFields?: boolean;
@ -26,7 +25,7 @@ export type TemplateProps = {
showUsernameNode?: ReactNode;
formNode: ReactNode;
displayInfoNode?: ReactNode;
};
} & KcTemplateProps;
export const Template = memo((props: TemplateProps) => {
@ -37,38 +36,51 @@ export const Template = memo((props: TemplateProps) => {
displayRequiredFields = false,
displayWide = false,
showAnotherWayIfPresent = true,
kcProperties = {},
headerNode,
showUsernameNode = null,
formNode,
displayInfoNode = null
} = props;
console.log("Rendering this page with react using keycloak-react-theming");
useEffect(() => { console.log("Rendering this page with react using keycloakify") }, []);
const { t } = useKcTranslation();
Object.assign(kcProperties, defaultKcTemplateProperties);
const { kcLanguageTag, setKcLanguageTag } = useKcLanguageTag();
const onChangeLanguageClickFactory = useCallbackFactory(
([languageTag]: [KcLanguageTag]) =>
setKcLanguageTag(languageTag)
);
const onTryAnotherWayClick = useConstCallback(() => {
const onTryAnotherWayClick = useConstCallback(() =>
(document.forms["kc-select-try-another-way-form" as never].submit(), false)
);
document.forms["kc-select-try-another-way-form" as never].submit();
assert(kcContext !== undefined);
return false;
const {
realm, locale, auth,
url, message, isAppInitiatedAction
}= kcContext;
});
useEffect(()=>{
const [{ realm, locale, auth, url, message, isAppInitiatedAction }] = useState(() => (
assert(kcContext !== undefined, "App is not currently being served by KeyCloak"),
kcContext
));
if( !realm.internationalizationEnabled ){
return;
}
assert( locale !== undefined );
if( kcLanguageTag === getBestMatchAmongKcLanguageTag(locale.current) ){
return;
}
window.location.href =
locale.supported.find(({ languageTag }) => languageTag === kcLanguageTag)!.url;
},[kcLanguageTag]);
const [isExtraCssLoaded, setExtraCssLoaded] = useReducer(() => true, false);
@ -76,10 +88,13 @@ export const Template = memo((props: TemplateProps) => {
let isUnmounted = false;
const toArr = (x: string | readonly string[] | undefined) =>
typeof x === "string" ? x.split(" ") : x ?? [];
Promise.all(
[
...(kcProperties.stylesCommon ?? []).map(relativePath => pathJoin(url.resourcesCommonPath, relativePath)),
...(kcProperties.styles ?? []).map(relativePath => pathJoin(url.resourcesPath, relativePath))
...toArr(props.stylesCommon).map(relativePath => pathJoin(url.resourcesCommonPath, relativePath)),
...toArr(props.styles).map(relativePath => pathJoin(url.resourcesPath, relativePath))
].map(href => appendHead({
"type": "css",
href
@ -93,7 +108,7 @@ export const Template = memo((props: TemplateProps) => {
});
kcProperties.scripts?.forEach(
toArr(props.scripts).forEach(
relativePath => appendHead({
"type": "javascript",
"src": pathJoin(url.resourcesPath, relativePath)
@ -102,7 +117,7 @@ export const Template = memo((props: TemplateProps) => {
document.getElementsByTagName("html")[0]
.classList
.add(cx(kcProperties.kcHtmlClass));
.add(cx(props.kcHtmlClass));
return () => { isUnmounted = true; };
@ -113,16 +128,16 @@ export const Template = memo((props: TemplateProps) => {
}
return (
<div className={cx(kcProperties.kcLoginClass)}>
<div className={cx(props.kcLoginClass)}>
<div id="kc-header" className={cx(kcProperties.kcHeaderClass)}>
<div id="kc-header-wrapper" className={cx(kcProperties.kcHeaderWrapperClass)}>
<div id="kc-header" className={cx(props.kcHeaderClass)}>
<div id="kc-header-wrapper" className={cx(props.kcHeaderWrapperClass)}>
{t("loginTitleHtml", realm.displayNameHtml)}
</div>
</div>
<div className={cx(kcProperties.kcFormCardClass, displayWide && kcProperties.kcFormCardAccountClass)}>
<header className={cx(kcProperties.kcFormHeaderClass)}>
<div className={cx(props.kcFormCardClass, displayWide && props.kcFormCardAccountClass)}>
<header className={cx(props.kcFormHeaderClass)}>
{
(
realm.internationalizationEnabled &&
@ -130,7 +145,7 @@ export const Template = memo((props: TemplateProps) => {
locale.supported.length > 1
) &&
<div id="kc-locale">
<div id="kc-locale-wrapper" className={cx(kcProperties.kcLocaleWrapperClass)}>
<div id="kc-locale-wrapper" className={cx(props.kcLocaleWrapperClass)}>
<div className="kc-dropdown" id="kc-locale-dropdown">
<a href="#" id="kc-current-locale-link">
{getKcLanguageTagLabel(kcLanguageTag)}
@ -146,7 +161,6 @@ export const Template = memo((props: TemplateProps) => {
</li>
)
}
</ul>
</div>
@ -164,8 +178,8 @@ export const Template = memo((props: TemplateProps) => {
displayRequiredFields ?
(
<div className={cx(kcProperties.kcContentWrapperClass)}>
<div className={cx(kcProperties.kcLabelWrapperClass, "subtitle")}>
<div className={cx(props.kcContentWrapperClass)}>
<div className={cx(props.kcLabelWrapperClass, "subtitle")}>
<span className="subtitle">
<span className="required">*</span>
{t("requiredFields")}
@ -185,18 +199,18 @@ export const Template = memo((props: TemplateProps) => {
)
) : (
displayRequiredFields ? (
<div className={cx(kcProperties.kcContentWrapperClass)}>
<div className={cx(kcProperties.kcLabelWrapperClass, "subtitle")}>
<div className={cx(props.kcContentWrapperClass)}>
<div className={cx(props.kcLabelWrapperClass, "subtitle")}>
<span className="subtitle"><span className="required">*</span> {t("requiredFields")}</span>
</div>
<div className="col-md-10">
{showUsernameNode}
<div className={cx(kcProperties.kcFormGroupClass)}>
<div className={cx(props.kcFormGroupClass)}>
<div id="kc-username">
<label id="kc-attempted-username">{auth?.attemptedUsername}</label>
<a id="reset-login" href={url.loginRestartFlowUrl}>
<div className="kc-login-tooltip">
<i className={cx(kcProperties.kcResetFlowIcon)}></i>
<i className={cx(props.kcResetFlowIcon)}></i>
<span className="kc-tooltip-text">{t("restartLoginTooltip")}</span>
</div>
</a>
@ -207,12 +221,12 @@ export const Template = memo((props: TemplateProps) => {
) : (
<>
{showUsernameNode}
<div className={cx(kcProperties.kcFormGroupClass)}>
<div className={cx(props.kcFormGroupClass)}>
<div id="kc-username">
<label id="kc-attempted-username">{auth?.attemptedUsername}</label>
<a id="reset-login" href={url.loginRestartFlowUrl}>
<div className="kc-login-tooltip">
<i className={cx(kcProperties.kcResetFlowIcon)}></i>
<i className={cx(props.kcResetFlowIcon)}></i>
<span className="kc-tooltip-text">{t("restartLoginTooltip")}</span>
</div>
</a>
@ -236,10 +250,10 @@ export const Template = memo((props: TemplateProps) => {
)
) &&
<div className={cx("alert", `alert-${message.type}`)}>
{message.type === "success" && <span className={cx(kcProperties.kcFeedbackSuccessIcon)}></span>}
{message.type === "warning" && <span className={cx(kcProperties.kcFeedbackWarningIcon)}></span>}
{message.type === "error" && <span className={cx(kcProperties.kcFeedbackErrorIcon)}></span>}
{message.type === "info" && <span className={cx(kcProperties.kcFeedbackInfoIcon)}></span>}
{message.type === "success" && <span className={cx(props.kcFeedbackSuccessIcon)}></span>}
{message.type === "warning" && <span className={cx(props.kcFeedbackWarningIcon)}></span>}
{message.type === "error" && <span className={cx(props.kcFeedbackErrorIcon)}></span>}
{message.type === "info" && <span className={cx(props.kcFeedbackInfoIcon)}></span>}
<span className="kc-feedback-text">{message.summary}</span>
</div>
}
@ -251,9 +265,9 @@ export const Template = memo((props: TemplateProps) => {
showAnotherWayIfPresent
) &&
<form id="kc-select-try-another-way-form" action={url.loginAction} method="post" className={cx(displayWide && kcProperties.kcContentWrapperClass)} >
<div className={cx(displayWide && [kcProperties.kcFormSocialAccountContentClass, kcProperties.kcFormSocialAccountClass])} >
<div className={cx(kcProperties.kcFormGroupClass)}>
<form id="kc-select-try-another-way-form" action={url.loginAction} method="post" className={cx(displayWide && props.kcContentWrapperClass)} >
<div className={cx(displayWide && [props.kcFormSocialAccountContentClass, props.kcFormSocialAccountClass])} >
<div className={cx(props.kcFormGroupClass)}>
<input type="hidden" name="tryAnotherWay" value="on" />
<a href="#" id="try-another-way" onClick={onTryAnotherWayClick}>{t("doTryAnotherWay")}</a>
</div>
@ -263,8 +277,8 @@ export const Template = memo((props: TemplateProps) => {
{
displayInfo &&
<div id="kc-info" className={cx(kcProperties.kcSignUpClass)}>
<div id="kc-info-wrapper" className={cx(kcProperties.kcInfoAreaWrapperClass)}>
<div id="kc-info" className={cx(props.kcSignUpClass)}>
<div id="kc-info-wrapper" className={cx(props.kcInfoAreaWrapperClass)}>
{displayInfoNode}
</div>
</div>

View File

@ -55,12 +55,16 @@ export function getBestMatchAmongKcLanguageTag(
const iso2LanguageLike = languageLike.split("-")[0].toLowerCase();
const language = availableLanguages.find(language =>
const kcLanguageTag = availableLanguages.find(language =>
language.toLowerCase().includes(iso2LanguageLike) ||
getKcLanguageTagLabel(language).toLocaleLowerCase() === languageLike.toLocaleLowerCase()
);
if (language === undefined && languageLike !== navigator.language) {
if (kcLanguageTag !== undefined) {
return kcLanguageTag;
}
if (languageLike !== navigator.language) {
return getBestMatchAmongKcLanguageTag(navigator.language);
}

View File

@ -6,8 +6,8 @@ import { getBestMatchAmongKcLanguageTag } from "./KcLanguageTag";
export const { useKcLanguageTag } = createUseGlobalState(
"kcLanguageTag",
() => getBestMatchAmongKcLanguageTag(
kcContext?.locale?.["current" as never] ??
kcContext?.locale?.current ??
navigator.language
),
{ "persistance": "cookies" }
{ "persistance": "cookie" }
);

View File

@ -4,7 +4,11 @@ export * from "./i18n/KcLanguageTag";
export * from "./i18n/useKcLanguageTag";
export * from "./i18n/useKcTranslation";
export * from "./components/KcProperties";
export * from "./components/KcProps";
export * from "./components/Login";
export * from "./components/Template";
export * from "./components/KcApp";
export * from "./components/KcApp";
export * from "./components/Info";
export * from "./components/Error";
export * from "./tools/assert";

View File

@ -1,12 +1,16 @@
import { ftlValuesGlobalName } from "../bin/build-keycloak-theme/ftlValuesGlobalName";
import type { generateFtlFilesCodeFactory } from "../bin/build-keycloak-theme/generateFtl";
import type { PageId } from "../bin/build-keycloak-theme/generateFtl";
import { id } from "evt/tools/typeSafety/id";
import type { KcLanguageTag } from "./i18n/KcLanguageTag";
import { doExtends } from "evt/tools/typeSafety/doExtends";
import type { MessageKey } from "./i18n/useKcTranslation";
import type { LanguageLabel } from "./i18n/KcLanguageTag";
export type KcContext = KcContext.Login | KcContext.Register;
type ExtractAfterStartingWith<Prefix extends string, StrEnum> =
StrEnum extends `${Prefix}${infer U}` ? U : never;
export type KcContext = KcContext.Login | KcContext.Register | KcContext.Info | KcContext.Error;
export declare namespace KcContext {
export type Template = {
@ -21,22 +25,19 @@ export declare namespace KcContext {
displayName?: string;
displayNameHtml?: string;
internationalizationEnabled: boolean;
password: boolean;
registrationEmailAsUsername: boolean;
registrationEmailAsUsername: boolean; //<---
};
/** Undefined if !realm.internationalizationEnabled */
locale?: {
supported: {
//url: string;
url: string;
languageTag: KcLanguageTag;
/** Is determined by languageTag. Ex: languageTag === "en" => label === "English"
* or getLanguageLabel(languageTag) === label
*/
//label: LanguageLabel;
}[];
//NOTE: We do not expose this because the language is managed
//client side. We use this value however to set the default.
//current: LanguageLabel;
current: LanguageLabel;
},
auth?: {
showUsername: boolean;
@ -53,7 +54,7 @@ export declare namespace KcContext {
};
export type Login = Template & {
pageBasename: "login.ftl";
pageId: "login.ftl";
url: {
loginResetCredentialsUrl: string;
registrationUrl: string;
@ -61,6 +62,7 @@ export declare namespace KcContext {
realm: {
loginWithEmailAllowed: boolean;
rememberMe: boolean;
password: boolean;
resetPasswordAllowed: boolean;
registrationAllowed: boolean;
};
@ -85,7 +87,7 @@ export declare namespace KcContext {
};
export type Register = Template & {
pageBasename: "register.ftl";
pageId: "register.ftl";
url: {
registrationAction: string;
};
@ -117,14 +119,28 @@ export declare namespace KcContext {
recaptchaSiteKey?: string;
};
export type Info = Template & {
pageId: "info.ftl";
messageHeader?: string;
requiredActions?: ExtractAfterStartingWith<"requiredAction.",MessageKey>[];
skipLink: boolean;
pageRedirectUri?: string;
actionUri?: string;
client: {
baseUrl?: string;
}
};
export type Error = Template & {
pageId: "error.ftl";
client?: {
baseUrl?: string;
}
};
}
{
type T = KcContext["pageBasename"];
type U = Parameters<ReturnType<typeof generateFtlFilesCodeFactory>["generateFtlFilesCode"]>[0]["pageBasename"];
doExtends<T, U>();
doExtends<U, T>();
}
doExtends<KcContext["pageId"], PageId>();
doExtends<PageId, KcContext["pageId"]>();
export const kcContext = id<KcContext | undefined>((window as any)[ftlValuesGlobalName]);

View File

@ -8,7 +8,7 @@ export const sampleReactProjectDirPath = pathJoin(getProjectRoot(), "sample_reac
export function setupSampleReactProject() {
downloadAndUnzip({
"url": "https://github.com/garronej/keycloak-react-theming/releases/download/v0.0.1/sample_build_dir_and_package_json.zip",
"url": "https://github.com/garronej/keycloakify/releases/download/v0.0.1/sample_build_dir_and_package_json.zip",
"destDirPath": sampleReactProjectDirPath
});
}

View File

@ -7,7 +7,7 @@ var downloadAndUnzip_1 = require("../bin/tools/downloadAndUnzip");
exports.sampleReactProjectDirPath = path_1.join(getProjectRoot_1.getProjectRoot(), "sample_react_project");
function setupSampleReactProject() {
downloadAndUnzip_1.downloadAndUnzip({
"url": "https://github.com/garronej/keycloak-react-theming/releases/download/v0.0.1/sample_build_dir_and_package_json.zip",
"url": "https://github.com/garronej/keycloakify/releases/download/v0.0.1/sample_build_dir_and_package_json.zip",
"destDirPath": exports.sampleReactProjectDirPath
});
}

View File

@ -1 +1 @@
{"version":3,"file":"setupSampleReactProject.js","sourceRoot":"","sources":["../src/test/setupSampleReactProject.ts"],"names":[],"mappings":";;;AACA,8DAA6D;AAC7D,6BAAwC;AACxC,kEAAiE;AAEpD,QAAA,yBAAyB,GAAG,WAAQ,CAAC,+BAAc,EAAE,EAAE,sBAAsB,CAAC,CAAC;AAE5F,SAAgB,uBAAuB;IAEnC,mCAAgB,CAAC;QACb,KAAK,EAAE,mHAAmH;QAC1H,aAAa,EAAE,iCAAyB;KAC3C,CAAC,CAAC;AACP,CAAC;AAND,0DAMC"}
{"version":3,"file":"setupSampleReactProject.js","sourceRoot":"","sources":["../src/test/setupSampleReactProject.ts"],"names":[],"mappings":";;;AACA,8DAA6D;AAC7D,6BAAwC;AACxC,kEAAiE;AAEpD,QAAA,yBAAyB,GAAG,WAAQ,CAAC,+BAAc,EAAE,EAAE,sBAAsB,CAAC,CAAC;AAE5F,SAAgB,uBAAuB;IAEnC,mCAAgB,CAAC;QACb,KAAK,EAAE,wGAAwG;QAC/G,aAAa,EAAE,iCAAyB;KAC3C,CAAC,CAAC;AACP,CAAC;AAND,0DAMC"}

File diff suppressed because it is too large Load Diff

View File

@ -43,9 +43,9 @@
"@babel/helper-plugin-utils" "^7.12.13"
"@babel/runtime@^7.7.2":
version "7.13.8"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.8.tgz#cc886a85c072df1de23670dc1aa59fc116c4017c"
integrity sha512-CwQljpw6qSayc0fRG1soxHAKs1CnQMOChm4mlQP6My0kf9upVGizj/KhlTTgyUnETmHpcUXjaluNAkteRFuafg==
version "7.13.9"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.9.tgz#97dbe2116e2630c489f22e0656decd60aaa1fcee"
integrity sha512-aY2kU+xgJ3dJ1eU6FMB9EH8dIe8dmusF1xEku52joLvw6eAFN0AI+WxCLDnpev2LEejWBAy2sBvBOBAjI3zmvA==
dependencies:
regenerator-runtime "^0.13.4"
@ -176,10 +176,10 @@
"@octokit/types" "^6.0.3"
universal-user-agent "^6.0.0"
"@octokit/openapi-types@^5.2.0":
version "5.2.0"
resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-5.2.0.tgz#54e6ca0bc2cd54cd93f0a64658e893c32a5e69ec"
integrity sha512-MInMij2VK5o96Ei6qaHjxBglSZWOXQs9dTZfnGX2Xnr2mhA+yk9L/QCH4RcJGISJJCBclLHuY3ytq+iRgDfX7w==
"@octokit/openapi-types@^5.3.0":
version "5.3.1"
resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-5.3.1.tgz#a49d119a1b9e47b7a9f5133ab14be2d8afaa183d"
integrity sha512-TvVk2QuIA0lQZcIMd6xbdGaGDVeNYIOa3l1ZVagAIk5K3t/WMYbcg4BISNDhzdVhm/TgQB26frAgd/GV81aHJA==
"@octokit/plugin-paginate-rest@^2.6.2":
version "2.11.0"
@ -193,12 +193,12 @@
resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.3.tgz#70a62be213e1edc04bb8897ee48c311482f9700d"
integrity sha512-4RFU4li238jMJAzLgAwkBAw+4Loile5haQMQr+uhFq27BmyJXcXSKvoQKqh0agsZEiUlW6iSv3FAgvmGkur7OQ==
"@octokit/plugin-rest-endpoint-methods@4.13.0":
version "4.13.0"
resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-4.13.0.tgz#59a90f59a564d416214ab191c3ffcd641f175e6a"
integrity sha512-Ofusy7BwHkU7z4TNsVdf7wm5W3KR625KqlQj4AiWPnBvclmZU0Y2bVK8b8Mz8nW7sEX9TJcCdX6KeaincE/cLw==
"@octokit/plugin-rest-endpoint-methods@4.13.4":
version "4.13.4"
resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-4.13.4.tgz#093b130d558760f6bc912c6f622ce502522410af"
integrity sha512-MGxptzVfiP8O+aydC/riheYzS/yJ9P16M29OuvtZep/sF5sKuOCQP8Wf83YCKXRsQF+ZpYfke2snbPPSIMZKzg==
dependencies:
"@octokit/types" "^6.11.0"
"@octokit/types" "^6.12.0"
deprecation "^2.3.1"
"@octokit/request-error@^2.0.0":
@ -225,21 +225,21 @@
universal-user-agent "^6.0.0"
"@octokit/rest@^18.0.0":
version "18.3.0"
resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-18.3.0.tgz#c326475a2039ffeaec9a1498ebee14a561aae4e5"
integrity sha512-R45oBVhnq3HAOGVtC6lHY7LX7TGWqbbcD4KvBHoT4QIjgJzfqKag3m/DUJwLnp8xrokz1spZmspTIXiDeQqJSA==
version "18.3.4"
resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-18.3.4.tgz#8e7ab02cd509e2fe7e71917a54254a8f8b827f20"
integrity sha512-NES0pHbwyFB1D0jrLkdnIXgEmze/gLE0JoSNgfAe4vwD77/qaQGO/lRWNuPPsoBVBjiW6mmA9CU5cYHujJTKQA==
dependencies:
"@octokit/core" "^3.2.3"
"@octokit/plugin-paginate-rest" "^2.6.2"
"@octokit/plugin-request-log" "^1.0.2"
"@octokit/plugin-rest-endpoint-methods" "4.13.0"
"@octokit/plugin-rest-endpoint-methods" "4.13.4"
"@octokit/types@^6.0.3", "@octokit/types@^6.11.0", "@octokit/types@^6.7.1":
version "6.11.0"
resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.11.0.tgz#830a608882cde659be19a6e86568abaa619e2ee7"
integrity sha512-RMLAmpPZf/a33EsclBazKg02NCCj4rC69V9sUgf0SuWTjmnBD2QC1nIVtJo7RJrGnwG1+aoFBb2yTrWm/8AS7w==
"@octokit/types@^6.0.3", "@octokit/types@^6.11.0", "@octokit/types@^6.12.0", "@octokit/types@^6.7.1":
version "6.12.0"
resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.12.0.tgz#8376fd60edfd5d1eebfeedb994c6bcb5b862c7a1"
integrity sha512-KwOf16soD7aDEEi/PgNeJlHzjZPfrmmNy+7WezSdrpnqZ7YImBJcNnX9+5RUHt1MnA4h8oISRHTqaZDGsX9DRQ==
dependencies:
"@octokit/openapi-types" "^5.2.0"
"@octokit/openapi-types" "^5.3.0"
"@types/comment-json@^1.1.1":
version "1.1.1"
@ -303,9 +303,9 @@ balanced-match@^1.0.0:
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
before-after-hook@^2.1.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.1.1.tgz#99ae36992b5cfab4a83f6bee74ab27835f28f405"
integrity sha512-5ekuQOvO04MDj7kYZJaMab2S8SPjGJbotVNyv7QYFCOAwrGZs/YnoDNlh1U+m5hl7H2D/+n0taaAV/tfyd3KMA==
version "2.2.0"
resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.0.tgz#09c40d92e936c64777aa385c4e9b904f8147eaf0"
integrity sha512-jH6rKQIfroBbhEXVmI7XmXe3ix5S/PgJqpzdDPnR8JGLHWNYLsYZ6tK5iWOF/Ra3oqEX0NobXGlzbiylIzVphQ==
boolbase@^1.0.0:
version "1.0.0"
@ -615,10 +615,10 @@ event-emitter@^0.3.5:
d "1"
es5-ext "~0.10.14"
evt@2.0.0-beta.12:
version "2.0.0-beta.12"
resolved "https://registry.yarnpkg.com/evt/-/evt-2.0.0-beta.12.tgz#d24724ea4c70e78af3eb73dbbf3ece81d295a1e7"
integrity sha512-KoDNXD73aKIGhylvFVYyEjoTTHKWofi0ozaRrvW4rjXZ1XbSUEat+iGSsy/S387v3ZkKB9UI499hT7WtNGzSrw==
evt@2.0.0-beta.13:
version "2.0.0-beta.13"
resolved "https://registry.yarnpkg.com/evt/-/evt-2.0.0-beta.13.tgz#a84828cc15b535fabdeaf551982d0705ed428a6f"
integrity sha512-Y71l8BU1r/hs7MOyaNb5PTf8Jp+5h8Vt6T8ixvJSqDmKhwCjjCVKP2b1E3UE+Qlr1bZnCOWnVTucTeTeJghWEQ==
dependencies:
minimal-polyfills "^2.1.5"
run-exclusive "^2.2.14"
@ -708,6 +708,11 @@ has@^1.0.3:
dependencies:
function-bind "^1.1.1"
html-escaper@^3.0.3:
version "3.0.3"
resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-3.0.3.tgz#4d336674652beb1dcbc29ef6b6ba7f6be6fdfed6"
integrity sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==
htmlparser2@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.0.0.tgz#c2da005030390908ca4c91e5629e418e0665ac01"
@ -932,12 +937,12 @@ path-type@^4.0.0:
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
powerhooks@^0.0.14:
version "0.0.14"
resolved "https://registry.yarnpkg.com/powerhooks/-/powerhooks-0.0.14.tgz#1456620de2d2b899f54509a8ef909c4c15694c81"
integrity sha512-fse74qwumuETne++wc3asYlhuaQYvKHUUzsAbNQfBb5OK3J12KbBYM3kh+ZPOf5C9/OAJg/qAAXsz2G/5ROS4w==
powerhooks@^0.0.19:
version "0.0.19"
resolved "https://registry.yarnpkg.com/powerhooks/-/powerhooks-0.0.19.tgz#86f4157dbde32cd44082c756ab747c64f6045449"
integrity sha512-yaODFWkflrZCSz4lvRQ2O4AjolheiE6oXa1F4mny2LUOwai4ip+zer16fgXEM53R+IiDnqj6ff8wooU5x4GslQ==
dependencies:
evt "2.0.0-beta.12"
evt "2.0.0-beta.13"
memoizee "^0.4.15"
resize-observer-polyfill "^1.5.1"
@ -1112,10 +1117,10 @@ to-fast-properties@^2.0.0:
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
tss-react@^0.0.9:
version "0.0.9"
resolved "https://registry.yarnpkg.com/tss-react/-/tss-react-0.0.9.tgz#4f07be32ad8a9c7db2881236b80fd4715384fe92"
integrity sha512-1Vo1UQrj18RaQIla/pes717iBzuYwVpQq/BdK/jREpm6kVS4HpoYXQlM0A0wp2ToG3kvFdop5STqowW3sviCfw==
tss-react@^0.0.11:
version "0.0.11"
resolved "https://registry.yarnpkg.com/tss-react/-/tss-react-0.0.11.tgz#1cd061927744cd4fc9b7346e2fd1cfcf896a18d5"
integrity sha512-j8CDpHHIl6S6/mX+AmK08v7waPqwgNA7urHOD3qknCgbY79LRlS7he5DF4NUNE/5B4/Btc3F25w+KqgChNbyGw==
dependencies:
"@emotion/css" "^11.1.3"
@ -1130,9 +1135,9 @@ type@^2.0.0:
integrity sha512-rgPIqOdfK/4J9FhiVrZ3cveAjRRo5rsQBAIhnylX874y1DX/kEKSVdLsnuHB6l1KTjHyU01VjiMBHgU2adejyg==
typescript@^4.1.5:
version "4.2.2"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.2.tgz#1450f020618f872db0ea17317d16d8da8ddb8c4c"
integrity sha512-tbb+NVrLfnsJy3M59lsDgrzWIflR4d4TIUjz+heUnHZwdF7YsrMTKoRERiIvI2lvBG95dfpLxB21WZhys1bgaQ==
version "4.2.3"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.3.tgz#39062d8019912d43726298f09493d598048c1ce3"
integrity sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw==
universal-user-agent@^6.0.0:
version "6.0.0"