All Downloads are FREE. Search and download functionalities are using the official Maven repository.

theme.keycloak.v2.admin.resources.assets.EventsSection-BTS2MqRb.js.map Maven / Gradle / Ivy

There is a newer version: 26.0.7
Show newest version
{"version":3,"file":"EventsSection-BTS2MqRb.js","sources":["../../src/events/ResourceLinks.tsx","../../src/events/AdminEvents.tsx","../../src/events/EventsSection.tsx"],"sourcesContent":["import { ReactElement } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Tooltip } from \"@patternfly/react-core\";\n\nimport type AdminEventRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/adminEventRepresentation\";\nimport { useRealm } from \"../context/realm-context/RealmContext\";\nimport { toClient } from \"../clients/routes/Client\";\nimport { toGroups } from \"../groups/routes/Groups\";\nimport { toClientScope } from \"../client-scopes/routes/ClientScope\";\nimport { toUser } from \"../user/routes/User\";\nimport { toRealmRole } from \"../realm-roles/routes/RealmRole\";\nimport { toFlow } from \"../authentication/routes/Flow\";\n\ntype ResourceLinkProps = {\n  event: AdminEventRepresentation;\n};\n\nconst MAX_TEXT_LENGTH = 38;\nconst Truncate = ({\n  text,\n  children,\n}: {\n  text?: string;\n  children: (text: string) => ReactElement;\n}) => {\n  const definedText = text || \"\";\n  const needsTruncation = definedText.length > MAX_TEXT_LENGTH;\n  const truncatedText = definedText.substring(0, MAX_TEXT_LENGTH);\n  return needsTruncation ? (\n    {children(truncatedText + \"…\")}\n  ) : (\n    children(definedText)\n  );\n};\n\nconst isLinkable = (event: AdminEventRepresentation) => {\n  if (event.operationType === \"DELETE\") {\n    return false;\n  }\n  return (\n    event.resourceType === \"USER\" ||\n    event.resourceType === \"GROUP_MEMBERSHIP\" ||\n    event.resourceType === \"GROUP\" ||\n    event.resourceType === \"CLIENT\" ||\n    event.resourceType?.startsWith(\"AUTHORIZATION_RESOURCE\") ||\n    event.resourceType === \"CLIENT_SCOPE\" ||\n    event.resourceType === \"AUTH_FLOW\" ||\n    event.resourcePath?.startsWith(\"roles-by-id\")\n  );\n};\n\nconst idRegex = new RegExp(\n  /([0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12})/,\n);\n\nconst createLink = (realm: string, event: AdminEventRepresentation) => {\n  const part = idRegex.exec(event.resourcePath!);\n  if (!part) {\n    console.warn(\"event didn't contain a valid link\", event);\n    return \"\";\n  }\n  const id = part[1];\n\n  if (\n    event.resourceType === \"CLIENT\" ||\n    event.resourceType?.startsWith(\"AUTHORIZATION_RESOURCE\")\n  ) {\n    return toClient({\n      realm,\n      clientId: id,\n      tab: event.resourceType === \"CLIENT\" ? \"settings\" : \"authorization\",\n    });\n  }\n\n  if (event.resourceType === \"GROUP\") {\n    return toGroups({ realm, id });\n  }\n\n  if (event.resourceType === \"CLIENT_SCOPE\") {\n    return toClientScope({ realm, id, tab: \"settings\" });\n  }\n\n  if (\n    event.resourceType === \"USER\" ||\n    event.resourceType === \"GROUP_MEMBERSHIP\"\n  ) {\n    return toUser({ realm, id, tab: \"settings\" });\n  }\n\n  if (event.resourceType === \"AUTH_FLOW\") {\n    return toFlow({ realm, id, usedBy: \"-\" });\n  }\n\n  if (event.resourcePath?.startsWith(\"roles-by-id\")) {\n    return toRealmRole({ realm, id, tab: \"details\" });\n  }\n\n  return \"\";\n};\n\nexport const ResourceLink = ({ event }: ResourceLinkProps) => {\n  const { realm } = useRealm();\n  return (\n    \n      {(text) =>\n        isLinkable(event) ? (\n          {text}\n        ) : (\n          {text}\n        )\n      }\n    \n  );\n};\n\nexport const CellResourceLinkRenderer = (\n  adminEvent: AdminEventRepresentation,\n) => ;\n","import type AdminEventRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/adminEventRepresentation\";\nimport {\n  KeycloakSelect,\n  SelectVariant,\n  TextControl,\n} from \"@keycloak/keycloak-ui-shared\";\nimport { CodeEditor, Language } from \"@patternfly/react-code-editor\";\nimport {\n  ActionGroup,\n  Button,\n  Chip,\n  ChipGroup,\n  DatePicker,\n  Flex,\n  FlexItem,\n  Form,\n  FormGroup,\n  Modal,\n  ModalVariant,\n  SelectOption,\n} from \"@patternfly/react-core\";\nimport {\n  Table,\n  TableVariant,\n  Tbody,\n  Td,\n  Th,\n  Thead,\n  Tr,\n  cellWidth,\n} from \"@patternfly/react-table\";\nimport { pickBy } from \"lodash-es\";\nimport { PropsWithChildren, useMemo, useState } from \"react\";\nimport { Controller, FormProvider, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { useAdminClient } from \"../admin-client\";\nimport DropdownPanel from \"../components/dropdown-panel/DropdownPanel\";\nimport { ListEmptyState } from \"../components/list-empty-state/ListEmptyState\";\nimport {\n  Action,\n  KeycloakDataTable,\n} from \"../components/table-toolbar/KeycloakDataTable\";\nimport { useRealm } from \"../context/realm-context/RealmContext\";\nimport { useServerInfo } from \"../context/server-info/ServerInfoProvider\";\nimport { prettyPrintJSON } from \"../util\";\nimport useFormatDate, { FORMAT_DATE_AND_TIME } from \"../utils/useFormatDate\";\nimport { CellResourceLinkRenderer } from \"./ResourceLinks\";\n\nimport \"./events.css\";\n\ntype DisplayDialogProps = {\n  titleKey: string;\n  onClose: () => void;\n};\n\ntype AdminEventSearchForm = {\n  resourceTypes: string[];\n  operationTypes: string[];\n  resourcePath: string;\n  dateFrom: string;\n  dateTo: string;\n  authClient: string;\n  authUser: string;\n  authRealm: string;\n  authIpAddress: string;\n};\n\nconst defaultValues: AdminEventSearchForm = {\n  resourceTypes: [],\n  operationTypes: [],\n  resourcePath: \"\",\n  dateFrom: \"\",\n  dateTo: \"\",\n  authClient: \"\",\n  authUser: \"\",\n  authRealm: \"\",\n  authIpAddress: \"\",\n};\n\nconst DisplayDialog = ({\n  titleKey,\n  onClose,\n  children,\n}: PropsWithChildren) => {\n  const { t } = useTranslation();\n  return (\n    \n      {children}\n    \n  );\n};\n\nexport const AdminEvents = () => {\n  const { adminClient } = useAdminClient();\n\n  const { t } = useTranslation();\n  const { realm } = useRealm();\n  const serverInfo = useServerInfo();\n  const formatDate = useFormatDate();\n  const resourceTypes = serverInfo.enums?.[\"resourceType\"];\n  const operationTypes = serverInfo.enums?.[\"operationType\"];\n\n  const [key, setKey] = useState(0);\n  const [searchDropdownOpen, setSearchDropdownOpen] = useState(false);\n  const [selectResourceTypesOpen, setSelectResourceTypesOpen] = useState(false);\n  const [selectOperationTypesOpen, setSelectOperationTypesOpen] =\n    useState(false);\n  const [activeFilters, setActiveFilters] = useState<\n    Partial\n  >({});\n\n  const [authEvent, setAuthEvent] = useState();\n  const [representationEvent, setRepresentationEvent] =\n    useState();\n\n  const filterLabels: Record = {\n    resourceTypes: t(\"resourceTypes\"),\n    operationTypes: t(\"operationTypes\"),\n    resourcePath: t(\"resourcePath\"),\n    dateFrom: t(\"dateFrom\"),\n    dateTo: t(\"dateTo\"),\n    authClient: t(\"client\"),\n    authUser: t(\"userId\"),\n    authRealm: t(\"realm\"),\n    authIpAddress: t(\"ipAddress\"),\n  };\n\n  const form = useForm({\n    mode: \"onChange\",\n    defaultValues,\n  });\n  const {\n    getValues,\n    reset,\n    formState: { isDirty },\n    control,\n  } = form;\n\n  function loader(first?: number, max?: number) {\n    return adminClient.realms.findAdminEvents({\n      // The admin client wants 'dateFrom' and 'dateTo' to be Date objects, however it cannot actually handle them so we need to cast to any.\n      ...(activeFilters as any),\n      realm,\n      first,\n      max,\n    });\n  }\n\n  function submitSearch() {\n    setSearchDropdownOpen(false);\n    commitFilters();\n  }\n\n  function resetSearch() {\n    reset();\n    commitFilters();\n  }\n\n  function removeFilter(key: keyof AdminEventSearchForm) {\n    const formValues: AdminEventSearchForm = { ...getValues() };\n    delete formValues[key];\n\n    reset({ ...defaultValues, ...formValues });\n    commitFilters();\n  }\n\n  function removeFilterValue(\n    key: keyof AdminEventSearchForm,\n    valueToRemove: string,\n  ) {\n    const formValues = getValues();\n    const fieldValue = formValues[key];\n    const newFieldValue = Array.isArray(fieldValue)\n      ? fieldValue.filter((val) => val !== valueToRemove)\n      : fieldValue;\n\n    reset({ ...formValues, [key]: newFieldValue });\n    commitFilters();\n  }\n\n  function commitFilters() {\n    const newFilters: Partial = pickBy(\n      getValues(),\n      (value) => value !== \"\" || (Array.isArray(value) && value.length > 0),\n    );\n\n    setActiveFilters(newFilters);\n    setKey(key + 1);\n  }\n\n  const code = useMemo(\n    () =>\n      representationEvent?.representation\n        ? prettyPrintJSON(JSON.parse(representationEvent.representation))\n        : \"\",\n    [representationEvent?.representation],\n  );\n\n  return (\n    <>\n      {authEvent && (\n         setAuthEvent(undefined)}>\n          \n            \n              \n                {t(\"attribute\")}\n                {t(\"value\")}\n              \n            \n            \n              \n                {t(\"realm\")}\n                {authEvent.authDetails?.realmId}\n              \n              \n                {t(\"client\")}\n                {authEvent.authDetails?.clientId}\n              \n              \n                {t(\"user\")}\n                {authEvent.authDetails?.userId}\n              \n              \n                {t(\"ipAddress\")}\n                {authEvent.authDetails?.ipAddress}\n              \n            \n          \n        \n      )}\n      {representationEvent && (\n         setRepresentationEvent(undefined)}\n        >\n          \n        \n      )}\n      \n            \n              \n                \n                  \n                    \n                       (\n                          \n                              setSelectResourceTypesOpen(isOpen)\n                            }\n                            selections={field.value}\n                            onSelect={(selectedValue) => {\n                              const option = selectedValue.toString();\n                              const changedValue = field.value.includes(option)\n                                ? field.value.filter((item) => item !== option)\n                                : [...field.value, option];\n\n                              field.onChange(changedValue);\n                            }}\n                            onClear={() => {\n                              field.onChange([]);\n                            }}\n                            isOpen={selectResourceTypesOpen}\n                            aria-labelledby={\"resourceTypes\"}\n                            chipGroupComponent={\n                              \n                                {field.value.map((chip) => (\n                                   {\n                                      resource.stopPropagation();\n                                      field.onChange(\n                                        field.value.filter(\n                                          (val) => val !== chip,\n                                        ),\n                                      );\n                                    }}\n                                  >\n                                    {chip}\n                                  \n                                ))}\n                              \n                            }\n                          >\n                            {resourceTypes?.map((option) => (\n                              \n                                {option}\n                              \n                            ))}\n                          \n                        )}\n                      />\n                    \n                    \n                       (\n                          \n                              setSelectOperationTypesOpen(isOpen)\n                            }\n                            selections={field.value}\n                            onSelect={(selectedValue) => {\n                              const option = selectedValue.toString();\n                              const changedValue = field.value.includes(option)\n                                ? field.value.filter((item) => item !== option)\n                                : [...field.value, option];\n\n                              field.onChange(changedValue);\n                            }}\n                            onClear={() => {\n                              field.onChange([]);\n                            }}\n                            isOpen={selectOperationTypesOpen}\n                            aria-labelledby={\"operationTypes\"}\n                            chipGroupComponent={\n                              \n                                {field.value.map((chip) => (\n                                   {\n                                      operation.stopPropagation();\n                                      field.onChange(\n                                        field.value.filter(\n                                          (val) => val !== chip,\n                                        ),\n                                      );\n                                    }}\n                                  >\n                                    {chip}\n                                  \n                                ))}\n                              \n                            }\n                          >\n                            {operationTypes?.map((option) => (\n                              \n                                {option}\n                              \n                            ))}\n                          \n                        )}\n                      />\n                    \n                    \n                    \n                    \n                    \n                    \n                    \n                       (\n                           field.onChange(value)}\n                            inputProps={{ id: \"kc-dateFrom\" }}\n                          />\n                        )}\n                      />\n                    \n                    \n                       (\n                           field.onChange(value)}\n                            inputProps={{ id: \"kc-dateTo\" }}\n                          />\n                        )}\n                      />\n                    \n                    \n                      \n                        {t(\"searchAdminEventsBtn\")}\n                      \n                      \n                        {t(\"resetBtn\")}\n                      \n                    \n                  \n                \n              \n              \n                {Object.entries(activeFilters).length > 0 && (\n                  
\n {Object.entries(activeFilters).map((filter) => {\n const [key, value] = filter as [\n keyof AdminEventSearchForm,\n string | string[],\n ];\n\n return (\n removeFilter(key)}\n >\n {typeof value === \"string\" ? (\n {value}\n ) : (\n value.map((entry) => (\n removeFilterValue(key, entry)}\n >\n {entry}\n \n ))\n )}\n \n );\n })}\n
\n )}\n
\n \n \n }\n actions={\n [\n {\n title: t(\"auth\"),\n onRowClick: (event) => setAuthEvent(event),\n },\n {\n title: t(\"representation\"),\n onRowClick: (event) => setRepresentationEvent(event),\n },\n ] as Action[]\n }\n columns={[\n {\n name: \"time\",\n displayKey: \"time\",\n cellRenderer: (row) =>\n formatDate(new Date(row.time!), FORMAT_DATE_AND_TIME),\n },\n {\n name: \"resourcePath\",\n displayKey: \"resourcePath\",\n cellRenderer: CellResourceLinkRenderer,\n },\n {\n name: \"resourceType\",\n displayKey: \"resourceType\",\n },\n {\n name: \"operationType\",\n displayKey: \"operationType\",\n transforms: [cellWidth(10)],\n },\n {\n name: \"\",\n displayKey: \"user\",\n cellRenderer: (event) => event.authDetails?.userId || \"\",\n },\n ]}\n emptyState={\n \n }\n isSearching={Object.keys(activeFilters).length > 0}\n />\n \n );\n};\n","import type EventRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/eventRepresentation\";\nimport type EventType from \"@keycloak/keycloak-admin-client/lib/defs/eventTypes\";\nimport type { RealmEventsConfigRepresentation } from \"@keycloak/keycloak-admin-client/lib/defs/realmEventsConfigRepresentation\";\nimport {\n KeycloakSelect,\n SelectVariant,\n TextControl,\n} from \"@keycloak/keycloak-ui-shared\";\nimport {\n ActionGroup,\n Button,\n Chip,\n ChipGroup,\n DatePicker,\n DescriptionList,\n DescriptionListDescription,\n DescriptionListGroup,\n DescriptionListTerm,\n Flex,\n FlexItem,\n Form,\n FormGroup,\n Icon,\n PageSection,\n SelectOption,\n Tab,\n TabTitleText,\n Tooltip,\n} from \"@patternfly/react-core\";\nimport { CheckCircleIcon, WarningTriangleIcon } from \"@patternfly/react-icons\";\nimport { cellWidth } from \"@patternfly/react-table\";\nimport { pickBy } from \"lodash-es\";\nimport { useState } from \"react\";\nimport { Controller, FormProvider, useForm } from \"react-hook-form\";\nimport { Trans, useTranslation } from \"react-i18next\";\nimport { Link } from \"react-router-dom\";\nimport { useAdminClient } from \"../admin-client\";\nimport DropdownPanel from \"../components/dropdown-panel/DropdownPanel\";\nimport { ListEmptyState } from \"../components/list-empty-state/ListEmptyState\";\nimport {\n RoutableTabs,\n useRoutableTab,\n} from \"../components/routable-tabs/RoutableTabs\";\nimport { KeycloakDataTable } from \"../components/table-toolbar/KeycloakDataTable\";\nimport { ViewHeader } from \"../components/view-header/ViewHeader\";\nimport { useRealm } from \"../context/realm-context/RealmContext\";\nimport helpUrls from \"../help-urls\";\nimport { toRealmSettings } from \"../realm-settings/routes/RealmSettings\";\nimport { toUser } from \"../user/routes/User\";\nimport { useFetch } from \"../utils/useFetch\";\nimport useFormatDate, { FORMAT_DATE_AND_TIME } from \"../utils/useFormatDate\";\nimport { AdminEvents } from \"./AdminEvents\";\nimport { EventsTab, toEvents } from \"./routes/Events\";\n\nimport \"./events.css\";\n\ntype UserEventSearchForm = {\n client: string;\n dateFrom: string;\n dateTo: string;\n user: string;\n type: EventType[];\n ipAddress: string;\n};\n\nconst defaultValues: UserEventSearchForm = {\n client: \"\",\n dateFrom: \"\",\n dateTo: \"\",\n user: \"\",\n type: [],\n ipAddress: \"\",\n};\n\nconst StatusRow = (event: EventRepresentation) =>\n !event.error ? (\n \n \n \n \n {event.type}\n \n ) : (\n \n \n \n \n \n {event.type}\n \n \n );\n\nconst DetailCell = (event: EventRepresentation) => (\n \n {event.details &&\n Object.entries(event.details).map(([key, value]) => (\n \n {key}\n {value}\n \n ))}\n {event.error && (\n \n error\n {event.error}\n \n )}\n \n);\n\nconst UserDetailLink = (event: EventRepresentation) => {\n const { t } = useTranslation();\n const { realm } = useRealm();\n\n return (\n <>\n {event.userId && (\n \n {event.userId}\n \n )}\n {!event.userId && t(\"noUserDetails\")}\n \n );\n};\n\nexport default function EventsSection() {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n const { realm } = useRealm();\n const formatDate = useFormatDate();\n const [key, setKey] = useState(0);\n const [searchDropdownOpen, setSearchDropdownOpen] = useState(false);\n const [selectOpen, setSelectOpen] = useState(false);\n const [events, setEvents] = useState();\n const [activeFilters, setActiveFilters] = useState<\n Partial\n >({});\n\n const filterLabels: Record = {\n client: t(\"client\"),\n dateFrom: t(\"dateFrom\"),\n dateTo: t(\"dateTo\"),\n user: t(\"userId\"),\n type: t(\"eventType\"),\n ipAddress: t(\"ipAddress\"),\n };\n\n const form = useForm({\n mode: \"onChange\",\n defaultValues,\n });\n\n const {\n getValues,\n reset,\n formState: { isDirty },\n control,\n handleSubmit,\n } = form;\n\n useFetch(\n () => adminClient.realms.getConfigEvents({ realm }),\n (events) => setEvents(events),\n [],\n );\n\n function loader(first?: number, max?: number) {\n return adminClient.realms.findEvents({\n // The admin client wants 'dateFrom' and 'dateTo' to be Date objects, however it cannot actually handle them so we need to cast to any.\n ...(activeFilters as any),\n realm,\n first,\n max,\n });\n }\n\n const useTab = (tab: EventsTab) => useRoutableTab(toEvents({ realm, tab }));\n\n const userEventsTab = useTab(\"user-events\");\n const adminEventsTab = useTab(\"admin-events\");\n\n function onSubmit() {\n setSearchDropdownOpen(false);\n commitFilters();\n }\n\n function resetSearch() {\n reset();\n commitFilters();\n }\n\n function removeFilter(key: keyof UserEventSearchForm) {\n const formValues: UserEventSearchForm = { ...getValues() };\n delete formValues[key];\n\n reset({ ...defaultValues, ...formValues });\n commitFilters();\n }\n\n function removeFilterValue(\n key: keyof UserEventSearchForm,\n valueToRemove: EventType,\n ) {\n const formValues = getValues();\n const fieldValue = formValues[key];\n const newFieldValue = Array.isArray(fieldValue)\n ? fieldValue.filter((val) => val !== valueToRemove)\n : fieldValue;\n\n reset({ ...formValues, [key]: newFieldValue });\n commitFilters();\n }\n\n function commitFilters() {\n const newFilters: Partial = pickBy(\n getValues(),\n (value) => value !== \"\" || (Array.isArray(value) && value.length > 0),\n );\n\n setActiveFilters(newFilters);\n setKey(key + 1);\n }\n\n const userEventSearchFormDisplay = () => {\n return (\n \n \n \n \n \n \n \n (\n setSelectOpen(isOpen)}\n selections={field.value}\n onSelect={(selectedValue) => {\n const option = selectedValue.toString() as EventType;\n const changedValue = field.value.includes(option)\n ? field.value.filter((item) => item !== option)\n : [...field.value, option];\n\n field.onChange(changedValue);\n }}\n onClear={() => {\n field.onChange([]);\n }}\n isOpen={selectOpen}\n aria-labelledby={\"eventType\"}\n chipGroupComponent={\n \n {field.value.map((chip) => (\n {\n event.stopPropagation();\n field.onChange(\n field.value.filter((val) => val !== chip),\n );\n }}\n >\n {t(`eventTypes.${chip}.name`)}\n \n ))}\n \n }\n >\n {events?.enabledEventTypes?.map((option) => (\n \n {t(`eventTypes.${option}.name`)}\n \n ))}\n \n )}\n />\n \n \n \n (\n field.onChange(value)}\n inputProps={{ id: \"kc-dateFrom\" }}\n />\n )}\n />\n \n \n (\n field.onChange(value)}\n inputProps={{ id: \"kc-dateTo\" }}\n />\n )}\n />\n \n \n \n \n {t(\"searchUserEventsBtn\")}\n \n \n {t(\"resetBtn\")}\n \n \n \n \n \n \n {Object.entries(activeFilters).length > 0 && (\n
\n {Object.entries(activeFilters).map((filter) => {\n const [key, value] = filter as [\n keyof UserEventSearchForm,\n string | EventType[],\n ];\n\n return (\n removeFilter(key)}\n >\n {typeof value === \"string\" ? (\n {value}\n ) : (\n value.map((entry) => (\n removeFilterValue(key, entry)}\n >\n {t(`eventTypes.${entry}.name`)}\n \n ))\n )}\n \n );\n })}\n
\n )}\n
\n \n
\n );\n };\n\n return (\n <>\n \n If you want to configure user events, Admin events or Event\n listeners, please enter\n \n {t(\"eventConfig\")}\n \n page realm settings to configure.\n \n }\n helpUrl={helpUrls.eventsUrl}\n divider={false}\n />\n \n \n {t(\"userEvents\")}}\n {...userEventsTab}\n >\n
\n event.details !== undefined,\n cellRenderer: DetailCell,\n },\n ]}\n isPaginated\n ariaLabelKey=\"titleEvents\"\n toolbarItem={userEventSearchFormDisplay()}\n columns={[\n {\n name: \"time\",\n displayKey: \"time\",\n cellRenderer: (row) =>\n formatDate(new Date(row.time!), FORMAT_DATE_AND_TIME),\n },\n {\n name: \"userId\",\n displayKey: \"user\",\n cellRenderer: UserDetailLink,\n },\n {\n name: \"type\",\n displayKey: \"eventType\",\n cellRenderer: StatusRow,\n },\n {\n name: \"ipAddress\",\n displayKey: \"ipAddress\",\n transforms: [cellWidth(10)],\n },\n {\n name: \"clientId\",\n displayKey: \"client\",\n },\n ]}\n emptyState={\n \n }\n isSearching={Object.keys(activeFilters).length > 0}\n />\n
\n \n {t(\"adminEvents\")}}\n data-testid=\"admin-events-tab\"\n {...adminEventsTab}\n >\n \n \n \n
\n \n );\n}\n"],"names":["MAX_TEXT_LENGTH","Truncate","text","children","definedText","needsTruncation","truncatedText","jsx","Tooltip","isLinkable","event","idRegex","createLink","realm","part","id","toClient","toGroups","toClientScope","toUser","toFlow","toRealmRole","ResourceLink","useRealm","Link","CellResourceLinkRenderer","adminEvent","defaultValues","DisplayDialog","titleKey","onClose","t","useTranslation","Modal","ModalVariant","AdminEvents","adminClient","useAdminClient","serverInfo","useServerInfo","formatDate","useFormatDate","resourceTypes","operationTypes","key","setKey","useState","searchDropdownOpen","setSearchDropdownOpen","selectResourceTypesOpen","setSelectResourceTypesOpen","selectOperationTypesOpen","setSelectOperationTypesOpen","activeFilters","setActiveFilters","authEvent","setAuthEvent","representationEvent","setRepresentationEvent","filterLabels","form","useForm","getValues","reset","isDirty","control","loader","first","max","submitSearch","commitFilters","resetSearch","removeFilter","formValues","removeFilterValue","valueToRemove","fieldValue","newFieldValue","val","newFilters","pickBy","value","code","useMemo","prettyPrintJSON","jsxs","Fragment","Table","TableVariant","Thead","Tr","Th","Tbody","Td","CodeEditor","Language","KeycloakDataTable","FormProvider","Flex","FlexItem","DropdownPanel","Form","FormGroup","Controller","field","KeycloakSelect","SelectVariant","isOpen","selectedValue","option","changedValue","item","ChipGroup","chip","Chip","resource","SelectOption","operation","TextControl","DatePicker","_","ActionGroup","Button","filter","entry","row","FORMAT_DATE_AND_TIME","cellWidth","ListEmptyState","StatusRow","Icon","WarningTriangleIcon","CheckCircleIcon","DetailCell","DescriptionList","DescriptionListGroup","DescriptionListTerm","DescriptionListDescription","UserDetailLink","EventsSection","selectOpen","setSelectOpen","events","setEvents","handleSubmit","useFetch","useTab","tab","useRoutableTab","toEvents","userEventsTab","adminEventsTab","onSubmit","userEventSearchFormDisplay","ViewHeader","Trans","toRealmSettings","helpUrls","PageSection","RoutableTabs","Tab","TabTitleText"],"mappings":"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"}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy