Updated src and dist of d4science.v3 account theme for KC24.0.3

This commit is contained in:
Vincenzo Cestone 2024-04-19 10:00:17 +02:00
parent a162aae3b0
commit d550627fce
206 changed files with 581 additions and 829 deletions

View File

@ -1,64 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<base href="./" />
<!--link rel="icon" type="image/svg+xml" href="./favicon.svg" /-->
<link rel="icon" href="./favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Web site to manage keycloak" />
<title>Account Management</title>
<style>
body {
margin: 0;
}
body, #app {
height: 100%;
}
.container {
padding: 0;
margin: 0;
width: 100%;
}
.keycloak__loading-container {
height: 100vh;
width: 100%;
background-color: #f0f0f0;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
margin: 0;
}
#loading-text {
z-index: 1000;
font-size: 20px;
font-weight: 600;
padding-top: 32px;
}
</style>
</head>
<body>
<div id="app">
<main class="container">
<div class="keycloak__loading-container">
<span class="pf-c-spinner pf-m-xl" role="progressbar" aria-valuetext="Loading...">
<span class="pf-c-spinner__clipper"></span>
<span class="pf-c-spinner__lead-ball"></span>
<span class="pf-c-spinner__tail-ball"></span>
</span>
<div>
<p id="loading-text">Loading the account console</p>
</div>
</div>
</main>
</div>
<noscript>You need to enable JavaScript to run this app.</noscript>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>

View File

@ -1,188 +0,0 @@
cancel=Cancelar
applicationType=Tipo de aplicação
backTo=Voltar para {{app}}
removeConsentSuccess=Consentimento removido com sucesso
noGroupsText=Não está inscrito em nenhum grupo
required=Obrigatório
path=Path
password=A minha palavra-passe
setUpNew=Configurar {{name}}
lastAccessedOn=Último acesso em
deviceActivity=Atividade dos dispositivos
permissions=Permissões
credentialCreatedAt=<0>Criado</0> {{date}}.
error-username-invalid-character='{{0}}' contém caracteres inválidos.
usernamePlaceholder=Nome de utilizador ou e-mail
infoMessage=Ao clicar em Remover acesso, removerá as permissões concedidas a esta aplicação. A aplicação não usará mais as suas informações.
scopesHelp=Os escopos associados a este recurso.
unknownOperatingSystem=Sistema operativo desconhecido
deny=Negar
edit=Editar
otp-display-name=Aplicação Autenticador
selectALocale=Selecionar língua
signOut=Sair da sessão
linkedEmpty=Nenhum Provedor Conectado
directMembership=Associação direta
accept=Aceitar
error-invalid-length-too-short='{{0}}' deve ter tamanho mínimo de {{1}}.
resourceSharedWith_one=O recurso é partilhado com <0>{{username}}</0>
error-number-out-of-range-too-big='{{0}}' deve ter o valor máximo de {{2}}.
updateEmail=Atualizar e-mail
two-factor=Autenticação de Dois Fatores
resourceSharedWith_zero=O recurso não é partilhado.
signedInDevicesExplanation=Saia de qualquer dispositivo que não reconheça.
addMultivaluedLabel=Adicionar {{fieldLabel}}
status=Estado
error-number-out-of-range-too-small='{{0}}' deve ter o valor mínimo de {{1}}.
invalidEmailMessage=E-mail inválido.
lastName=Apelido
removeModalMessage=Isto irá remover a permissão atual de acesso concedido para {0}. Precisará repetir o processo de concessão se for utilizar a aplicação novamente.
clients=Clientes
createFlowHelp=Pode criar um fluxo de nível superior dentro deste
filterByName=Filtrar por nome...
refreshPage=Atualizar página
save=Guardar
error-user-attribute-required=Por favor, especifique '{{0}}'.
currentSession=Sessão Atual
clientDescriptionHelp=Especifica a descrição do cliente. Por exemplo, 'O meu cliente para TimeSheets'. Também oferece suporte a chaves para valores localizados. Exemplo\: ${my_client_description}
scopeTypeHelp=Escopos de cliente, que serão adicionados como escopos padrão a cada cliente criado
error-empty=Especifique o valor de '{{0}}'.
error-invalid-uri-fragment='{{0}}' é um fragmento de URL inválido.
error-invalid-blank=Especifique o valor de '{{0}}'.
missingFirstNameMessage='{{0}}'\: Especifique o primeiro nome.
signedOutSession=Terminado {{browser}}/{{os}}
share=Partilhar
close=Fechar
email=E-mail
signOutWarning=Sair da sessão?
removeConsentError=Não foi possível remover o consentimento devido a\: {{error}}
signOutAllDevicesWarning=Esta ação irá terminar a sessão de todos os dispositivos logados na sua conta, incluindo o dispositivo utilizado atualmente.
unShareSuccess=O recurso foi despartilhado com sucesso.
signingIn=Entrar na Conta
stopUsingCred=Parar de usar {0}?
groupsListHeader=Cabeçalho da lista de grupos
error-number-out-of-range='{{0}}' deve ser um número entre {{1}} e {{2}}.
privacyPolicy=Política de Privacidade
thirdPartyApp=De Terceiros
started=Iniciado em
avatar=Avatar
scopeDescriptionHelp=Descrição do escopo do cliente
confirm=Confirmar
updateSuccess=O recurso foi atualizado com sucesso.
selectOne=Selecione uma opção
unShare=Despartilhar tudo
linkedAccounts=Contas conectadas
personalInfoDescription=Gerir as suas informações básicas
removeAccess=Remover Acesso
signingInDescription=Configure maneiras de fazer login.
somethingWentWrongDescription=Desculpe, ocorreu um erro inesperado.
personalInfo=Informação pessoal
removeCred=Remover {{name}}
signOutAllDevices=Terminar a sessão em todos os dispositivos
scopeNameHelp=Nome do escopo do cliente. Deve ser único no realm. O nome não deve conter espaços, pois é usado como valor do parâmetro de escopo
flowTypeHelp=Que tipo de forma é essa
error-invalid-email=Endereço de e-mail inválido.
myResources=Meus Recursos
linkedAccountsIntroMessage=Gerir acessos por conta de terceiros.
accountSecurity=Segurança da conta
groupDescriptionLabel=Veja os grupos aos quais está associado
manageAccount=Gerir conta
resourceAlreadyShared=O recurso já foi partilhado com este utilizador.
error-invalid-length-too-long='{{0}}' deve ter tamanho máximo de {{2}}.
accountUpdatedMessage=A sua conta foi atualizada.
shareError=Não foi possível partilhar o recurso devido a\: {{error}}
logo=Logotipo
password-help-text=Entre com a sua palavra-passe.
deleteAccount=Apagar Conta
permissionRequest=Pedidos de permissão - {{name}}
add=Adicionar
error-invalid-value='{{0}}' tem valor inválido.
somethingWentWrong=Houve um erro algures
rolesScope=Se não houver mapeamento de escopo de função definido, cada utilizador terá permissão para usar esse escopo de cliente. Se houver mapeamentos de escopo de função definidos, o utilizador deverá ser membro de pelo menos uma das funções.
unShareError=Não foi possível cancelar o partilhamento do recurso devido a\: {{error}}
ipAddress=Endereço IP
tryAgain=Tente novamente
resourceName=Nome do Recurso
unlinkedEmpty=Nenhum Provedor Não-Conectado
done=Pronto
basic-authentication=Autenticação Básica
socialLogin=Login Social
notInUse=Não utilizado
unShareAllConfirm=Tem certeza de que quer remover todos os partilhamentos?
firstName=Primeiro nome
name=Nome
clientTypeHelp=O tipo deste recurso. Pode ser usado para agrupar diferentes instâncias de recursos com o mesmo tipo.
unknownUser=Anónimo
offlineAccess=Acesso Offline
password-display-name=Palavra-passe
expires=Expira em
noGroups=Nenhum grupo
notSetUp={{name}} não está configurada.
error-invalid-number='{{0}}' é um número inválido.
link=Conectar Conta
shareTheResource=Partilhe o recurso - {{name}}
description=Descrição
update=Atualizar
choose=Escolha...
signedInDevices=Dispositivos autenticados
delete=Apagar
missingPasswordMessage='{{0}}'\: Por favor, insira a palavra-passe.
otp-help-text=Insira o código de verificação da aplicação autenticador.
groupsListColumnsNames=Nomes de colunas de lista de grupos
error-invalid-uri-scheme='{{0}}' é um esquema de URL inválido.
error-user-attribute-read-only=O campo {{0}} é apenas de leitura.
general=Geral
error-invalid-date='{{0}}' é uma data inválida.
missingEmailMessage='{{0}}'\: Por favor, insira o e-mail.
accountUpdatedError=Não foi possível atualizar a conta devido a erros de validação
unLinkError=Não foi possível desvincular devido a\: {{error}}
applicationsIntroMessage=Veja as aplicações às quais a sua conta tem acesso
error-invalid-length='{{0}}' deve ter um tamanho entre {{1}} e {{2}}.
missingLastNameMessage='{{0}}'\: Por favor, insira o apelido.
errorSignOutMessage=Não foi possível sair\: {{error}}
linkedLoginProviders=Provedores de Acesso Conectados
inUse=Em uso
client=Cliente
error-invalid-uri='{{0}}' é um URL inválido.
systemDefined=Definido pelo Sistema
hasAccessTo=Tem acesso a
internalApp=Interna
updateError=Não foi possível atualizar o recurso devido a\: {{error}}
accessGrantedOn=Acesso concedido em\:
editTheResource=Edite o recurso - {{name}}
permissionRequests=Pedidos de permissão
shareSuccess=O recurso foi partilhado com sucesso.
missingUsernameMessage='{{0}}'\: Por favor, insira o nome de utilizador.
aliasHelp=Nome da configuração
fullName={{givenName}} {{familyName}}
groups=Grupos
resources=Recursos
resourceIntroMessage=Partilhe os seus recursos entre os membros da sua equipa
unLink=Desconectar Conta
errorRemovedMessage=Não foi possível remover {{userLabel}} devido a\: {{error}}
termsOfService=Termos de serviço
jumpToSection=Ir para a seção
linkError=Não foi possível ligar devido a\: {{error}}
requestor=Requerente
shareWith=Partilhar com
updateCredAriaLabel=Atualizar credencial
error-pattern-no-match='{{0}}' não corresponde ao formato obrigatório.
application=Aplicação
unlinkedLoginProviders=Provedores de Acesso Não Conectados
applicationDetails=Detalhes da aplicação para {{clientId}}
successRemovedMessage={{userLabel}} removido com sucesso.
deleteAccountWarning=Esta ação é irreversível. Todos os seus dados serão apagados permanentemente e não poderão ser recuperados.
resourceSharedWith_other=O recurso é partilhado com <0>{{username}}</0> e <1>{{other}}</1> entre outros
error-person-name-invalid-character='{{0}}' contém caracteres inválidos.
user=Utilizador
shareUser=Adicione utilizadores para partilhar o seu recurso
unLinkSuccess=Conta desvinculada com sucesso
applications=Aplicações
sharedWithMe=Partilhado comigo
username=Nome de utilizador
webauthn-display-name=Chave de Segurança
webauthn-help-text=Use a sua chave de segurança para entrar.
webauthn-passwordless-display-name=Chave de Segurança
webauthn-passwordless-help-text=Use a sua chave de segurança para entrar sem palavra-passe.
passwordless=Sem Palavra-passe
error-invalid-multivalued-size=O atributo {{0}} tem que conter no mínimo {{1}} e no máximo {{2}} valores.

View File

