mirror of
https://github.com/keycloak/keycloak.git
synced 2026-01-09 23:12:06 -03:30
Disable social links after being clicked (#39031)
Closes #35278 Signed-off-by: rmartinc <rmartinc@redhat.com> (cherry picked from commit 3969c40f61040dd100f046856bddaf2e7922df16)
This commit is contained in:
parent
1f6851e546
commit
2c351a3e7e
@ -70,7 +70,8 @@
|
||||
|
||||
<ul class="${properties.kcFormSocialAccountListClass!} <#if social.providers?size gt 3>${properties.kcFormSocialAccountListGridClass!}</#if>">
|
||||
<#list social.providers as p>
|
||||
<a id="social-${p.alias}" class="${properties.kcFormSocialAccountListButtonClass!} <#if social.providers?size gt 3>${properties.kcFormSocialAccountGridItem!}</#if>"
|
||||
<a data-once-link data-disabled-class="${properties.kcFormSocialAccountListButtonDisabledClass!}" id="social-${p.alias}"
|
||||
class="${properties.kcFormSocialAccountListButtonClass!} <#if social.providers?size gt 3>${properties.kcFormSocialAccountGridItem!}</#if>"
|
||||
type="button" href="${p.loginUrl}">
|
||||
<#if p.iconClasses?has_content>
|
||||
<i class="${properties.kcCommonLogoIdP!} ${p.iconClasses!}" aria-hidden="true"></i>
|
||||
|
||||
@ -97,7 +97,8 @@
|
||||
<ul class="${properties.kcFormSocialAccountListClass!} <#if social.providers?size gt 3>${properties.kcFormSocialAccountListGridClass!}</#if>">
|
||||
<#list social.providers as p>
|
||||
<li>
|
||||
<a id="social-${p.alias}" class="${properties.kcFormSocialAccountListButtonClass!} <#if social.providers?size gt 3>${properties.kcFormSocialAccountGridItem!}</#if>"
|
||||
<a data-once-link data-disabled-class="${properties.kcFormSocialAccountListButtonDisabledClass!}" id="social-${p.alias}"
|
||||
class="${properties.kcFormSocialAccountListButtonClass!} <#if social.providers?size gt 3>${properties.kcFormSocialAccountGridItem!}</#if>"
|
||||
type="button" href="${p.loginUrl}">
|
||||
<#if p.iconClasses?has_content>
|
||||
<i class="${properties.kcCommonLogoIdP!} ${p.iconClasses!}" aria-hidden="true"></i>
|
||||
|
||||
@ -47,9 +47,32 @@
|
||||
import { startSessionPolling } from "${url.resourcesPath}/js/authChecker.js";
|
||||
|
||||
startSessionPolling(
|
||||
"${url.ssoLoginInOtherTabsUrl?no_esc}"
|
||||
"${url.ssoLoginInOtherTabsUrl?no_esc}"
|
||||
);
|
||||
</script>
|
||||
<script type="module">
|
||||
document.addEventListener("click", (event) => {
|
||||
const link = event.target.closest("a[data-once-link]");
|
||||
|
||||
if (!link) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (link.getAttribute("aria-disabled") === "true") {
|
||||
event.preventDefault();
|
||||
return;
|
||||
}
|
||||
|
||||
const { disabledClass } = link.dataset;
|
||||
|
||||
if (disabledClass) {
|
||||
link.classList.add(...disabledClass.trim().split(/\s+/));
|
||||
}
|
||||
|
||||
link.setAttribute("role", "link");
|
||||
link.setAttribute("aria-disabled", "true");
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body class="${properties.kcBodyClass!}">
|
||||
|
||||
@ -8,7 +8,8 @@
|
||||
<ul class="${properties.kcFormSocialAccountListClass!} <#if social.providers?size gt 3>${properties.kcFormSocialAccountListGridClass!}</#if>">
|
||||
<#list social.providers as p>
|
||||
<li class="${properties.kcFormSocialAccountListItemClass!}">
|
||||
<a id="social-${p.alias}" class="${properties.kcFormSocialAccountListButtonClass!} <#if social.providers?size gt 3>${properties.kcFormSocialAccountGridItem!}</#if>" aria-label="${p.displayName}"
|
||||
<a data-once-link id="social-${p.alias}" data-disabled-class="${properties.kcFormSocialAccountListButtonDisabledClass!}"
|
||||
class="${properties.kcFormSocialAccountListButtonClass!} <#if social.providers?size gt 3>${properties.kcFormSocialAccountGridItem!}</#if>" aria-label="${p.displayName}"
|
||||
type="button" href="${p.loginUrl}">
|
||||
<#if p.iconClasses?has_content>
|
||||
<#switch p.alias>
|
||||
|
||||
@ -87,6 +87,29 @@
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<script type="module">
|
||||
document.addEventListener("click", (event) => {
|
||||
const link = event.target.closest("a[data-once-link]");
|
||||
|
||||
if (!link) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (link.getAttribute("aria-disabled") === "true") {
|
||||
event.preventDefault();
|
||||
return;
|
||||
}
|
||||
|
||||
const { disabledClass } = link.dataset;
|
||||
|
||||
if (disabledClass) {
|
||||
link.classList.add(...disabledClass.trim().split(/\s+/));
|
||||
}
|
||||
|
||||
link.setAttribute("role", "link");
|
||||
link.setAttribute("aria-disabled", "true");
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body id="keycloak-bg" class="${properties.kcBodyClass!}">
|
||||
|
||||
@ -54,6 +54,7 @@ kcCommonLogoIdP=pf-v5-c-login__main-footer-links-item
|
||||
kcFormSocialAccountListClass=pf-v5-c-login__main-footer-links
|
||||
kcFormSocialAccountListItemClass=pf-v5-c-login__main-footer-links-item
|
||||
kcFormSocialAccountListButtonClass=pf-v5-c-login__main-footer-links-item-link
|
||||
kcFormSocialAccountListButtonDisabledClass=pf-m-aria-disabled
|
||||
|
||||
kcLogoIdP-linkedin-openid-connect=fa fa-linkedin
|
||||
|
||||
|
||||
@ -36,6 +36,7 @@ kcFormCardClass=card-pf
|
||||
kcFormSocialAccountListClass=pf-c-login__main-footer-links kc-social-links
|
||||
kcFormSocialAccountListGridClass=pf-l-grid kc-social-grid
|
||||
kcFormSocialAccountListButtonClass=pf-c-button pf-m-control pf-m-block kc-social-item kc-social-gray
|
||||
kcFormSocialAccountListButtonDisabledClass=pf-m-aria-disabled
|
||||
kcFormSocialAccountGridItem=pf-l-grid__item
|
||||
|
||||
kcFormSocialAccountNameClass=kc-social-provider-name
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user