@ -1,7 +1,7 @@
{
"themes": [
{
"name": "d4science.v3",
"name": "d4science",
"types": [
"account"
]

View File

@ -7,12 +7,11 @@
<parent>
<artifactId>keycloak-js-parent</artifactId>
<groupId>org.keycloak</groupId>
<version>999.0.0-SNAPSHOT</version>
<version>24.0.3</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<artifactId>d4science.v3-theme-account-ui</artifactId>
<version>3.0.0</version>
<artifactId>d4science-account-ui</artifactId>
<name>Keycloak Account UI</name>
<description>The user inferface to manage an account on the Keycloak server.</description>
@ -70,6 +69,31 @@
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>install-node-and-pnpm</goal>
</goals>
</execution>
<execution>
<id>pnpm-install</id>
<goals>
<goal>pnpm</goal>
</goals>
<configuration>
<arguments>${pnpm.args.install}</arguments>
</configuration>
</execution>
<execution>
<id>run-build</id>
<goals>
<goal>pnpm</goal>
</goals>
<configuration>
<arguments>run build</arguments>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
@ -126,7 +150,6 @@
<script id="environment" type="application/json">
{
"authUrl": "${authUrl}",
"baseUrl": "${baseUrl}",
"realm": "${realm.name}",
"clientId": "${clientId}",
"resourceUrl": "${resourceUrl}",

View File

@ -1,5 +1,5 @@
[
{ "label": "accountProfile",
{ "label": "accountProfile",
"children": [
{ "label": "personalInfo", "path": "/" },
{ "label": "accountAvatar", "path": "d4science-page/account-extra-page" }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 27.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
version="1.1"
id="Livello_1"
x="0px"
y="0px"
viewBox="0 0 540 540"
xml:space="preserve"
width="540"
height="540"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs231" />
<style
type="text/css"
id="style2">
.st0{fill:#1D1D1B;}
.st1{fill:#9D9D9C;}
.st2{fill:#EDEDED;}
.st3{fill:#F6F6F6;}
.st4{fill:#FFFFFF;}
.st5{fill:#93D500;}
.st6{fill:#D94E96;}
</style>
<g
id="g38"
transform="translate(952.29,-276.04)">
<path
class="st5"
d="m -688.32,276.04 -202.21,433.64 c -15.21,-18.1 -28.03,-38.29 -37.98,-60.05 l 80.21,-172.02 h -65.99 l -37.4,80.19 c -0.4,-5.88 -0.6,-11.81 -0.6,-17.8 0,-145.79 118.19,-263.96 263.97,-263.96 z"
id="path34" />
<path
class="st6"
d="m -424.36,539.99 c 0,114.16 -72.46,211.38 -173.88,248.2 l 115.74,-248.2 h -65.99 l -122.83,263.43 c -5.62,0.35 -11.29,0.54 -17,0.54 -58.5,0 -112.54,-19.02 -156.29,-51.23 l 218.8,-469.23 c 19.73,4.78 38.6,11.79 56.32,20.74 L -737.62,664.8 h 65.99 L -519,337.49 c 57.85,48.43 94.64,121.17 94.64,202.5 z"
id="path36" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -0,0 +1,119 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 27.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
version="1.1"
id="Livello_1"
x="0px"
y="0px"
viewBox="0 0 802 160"
xml:space="preserve"
width="802"
height="160"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs231" />
<style
type="text/css"
id="style2">
.st0{fill:#1D1D1B;}
.st1{fill:#9D9D9C;}
.st2{fill:#EDEDED;}
.st3{fill:#F6F6F6;}
.st4{fill:#FFFFFF;}
.st5{fill:#93D500;}
.st6{fill:#D94E96;}
</style>
<g
id="g102"
transform="translate(1080.23,-1797.18)">
<g
id="g76">
<path
class="st5"
d="m -1000.4,1797.18 -61.15,131.13 c -4.6,-5.47 -8.48,-11.58 -11.49,-18.16 l 24.26,-52.02 h -19.96 l -11.31,24.25 c -0.12,-1.78 -0.18,-3.57 -0.18,-5.38 0,-44.09 35.74,-79.82 79.83,-79.82 z"
id="path72" />
<path
class="st6"
d="m -920.58,1877 c 0,34.52 -21.91,63.92 -52.58,75.05 l 35,-75.05 h -19.96 l -37.14,79.66 c -1.7,0.11 -3.41,0.16 -5.14,0.16 -17.69,0 -34.03,-5.75 -47.26,-15.49 l 66.17,-141.89 c 5.97,1.45 11.67,3.57 17.03,6.27 l -50.84,109.03 h 19.96 l 46.15,-98.98 c 17.48,14.65 28.61,36.64 28.61,61.24 z"
id="path74" />
</g>
<g
id="g100"
style="fill:#ffffff;fill-opacity:1">
<g
id="g98"
style="fill:#ffffff;fill-opacity:1">
<g
id="g96"
style="fill:#ffffff;fill-opacity:1">
<path
d="m -887.53,1915.59 v -77.19 h 29.24 c 13.07,0 23.14,3.55 30.23,10.74 7.2,7.09 10.74,16.39 10.74,28.02 0,11.63 -3.54,21.04 -10.63,28.02 -6.98,6.97 -17.05,10.41 -30.23,10.41 z m 17.06,-15.5 h 11.18 c 18.16,0 24.81,-8.75 24.81,-22.93 0,-7.2 -1.88,-12.95 -5.65,-17.05 -3.65,-4.1 -10.08,-6.2 -19.27,-6.2 h -11.07 z"
id="path78"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m -812.12,1901.2 28.57,-62.79 h 18.05 l -22.04,47.62 h 18.16 v -14.4 h 16.61 v 43.96 h -16.61 v -14.4 h -42.74 z"
id="path80"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m -732.39,1891.23 c 4.1,6.75 10.52,10.19 19.38,10.19 7.86,0 11.52,-3.54 11.52,-7.64 0,-2.88 -1.66,-4.88 -4.21,-6.42 -1.44,-1 -4.54,-2.33 -6.65,-2.88 -1.88,-0.78 -6.31,-2.21 -8.53,-3.1 -12.07,-4.43 -18.72,-10.74 -18.72,-22.37 0,-6.65 2.44,-11.96 7.42,-15.84 4.98,-3.99 11.07,-5.98 18.27,-5.98 11.18,0 19.71,4.21 25.69,12.62 l -11.41,8.64 c -3.1,-3.99 -7.75,-5.98 -13.84,-5.98 -5.65,0 -9.3,2.66 -9.3,6.31 0,2.54 0.66,4.1 2.99,5.54 1.22,0.66 2.44,1.22 3.43,1.66 l 5.54,1.89 c 2.55,0.88 4.76,1.66 6.64,2.44 14.06,5.31 19.71,11.85 19.71,22.92 0,14.28 -9.75,23.59 -28.68,23.59 -15.61,0 -26.47,-6.97 -31.67,-17.05 z"
id="path82"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m -604.81,1851.58 -11.63,9.86 c -5.21,-5.87 -11.74,-8.75 -19.6,-8.75 -6.87,0 -12.62,2.32 -17.39,6.97 -4.76,4.65 -7.09,10.41 -7.09,17.39 0,6.97 2.33,12.74 6.98,17.39 4.76,4.54 10.52,6.87 17.5,6.87 7.97,0 14.51,-2.99 19.71,-8.86 l 11.63,9.86 c -7.86,9.19 -19.05,14.5 -31.34,14.5 -11.63,0 -21.37,-3.76 -29.46,-11.3 -8.08,-7.64 -12.07,-17.05 -12.07,-28.46 0,-11.41 3.99,-20.82 12.07,-28.46 8.08,-7.64 17.83,-11.41 29.46,-11.41 12.29,0.01 23.36,5.44 31.23,14.4 z"
id="path84"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m -594.63,1915.59 v -77.19 h 17.05 v 77.19 z"
id="path86"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m -561.96,1915.59 v -77.19 h 52.71 v 15.51 h -35.66 v 14.5 h 33.33 v 15.17 h -33.33 v 16.5 h 36.43 v 15.5 h -53.48 z"
id="path88"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m -495.85,1915.59 v -80.18 l 51.83,46.85 v -43.86 h 16.83 v 80.18 l -51.83,-46.73 v 43.74 z"
id="path90"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m -343.03,1851.58 -11.63,9.86 c -5.21,-5.87 -11.74,-8.75 -19.6,-8.75 -6.87,0 -12.63,2.32 -17.39,6.97 -4.76,4.65 -7.09,10.41 -7.09,17.39 0,6.97 2.33,12.74 6.98,17.39 4.76,4.54 10.52,6.87 17.5,6.87 7.97,0 14.51,-2.99 19.71,-8.86 l 11.63,9.86 c -7.86,9.19 -19.05,14.5 -31.34,14.5 -11.63,0 -21.37,-3.76 -29.46,-11.3 -8.08,-7.64 -12.07,-17.05 -12.07,-28.46 0,-11.41 3.99,-20.82 12.07,-28.46 8.08,-7.64 17.83,-11.41 29.46,-11.41 12.29,0.01 23.37,5.44 31.23,14.4 z"
id="path92"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m -333.29,1915.59 v -77.19 h 52.71 v 15.51 h -35.66 v 14.5 h 33.33 v 15.17 h -33.33 v 16.5 h 36.43 v 15.5 h -53.48 z"
id="path94"
style="fill:#ffffff;fill-opacity:1" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

@ -1,107 +0,0 @@
import { matchPath } from "react-router-dom";
import { DEFAULT_REALM, ROOT_PATH } from "./constants";
export type Feature = {
isRegistrationEmailAsUsername: boolean;
isEditUserNameAllowed: boolean;
isInternationalizationEnabled: boolean;
isLinkedAccountsEnabled: boolean;
isEventsEnabled: boolean;
isMyResourcesEnabled: boolean;
isTotpConfigured: boolean;
deleteAccountAllowed: boolean;
updateEmailFeatureEnabled: boolean;
updateEmailActionEnabled: boolean;
isViewGroupsEnabled: boolean;
};
export type Environment = {
/** The URL to the root of the auth server. */
authUrl: string;
/** The URL to the root of the account console. */
baseUrl: string;
/** The realm used to authenticate the user to the Account Console. */
realm: string;
/** The identifier of the client used to authenticate the user to the Account Console. */
clientId: string;
/** The URL to resources such as the files in the `public` directory. */
resourceUrl: string;
/** Indicates the src for the Brand image */
logo: string;
/** Indicates the url to be followed when Brand image is clicked */
logoUrl: string;
/** The locale of the user */
locale: string;
/** Feature flags */
features: Feature;
/** Client id of the application to add back link */
referrer?: string;
/** URI to the referrer application in the back link */
referrer_uri?: string;
};
// Detect the current realm from the URL.
const match = matchPath(ROOT_PATH, location.pathname);
const defaultEnvironment: Environment = {
authUrl: "http://localhost:8180",
baseUrl: `http://localhost:8180/realms/${match?.params.realm ?? DEFAULT_REALM}/account/`,
realm: match?.params.realm ?? DEFAULT_REALM,
clientId: "security-admin-console-v2",
resourceUrl: "http://localhost:8080",
logo: "/d4science-logo.png",
logoUrl: "/",
locale: "en",
features: {
isRegistrationEmailAsUsername: false,
isEditUserNameAllowed: true,
isInternationalizationEnabled: true,
isLinkedAccountsEnabled: true,
isEventsEnabled: true,
isMyResourcesEnabled: true,
isTotpConfigured: true,
deleteAccountAllowed: true,
updateEmailFeatureEnabled: true,
updateEmailActionEnabled: true,
isViewGroupsEnabled: true,
},
};
// Merge the default and injected environment variables together.
const environment: Environment = {
...defaultEnvironment,
...getInjectedEnvironment(),
};
export { environment };
/**
* Extracts the environment variables that are passed if the application is running as a Keycloak theme.
* These variables are injected by Keycloak into the `index.ftl` as a script tag, the contents of which can be parsed as JSON.
*/
function getInjectedEnvironment(): Record<string, string | number | boolean> {
const element = document.getElementById("environment");
let env = {} as Record<string, string | number | boolean>;
// Attempt to parse the contents as JSON and return its value.
try {
// If the element cannot be found, return an empty record.
if (element?.textContent) {
env = JSON.parse(element.textContent);
}
} catch (error) {
console.error("Unable to parse environment variables.");
}
const searchParams = new URLSearchParams(location.search);
if (searchParams.has("referrer_uri")) {
env["referrer_uri"] = searchParams.get("referrer_uri")!;
}
if (searchParams.has("referrer")) {
env["referrer"] = searchParams.get("referrer")!;
}
// Otherwise, return an empty record.
return env;
}

View File

@ -1,74 +0,0 @@
import {
KeycloakMasthead,
KeycloakProvider,
Translations,
TranslationsProvider,
} from "keycloak-masthead";
import { useMemo } from "react";
import { useTranslation } from "react-i18next";
import { useHref } from "react-router-dom";
import { useEnvironment } from "./KeycloakContext";
import { joinPath } from "../utils/joinPath";
import { ExternalLinkSquareAltIcon } from "@patternfly/react-icons";
import { Button } from "@patternfly/react-core";
import style from "./header.module.css";
import { environment } from "../environment";
const ReferrerLink = () => {
const { t } = useTranslation();
return environment.referrer_uri ? (
<Button
data-testid="referrer-link"
component="a"
href={environment.referrer_uri!.replace("_hash_", "#")}
variant="link"
icon={<ExternalLinkSquareAltIcon />}
iconPosition="right"
isInline
>
{t("backTo", { app: environment.referrer })}
</Button>
) : null;
};
export const Header = () => {
const { environment, keycloak } = useEnvironment();
const { t } = useTranslation();
const brandImage = environment.logo || "d4science-logo.png";
const logoUrl = environment.logoUrl ? environment.logoUrl : "/";
const internalLogoHref = useHref(logoUrl);
// User can indicate that he wants an internal URL by starting it with "/"
const indexHref = logoUrl.startsWith("/") ? internalLogoHref : logoUrl;
const translations = useMemo<Translations>(
() => ({
avatar: t("avatar"),
fullName: t("fullName"),
manageAccount: t("manageAccount"),
signOut: t("signOut"),
unknownUser: t("unknownUser"),
}),
[t],
);
return (
<TranslationsProvider translations={translations}>
<KeycloakProvider keycloak={keycloak}>
<KeycloakMasthead
features={{ hasManageAccount: false }}
showNavToggle
brand={{
href: indexHref,
src: joinPath(environment.resourceUrl, brandImage),
alt: t("logo"),
className: style.brand,
}}
toolbarItems={[<ReferrerLink key="link" />]}
/>
</KeycloakProvider>
</TranslationsProvider>
);
};

View File

@ -3,7 +3,6 @@ import type { IndexRouteObject, RouteObject } from "react-router-dom";
import { ErrorPage } from "./root/ErrorPage";
import { Root } from "./root/Root";
import { environment } from "./environment";
const DeviceActivity = lazy(() => import("./account-security/DeviceActivity"));
const LinkedAccounts = lazy(() => import("./account-security/LinkedAccounts"));
@ -50,7 +49,7 @@ export type ContentComponentParams = {
};
export const ContentRoute: RouteObject = {
path: "content/:componentId",
path: "/content/:componentId",
element: <ContentComponent />,
};
@ -65,7 +64,7 @@ export const AccountExtraPageRoute: RouteObject = {
};
export const RootRoute: RouteObject = {
path: new URL(environment.baseUrl).pathname,
path: "/",
element: <Root />,
errorElement: <ErrorPage />,
children: [

View File

@ -3,8 +3,7 @@
<head>
<meta charset="UTF-8" />
<base href="${resourceUrl}/" />
<!--link rel="icon" type="image/svg+xml" href="${resourceUrl}/favicon.svg" /-->
<link rel="icon" href="${resourceUrl}/favicon.ico" />
<link rel="icon" type="${properties.favIconType!"image/svg+xml"}" href="${resourceUrl}${properties.favIcon!"/favicon.svg"}" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="${properties.description!"Web site to manage keycloak"}" />
@ -53,8 +52,8 @@
padding-top: 32px;
}
</style>
<script type="module" crossorigin src="${resourceUrl}/assets/index-Bw6oJPms.js"></script>
<link rel="stylesheet" crossorigin href="${resourceUrl}/assets/index-CPAUim_G.css">
<script type="module" crossorigin src="${resourceUrl}/assets/index-CmO9OReA.js"></script>
<link rel="stylesheet" crossorigin href="${resourceUrl}/assets/index-oRmmxtxF.css">
<#if properties.scripts?has_content>
@ -92,7 +91,6 @@
<script id="environment" type="application/json">
{
"authUrl": "${authUrl}",
"baseUrl": "${baseUrl}",
"realm": "${realm.name}",
"clientId": "${clientId}",
"resourceUrl": "${resourceUrl}",

View File

@ -1,188 +0,0 @@
cancel=Cancelar
applicationType=Tipo de aplicação
backTo=Voltar para {{app}}
removeConsentSuccess=Consentimento removido com sucesso
noGroupsText=Não está inscrito em nenhum grupo
required=Obrigatório
path=Path
password=A minha palavra-passe
setUpNew=Configurar {{name}}
lastAccessedOn=Último acesso em
deviceActivity=Atividade dos dispositivos
permissions=Permissões
credentialCreatedAt=<0>Criado</0> {{date}}.
error-username-invalid-character='{{0}}' contém caracteres inválidos.
usernamePlaceholder=Nome de utilizador ou e-mail
infoMessage=Ao clicar em Remover acesso, removerá as permissões concedidas a esta aplicação. A aplicação não usará mais as suas informações.
scopesHelp=Os escopos associados a este recurso.
unknownOperatingSystem=Sistema operativo desconhecido
deny=Negar
edit=Editar
otp-display-name=Aplicação Autenticador
selectALocale=Selecionar língua
signOut=Sair da sessão
linkedEmpty=Nenhum Provedor Conectado
directMembership=Associação direta
accept=Aceitar
error-invalid-length-too-short='{{0}}' deve ter tamanho mínimo de {{1}}.
resourceSharedWith_one=O recurso é partilhado com <0>{{username}}</0>
error-number-out-of-range-too-big='{{0}}' deve ter o valor máximo de {{2}}.
updateEmail=Atualizar e-mail
two-factor=Autenticação de Dois Fatores
resourceSharedWith_zero=O recurso não é partilhado.
signedInDevicesExplanation=Saia de qualquer dispositivo que não reconheça.
addMultivaluedLabel=Adicionar {{fieldLabel}}
status=Estado
error-number-out-of-range-too-small='{{0}}' deve ter o valor mínimo de {{1}}.
invalidEmailMessage=E-mail inválido.
lastName=Apelido
removeModalMessage=Isto irá remover a permissão atual de acesso concedido para {0}. Precisará repetir o processo de concessão se for utilizar a aplicação novamente.
clients=Clientes
createFlowHelp=Pode criar um fluxo de nível superior dentro deste
filterByName=Filtrar por nome...
refreshPage=Atualizar página
save=Guardar
error-user-attribute-required=Por favor, especifique '{{0}}'.
currentSession=Sessão Atual
clientDescriptionHelp=Especifica a descrição do cliente. Por exemplo, 'O meu cliente para TimeSheets'. Também oferece suporte a chaves para valores localizados. Exemplo\: ${my_client_description}
scopeTypeHelp=Escopos de cliente, que serão adicionados como escopos padrão a cada cliente criado
error-empty=Especifique o valor de '{{0}}'.
error-invalid-uri-fragment='{{0}}' é um fragmento de URL inválido.
error-invalid-blank=Especifique o valor de '{{0}}'.
missingFirstNameMessage='{{0}}'\: Especifique o primeiro nome.
signedOutSession=Terminado {{browser}}/{{os}}
share=Partilhar
close=Fechar
email=E-mail
signOutWarning=Sair da sessão?
removeConsentError=Não foi possível remover o consentimento devido a\: {{error}}
signOutAllDevicesWarning=Esta ação irá terminar a sessão de todos os dispositivos logados na sua conta, incluindo o dispositivo utilizado atualmente.
unShareSuccess=O recurso foi despartilhado com sucesso.
signingIn=Entrar na Conta
stopUsingCred=Parar de usar {0}?
groupsListHeader=Cabeçalho da lista de grupos
error-number-out-of-range='{{0}}' deve ser um número entre {{1}} e {{2}}.
privacyPolicy=Política de Privacidade
thirdPartyApp=De Terceiros
started=Iniciado em
avatar=Avatar
scopeDescriptionHelp=Descrição do escopo do cliente
confirm=Confirmar
updateSuccess=O recurso foi atualizado com sucesso.
selectOne=Selecione uma opção
unShare=Despartilhar tudo
linkedAccounts=Contas conectadas
personalInfoDescription=Gerir as suas informações básicas
removeAccess=Remover Acesso
signingInDescription=Configure maneiras de fazer login.
somethingWentWrongDescription=Desculpe, ocorreu um erro inesperado.
personalInfo=Informação pessoal
removeCred=Remover {{name}}
signOutAllDevices=Terminar a sessão em todos os dispositivos
scopeNameHelp=Nome do escopo do cliente. Deve ser único no realm. O nome não deve conter espaços, pois é usado como valor do parâmetro de escopo
flowTypeHelp=Que tipo de forma é essa
error-invalid-email=Endereço de e-mail inválido.
myResources=Meus Recursos
linkedAccountsIntroMessage=Gerir acessos por conta de terceiros.
accountSecurity=Segurança da conta
groupDescriptionLabel=Veja os grupos aos quais está associado
manageAccount=Gerir conta
resourceAlreadyShared=O recurso já foi partilhado com este utilizador.
error-invalid-length-too-long='{{0}}' deve ter tamanho máximo de {{2}}.
accountUpdatedMessage=A sua conta foi atualizada.
shareError=Não foi possível partilhar o recurso devido a\: {{error}}
logo=Logotipo
password-help-text=Entre com a sua palavra-passe.
deleteAccount=Apagar Conta
permissionRequest=Pedidos de permissão - {{name}}
add=Adicionar
error-invalid-value='{{0}}' tem valor inválido.
somethingWentWrong=Houve um erro algures
rolesScope=Se não houver mapeamento de escopo de função definido, cada utilizador terá permissão para usar esse escopo de cliente. Se houver mapeamentos de escopo de função definidos, o utilizador deverá ser membro de pelo menos uma das funções.
unShareError=Não foi possível cancelar o partilhamento do recurso devido a\: {{error}}
ipAddress=Endereço IP
tryAgain=Tente novamente
resourceName=Nome do Recurso
unlinkedEmpty=Nenhum Provedor Não-Conectado
done=Pronto
basic-authentication=Autenticação Básica
socialLogin=Login Social
notInUse=Não utilizado
unShareAllConfirm=Tem certeza de que quer remover todos os partilhamentos?
firstName=Primeiro nome
name=Nome
clientTypeHelp=O tipo deste recurso. Pode ser usado para agrupar diferentes instâncias de recursos com o mesmo tipo.
unknownUser=Anónimo
offlineAccess=Acesso Offline
password-display-name=Palavra-passe
expires=Expira em
noGroups=Nenhum grupo
notSetUp={{name}} não está configurada.
error-invalid-number='{{0}}' é um número inválido.
link=Conectar Conta
shareTheResource=Partilhe o recurso - {{name}}
description=Descrição
update=Atualizar
choose=Escolha...
signedInDevices=Dispositivos autenticados
delete=Apagar
missingPasswordMessage='{{0}}'\: Por favor, insira a palavra-passe.
otp-help-text=Insira o código de verificação da aplicação autenticador.
groupsListColumnsNames=Nomes de colunas de lista de grupos
error-invalid-uri-scheme='{{0}}' é um esquema de URL inválido.
error-user-attribute-read-only=O campo {{0}} é apenas de leitura.
general=Geral
error-invalid-date='{{0}}' é uma data inválida.
missingEmailMessage='{{0}}'\: Por favor, insira o e-mail.
accountUpdatedError=Não foi possível atualizar a conta devido a erros de validação
unLinkError=Não foi possível desvincular devido a\: {{error}}
applicationsIntroMessage=Veja as aplicações às quais a sua conta tem acesso
error-invalid-length='{{0}}' deve ter um tamanho entre {{1}} e {{2}}.
missingLastNameMessage='{{0}}'\: Por favor, insira o apelido.
errorSignOutMessage=Não foi possível sair\: {{error}}
linkedLoginProviders=Provedores de Acesso Conectados
inUse=Em uso
client=Cliente
error-invalid-uri='{{0}}' é um URL inválido.
systemDefined=Definido pelo Sistema
hasAccessTo=Tem acesso a
internalApp=Interna
updateError=Não foi possível atualizar o recurso devido a\: {{error}}
accessGrantedOn=Acesso concedido em\:
editTheResource=Edite o recurso - {{name}}
permissionRequests=Pedidos de permissão
shareSuccess=O recurso foi partilhado com sucesso.
missingUsernameMessage='{{0}}'\: Por favor, insira o nome de utilizador.
aliasHelp=Nome da configuração
fullName={{givenName}} {{familyName}}
groups=Grupos
resources=Recursos
resourceIntroMessage=Partilhe os seus recursos entre os membros da sua equipa
unLink=Desconectar Conta
errorRemovedMessage=Não foi possível remover {{userLabel}} devido a\: {{error}}
termsOfService=Termos de serviço
jumpToSection=Ir para a seção
linkError=Não foi possível ligar devido a\: {{error}}
requestor=Requerente
shareWith=Partilhar com
updateCredAriaLabel=Atualizar credencial
error-pattern-no-match='{{0}}' não corresponde ao formato obrigatório.
application=Aplicação
unlinkedLoginProviders=Provedores de Acesso Não Conectados
applicationDetails=Detalhes da aplicação para {{clientId}}
successRemovedMessage={{userLabel}} removido com sucesso.
deleteAccountWarning=Esta ação é irreversível. Todos os seus dados serão apagados permanentemente e não poderão ser recuperados.
resourceSharedWith_other=O recurso é partilhado com <0>{{username}}</0> e <1>{{other}}</1> entre outros
error-person-name-invalid-character='{{0}}' contém caracteres inválidos.
user=Utilizador
shareUser=Adicione utilizadores para partilhar o seu recurso
unLinkSuccess=Conta desvinculada com sucesso
applications=Aplicações
sharedWithMe=Partilhado comigo
username=Nome de utilizador
webauthn-display-name=Chave de Segurança
webauthn-help-text=Use a sua chave de segurança para entrar.
webauthn-passwordless-display-name=Chave de Segurança
webauthn-passwordless-help-text=Use a sua chave de segurança para entrar sem palavra-passe.
passwordless=Sem Palavra-passe
error-invalid-multivalued-size=O atributo {{0}} tem que conter no mínimo {{1}} e no máximo {{2}} valores.

View File

@ -1 +0,0 @@
.pf-v5-c-file-upload{--pf-v5-c-file-upload--m-loading__file-details--before--BackgroundColor:var(--pf-v5-global--BackgroundColor--100);--pf-v5-c-file-upload--m-loading__file-details--before--Left:var(--pf-v5-global--BorderWidth--sm);--pf-v5-c-file-upload--m-loading__file-details--before--Right:var(--pf-v5-global--BorderWidth--sm);--pf-v5-c-file-upload--m-loading__file-details--before--Bottom:var(--pf-v5-global--BorderWidth--sm);--pf-v5-c-file-upload--m-drag-hover--before--BorderWidth:var(--pf-v5-global--BorderWidth--sm);--pf-v5-c-file-upload--m-drag-hover--before--BorderColor:var(--pf-v5-global--primary-color--100);--pf-v5-c-file-upload--m-drag-hover--before--ZIndex:var(--pf-v5-global--ZIndex--xs);--pf-v5-c-file-upload--m-drag-hover--after--BackgroundColor:var(--pf-v5-global--primary-color--100);--pf-v5-c-file-upload--m-drag-hover--after--Opacity:.1;--pf-v5-c-file-upload__file-details__c-form-control--MinHeight:calc(var(--pf-v5-global--spacer--3xl)*2);--pf-v5-c-file-upload__file-select__c-button--m-control--OutlineOffset:calc(-1*var(--pf-v5-global--spacer--xs));flex-direction:column;display:flex;position:relative}.pf-v5-c-file-upload.pf-m-drag-hover:before{z-index:var(--pf-v5-c-file-upload--m-drag-hover--before--ZIndex);content:"";border:var(--pf-v5-c-file-upload--m-drag-hover--before--BorderWidth)solid var(--pf-v5-c-file-upload--m-drag-hover--before--BorderColor);position:absolute;inset:0}.pf-v5-c-file-upload.pf-m-drag-hover:after{content:"";background-color:var(--pf-v5-c-file-upload--m-drag-hover--after--BackgroundColor);opacity:var(--pf-v5-c-file-upload--m-drag-hover--after--Opacity);position:absolute;inset:0}.pf-v5-c-file-upload.pf-m-loading .pf-v5-c-file-upload__file-details{position:relative}.pf-v5-c-file-upload.pf-m-loading .pf-v5-c-file-upload__file-details:before{content:"";background-color:var(--pf-v5-c-file-upload--m-loading__file-details--before--BackgroundColor);position:absolute;inset-block-start:0;inset-block-end:var(--pf-v5-c-file-upload--m-loading__file-details--before--Left);inset-inline-start:var(--pf-v5-c-file-upload--m-loading__file-details--before--Left);inset-inline-end:var(--pf-v5-c-file-upload--m-loading__file-details--before--Left)}.pf-v5-c-file-upload__file-select .pf-v5-c-button.pf-m-control{outline-offset:var(--pf-v5-c-file-upload__file-select__c-button--m-control--OutlineOffset)}.pf-v5-c-file-upload__file-details{display:flex;position:relative}.pf-v5-c-file-upload__file-details .pf-v5-c-form-control{min-height:var(--pf-v5-c-file-upload__file-details__c-form-control--MinHeight);border-block-start:0;flex:auto}.pf-v5-c-file-upload__file-details-spinner{position:absolute;inset-block-start:50%;inset-inline-start:50%;transform:translate(-50%,-50%)}

View File

@ -1,2 +0,0 @@
import{a,aA as u,b as c,aB as l,aC as p,S as d,aD as f}from"./index-Bw6oJPms.js";import{jsx as o}from"react/jsx-runtime";import{useState as h,useMemo as P,lazy as C,Suspense as _}from"react";import"react-dom";function i(e,n){for(const t of e){if("path"in t&&t.path.endsWith(n)&&"modulePath"in t)return t.modulePath;if("children"in t)return i(t.children,n)}}const j=()=>{const e=a(),[n,t]=h(),{componentId:r}=u();c(m=>f({signal:m,context:e}),t);const s=P(()=>i(n||[],r),[n,r]);return s&&o(v,{modulePath:s})},v=({modulePath:e})=>{const{environment:n}=a(),t=C(()=>l(()=>import(p(n.resourceUrl,e)),[],import.meta.url));return o(_,{fallback:o(d,{}),children:o(t,{})})};export{j as ContentComponent,j as default};
//# sourceMappingURL=ContentComponent-Q34a3Tlc.js.map

View File

@ -1 +0,0 @@
{"version":3,"mappings":"iNAUA,SAASA,EACPC,EACAC,EACoB,CACpB,UAAWC,KAAQF,EAAS,CAExB,YAAUE,GACVA,EAAK,KAAK,SAASD,CAAW,GAC9B,eAAgBC,EAEhB,OAAOA,EAAK,WAEd,GAAI,aAAcA,EACT,OAAAH,EAAcG,EAAK,SAAUD,CAAW,CAEnD,CAEF,CAEO,MAAME,EAAmB,IAAM,CACpC,MAAMC,EAAUC,IAEV,CAACL,EAASM,CAAU,EAAIC,EAAqB,EAC7C,CAAE,YAAAN,GAAgBO,IAEbC,EAACC,GAAWC,EAAiB,CAAE,OAAAD,EAAQ,QAAAN,CAAS,GAAGE,CAAU,EACxE,MAAMM,EAAaC,EACjB,IAAMd,EAAcC,GAAW,GAAIC,CAAY,EAC/C,CAACD,EAASC,CAAW,GAGhB,OAAAW,GAAeE,EAAAC,EAAA,CAAU,WAAAH,CAAwB,EAC1D,EAMMG,EAAY,CAAC,CAAE,WAAAH,KAAiC,CAC9C,MAAE,YAAAI,GAAgBX,IAElBY,EAAUC,EACd,IAAMC,EAAA,WAAOC,EAASJ,EAAY,YAAaJ,CAAU,wBAGzD,OAAAE,EAACO,GAAS,SAAUP,EAACQ,IAAQ,EAC3B,SAAAR,EAACG,GAAQ,EACX,EAEJ","names":["findComponent","content","componentId","item","ContentComponent","context","useEnvironment","setContent","useState","useParams","usePromise","signal","fetchContentJson","modulePath","useMemo","jsx","Component","environment","Element","lazy","__vitePreload","joinPath","Suspense","Spinner"],"ignoreList":[],"sources":["../../src/content/ContentComponent.tsx"],"sourcesContent":["import { Spinner } from \"@patternfly/react-core\";\r\nimport { Suspense, lazy, useMemo, useState } from \"react\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport { useEnvironment } from \"../root/KeycloakContext\";\r\nimport { MenuItem } from \"../root/PageNav\";\r\nimport { ContentComponentParams } from \"../routes\";\r\nimport { joinPath } from \"../utils/joinPath\";\r\nimport { usePromise } from \"../utils/usePromise\";\r\nimport fetchContentJson from \"./fetchContent\";\r\n\r\nfunction findComponent(\r\n content: MenuItem[],\r\n componentId: string,\r\n): string | undefined {\r\n for (const item of content) {\r\n if (\r\n \"path\" in item &&\r\n item.path.endsWith(componentId) &&\r\n \"modulePath\" in item\r\n ) {\r\n return item.modulePath;\r\n }\r\n if (\"children\" in item) {\r\n return findComponent(item.children, componentId);\r\n }\r\n }\r\n return undefined;\r\n}\r\n\r\nexport const ContentComponent = () => {\r\n const context = useEnvironment();\r\n\r\n const [content, setContent] = useState<MenuItem[]>();\r\n const { componentId } = useParams<ContentComponentParams>();\r\n\r\n usePromise((signal) => fetchContentJson({ signal, context }), setContent);\r\n const modulePath = useMemo(\r\n () => findComponent(content || [], componentId!),\r\n [content, componentId],\r\n );\r\n\r\n return modulePath && <Component modulePath={modulePath} />;\r\n};\r\n\r\ntype ComponentProps = {\r\n modulePath: string;\r\n};\r\n\r\nconst Component = ({ modulePath }: ComponentProps) => {\r\n const { environment } = useEnvironment();\r\n\r\n const Element = lazy(\r\n () => import(joinPath(environment.resourceUrl, modulePath)),\r\n );\r\n return (\r\n <Suspense fallback={<Spinner />}>\r\n <Element />\r\n </Suspense>\r\n );\r\n};\r\n\r\nexport default ContentComponent;\r\n"],"file":"assets/ContentComponent-Q34a3Tlc.js"}

View File

@ -0,0 +1,8 @@
import{a,aB as u,b as c,aC as l,aD as p,S as d,aE as f}from"./index-CmO9OReA.js";import{jsx as o}from"react/jsx-runtime";import{useState as h,useMemo as P,lazy as C,Suspense as _}from"react";import"react-dom";function i(e,n){for(const t of e){if("path"in t&&t.path.endsWith(n)&&"modulePath"in t)return t.modulePath;if("children"in t)return i(t.children,n)}}const j=()=>{const e=a(),[n,t]=h(),{componentId:r}=u();c(m=>f({signal:m,context:e}),t);const s=P(()=>i(n||[],r),[n,r]);return s&&o(v,{modulePath:s})},v=({modulePath:e})=>{const{environment:n}=a(),t=C(()=>l(()=>import(p(n.resourceUrl,e)),__vite__mapDeps([]),import.meta.url));return o(_,{fallback:o(d,{}),children:o(t,{})})};export{j as ContentComponent,j as default};
function __vite__mapDeps(indexes) {
if (!__vite__mapDeps.viteFileDeps) {
__vite__mapDeps.viteFileDeps = []
}
return indexes.map((i) => __vite__mapDeps.viteFileDeps[i])
}
//# sourceMappingURL=ContentComponent-dIMo1COn.js.map

View File

@ -0,0 +1 @@
{"version":3,"mappings":"iNAUA,SAASA,EACPC,EACAC,EACoB,CACpB,UAAWC,KAAQF,EAAS,CAExB,YAAUE,GACVA,EAAK,KAAK,SAASD,CAAW,GAC9B,eAAgBC,EAEhB,OAAOA,EAAK,WAEd,GAAI,aAAcA,EACT,OAAAH,EAAcG,EAAK,SAAUD,CAAW,CAEnD,CAEF,CAEO,MAAME,EAAmB,IAAM,CACpC,MAAMC,EAAUC,IAEV,CAACL,EAASM,CAAU,EAAIC,EAAqB,EAC7C,CAAE,YAAAN,GAAgBO,IAEbC,EAACC,GAAWC,EAAiB,CAAE,OAAAD,EAAQ,QAAAN,CAAS,GAAGE,CAAU,EACxE,MAAMM,EAAaC,EACjB,IAAMd,EAAcC,GAAW,GAAIC,CAAY,EAC/C,CAACD,EAASC,CAAW,GAGhB,OAAAW,GAAeE,EAAAC,EAAA,CAAU,WAAAH,CAAwB,EAC1D,EAMMG,EAAY,CAAC,CAAE,WAAAH,KAAiC,CAC9C,MAAE,YAAAI,GAAgBX,IAElBY,EAAUC,EACd,IAAMC,EAAA,WAAOC,EAASJ,EAAY,YAAaJ,CAAU,yCAGzD,OAAAE,EAACO,GAAS,SAAUP,EAACQ,IAAQ,EAC3B,SAAAR,EAACG,GAAQ,EACX,EAEJ","names":["findComponent","content","componentId","item","ContentComponent","context","useEnvironment","setContent","useState","useParams","usePromise","signal","fetchContentJson","modulePath","useMemo","jsx","Component","environment","Element","lazy","__vitePreload","joinPath","Suspense","Spinner"],"sources":["../../src/content/ContentComponent.tsx"],"sourcesContent":["import { Spinner } from \"@patternfly/react-core\";\r\nimport { Suspense, lazy, useMemo, useState } from \"react\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport { useEnvironment } from \"../root/KeycloakContext\";\r\nimport { MenuItem } from \"../root/PageNav\";\r\nimport { ContentComponentParams } from \"../routes\";\r\nimport { joinPath } from \"../utils/joinPath\";\r\nimport { usePromise } from \"../utils/usePromise\";\r\nimport fetchContentJson from \"./fetchContent\";\r\n\r\nfunction findComponent(\r\n content: MenuItem[],\r\n componentId: string,\r\n): string | undefined {\r\n for (const item of content) {\r\n if (\r\n \"path\" in item &&\r\n item.path.endsWith(componentId) &&\r\n \"modulePath\" in item\r\n ) {\r\n return item.modulePath;\r\n }\r\n if (\"children\" in item) {\r\n return findComponent(item.children, componentId);\r\n }\r\n }\r\n return undefined;\r\n}\r\n\r\nexport const ContentComponent = () => {\r\n const context = useEnvironment();\r\n\r\n const [content, setContent] = useState<MenuItem[]>();\r\n const { componentId } = useParams<ContentComponentParams>();\r\n\r\n usePromise((signal) => fetchContentJson({ signal, context }), setContent);\r\n const modulePath = useMemo(\r\n () => findComponent(content || [], componentId!),\r\n [content, componentId],\r\n );\r\n\r\n return modulePath && <Component modulePath={modulePath} />;\r\n};\r\n\r\ntype ComponentProps = {\r\n modulePath: string;\r\n};\r\n\r\nconst Component = ({ modulePath }: ComponentProps) => {\r\n const { environment } = useEnvironment();\r\n\r\n const Element = lazy(\r\n () => import(joinPath(environment.resourceUrl, modulePath)),\r\n );\r\n return (\r\n <Suspense fallback={<Spinner />}>\r\n <Element />\r\n </Suspense>\r\n );\r\n};\r\n\r\nexport default ContentComponent;\r\n"],"file":"assets/ContentComponent-dIMo1COn.js"}

View File

@ -1,2 +1,2 @@
import{_ as o,f as m}from"./index-Bw6oJPms.js";import*as d from"react";import{s}from"./DataListItemRow-Djv9qB2b.js";const p=a=>{var{children:i=null,className:e="",width:t=1,isFilled:l=!0,alignRight:n=!1,isIcon:c=!1,wrapModifier:r=null}=a,f=o(a,["children","className","width","isFilled","alignRight","isIcon","wrapModifier"]);return d.createElement("div",Object.assign({className:m(s.dataListCell,t>1&&s.modifiers[`flex_${t}`],!l&&s.modifiers.noFill,n&&s.modifiers.alignRight,c&&s.modifiers.icon,e,r&&s.modifiers[r])},f),i)};p.displayName="DataListCell";const g=a=>{var{className:i="",dataListCells:e,rowid:t=""}=a,l=o(a,["className","dataListCells","rowid"]);return d.createElement("div",Object.assign({className:m(s.dataListItemContent,i)},l),e)};g.displayName="DataListItemCells";export{g as D,p as a};
//# sourceMappingURL=DataListItemCells-CEZA0xGh.js.map
import{_ as o,f as m}from"./index-CmO9OReA.js";import*as d from"react";import{s}from"./DataListItemRow-DeNdWxot.js";const p=a=>{var{children:i=null,className:e="",width:t=1,isFilled:l=!0,alignRight:n=!1,isIcon:c=!1,wrapModifier:r=null}=a,f=o(a,["children","className","width","isFilled","alignRight","isIcon","wrapModifier"]);return d.createElement("div",Object.assign({className:m(s.dataListCell,t>1&&s.modifiers[`flex_${t}`],!l&&s.modifiers.noFill,n&&s.modifiers.alignRight,c&&s.modifiers.icon,e,r&&s.modifiers[r])},f),i)};p.displayName="DataListCell";const g=a=>{var{className:i="",dataListCells:e,rowid:t=""}=a,l=o(a,["className","dataListCells","rowid"]);return d.createElement("div",Object.assign({className:m(s.dataListItemContent,i)},l),e)};g.displayName="DataListItemCells";export{g as D,p as a};
//# sourceMappingURL=DataListItemCells-BpP3eQ2n.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"DataListItemCells-BpP3eQ2n.js","sources":["../../../../node_modules/.pnpm/@patternfly+react-core@4.278.0_react-dom@18.2.0_react@18.2.0/node_modules/@patternfly/react-core/dist/esm/components/DataList/DataListCell.js","../../../../node_modules/.pnpm/@patternfly+react-core@4.278.0_react-dom@18.2.0_react@18.2.0/node_modules/@patternfly/react-core/dist/esm/components/DataList/DataListItemCells.js"],"sourcesContent":["import { __rest } from \"tslib\";\nimport * as React from 'react';\nimport { css } from '@patternfly/react-styles';\nimport styles from '@patternfly/react-styles/css/components/DataList/data-list';\nexport const DataListCell = (_a) => {\n var { children = null, className = '', width = 1, isFilled = true, alignRight = false, isIcon = false, wrapModifier = null } = _a, props = __rest(_a, [\"children\", \"className\", \"width\", \"isFilled\", \"alignRight\", \"isIcon\", \"wrapModifier\"]);\n return (React.createElement(\"div\", Object.assign({ className: css(styles.dataListCell, width > 1 && styles.modifiers[`flex_${width}`], !isFilled && styles.modifiers.noFill, alignRight && styles.modifiers.alignRight, isIcon && styles.modifiers.icon, className, wrapModifier && styles.modifiers[wrapModifier]) }, props), children));\n};\nDataListCell.displayName = 'DataListCell';\n//# sourceMappingURL=DataListCell.js.map","import { __rest } from \"tslib\";\nimport * as React from 'react';\nimport { css } from '@patternfly/react-styles';\nimport styles from '@patternfly/react-styles/css/components/DataList/data-list';\nexport const DataListItemCells = (_a) => {\n var { className = '', dataListCells, \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n rowid = '' } = _a, props = __rest(_a, [\"className\", \"dataListCells\", \"rowid\"]);\n return (React.createElement(\"div\", Object.assign({ className: css(styles.dataListItemContent, className) }, props), dataListCells));\n};\nDataListItemCells.displayName = 'DataListItemCells';\n//# sourceMappingURL=DataListItemCells.js.map"],"names":["DataListCell","_a","children","className","width","isFilled","alignRight","isIcon","wrapModifier","props","__rest","React","css","styles","DataListItemCells","dataListCells","rowid"],"mappings":"oHAIY,MAACA,EAAgBC,GAAO,CAChC,GAAI,CAAE,SAAAC,EAAW,KAAM,UAAAC,EAAY,GAAI,MAAAC,EAAQ,EAAG,SAAAC,EAAW,GAAM,WAAAC,EAAa,GAAO,OAAAC,EAAS,GAAO,aAAAC,EAAe,IAAI,EAAKP,EAAIQ,EAAQC,EAAOT,EAAI,CAAC,WAAY,YAAa,QAAS,WAAY,aAAc,SAAU,cAAc,CAAC,EAC5O,OAAQU,EAAM,cAAc,MAAO,OAAO,OAAO,CAAE,UAAWC,EAAIC,EAAO,aAAcT,EAAQ,GAAKS,EAAO,UAAU,QAAQT,CAAK,EAAE,EAAG,CAACC,GAAYQ,EAAO,UAAU,OAAQP,GAAcO,EAAO,UAAU,WAAYN,GAAUM,EAAO,UAAU,KAAMV,EAAWK,GAAgBK,EAAO,UAAUL,CAAY,CAAC,GAAKC,CAAK,EAAGP,CAAQ,CAC3U,EACAF,EAAa,YAAc,eCJf,MAACc,EAAqBb,GAAO,CACrC,GAAI,CAAE,UAAAE,EAAY,GAAI,cAAAY,EAEtB,MAAAC,EAAQ,EAAE,EAAKf,EAAIQ,EAAQC,EAAOT,EAAI,CAAC,YAAa,gBAAiB,OAAO,CAAC,EAC7E,OAAQU,EAAM,cAAc,MAAO,OAAO,OAAO,CAAE,UAAWC,EAAIC,EAAO,oBAAqBV,CAAS,CAAG,EAAEM,CAAK,EAAGM,CAAa,CACrI,EACAD,EAAkB,YAAc","x_google_ignoreList":[0,1]}

View File

@ -1 +0,0 @@
{"version":3,"file":"DataListItemCells-CEZA0xGh.js","sources":["../../../../../node_modules/.pnpm/@patternfly+react-core@5.2.3_react-dom@18.2.0_react@18.2.0/node_modules/@patternfly/react-core/dist/esm/components/DataList/DataListCell.js","../../../../../node_modules/.pnpm/@patternfly+react-core@5.2.3_react-dom@18.2.0_react@18.2.0/node_modules/@patternfly/react-core/dist/esm/components/DataList/DataListItemCells.js"],"sourcesContent":["import { __rest } from \"tslib\";\nimport * as React from 'react';\nimport { css } from '@patternfly/react-styles';\nimport styles from '@patternfly/react-styles/css/components/DataList/data-list.mjs';\nexport const DataListCell = (_a) => {\n var { children = null, className = '', width = 1, isFilled = true, alignRight = false, isIcon = false, wrapModifier = null } = _a, props = __rest(_a, [\"children\", \"className\", \"width\", \"isFilled\", \"alignRight\", \"isIcon\", \"wrapModifier\"]);\n return (React.createElement(\"div\", Object.assign({ className: css(styles.dataListCell, width > 1 && styles.modifiers[`flex_${width}`], !isFilled && styles.modifiers.noFill, alignRight && styles.modifiers.alignRight, isIcon && styles.modifiers.icon, className, wrapModifier && styles.modifiers[wrapModifier]) }, props), children));\n};\nDataListCell.displayName = 'DataListCell';\n//# sourceMappingURL=DataListCell.js.map","import { __rest } from \"tslib\";\nimport * as React from 'react';\nimport { css } from '@patternfly/react-styles';\nimport styles from '@patternfly/react-styles/css/components/DataList/data-list.mjs';\nexport const DataListItemCells = (_a) => {\n var { className = '', dataListCells, \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n rowid = '' } = _a, props = __rest(_a, [\"className\", \"dataListCells\", \"rowid\"]);\n return (React.createElement(\"div\", Object.assign({ className: css(styles.dataListItemContent, className) }, props), dataListCells));\n};\nDataListItemCells.displayName = 'DataListItemCells';\n//# sourceMappingURL=DataListItemCells.js.map"],"names":["DataListCell","_a","children","className","width","isFilled","alignRight","isIcon","wrapModifier","props","__rest","React","css","styles","DataListItemCells","dataListCells","rowid"],"mappings":"oHAIY,MAACA,EAAgBC,GAAO,CAChC,GAAI,CAAE,SAAAC,EAAW,KAAM,UAAAC,EAAY,GAAI,MAAAC,EAAQ,EAAG,SAAAC,EAAW,GAAM,WAAAC,EAAa,GAAO,OAAAC,EAAS,GAAO,aAAAC,EAAe,IAAI,EAAKP,EAAIQ,EAAQC,EAAOT,EAAI,CAAC,WAAY,YAAa,QAAS,WAAY,aAAc,SAAU,cAAc,CAAC,EAC5O,OAAQU,EAAM,cAAc,MAAO,OAAO,OAAO,CAAE,UAAWC,EAAIC,EAAO,aAAcT,EAAQ,GAAKS,EAAO,UAAU,QAAQT,CAAK,EAAE,EAAG,CAACC,GAAYQ,EAAO,UAAU,OAAQP,GAAcO,EAAO,UAAU,WAAYN,GAAUM,EAAO,UAAU,KAAMV,EAAWK,GAAgBK,EAAO,UAAUL,CAAY,CAAC,GAAKC,CAAK,EAAGP,CAAQ,CAC3U,EACAF,EAAa,YAAc,eCJf,MAACc,EAAqBb,GAAO,CACrC,GAAI,CAAE,UAAAE,EAAY,GAAI,cAAAY,EAEtB,MAAAC,EAAQ,EAAE,EAAKf,EAAIQ,EAAQC,EAAOT,EAAI,CAAC,YAAa,gBAAiB,OAAO,CAAC,EAC7E,OAAQU,EAAM,cAAc,MAAO,OAAO,OAAO,CAAE,UAAWC,EAAIC,EAAO,oBAAqBV,CAAS,CAAG,EAAEM,CAAK,EAAGM,CAAa,CACrI,EACAD,EAAkB,YAAc","x_google_ignoreList":[0,1]}

View File

@ -1,2 +0,0 @@
import{_ as u,f as v,o as I}from"./index-Bw6oJPms.js";import*as a from"react";const e={dataList:"pf-v5-c-data-list",dataListAction:"pf-v5-c-data-list__action",dataListCell:"pf-v5-c-data-list__cell",dataListCheck:"pf-v5-c-data-list__check",dataListExpandableContent:"pf-v5-c-data-list__expandable-content",dataListExpandableContentBody:"pf-v5-c-data-list__expandable-content-body",dataListItem:"pf-v5-c-data-list__item",dataListItemAction:"pf-v5-c-data-list__item-action",dataListItemContent:"pf-v5-c-data-list__item-content",dataListItemControl:"pf-v5-c-data-list__item-control",dataListItemDraggableButton:"pf-v5-c-data-list__item-draggable-button",dataListItemDraggableIcon:"pf-v5-c-data-list__item-draggable-icon",dataListItemRow:"pf-v5-c-data-list__item-row",dataListText:"pf-v5-c-data-list__text",dataListToggle:"pf-v5-c-data-list__toggle",dataListToggleIcon:"pf-v5-c-data-list__toggle-icon",dirRtl:"pf-v5-m-dir-rtl",modifiers:{hidden:"pf-m-hidden",hiddenOnSm:"pf-m-hidden-on-sm",visibleOnSm:"pf-m-visible-on-sm",hiddenOnMd:"pf-m-hidden-on-md",visibleOnMd:"pf-m-visible-on-md",hiddenOnLg:"pf-m-hidden-on-lg",visibleOnLg:"pf-m-visible-on-lg",hiddenOnXl:"pf-m-hidden-on-xl",visibleOnXl:"pf-m-visible-on-xl",hiddenOn_2xl:"pf-m-hidden-on-2xl",visibleOn_2xl:"pf-m-visible-on-2xl",icon:"pf-m-icon",alignRight:"pf-m-align-right",noFill:"pf-m-no-fill",flex_2:"pf-m-flex-2",flex_3:"pf-m-flex-3",flex_4:"pf-m-flex-4",flex_5:"pf-m-flex-5",gridNone:"pf-m-grid-none",gridSm:"pf-m-grid-sm",gridMd:"pf-m-grid-md",gridLg:"pf-m-grid-lg",gridXl:"pf-m-grid-xl",grid_2xl:"pf-m-grid-2xl",compact:"pf-m-compact",dragOver:"pf-m-drag-over",truncate:"pf-m-truncate",breakWord:"pf-m-break-word",nowrap:"pf-m-nowrap",clickable:"pf-m-clickable",selected:"pf-m-selected",ghostRow:"pf-m-ghost-row",expanded:"pf-m-expanded",disabled:"pf-m-disabled",noPadding:"pf-m-no-padding"},themeDark:"pf-v5-theme-dark"},D={none:e.modifiers.gridNone,always:"pf-m-grid",sm:e.modifiers.gridSm,md:e.modifiers.gridMd,lg:e.modifiers.gridLg,xl:e.modifiers.gridXl,"2xl":e.modifiers.grid_2xl};var w;(function(d){d.nowrap="nowrap",d.truncate="truncate",d.breakWord="breakWord"})(w||(w={}));const y=a.createContext({isSelectable:!1});class C extends a.Component{constructor(l){super(l),this.ref=a.createRef(),this.getIndex=n=>Array.from(this.ref.current.children).findIndex(r=>r.id===n)}render(){const l=this.props,{className:n,children:r,"aria-label":c,onSelectDataListItem:i,selectedDataListItemId:s,isCompact:g,wrapModifier:b,gridBreakpoint:m,onSelectableRowChange:L}=l,p=u(l,["className","children","aria-label","onSelectDataListItem","selectedDataListItemId","isCompact","wrapModifier","gridBreakpoint","onSelectableRowChange"]),_=i!==void 0,x=(h,f)=>{i(h,f)};return a.createElement(y.Provider,{value:{isSelectable:_,selectedDataListItemId:s,updateSelectedDataListItem:x,onSelectableRowChange:L}},a.createElement("ul",Object.assign({className:v(e.dataList,g&&e.modifiers.compact,D[m],b&&e.modifiers[b],n),style:p.style,role:"list","aria-label":c},p,{ref:this.ref}),r))}}C.displayName="DataList";C.defaultProps={children:null,className:"",selectedDataListItemId:"",isCompact:!1,gridBreakpoint:"md",wrapModifier:null};class k extends a.Component{render(){const l=this.props,{children:n,isExpanded:r,className:c,id:i,"aria-labelledby":s,selectableInputAriaLabel:g}=l,b=u(l,["children","isExpanded","className","id","aria-labelledby","selectableInputAriaLabel"]);return a.createElement(y.Consumer,null,({isSelectable:m,selectedDataListItemId:L,updateSelectedDataListItem:p,onSelectableRowChange:_})=>{const x=t=>{let o=t.target;for(;t.currentTarget!==o;){if("onclick"in o&&o.onclick||o.parentNode.classList.contains(e.dataListItemAction)||o.parentNode.classList.contains(e.dataListItemControl))return;o=o.parentNode}p(t,i)},h=t=>{[I.Enter,I.Space].includes(t.key)&&(t.preventDefault(),p(t,i))},f=L===i,N=g?{"aria-label":g}:{"aria-labelledby":s};return a.createElement("li",Object.assign({id:i,className:v(e.dataListItem,r&&e.modifiers.expanded,m&&e.modifiers.clickable,L&&f&&e.modifiers.selected,c),"aria-labelledby":s},m&&{tabIndex:0,onClick:x,onKeyDown:h},m&&f&&{"aria-selected":!0},b),_&&a.createElement("input",Object.assign({className:"pf-v5-screen-reader",type:"radio",checked:f,onChange:t=>_(t,i),tabIndex:-1},N)),a.Children.map(n,t=>a.isValidElement(t)&&a.cloneElement(t,{rowid:s})))})}}k.displayName="DataListItem";k.defaultProps={isExpanded:!1,className:"",id:"",children:null,"aria-labelledby":""};const E=d=>{var{children:l,className:n="",rowid:r="",wrapModifier:c=null}=d,i=u(d,["children","className","rowid","wrapModifier"]);return a.createElement("div",Object.assign({className:v(e.dataListItemRow,n,c&&e.modifiers[c])},i),a.Children.map(l,s=>a.isValidElement(s)&&a.cloneElement(s,{rowid:r})))};E.displayName="DataListItemRow";export{C as D,k as a,E as b,e as s};
//# sourceMappingURL=DataListItemRow-Djv9qB2b.js.map

View File

@ -1,2 +0,0 @@
import{_ as c,f as n,k as C}from"./index-Bw6oJPms.js";import*as a from"react";import{s as f}from"./DataListItemRow-Djv9qB2b.js";const z=t=>{var{className:e="",children:o=null,id:s="",isHidden:l=!1,"aria-label":m,hasNoPadding:p=!1,rowid:h=""}=t,d=c(t,["className","children","id","isHidden","aria-label","hasNoPadding","rowid"]);return a.createElement("section",Object.assign({id:s,className:n(f.dataListExpandableContent,e),hidden:l,"aria-label":m},d),a.createElement("div",{className:n(f.dataListExpandableContentBody,p&&f.modifiers.noPadding)},o))};z.displayName="DataListContent";const i={card:"pf-v5-c-card",descriptionList:"pf-v5-c-description-list",descriptionListDescription:"pf-v5-c-description-list__description",descriptionListGroup:"pf-v5-c-description-list__group",descriptionListTerm:"pf-v5-c-description-list__term",descriptionListTermIcon:"pf-v5-c-description-list__term-icon",descriptionListText:"pf-v5-c-description-list__text",modifiers:{inlineGrid:"pf-m-inline-grid",autoColumnWidths:"pf-m-auto-column-widths",autoFit:"pf-m-auto-fit",compact:"pf-m-compact",fluid:"pf-m-fluid",fillColumns:"pf-m-fill-columns",displayLg:"pf-m-display-lg",display_2xl:"pf-m-display-2xl",helpText:"pf-m-help-text","1Col":"pf-m-1-col","2Col":"pf-m-2-col","3Col":"pf-m-3-col",horizontal:"pf-m-horizontal",vertical:"pf-m-vertical","1ColOnSm":"pf-m-1-col-on-sm","2ColOnSm":"pf-m-2-col-on-sm","3ColOnSm":"pf-m-3-col-on-sm",horizontalOnSm:"pf-m-horizontal-on-sm",verticalOnSm:"pf-m-vertical-on-sm","1ColOnMd":"pf-m-1-col-on-md","2ColOnMd":"pf-m-2-col-on-md","3ColOnMd":"pf-m-3-col-on-md",horizontalOnMd:"pf-m-horizontal-on-md",verticalOnMd:"pf-m-vertical-on-md","1ColOnLg":"pf-m-1-col-on-lg","2ColOnLg":"pf-m-2-col-on-lg","3ColOnLg":"pf-m-3-col-on-lg",horizontalOnLg:"pf-m-horizontal-on-lg",verticalOnLg:"pf-m-vertical-on-lg","1ColOnXl":"pf-m-1-col-on-xl","2ColOnXl":"pf-m-2-col-on-xl","3ColOnXl":"pf-m-3-col-on-xl",horizontalOnXl:"pf-m-horizontal-on-xl",verticalOnXl:"pf-m-vertical-on-xl","1ColOn_2xl":"pf-m-1-col-on-2xl","2ColOn_2xl":"pf-m-2-col-on-2xl","3ColOn_2xl":"pf-m-3-col-on-2xl",horizontalOn_2xl:"pf-m-horizontal-on-2xl",verticalOn_2xl:"pf-m-vertical-on-2xl"}},y={name:"--pf-v5-c-description-list--GridTemplateColumns--min",value:"0",var:"var(--pf-v5-c-description-list--GridTemplateColumns--min)"},j={name:"--pf-v5-c-description-list__term--width",value:"12ch",var:"var(--pf-v5-c-description-list__term--width)"},D={name:"--pf-v5-c-description-list--m-horizontal__term--width",value:"fit-content(20ch)",var:"var(--pf-v5-c-description-list--m-horizontal__term--width)"},g=(t,e)=>{const o=e;return Object.keys(o||{}).reduce((s,l)=>l==="default"?Object.assign(Object.assign({},s),{[t]:o[l]}):Object.assign(Object.assign({},s),{[`${t}-on-${l}`]:o[l]}),{})},M=t=>{var{className:e="",children:o=null,isHorizontal:s=!1,isAutoColumnWidths:l,isAutoFit:m,isInlineGrid:p,isCompact:h,isFluid:d,isFillColumns:L,displaySize:u="default",columnModifier:x,autoFitMinModifier:v,termWidth:O,horizontalTermWidthModifier:_,orientation:N,style:r}=t,b=c(t,["className","children","isHorizontal","isAutoColumnWidths","isAutoFit","isInlineGrid","isCompact","isFluid","isFillColumns","displaySize","columnModifier","autoFitMinModifier","termWidth","horizontalTermWidthModifier","orientation","style"]);return m&&v&&(r=Object.assign(Object.assign({},r),g(y.name,v))),O&&(r=Object.assign(Object.assign({},r),{[j.name]:O})),s&&_&&(r=Object.assign(Object.assign({},r),g(D.name,_))),a.createElement("dl",Object.assign({className:n(i.descriptionList,(s||d)&&i.modifiers.horizontal,l&&i.modifiers.autoColumnWidths,m&&i.modifiers.autoFit,C(x,i),C(N,i),p&&i.modifiers.inlineGrid,h&&i.modifiers.compact,d&&i.modifiers.fluid,L&&i.modifiers.fillColumns,u==="lg"&&i.modifiers.displayLg,u==="2xl"&&i.modifiers.display_2xl,e),style:r},b),o)};M.displayName="DescriptionList";const T=t=>{var{children:e=null,className:o}=t,s=c(t,["children","className"]);return a.createElement("dd",Object.assign({className:n(i.descriptionListDescription,o)},s),a.createElement("div",{className:n(i.descriptionListText)},e))};T.displayName="DescriptionListDescription";const E=t=>{var{className:e,children:o}=t,s=c(t,["className","children"]);return a.createElement("div",Object.assign({className:n(i.descriptionListGroup,e)},s),o)};E.displayName="DescriptionListGroup";const G=t=>{var{children:e,className:o,icon:s}=t,l=c(t,["children","className","icon"]);return a.createElement("dt",Object.assign({className:n(i.descriptionListTerm,o)},l),s?a.createElement("span",{className:n(i.descriptionListTermIcon)},s):null,a.createElement("span",{className:n(i.descriptionListText)},e))};G.displayName="DescriptionListTerm";export{z as D,M as a,E as b,G as c,T as d};
//# sourceMappingURL=DescriptionListTerm-BhOgKYlc.js.map

View File

@ -0,0 +1,2 @@
import{_ as c,f as a,m as L}from"./index-CmO9OReA.js";import*as n from"react";import{s as f}from"./DataListItemRow-DeNdWxot.js";const y=i=>{var{className:e="",children:o=null,id:t="",isHidden:l=!1,"aria-label":m,hasNoPadding:p=!1,rowid:u=""}=i,d=c(i,["className","children","id","isHidden","aria-label","hasNoPadding","rowid"]);return n.createElement("section",Object.assign({id:t,className:a(f.dataListExpandableContent,e),hidden:l,"aria-label":m},d),n.createElement("div",{className:a(f.dataListExpandableContentBody,p&&f.modifiers.noPadding)},o))};y.displayName="DataListContent";const s={card:"pf-c-card",descriptionList:"pf-c-description-list",descriptionListDescription:"pf-c-description-list__description",descriptionListGroup:"pf-c-description-list__group",descriptionListTerm:"pf-c-description-list__term",descriptionListTermIcon:"pf-c-description-list__term-icon",descriptionListText:"pf-c-description-list__text",modifiers:{inlineGrid:"pf-m-inline-grid",autoColumnWidths:"pf-m-auto-column-widths",autoFit:"pf-m-auto-fit",compact:"pf-m-compact",fluid:"pf-m-fluid",fillColumns:"pf-m-fill-columns",displayLg:"pf-m-display-lg",display_2xl:"pf-m-display-2xl",helpText:"pf-m-help-text","1Col":"pf-m-1-col","2Col":"pf-m-2-col","3Col":"pf-m-3-col",horizontal:"pf-m-horizontal",vertical:"pf-m-vertical","1ColOnSm":"pf-m-1-col-on-sm","2ColOnSm":"pf-m-2-col-on-sm","3ColOnSm":"pf-m-3-col-on-sm",horizontalOnSm:"pf-m-horizontal-on-sm",verticalOnSm:"pf-m-vertical-on-sm","1ColOnMd":"pf-m-1-col-on-md","2ColOnMd":"pf-m-2-col-on-md","3ColOnMd":"pf-m-3-col-on-md",horizontalOnMd:"pf-m-horizontal-on-md",verticalOnMd:"pf-m-vertical-on-md","1ColOnLg":"pf-m-1-col-on-lg","2ColOnLg":"pf-m-2-col-on-lg","3ColOnLg":"pf-m-3-col-on-lg",horizontalOnLg:"pf-m-horizontal-on-lg",verticalOnLg:"pf-m-vertical-on-lg","1ColOnXl":"pf-m-1-col-on-xl","2ColOnXl":"pf-m-2-col-on-xl","3ColOnXl":"pf-m-3-col-on-xl",horizontalOnXl:"pf-m-horizontal-on-xl",verticalOnXl:"pf-m-vertical-on-xl","1ColOn_2xl":"pf-m-1-col-on-2xl","2ColOn_2xl":"pf-m-2-col-on-2xl","3ColOn_2xl":"pf-m-3-col-on-2xl",horizontalOn_2xl:"pf-m-horizontal-on-2xl",verticalOn_2xl:"pf-m-vertical-on-2xl"}},x=(i,e)=>{const o=e;return Object.keys(o||{}).reduce((t,l)=>l==="default"?Object.assign(Object.assign({},t),{[i]:o[l]}):Object.assign(Object.assign({},t),{[`${i}-on-${l}`]:o[l]}),{})},z=i=>{var{className:e="",children:o=null,isHorizontal:t=!1,isAutoColumnWidths:l,isAutoFit:m,isInlineGrid:p,isCompact:u,isFluid:d,isFillColumns:N,displaySize:h,columnModifier:b,autoFitMinModifier:O,termWidth:g,horizontalTermWidthModifier:C,orientation:_,style:r}=i,v=c(i,["className","children","isHorizontal","isAutoColumnWidths","isAutoFit","isInlineGrid","isCompact","isFluid","isFillColumns","displaySize","columnModifier","autoFitMinModifier","termWidth","horizontalTermWidthModifier","orientation","style"]);return m&&O&&(r=Object.assign(Object.assign({},r),x("--pf-c-description-list--GridTemplateColumns--min",O))),g&&(r=Object.assign(Object.assign({},r),{"--pf-c-description-list__term--width":g})),t&&C&&(r=Object.assign(Object.assign({},r),x("--pf-c-description-list--m-horizontal__term--width",C))),n.createElement("dl",Object.assign({className:a(s.descriptionList,(t||d)&&s.modifiers.horizontal,l&&s.modifiers.autoColumnWidths,m&&s.modifiers.autoFit,L(b,s),L(_,s),p&&s.modifiers.inlineGrid,u&&s.modifiers.compact,d&&s.modifiers.fluid,N&&s.modifiers.fillColumns,h==="lg"&&s.modifiers.displayLg,h==="2xl"&&s.modifiers.display_2xl,e),style:r},v),o)};z.displayName="DescriptionList";const j=i=>{var{children:e=null,className:o}=i,t=c(i,["children","className"]);return n.createElement("dd",Object.assign({className:a(s.descriptionListDescription,o)},t),n.createElement("div",{className:"pf-c-description-list__text"},e))};j.displayName="DescriptionListDescription";const D=i=>{var{className:e,children:o}=i,t=c(i,["className","children"]);return n.createElement("div",Object.assign({className:a(s.descriptionListGroup,e)},t),o)};D.displayName="DescriptionListGroup";const M=i=>{var{children:e,className:o,icon:t}=i,l=c(i,["children","className","icon"]);return n.createElement("dt",Object.assign({className:a(s.descriptionListTerm,o)},l),t?n.createElement("span",{className:a(s.descriptionListTermIcon)},t):null,n.createElement("span",{className:a(s.descriptionListText)},e))};M.displayName="DescriptionListTerm";export{y as D,z as a,D as b,M as c,j as d};
//# sourceMappingURL=DescriptionListTerm-D35wDAjC.js.map

View File

@ -0,0 +1,2 @@
import{jsx as e,jsxs as i}from"react/jsx-runtime";import{useState as w}from"react";import{c as D,u as T,a as M,G as N,b as V,S as z,T as G,B as P,D as C,d as H,e as m}from"./index-CmO9OReA.js";import{P as E,g as j,d as I}from"./Page-0WGWoSmH.js";import{f}from"./formatDate-B5NcSw5G.js";import{S as B,a as S}from"./SplitItem-BnWN2col.js";import{D as W,a as $,b as F}from"./DataListItemRow-DeNdWxot.js";import{D as K,a as R,b as o,c as a,d as l}from"./DescriptionListTerm-D35wDAjC.js";import{L as q}from"./Label-IH7etj-H.js";import"react-dom";import"./grip-vertical-icon-DJL1P1Zf.js";const J={name:"DesktopIcon",height:512,width:576,svgPath:"M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z",yOffset:0,xOffset:0},Q=D(J),U={name:"MobileAltIcon",height:512,width:320,svgPath:"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm112-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v312z",yOffset:0,xOffset:0},X=D(U),Y={name:"SyncAltIcon",height:512,width:512,svgPath:"M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z",yOffset:0,xOffset:0},Z=D(Y),he=()=>{const{t:n}=T(),d=M(),{addAlert:L,addError:v}=N(),[h,O]=w(),[u,x]=w(0),b=()=>x(u+1);V(t=>j({signal:t,context:d}),t=>{let s=t[0];const r=t.findIndex(p=>p.current);s=t.splice(r,1)[0],t.unshift(s);const g=s.sessions.findIndex(p=>p.current),c=s.sessions.splice(g,1)[0];s.sessions.unshift(c),O(t)},[u]);const y=async()=>{await I(d),d.keycloak.logout()},A=async(t,s)=>{try{await I(d,t.id),L(n("signedOutSession",{browser:t.browser,os:s.os})),b()}catch(r){v(n("errorSignOutMessage",{error:r}).toString())}},k=t=>{let s="";return t.forEach((r,g)=>{let c;r.clientName!==""?c=n(r.clientName):c=r.clientId,s+=c,t.length>g+1&&(s+=", ")}),s};return h?i(E,{title:n("deviceActivity"),description:n("signedInDevicesExplanation"),children:[i(B,{hasGutter:!0,className:"pf-u-mb-lg",children:[e(S,{isFilled:!0,children:e(G,{headingLevel:"h2",size:"xl",children:n("signedInDevices")})}),i(S,{children:[e(P,{id:"refresh-page",variant:"link",onClick:()=>b(),icon:e(Z,{}),children:n("refreshPage")}),(h.length>1||h[0].sessions.length>1)&&e(C,{buttonTitle:n("signOutAllDevices"),modalTitle:n("signOutAllDevices"),continueLabel:n("confirm"),cancelLabel:n("cancel"),onContinue:()=>y(),children:n("signOutAllDevicesWarning")})]})]}),e(W,{className:"signed-in-device-list","aria-label":n("signedInDevices"),children:e($,{"aria-labelledby":`sessions-${u}`,children:h.map(t=>t.sessions.map((s,r)=>e(F,{"data-testid":`row-${r}`,children:e(K,{"aria-label":"device-sessions-content",className:"pf-u-flex-grow-1",children:i(H,{hasGutter:!0,children:[e(m,{span:1,rowSpan:2,children:t.mobile?e(X,{}):e(Q,{})}),i(m,{sm:8,md:9,span:10,children:[i("span",{className:"pf-u-mr-md session-title",children:[t.os.toLowerCase().includes("unknown")?n("unknownOperatingSystem"):t.os," ",!t.osVersion.toLowerCase().includes("unknown")&&t.osVersion," ","/ ",s.browser]}),s.current&&e(q,{color:"green",children:n("currentSession")})]}),e(m,{className:"pf-u-text-align-right",sm:3,md:2,span:1,children:!s.current&&e(C,{buttonTitle:n("signOut"),modalTitle:n("signOut"),continueLabel:n("confirm"),cancelLabel:n("cancel"),buttonVariant:"secondary",onContinue:()=>A(s,t),children:n("signOutWarning")})}),e(m,{span:11,children:i(R,{className:"signed-in-device-grid",columnModifier:{sm:"2Col",lg:"3Col"},cols:5,rows:1,children:[i(o,{children:[e(a,{children:n("ipAddress")}),e(l,{children:s.ipAddress})]}),i(o,{children:[e(a,{children:n("lastAccessedOn")}),e(l,{children:f(new Date(s.lastAccess*1e3))})]}),i(o,{children:[e(a,{children:n("clients")}),e(l,{children:k(s.clients)})]}),i(o,{children:[e(a,{children:n("started")}),e(l,{children:f(new Date(s.started*1e3))})]}),i(o,{children:[e(a,{children:n("expires")}),e(l,{children:f(new Date(s.expires*1e3))})]})]})})]})})},t.id)))})})]}):e(z,{})};export{he as DeviceActivity,he as default};
//# sourceMappingURL=DeviceActivity-B-Fnxak0.js.map

View File

@ -1,2 +0,0 @@
import{jsx as e,jsxs as i}from"react/jsx-runtime";import{useState as v}from"react";import{c as D,u as T,a as M,Q as N,b as V,S as z,T as P,B as G,e as w,G as H,d as m}from"./index-Bw6oJPms.js";import{P as E,g as j,d as C}from"./Page-Q00E4OWK.js";import{f}from"./formatDate-CnUxRc_g.js";import{S as B,a as I}from"./SplitItem-Ej8lBU3h.js";import{D as Q,a as W,b as $}from"./DataListItemRow-Djv9qB2b.js";import{D as F,a as K,b as o,c as a,d as l}from"./DescriptionListTerm-BhOgKYlc.js";import{L as R}from"./Label-CVk_ec5U.js";import"react-dom";const q={name:"DesktopIcon",height:512,width:576,svgPath:"M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z",yOffset:0,xOffset:0},J=D(q),U={name:"MobileAltIcon",height:512,width:320,svgPath:"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm112-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v312z",yOffset:0,xOffset:0},X=D(U),Y={name:"SyncAltIcon",height:512,width:512,svgPath:"M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z",yOffset:0,xOffset:0},Z=D(Y),de=()=>{const{t:n}=T(),d=M(),{addAlert:S,addError:L}=N(),[h,O]=v(),[u,x]=v(0),b=()=>x(u+1);V(t=>j({signal:t,context:d}),t=>{let s=t[0];const r=t.findIndex(p=>p.current);s=t.splice(r,1)[0],t.unshift(s);const g=s.sessions.findIndex(p=>p.current),c=s.sessions.splice(g,1)[0];s.sessions.unshift(c),O(t)},[u]);const y=async()=>{await C(d),d.keycloak.logout()},A=async(t,s)=>{try{await C(d,t.id),S(n("signedOutSession",{browser:t.browser,os:s.os})),b()}catch(r){L(n("errorSignOutMessage",{error:r}).toString())}},k=t=>{let s="";return t.forEach((r,g)=>{let c;r.clientName!==""?c=n(r.clientName):c=r.clientId,s+=c,t.length>g+1&&(s+=", ")}),s};return h?i(E,{title:n("deviceActivity"),description:n("signedInDevicesExplanation"),children:[i(B,{hasGutter:!0,className:"pf-v5-u-mb-lg",children:[e(I,{isFilled:!0,children:e(P,{headingLevel:"h2",size:"xl",children:n("signedInDevices")})}),i(I,{children:[e(G,{id:"refresh-page",variant:"link",onClick:()=>b(),icon:e(Z,{}),children:n("refreshPage")}),(h.length>1||h[0].sessions.length>1)&&e(w,{buttonTitle:n("signOutAllDevices"),modalTitle:n("signOutAllDevices"),continueLabel:n("confirm"),cancelLabel:n("cancel"),onContinue:()=>y(),children:n("signOutAllDevicesWarning")})]})]}),e(Q,{className:"signed-in-device-list","aria-label":n("signedInDevices"),children:e(W,{"aria-labelledby":`sessions-${u}`,children:h.map(t=>t.sessions.map((s,r)=>e($,{"data-testid":`row-${r}`,children:e(F,{"aria-label":"device-sessions-content",className:"pf-v5-u-flex-grow-1",children:i(H,{hasGutter:!0,children:[e(m,{span:1,rowSpan:2,children:t.mobile?e(X,{}):e(J,{})}),i(m,{sm:8,md:9,span:10,children:[i("span",{className:"pf-v5-u-mr-md session-title",children:[t.os.toLowerCase().includes("unknown")?n("unknownOperatingSystem"):t.os," ",!t.osVersion.toLowerCase().includes("unknown")&&t.osVersion," ","/ ",s.browser]}),s.current&&e(R,{color:"green",children:n("currentSession")})]}),e(m,{className:"pf-v5-u-text-align-right",sm:3,md:2,span:1,children:!s.current&&e(w,{buttonTitle:n("signOut"),modalTitle:n("signOut"),continueLabel:n("confirm"),cancelLabel:n("cancel"),buttonVariant:"secondary",onContinue:()=>A(s,t),children:n("signOutWarning")})}),e(m,{span:11,children:i(K,{className:"signed-in-device-grid",columnModifier:{sm:"2Col",lg:"3Col"},cols:5,rows:1,children:[i(o,{children:[e(a,{children:n("ipAddress")}),e(l,{children:s.ipAddress})]}),i(o,{children:[e(a,{children:n("lastAccessedOn")}),e(l,{children:f(new Date(s.lastAccess*1e3))})]}),i(o,{children:[e(a,{children:n("clients")}),e(l,{children:k(s.clients)})]}),i(o,{children:[e(a,{children:n("started")}),e(l,{children:f(new Date(s.started*1e3))})]}),i(o,{children:[e(a,{children:n("expires")}),e(l,{children:f(new Date(s.expires*1e3))})]})]})})]})})},t.id)))})})]}):e(z,{})};export{de as DeviceActivity,de as default};
//# sourceMappingURL=DeviceActivity-DuHnQ1pC.js.map

View File

@ -0,0 +1,2 @@
import{_ as c,f as e,m as d}from"./index-CmO9OReA.js";import*as l from"react";import{s,a as p,b}from"./DataListItemRow-DeNdWxot.js";import{jsx as i}from"react/jsx-runtime";import{D as L,a as f}from"./DataListItemCells-BpP3eQ2n.js";const y=a=>{var{children:t,className:r,visibility:o,id:D,"aria-label":A,"aria-labelledby":N,isPlainButtonAction:m}=a,n=c(a,["children","className","visibility","id","aria-label","aria-labelledby","isPlainButtonAction"]);return l.createElement("div",Object.assign({className:e(s.dataListItemAction,d(o,s),r)},n),m?l.createElement("div",{className:e(s.dataListAction)},t):t)};y.displayName="DataListAction";const E=({message:a,...t})=>i(p,{className:"pf-u-align-items-center pf-p-b-0",children:i(b,{children:i(L,{dataListCells:[i(f,{...t,children:a},"0")]})})});export{y as D,E};
//# sourceMappingURL=EmptyRow-5y1xH7SM.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"EmptyRow-5y1xH7SM.js","sources":["../../../../node_modules/.pnpm/@patternfly+react-core@4.278.0_react-dom@18.2.0_react@18.2.0/node_modules/@patternfly/react-core/dist/esm/components/DataList/DataListAction.js","../../src/components/datalist/EmptyRow.tsx"],"sourcesContent":["import { __rest } from \"tslib\";\nimport * as React from 'react';\nimport { css } from '@patternfly/react-styles';\nimport styles from '@patternfly/react-styles/css/components/DataList/data-list';\nimport { formatBreakpointMods } from '../../helpers/util';\nexport const DataListAction = (_a) => {\n var { children, className, visibility, \n /* eslint-disable @typescript-eslint/no-unused-vars */\n id, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, isPlainButtonAction } = _a, \n /* eslint-enable @typescript-eslint/no-unused-vars */\n props = __rest(_a, [\"children\", \"className\", \"visibility\", \"id\", 'aria-label', 'aria-labelledby', \"isPlainButtonAction\"]);\n return (React.createElement(\"div\", Object.assign({ className: css(styles.dataListItemAction, formatBreakpointMods(visibility, styles), className) }, props), isPlainButtonAction ? React.createElement(\"div\", { className: css(styles.dataListAction) }, children) : children));\n};\nDataListAction.displayName = 'DataListAction';\n//# sourceMappingURL=DataListAction.js.map","import {\r\n DataListItem,\r\n DataListItemRow,\r\n DataListItemCells,\r\n DataListCell,\r\n} from \"@patternfly/react-core\";\r\n\r\ntype EmptyRowProps = {\r\n message: string;\r\n};\r\n\r\nexport const EmptyRow = ({ message, ...props }: EmptyRowProps) => {\r\n return (\r\n <DataListItem className=\"pf-u-align-items-center pf-p-b-0\">\r\n <DataListItemRow>\r\n <DataListItemCells\r\n dataListCells={[\r\n <DataListCell key=\"0\" {...props}>\r\n {message}\r\n </DataListCell>,\r\n ]}\r\n />\r\n </DataListItemRow>\r\n </DataListItem>\r\n );\r\n};\r\n"],"names":["DataListAction","_a","children","className","visibility","id","ariaLabel","ariaLabelledBy","isPlainButtonAction","props","__rest","React","css","styles","formatBreakpointMods","EmptyRow","message","jsx","DataListItem","DataListItemRow","DataListItemCells","DataListCell"],"mappings":"uOAKY,MAACA,EAAkBC,GAAO,CAClC,GAAI,CAAE,SAAAC,EAAU,UAAAC,EAAW,WAAAC,EAE3B,GAAAC,EAAI,aAAcC,EAAW,kBAAmBC,EAAgB,oBAAAC,CAAmB,EAAKP,EAExFQ,EAAQC,EAAOT,EAAI,CAAC,WAAY,YAAa,aAAc,KAAM,aAAc,kBAAmB,qBAAqB,CAAC,EACxH,OAAQU,EAAM,cAAc,MAAO,OAAO,OAAO,CAAE,UAAWC,EAAIC,EAAO,mBAAoBC,EAAqBV,EAAYS,CAAM,EAAGV,CAAS,GAAKM,CAAK,EAAGD,EAAsBG,EAAM,cAAc,MAAO,CAAE,UAAWC,EAAIC,EAAO,cAAc,CAAC,EAAIX,CAAQ,EAAIA,CAAQ,CACjR,EACAF,EAAe,YAAc,iBCFtB,MAAMe,EAAW,CAAC,CAAE,QAAAC,EAAS,GAAGP,KAElCQ,EAAAC,EAAA,CAAa,UAAU,mCACtB,WAACC,EACC,CAAA,SAAAF,EAACG,EAAA,CACC,cAAe,CACZH,EAAAI,EAAA,CAAsB,GAAGZ,EACvB,YADe,GAElB,CACF,CAAA,CAAA,CAEJ,CAAA,CACF,CAAA","x_google_ignoreList":[0]}

View File

@ -1,2 +0,0 @@
import{_ as c,f as e,k as d}from"./index-Bw6oJPms.js";import*as l from"react";import{s,a as p,b}from"./DataListItemRow-Djv9qB2b.js";import{jsx as i}from"react/jsx-runtime";import{D as L,a as f}from"./DataListItemCells-CEZA0xGh.js";const y=a=>{var{children:t,className:r,visibility:o,id:D,"aria-label":v,"aria-labelledby":A,isPlainButtonAction:m}=a,n=c(a,["children","className","visibility","id","aria-label","aria-labelledby","isPlainButtonAction"]);return l.createElement("div",Object.assign({className:e(s.dataListItemAction,d(o,s),r)},n),m?l.createElement("div",{className:e(s.dataListAction)},t):t)};y.displayName="DataListAction";const E=({message:a,...t})=>i(p,{className:"pf-v5-u-align-items-center pf-p-b-0",children:i(b,{children:i(L,{dataListCells:[i(f,{...t,children:a},"0")]})})});export{y as D,E};
//# sourceMappingURL=EmptyRow-CZMQgD8S.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"EmptyRow-CZMQgD8S.js","sources":["../../../../../node_modules/.pnpm/@patternfly+react-core@5.2.3_react-dom@18.2.0_react@18.2.0/node_modules/@patternfly/react-core/dist/esm/components/DataList/DataListAction.js","../../src/components/datalist/EmptyRow.tsx"],"sourcesContent":["import { __rest } from \"tslib\";\nimport * as React from 'react';\nimport { css } from '@patternfly/react-styles';\nimport styles from '@patternfly/react-styles/css/components/DataList/data-list.mjs';\nimport { formatBreakpointMods } from '../../helpers/util';\nexport const DataListAction = (_a) => {\n var { children, className, visibility, \n /* eslint-disable @typescript-eslint/no-unused-vars */\n id, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, \n /* eslint-disable @typescript-eslint/no-unused-vars */\n isPlainButtonAction } = _a, props = __rest(_a, [\"children\", \"className\", \"visibility\", \"id\", 'aria-label', 'aria-labelledby', \"isPlainButtonAction\"]);\n return (React.createElement(\"div\", Object.assign({ className: css(styles.dataListItemAction, formatBreakpointMods(visibility, styles), className) }, props), isPlainButtonAction ? React.createElement(\"div\", { className: css(styles.dataListAction) }, children) : children));\n};\nDataListAction.displayName = 'DataListAction';\n//# sourceMappingURL=DataListAction.js.map","import {\r\n DataListItem,\r\n DataListItemRow,\r\n DataListItemCells,\r\n DataListCell,\r\n} from \"@patternfly/react-core\";\r\n\r\ntype EmptyRowProps = {\r\n message: string;\r\n};\r\n\r\nexport const EmptyRow = ({ message, ...props }: EmptyRowProps) => {\r\n return (\r\n <DataListItem className=\"pf-v5-u-align-items-center pf-p-b-0\">\r\n <DataListItemRow>\r\n <DataListItemCells\r\n dataListCells={[\r\n <DataListCell key=\"0\" {...props}>\r\n {message}\r\n </DataListCell>,\r\n ]}\r\n />\r\n </DataListItemRow>\r\n </DataListItem>\r\n );\r\n};\r\n"],"names":["DataListAction","_a","children","className","visibility","id","ariaLabel","ariaLabelledBy","isPlainButtonAction","props","__rest","React","css","styles","formatBreakpointMods","EmptyRow","message","jsx","DataListItem","DataListItemRow","DataListItemCells","DataListCell"],"mappings":"uOAKY,MAACA,EAAkBC,GAAO,CAClC,GAAI,CAAE,SAAAC,EAAU,UAAAC,EAAW,WAAAC,EAE3B,GAAAC,EAAI,aAAcC,EAAW,kBAAmBC,EAEhD,oBAAAC,CAAqB,EAAGP,EAAIQ,EAAQC,EAAOT,EAAI,CAAC,WAAY,YAAa,aAAc,KAAM,aAAc,kBAAmB,qBAAqB,CAAC,EACpJ,OAAQU,EAAM,cAAc,MAAO,OAAO,OAAO,CAAE,UAAWC,EAAIC,EAAO,mBAAoBC,EAAqBV,EAAYS,CAAM,EAAGV,CAAS,GAAKM,CAAK,EAAGD,EAAsBG,EAAM,cAAc,MAAO,CAAE,UAAWC,EAAIC,EAAO,cAAc,CAAC,EAAIX,CAAQ,EAAIA,CAAQ,CACjR,EACAF,EAAe,YAAc,iBCFtB,MAAMe,EAAW,CAAC,CAAE,QAAAC,EAAS,GAAGP,KAElCQ,EAAAC,EAAA,CAAa,UAAU,sCACtB,WAACC,EACC,CAAA,SAAAF,EAACG,EAAA,CACC,cAAe,CACZH,EAAAI,EAAA,CAAsB,GAAGZ,EACvB,YADe,GAElB,CACF,CAAA,CAAA,CAEJ,CAAA,CACF,CAAA","x_google_ignoreList":[0]}

View File

@ -1,2 +0,0 @@
import{_ as c,f as r,aQ as s}from"./index-Bw6oJPms.js";import*as i from"react";const f=e=>{var{children:t=null,className:m=""}=e,o=c(e,["children","className"]);const n=r(s.formGroup,s.modifiers.action,m),a=i.createElement("div",{className:r(s.formActions)},t);return i.createElement("div",Object.assign({},o,{className:n}),i.createElement("div",{className:r(s.formGroupControl)},a))};f.displayName="ActionGroup";const h={name:"--pf-v5-c-form--m-limit-width--MaxWidth",value:"55rem",var:"var(--pf-v5-c-form--m-limit-width--MaxWidth)"},p=e=>{var{children:t=null,className:m="",isHorizontal:o=!1,isWidthLimited:n=!1,maxWidth:a="",innerRef:d}=e,l=c(e,["children","className","isHorizontal","isWidthLimited","maxWidth","innerRef"]);return i.createElement("form",Object.assign({noValidate:!0},a&&{style:Object.assign({[h.name]:a},l.style)},l,{className:r(s.form,o&&s.modifiers.horizontal,(n||a)&&s.modifiers.limitWidth,m),ref:d}),t)},u=i.forwardRef((e,t)=>i.createElement(p,Object.assign({innerRef:t},e)));u.displayName="Form";export{f as A,u as F};
//# sourceMappingURL=Form-B6DnMtXK.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"Form-B6DnMtXK.js","sources":["../../../../../node_modules/.pnpm/@patternfly+react-core@5.2.3_react-dom@18.2.0_react@18.2.0/node_modules/@patternfly/react-core/dist/esm/components/Form/ActionGroup.js","../../../../../node_modules/.pnpm/@patternfly+react-tokens@5.2.1/node_modules/@patternfly/react-tokens/dist/esm/c_form_m_limit_width_MaxWidth.js","../../../../../node_modules/.pnpm/@patternfly+react-core@5.2.3_react-dom@18.2.0_react@18.2.0/node_modules/@patternfly/react-core/dist/esm/components/Form/Form.js"],"sourcesContent":["import { __rest } from \"tslib\";\nimport * as React from 'react';\nimport styles from '@patternfly/react-styles/css/components/Form/form.mjs';\nimport { css } from '@patternfly/react-styles';\nexport const ActionGroup = (_a) => {\n var { children = null, className = '' } = _a, props = __rest(_a, [\"children\", \"className\"]);\n const customClassName = css(styles.formGroup, styles.modifiers.action, className);\n const formActionsComponent = React.createElement(\"div\", { className: css(styles.formActions) }, children);\n return (React.createElement(\"div\", Object.assign({}, props, { className: customClassName }),\n React.createElement(\"div\", { className: css(styles.formGroupControl) }, formActionsComponent)));\n};\nActionGroup.displayName = 'ActionGroup';\n//# sourceMappingURL=ActionGroup.js.map","export const c_form_m_limit_width_MaxWidth = {\n \"name\": \"--pf-v5-c-form--m-limit-width--MaxWidth\",\n \"value\": \"55rem\",\n \"var\": \"var(--pf-v5-c-form--m-limit-width--MaxWidth)\"\n};\nexport default c_form_m_limit_width_MaxWidth;","import { __rest } from \"tslib\";\nimport * as React from 'react';\nimport styles from '@patternfly/react-styles/css/components/Form/form.mjs';\nimport { css } from '@patternfly/react-styles';\nimport cssMaxWidth from '@patternfly/react-tokens/dist/esm/c_form_m_limit_width_MaxWidth';\nconst FormBase = (_a) => {\n var { children = null, className = '', isHorizontal = false, isWidthLimited = false, maxWidth = '', innerRef } = _a, props = __rest(_a, [\"children\", \"className\", \"isHorizontal\", \"isWidthLimited\", \"maxWidth\", \"innerRef\"]);\n return (React.createElement(\"form\", Object.assign({ noValidate: true }, (maxWidth && {\n style: Object.assign({ [cssMaxWidth.name]: maxWidth }, props.style)\n }), props, { className: css(styles.form, isHorizontal && styles.modifiers.horizontal, (isWidthLimited || maxWidth) && styles.modifiers.limitWidth, className), ref: innerRef }), children));\n};\nexport const Form = React.forwardRef((props, ref) => React.createElement(FormBase, Object.assign({ innerRef: ref }, props)));\nForm.displayName = 'Form';\n//# sourceMappingURL=Form.js.map"],"names":["ActionGroup","_a","children","className","props","__rest","customClassName","css","styles","formActionsComponent","React","c_form_m_limit_width_MaxWidth","FormBase","isHorizontal","isWidthLimited","maxWidth","innerRef","cssMaxWidth","Form","ref"],"mappings":"+EAIY,MAACA,EAAeC,GAAO,CAC/B,GAAI,CAAE,SAAAC,EAAW,KAAM,UAAAC,EAAY,EAAE,EAAKF,EAAIG,EAAQC,EAAOJ,EAAI,CAAC,WAAY,WAAW,CAAC,EAC1F,MAAMK,EAAkBC,EAAIC,EAAO,UAAWA,EAAO,UAAU,OAAQL,CAAS,EAC1EM,EAAuBC,EAAM,cAAc,MAAO,CAAE,UAAWH,EAAIC,EAAO,WAAW,CAAG,EAAEN,CAAQ,EACxG,OAAQQ,EAAM,cAAc,MAAO,OAAO,OAAO,CAAE,EAAEN,EAAO,CAAE,UAAWE,EAAiB,EACtFI,EAAM,cAAc,MAAO,CAAE,UAAWH,EAAIC,EAAO,gBAAgB,CAAC,EAAIC,CAAoB,CAAC,CACrG,EACAT,EAAY,YAAc,cCXnB,MAAMW,EAAgC,CAC3C,KAAQ,0CACR,MAAS,QACT,IAAO,8CACT,ECCMC,EAAYX,GAAO,CACrB,GAAI,CAAE,SAAAC,EAAW,KAAM,UAAAC,EAAY,GAAI,aAAAU,EAAe,GAAO,eAAAC,EAAiB,GAAO,SAAAC,EAAW,GAAI,SAAAC,GAAaf,EAAIG,EAAQC,EAAOJ,EAAI,CAAC,WAAY,YAAa,eAAgB,iBAAkB,WAAY,UAAU,CAAC,EAC3N,OAAQS,EAAM,cAAc,OAAQ,OAAO,OAAO,CAAE,WAAY,EAAM,EAAGK,GAAY,CACjF,MAAO,OAAO,OAAO,CAAE,CAACE,EAAY,IAAI,EAAGF,CAAQ,EAAIX,EAAM,KAAK,CAC1E,EAAQA,EAAO,CAAE,UAAWG,EAAIC,EAAO,KAAMK,GAAgBL,EAAO,UAAU,YAAaM,GAAkBC,IAAaP,EAAO,UAAU,WAAYL,CAAS,EAAG,IAAKa,CAAQ,CAAE,EAAGd,CAAQ,CAC7L,EACagB,EAAOR,EAAM,WAAW,CAACN,EAAOe,IAAQT,EAAM,cAAcE,EAAU,OAAO,OAAO,CAAE,SAAUO,CAAK,EAAEf,CAAK,CAAC,CAAC,EAC3Hc,EAAK,YAAc","x_google_ignoreList":[0,1,2]}

View File

@ -0,0 +1,2 @@
import{_ as c,f as r,aT as s}from"./index-CmO9OReA.js";import*as t from"react";const f=e=>{var{children:a=null,className:o=""}=e,m=c(e,["children","className"]);const n=r(s.formGroup,s.modifiers.action,o),i=t.createElement("div",{className:r(s.formActions)},a);return t.createElement("div",Object.assign({},m,{className:n}),t.createElement("div",{className:r(s.formGroupControl)},i))};f.displayName="ActionGroup";const p=e=>{var{children:a=null,className:o="",isHorizontal:m=!1,isWidthLimited:n=!1,maxWidth:i="",innerRef:d}=e,l=c(e,["children","className","isHorizontal","isWidthLimited","maxWidth","innerRef"]);return t.createElement("form",Object.assign({noValidate:!0},i&&{style:Object.assign({"--pf-c-form--m-limit-width--MaxWidth":i},l.style)},l,{className:r(s.form,m&&s.modifiers.horizontal,(n||i)&&s.modifiers.limitWidth,o),ref:d}),a)},h=t.forwardRef((e,a)=>t.createElement(p,Object.assign({innerRef:a},e)));h.displayName="Form";export{f as A,h as F};
//# sourceMappingURL=Form-DzOsnxGQ.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"Form-DzOsnxGQ.js","sources":["../../../../node_modules/.pnpm/@patternfly+react-core@4.278.0_react-dom@18.2.0_react@18.2.0/node_modules/@patternfly/react-core/dist/esm/components/Form/ActionGroup.js","../../../../node_modules/.pnpm/@patternfly+react-core@4.278.0_react-dom@18.2.0_react@18.2.0/node_modules/@patternfly/react-core/dist/esm/components/Form/Form.js"],"sourcesContent":["import { __rest } from \"tslib\";\nimport * as React from 'react';\nimport styles from '@patternfly/react-styles/css/components/Form/form';\nimport { css } from '@patternfly/react-styles';\nexport const ActionGroup = (_a) => {\n var { children = null, className = '' } = _a, props = __rest(_a, [\"children\", \"className\"]);\n const customClassName = css(styles.formGroup, styles.modifiers.action, className);\n const formActionsComponent = React.createElement(\"div\", { className: css(styles.formActions) }, children);\n return (React.createElement(\"div\", Object.assign({}, props, { className: customClassName }),\n React.createElement(\"div\", { className: css(styles.formGroupControl) }, formActionsComponent)));\n};\nActionGroup.displayName = 'ActionGroup';\n//# sourceMappingURL=ActionGroup.js.map","import { __rest } from \"tslib\";\nimport * as React from 'react';\nimport styles from '@patternfly/react-styles/css/components/Form/form';\nimport { css } from '@patternfly/react-styles';\nconst FormBase = (_a) => {\n var { children = null, className = '', isHorizontal = false, isWidthLimited = false, maxWidth = '', innerRef } = _a, props = __rest(_a, [\"children\", \"className\", \"isHorizontal\", \"isWidthLimited\", \"maxWidth\", \"innerRef\"]);\n return (React.createElement(\"form\", Object.assign({ noValidate: true }, (maxWidth && {\n style: Object.assign({ '--pf-c-form--m-limit-width--MaxWidth': maxWidth }, props.style)\n }), props, { className: css(styles.form, isHorizontal && styles.modifiers.horizontal, (isWidthLimited || maxWidth) && styles.modifiers.limitWidth, className), ref: innerRef }), children));\n};\nexport const Form = React.forwardRef((props, ref) => React.createElement(FormBase, Object.assign({ innerRef: ref }, props)));\nForm.displayName = 'Form';\n//# sourceMappingURL=Form.js.map"],"names":["ActionGroup","_a","children","className","props","__rest","customClassName","css","styles","formActionsComponent","React","FormBase","isHorizontal","isWidthLimited","maxWidth","innerRef","Form","ref"],"mappings":"+EAIY,MAACA,EAAeC,GAAO,CAC/B,GAAI,CAAE,SAAAC,EAAW,KAAM,UAAAC,EAAY,EAAE,EAAKF,EAAIG,EAAQC,EAAOJ,EAAI,CAAC,WAAY,WAAW,CAAC,EAC1F,MAAMK,EAAkBC,EAAIC,EAAO,UAAWA,EAAO,UAAU,OAAQL,CAAS,EAC1EM,EAAuBC,EAAM,cAAc,MAAO,CAAE,UAAWH,EAAIC,EAAO,WAAW,CAAG,EAAEN,CAAQ,EACxG,OAAQQ,EAAM,cAAc,MAAO,OAAO,OAAO,CAAE,EAAEN,EAAO,CAAE,UAAWE,EAAiB,EACtFI,EAAM,cAAc,MAAO,CAAE,UAAWH,EAAIC,EAAO,gBAAgB,CAAC,EAAIC,CAAoB,CAAC,CACrG,EACAT,EAAY,YAAc,cCP1B,MAAMW,EAAYV,GAAO,CACrB,GAAI,CAAE,SAAAC,EAAW,KAAM,UAAAC,EAAY,GAAI,aAAAS,EAAe,GAAO,eAAAC,EAAiB,GAAO,SAAAC,EAAW,GAAI,SAAAC,GAAad,EAAIG,EAAQC,EAAOJ,EAAI,CAAC,WAAY,YAAa,eAAgB,iBAAkB,WAAY,UAAU,CAAC,EAC3N,OAAQS,EAAM,cAAc,OAAQ,OAAO,OAAO,CAAE,WAAY,EAAM,EAAGI,GAAY,CACjF,MAAO,OAAO,OAAO,CAAE,uCAAwCA,CAAU,EAAEV,EAAM,KAAK,CAC9F,EAAQA,EAAO,CAAE,UAAWG,EAAIC,EAAO,KAAMI,GAAgBJ,EAAO,UAAU,YAAaK,GAAkBC,IAAaN,EAAO,UAAU,WAAYL,CAAS,EAAG,IAAKY,CAAQ,CAAE,EAAGb,CAAQ,CAC7L,EACac,EAAON,EAAM,WAAW,CAACN,EAAOa,IAAQP,EAAM,cAAcC,EAAU,OAAO,OAAO,CAAE,SAAUM,CAAK,EAAEb,CAAK,CAAC,CAAC,EAC3HY,EAAK,YAAc","x_google_ignoreList":[0,1]}

View File

@ -0,0 +1,2 @@
import{jsx as e,jsxs as C}from"react/jsx-runtime";import{useState as m}from"react";import{P as L,f as D}from"./Page-0WGWoSmH.js";import{u as M,a as w,b as k,p}from"./index-CmO9OReA.js";import{D as $,a as c,b as l}from"./DataListItemRow-DeNdWxot.js";import{D as o,a as s}from"./DataListItemCells-BpP3eQ2n.js";import"react-dom";import"./grip-vertical-icon-DJL1P1Zf.js";const H=()=>{const{t:r}=M(),u=w(),[b,g]=m([]),[h,f]=m(!1);k(i=>D({signal:i,context:u}),i=>{h||i.forEach(t=>n(t,i,i.map(({path:d})=>d))),g(i)},[h]);const n=(i,t,d)=>{const a=i.path.slice(0,i.path.lastIndexOf("/"));a&&!d.includes(a)&&(i={name:a.slice(a.lastIndexOf("/")+1),path:a},t.push(i),d.push(a),n(i,t,d))};return e(L,{title:r("groups"),description:r("groupDescriptionLabel"),children:C($,{id:"groups-list","aria-label":r("groups"),isCompact:!0,children:[e(c,{id:"groups-list-header","aria-label":r("groupsListHeader"),children:e(l,{children:e(o,{dataListCells:[e(s,{children:e(p,{label:r("directMembership"),id:"directMembership-checkbox","data-testid":"directMembership-checkbox",isChecked:h,onChange:i=>f(i)})},"directMembership-header")]})})}),e(c,{id:"groups-list-columns-names","aria-label":r("groupsListColumnsNames"),children:e(l,{children:e(o,{dataListCells:[e(s,{width:2,children:e("strong",{children:r("name")})},"group-name-header"),e(s,{width:2,children:e("strong",{children:r("path")})},"group-path-header"),e(s,{width:2,children:e("strong",{children:r("directMembership")})},"group-direct-membership-header")]})})}),b.map((i,t)=>e(c,{id:`${t}-group`,"aria-labelledby":"groups-list",children:e(l,{children:e(o,{dataListCells:[e(s,{"data-testid":`group[${t}].name`,width:2,children:i.name},"name-"+t),e(s,{id:`${t}-group-path`,width:2,children:i.path},"path-"+t),e(s,{id:`${t}-group-directMembership`,width:2,children:e(p,{id:`${t}-checkbox-directMembership`,isChecked:i.id!=null,isDisabled:!0})},"directMembership-"+t)]})})},"group-"+t))]})})};export{H as Groups,H as default};
//# sourceMappingURL=Groups-BOkm_2Z-.js.map

View File

@ -1,2 +0,0 @@
import{jsx as e,jsxs as C}from"react/jsx-runtime";import{useState as m}from"react";import{P as L,h as D}from"./Page-Q00E4OWK.js";import{u as M,a as w,b as k,n as p}from"./index-Bw6oJPms.js";import{D as $,a as c,b as l}from"./DataListItemRow-Djv9qB2b.js";import{D as o,a as s}from"./DataListItemCells-CEZA0xGh.js";import"react-dom";const y=()=>{const{t:r}=M(),u=w(),[b,g]=m([]),[d,f]=m(!1);k(i=>D({signal:i,context:u}),i=>{d||i.forEach(t=>n(t,i,i.map(({path:h})=>h))),g(i)},[d]);const n=(i,t,h)=>{const a=i.path.slice(0,i.path.lastIndexOf("/"));a&&!h.includes(a)&&(i={name:a.slice(a.lastIndexOf("/")+1),path:a},t.push(i),h.push(a),n(i,t,h))};return e(L,{title:r("groups"),description:r("groupDescriptionLabel"),children:C($,{id:"groups-list","aria-label":r("groups"),isCompact:!0,children:[e(c,{id:"groups-list-header","aria-label":r("groupsListHeader"),children:e(l,{children:e(o,{dataListCells:[e(s,{children:e(p,{label:r("directMembership"),id:"directMembership-checkbox","data-testid":"directMembership-checkbox",isChecked:d,onChange:(i,t)=>f(t)})},"directMembership-header")]})})}),e(c,{id:"groups-list-columns-names","aria-label":r("groupsListColumnsNames"),children:e(l,{children:e(o,{dataListCells:[e(s,{width:2,children:e("strong",{children:r("name")})},"group-name-header"),e(s,{width:2,children:e("strong",{children:r("path")})},"group-path-header"),e(s,{width:2,children:e("strong",{children:r("directMembership")})},"group-direct-membership-header")]})})}),b.map((i,t)=>e(c,{id:`${t}-group`,"aria-labelledby":"groups-list",children:e(l,{children:e(o,{dataListCells:[e(s,{"data-testid":`group[${t}].name`,width:2,children:i.name},"name-"+t),e(s,{id:`${t}-group-path`,width:2,children:i.path},"path-"+t),e(s,{id:`${t}-group-directMembership`,width:2,children:e(p,{id:`${t}-checkbox-directMembership`,isChecked:i.id!=null,isDisabled:!0})},"directMembership-"+t)]})})},"group-"+t))]})})};export{y as Groups,y as default};
//# sourceMappingURL=Groups-ggcw-_aR.js.map

View File

@ -1,2 +0,0 @@
import{_ as le,B as ae,g as oe,f as c,h as ne,i as A}from"./index-Bw6oJPms.js";import*as e from"react";import{useState as M}from"react";const a={button:"pf-v5-c-button",label:"pf-v5-c-label",labelActions:"pf-v5-c-label__actions",labelContent:"pf-v5-c-label__content",labelIcon:"pf-v5-c-label__icon",labelText:"pf-v5-c-label__text",modifiers:{compact:"pf-m-compact",blue:"pf-m-blue",green:"pf-m-green",orange:"pf-m-orange",red:"pf-m-red",purple:"pf-m-purple",cyan:"pf-m-cyan",gold:"pf-m-gold",outline:"pf-m-outline",overflow:"pf-m-overflow",add:"pf-m-add",editable:"pf-m-editable",editableActive:"pf-m-editable-active"},themeDark:"pf-v5-theme-dark"},se={button:"pf-v5-c-button",labelGroup:"pf-v5-c-label-group",labelGroupClose:"pf-v5-c-label-group__close",labelGroupLabel:"pf-v5-c-label-group__label",labelGroupList:"pf-v5-c-label-group__list",labelGroupListItem:"pf-v5-c-label-group__list-item",labelGroupMain:"pf-v5-c-label-group__main",labelGroupTextarea:"pf-v5-c-label-group__textarea",modifiers:{category:"pf-m-category",vertical:"pf-m-vertical",editable:"pf-m-editable",textarea:"pf-m-textarea"}},re={name:"--pf-v5-c-label__text--MaxWidth",value:"100%",var:"var(--pf-v5-c-label__text--MaxWidth)"},ie={blue:a.modifiers.blue,cyan:a.modifiers.cyan,green:a.modifiers.green,orange:a.modifiers.orange,purple:a.modifiers.purple,red:a.modifiers.red,gold:a.modifiers.gold,grey:""},ce=h=>{var{children:s,className:D="",color:G="grey",variant:W="filled",isCompact:S=!1,isEditable:r=!1,editableProps:x,textMaxWidth:y,tooltipPosition:L,icon:k,onClose:w,onClick:i,onEditCancel:P,onEditComplete:f,closeBtn:V,closeBtnAriaLabel:F,closeBtnProps:H,href:p,isOverflowLabel:d,render:R}=h,K=le(h,["children","className","color","variant","isCompact","isEditable","editableProps","textMaxWidth","tooltipPosition","icon","onClose","onClick","onEditCancel","onEditComplete","closeBtn","closeBtnAriaLabel","closeBtnProps","href","isOverflowLabel","render"]);const[o,u]=M(!1),[$,q]=M(s),n=e.useRef(),l=e.useRef();e.useEffect(()=>(document.addEventListener("mousedown",I),document.addEventListener("keydown",O),()=>{document.removeEventListener("mousedown",I),document.removeEventListener("keydown",O)})),e.useEffect(()=>{i&&p?console.warn("Link labels cannot have onClick passed, this results in invalid HTML. Please remove either the href or onClick prop."):i&&r&&console.warn("Editable labels cannot have onClick passed, clicking starts the label edit process. Please remove either the isEditable or onClick prop.")},[i,p,r]);const I=t=>{o&&l&&l.current&&!l.current.contains(t.target)&&(l.current.value&&f&&f(t,l.current.value),u(!1))},O=t=>{var C,E;const v=t.key;if(!(!o&&(!n||!n.current||!n.current.contains(t.target))||o&&(!l||!l.current||!l.current.contains(t.target)))&&(o&&(v==="Enter"||v==="Tab")&&(t.preventDefault(),t.stopImmediatePropagation(),l.current.value&&f&&f(t,l.current.value),u(!1),(C=n?.current)===null||C===void 0||C.focus()),o&&v==="Escape"&&(t.preventDefault(),t.stopImmediatePropagation(),l.current.value&&(l.current.value=s,P&&P(t,s)),u(!1),(E=n?.current)===null||E===void 0||E.focus()),!o&&v==="Enter")){t.preventDefault(),t.stopImmediatePropagation(),u(!0);const te=t.target,_=document.createRange(),T=window.getSelection();_.selectNodeContents(te),_.collapse(!1),T.removeAllRanges(),T.addRange(_)}},z=d?"button":"span",J=e.createElement(ae,Object.assign({type:"button",variant:"plain",onClick:w,"aria-label":F||`Close ${s}`},H),e.createElement(oe,null)),Q=e.createElement("span",{className:c(a.labelActions)},V||J),B=e.createRef(),N=e.useRef(),[g,U]=e.useState(!1);ne(()=>{const t=r?n:B;o||U(t.current&&t.current.offsetWidth<t.current.scrollWidth)},[o]);const j=e.createElement(e.Fragment,null,k&&e.createElement("span",{className:c(a.labelIcon)},k),e.createElement("span",Object.assign({ref:B,className:c(a.labelText)},y&&{style:{[re.name]:y}}),s));e.useEffect(()=>{o&&l&&l.current&&l.current.focus()},[l,o]);const X=()=>{q(l.current.value)};let b="span";p?b="a":(r||i&&!d)&&(b="button");const Y={type:"button",onClick:i},Z=b==="button",ee=Object.assign(Object.assign(Object.assign(Object.assign({className:c(a.labelContent)},g&&{tabIndex:0}),p&&{href:p}),Z&&Y),r&&Object.assign({ref:n,onClick:t=>{u(!0),t.stopPropagation()}},x));let m=e.createElement(b,Object.assign({},ee),j);return R?m=e.createElement(e.Fragment,null,g&&e.createElement(A,{triggerRef:N,content:s,position:L}),R({className:a.labelContent,content:j,componentRef:N})):g&&(m=e.createElement(A,{content:s,position:L},m)),e.createElement(z,Object.assign({},K,{className:c(a.label,ie[G],W==="outline"&&a.modifiers.outline,d&&a.modifiers.overflow,S&&a.modifiers.compact,r&&se.modifiers.editable,o&&a.modifiers.editableActive,D),onClick:d?i:void 0}),!o&&m,!o&&w&&Q,o&&e.createElement("input",Object.assign({className:c(a.labelContent),type:"text",id:"editable-input",ref:l,value:$,onChange:X},x)))};ce.displayName="Label";export{ce as L};
//# sourceMappingURL=Label-CVk_ec5U.js.map

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
import{_ as U,B as X,h as Y,i as Z,f as s,j as D}from"./index-CmO9OReA.js";import*as e from"react";import{useState as G}from"react";const l={button:"pf-c-button",label:"pf-c-label",labelContent:"pf-c-label__content",labelIcon:"pf-c-label__icon",labelText:"pf-c-label__text",modifiers:{compact:"pf-m-compact",blue:"pf-m-blue",green:"pf-m-green",orange:"pf-m-orange",red:"pf-m-red",purple:"pf-m-purple",cyan:"pf-m-cyan",gold:"pf-m-gold",outline:"pf-m-outline",overflow:"pf-m-overflow",add:"pf-m-add",editable:"pf-m-editable",editableActive:"pf-m-editable-active"},themeDark:"pf-theme-dark"},ee={button:"pf-c-button",labelGroup:"pf-c-label-group",labelGroupClose:"pf-c-label-group__close",labelGroupLabel:"pf-c-label-group__label",labelGroupList:"pf-c-label-group__list",labelGroupListItem:"pf-c-label-group__list-item",labelGroupMain:"pf-c-label-group__main",labelGroupTextarea:"pf-c-label-group__textarea",modifiers:{category:"pf-m-category",vertical:"pf-m-vertical",editable:"pf-m-editable",textarea:"pf-m-textarea"}},te={blue:l.modifiers.blue,cyan:l.modifiers.cyan,green:l.modifiers.green,orange:l.modifiers.orange,purple:l.modifiers.purple,red:l.modifiers.red,gold:l.modifiers.gold,grey:""},le=v=>{var{children:r,className:O="",color:j="grey",variant:S="filled",isCompact:V=!1,isEditable:m=!1,editableProps:E,isTruncated:C=!1,tooltipPosition:_,icon:y,onClose:L,onEditCancel:h,onEditComplete:u,closeBtn:w,closeBtnAriaLabel:F,closeBtnProps:M,href:R,isOverflowLabel:N,render:x}=v,W=U(v,["children","className","color","variant","isCompact","isEditable","editableProps","isTruncated","tooltipPosition","icon","onClose","onEditCancel","onEditComplete","closeBtn","closeBtnAriaLabel","closeBtnProps","href","isOverflowLabel","render"]);const[a,c]=G(!1),[K,$]=G(r),n=e.useRef(),o=e.useRef();e.useEffect(()=>(document.addEventListener("mousedown",I),document.addEventListener("keydown",T),()=>{document.removeEventListener("mousedown",I),document.removeEventListener("keydown",T)}));const I=t=>{a&&o&&o.current&&!o.current.contains(t.target)&&(o.current.value&&u&&u(t,o.current.value),c(!1))},T=t=>{var d,b;const p=t.key;if(!(!a&&(!n||!n.current||!n.current.contains(t.target))||a&&(!o||!o.current||!o.current.contains(t.target)))&&(a&&(p==="Enter"||p==="Tab")&&(t.preventDefault(),t.stopImmediatePropagation(),o.current.value&&u&&u(t,o.current.value),c(!1),(d=n?.current)===null||d===void 0||d.focus()),a&&p==="Escape"&&(t.preventDefault(),t.stopImmediatePropagation(),o.current.value&&(o.current.value=r,h&&h(t,r)),c(!1),(b=n?.current)===null||b===void 0||b.focus()),!a&&p==="Enter")){t.preventDefault(),t.stopImmediatePropagation(),c(!0);const Q=t.target,g=document.createRange(),A=window.getSelection();g.selectNodeContents(Q),g.collapse(!1),A.removeAllRanges(),A.addRange(g)}},q=N?"button":"span",z=w||e.createElement(X,Object.assign({type:"button",variant:"plain",onClick:L,"aria-label":F||`Close ${r}`},M),e.createElement(Y,null)),P=e.createRef(),B=e.useRef(),[k,H]=e.useState(!1);Z(()=>{const t=m?n:P;a||H(t.current&&t.current.offsetWidth<t.current.scrollWidth)},[a]);const f=e.createElement(e.Fragment,null,y&&e.createElement("span",{className:s(l.labelIcon)},y),C&&e.createElement("span",{ref:P,className:s(l.labelText)},r),!C&&r);e.useEffect(()=>{a&&o&&o.current&&o.current.focus()},[o,a]);const J=()=>{$(o.current.value)};let i=e.createElement("span",{className:s(l.labelContent)},f);return R?i=e.createElement("a",{className:s(l.labelContent),href:R},f):m&&(i=e.createElement("button",Object.assign({ref:n,className:s(l.labelContent),onClick:t=>{c(!0),t.stopPropagation()}},E),f)),x?i=e.createElement(e.Fragment,null,k&&e.createElement(D,{reference:B,content:r,position:_}),x({className:l.labelContent,content:f,componentRef:B})):k&&(i=e.createElement(D,{content:r,position:_},i)),e.createElement(q,Object.assign({},W,{className:s(l.label,te[j],S==="outline"&&l.modifiers.outline,N&&l.modifiers.overflow,V&&l.modifiers.compact,m&&ee.modifiers.editable,a&&l.modifiers.editableActive,O)}),!a&&i,!a&&L&&z,a&&e.createElement("input",Object.assign({className:s(l.labelContent),type:"text",id:"editable-input",ref:o,value:K,onChange:J},E)))};le.displayName="Label";export{le as L};
//# sourceMappingURL=Label-IH7etj-H.js.map

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
.pf-v5-l-stack{--pf-v5-l-stack--m-gutter--Gap:var(--pf-v5-global--gutter);flex-direction:column;height:100%;display:flex}.pf-v5-l-stack__item.pf-m-fill{flex-grow:1}.pf-v5-l-stack.pf-m-gutter{gap:var(--pf-v5-l-stack--m-gutter--Gap)}

View File

@ -0,0 +1 @@
.pf-l-stack{--pf-l-stack--m-gutter--MarginBottom:var(--pf-global--gutter);flex-direction:column;height:100%;display:flex}.pf-l-stack__item.pf-m-fill{flex-grow:1}.pf-l-stack.pf-m-gutter>:not(:last-child){margin-bottom:var(--pf-l-stack--m-gutter--MarginBottom)}

View File

@ -0,0 +1,2 @@
import{aD as d,P as u,aU as w,T as y,aq as m}from"./index-CmO9OReA.js";import{jsxs as p,Fragment as E,jsx as a}from"react/jsx-runtime";const T=e=>typeof e=="object"&&e!==null,f="content-type",l="application/json";class v extends Error{}async function o(e){const n=e.headers.get(f);if(!(n?n.includes(l):!1))throw new Error(`Expected response to have a JSON content type, got '${n}' instead.`);const r=await N(e);if(!e.ok)throw new v(P(r));return r}async function N(e){try{return await e.json()}catch(n){throw new Error("Unable to parse response as valid JSON.",{cause:n})}}function P(e){if(!T(e))throw new Error("Unable to retrieve error message from response.");const n=["error_description","errorMessage","error"];for(const t of n){const r=e[t];if(typeof r=="string")return r}throw new Error("Unable to retrieve error message from response, no matching key found.")}async function k(e,{signal:n,getAccessToken:t,method:r,searchParams:c,body:i}={}){return c&&Object.entries(c).forEach(([h,g])=>e.searchParams.set(h,g)),fetch(e,{signal:n,method:r,body:i?JSON.stringify(i):void 0,headers:{[f]:l,authorization:`Bearer ${await t?.()}`}})}async function s(e,{environment:n,keycloak:t},r={}){return k(O(n,e),{...r,getAccessToken:S(t)})}const O=(e,n)=>new URL(d(e.authUrl,"realms",e.realm,"account",n)),S=e=>async function(){try{await e.updateToken(5)}catch{await e.login()}return e.token};async function U({signal:e,context:n}){const t=await s("/?userProfileMetadata=true",n,{signal:e});return o(t)}async function A({signal:e,context:n}){const t=await s("/supportedLocales",n,{signal:e});return o(t)}async function b(e,n){const t=await s("/",e,{body:n,method:"POST"});if(!t.ok){const{errors:r}=await t.json();throw r}}async function J(e,{signal:n,context:t}){const r=await s(`/resources/${e}/permissions/requests`,t,{signal:n});return o(r)}async function C({signal:e,context:n}){const t=await s("/sessions/devices",n,{signal:e});return o(t)}async function D({signal:e,context:n}){const t=await s("/applications",n,{signal:e});return o(t)}async function R(e,n){return s(`/applications/${n}/consent`,e,{method:"DELETE"})}async function _(e,n){return s(`/sessions${n?`/${n}`:""}`,e,{method:"DELETE"})}async function $({signal:e,context:n}){const t=await s("/credentials",n,{signal:e});return o(t)}async function q({signal:e,context:n}){const t=await s("/linked-accounts",n,{signal:e});return o(t)}async function x(e,n){const t=await s("/linked-accounts/"+n.providerName,e,{method:"DELETE"});if(!t.ok)return o(t)}async function I(e,n){const t=encodeURIComponent(d(e.environment.authUrl,"realms",e.environment.realm,"account")),r=await s("/linked-accounts/"+n.providerName,e,{searchParams:{providerId:n.providerName,redirectUri:t}});return o(r)}async function M({signal:e,context:n}){const t=await s("/groups",n,{signal:e});return o(t)}const Y=({title:e,description:n,children:t})=>p(E,{children:[a(u,{variant:"light",children:p(w,{children:[a(y,{headingLevel:"h1","data-testid":"page-heading",children:e}),a(m,{component:"p",children:n})]})}),a(u,{variant:"light",children:t})]});export{Y as P,q as a,$ as b,D as c,_ as d,R as e,M as f,C as g,U as h,A as i,J as j,I as l,o as p,s as r,b as s,x as u};
//# sourceMappingURL=Page-0WGWoSmH.js.map

View File

@ -1,2 +0,0 @@
import{aC as d,P as u,aR as w,T as y,ap as m}from"./index-Bw6oJPms.js";import{jsxs as p,Fragment as E,jsx as a}from"react/jsx-runtime";const T=e=>typeof e=="object"&&e!==null,f="content-type",l="application/json";class v extends Error{}async function o(e){const n=e.headers.get(f);if(!(n?n.includes(l):!1))throw new Error(`Expected response to have a JSON content type, got '${n}' instead.`);const r=await N(e);if(!e.ok)throw new v(k(r));return r}async function N(e){try{return await e.json()}catch(n){throw new Error("Unable to parse response as valid JSON.",{cause:n})}}function k(e){if(!T(e))throw new Error("Unable to retrieve error message from response.");const n=["error_description","errorMessage","error"];for(const t of n){const r=e[t];if(typeof r=="string")return r}throw new Error("Unable to retrieve error message from response, no matching key found.")}async function P(e,{signal:n,getAccessToken:t,method:r,searchParams:c,body:i}={}){return c&&Object.entries(c).forEach(([h,g])=>e.searchParams.set(h,g)),fetch(e,{signal:n,method:r,body:i?JSON.stringify(i):void 0,headers:{[f]:l,authorization:`Bearer ${await t?.()}`}})}async function s(e,{environment:n,keycloak:t},r={}){return P(O(n,e),{...r,getAccessToken:S(t)})}const O=(e,n)=>new URL(d(e.authUrl,"realms",e.realm,"account",n)),S=e=>async function(){try{await e.updateToken(5)}catch{await e.login()}return e.token};async function A({signal:e,context:n}){const t=await s("/?userProfileMetadata=true",n,{signal:e});return o(t)}async function C({signal:e,context:n}){const t=await s("/supportedLocales",n,{signal:e});return o(t)}async function U(e,n){const t=await s("/",e,{body:n,method:"POST"});if(!t.ok){const{errors:r}=await t.json();throw r}}async function b(e,{signal:n,context:t}){const r=await s(`/resources/${e}/permissions/requests`,t,{signal:n});return o(r)}async function J({signal:e,context:n}){const t=await s("/sessions/devices",n,{signal:e});return o(t)}async function R({signal:e,context:n}){const t=await s("/applications",n,{signal:e});return o(t)}async function D(e,n){return s(`/applications/${n}/consent`,e,{method:"DELETE"})}async function _(e,n){return s(`/sessions${n?`/${n}`:""}`,e,{method:"DELETE"})}async function $({signal:e,context:n}){const t=await s("/credentials",n,{signal:e});return o(t)}async function x(e,n){return s("/credentials/"+n.id,e,{method:"DELETE"})}async function q({signal:e,context:n}){const t=await s("/linked-accounts",n,{signal:e});return o(t)}async function I(e,n){const t=await s("/linked-accounts/"+n.providerName,e,{method:"DELETE"});if(!t.ok)return o(t)}async function M(e,n){const t=encodeURIComponent(d(e.environment.authUrl,"realms",e.environment.realm,"account")),r=await s("/linked-accounts/"+n.providerName,e,{searchParams:{providerId:n.providerName,redirectUri:t}});return o(r)}async function Y({signal:e,context:n}){const t=await s("/groups",n,{signal:e});return o(t)}const z=({title:e,description:n,children:t})=>p(E,{children:[a(u,{variant:"light",children:p(w,{children:[a(y,{headingLevel:"h1","data-testid":"page-heading",children:e}),a(m,{component:"p",children:n})]})}),a(u,{variant:"light",children:t})]});export{z as P,q as a,x as b,$ as c,_ as d,R as e,D as f,J as g,Y as h,A as i,C as j,b as k,M as l,o as p,s as r,U as s,I as u};
//# sourceMappingURL=Page-Q00E4OWK.js.map

Some files were not shown because too many files have changed in this diff Show More