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

theme.keycloak.v2.admin.resources.assets.UsersSection-9bb15fbb.js.map Maven / Gradle / Ivy

There is a newer version: 25.0.1
Show newest version
{"version":3,"file":"UsersSection-9bb15fbb.js","sources":["../../src/components/users/UserDataTableAttributeSearchForm.tsx","../../src/user/details/SearchFilter.tsx","../../src/components/users/UserDataTableToolbarItems.tsx","../../src/components/users/UserDataTable.tsx","../../src/user/UsersSection.tsx"],"sourcesContent":["import type UserProfileConfig from \"@keycloak/keycloak-admin-client/lib/defs/userProfileConfig\";\nimport {\n  ActionGroup,\n  Alert,\n  AlertVariant,\n  Button,\n  ButtonVariant,\n  InputGroup,\n  Select,\n  SelectOption,\n  SelectVariant,\n  Text,\n  TextContent,\n  TextVariants,\n} from \"@patternfly/react-core\";\nimport { Form } from \"react-router-dom\";\nimport { KeycloakTextInput } from \"../keycloak-text-input/KeycloakTextInput\";\nimport { useTranslation } from \"react-i18next\";\nimport { useForm } from \"react-hook-form\";\nimport { isBundleKey, unWrap } from \"../../user/utils\";\nimport { CheckIcon } from \"@patternfly/react-icons\";\nimport { useAlerts } from \"../alert/Alerts\";\nimport { ReactNode, useState } from \"react\";\nimport { UserAttribute } from \"./UserDataTable\";\n\ntype UserDataTableAttributeSearchFormProps = {\n  activeFilters: UserAttribute[];\n  setActiveFilters: (filters: UserAttribute[]) => void;\n  profile: UserProfileConfig;\n  createAttributeSearchChips: () => ReactNode;\n  searchUserWithAttributes: () => void;\n};\n\nexport function UserDataTableAttributeSearchForm({\n  activeFilters,\n  setActiveFilters,\n  profile,\n  createAttributeSearchChips,\n  searchUserWithAttributes,\n}: UserDataTableAttributeSearchFormProps) {\n  const { t } = useTranslation(\"users\");\n  const { addAlert } = useAlerts();\n  const [selectAttributeKeyOpen, setSelectAttributeKeyOpen] = useState(false);\n\n  const defaultValues: UserAttribute = {\n    name: \"\",\n    displayName: \"\",\n    value: \"\",\n  };\n\n  const {\n    getValues,\n    register,\n    reset,\n    formState: { errors },\n    setValue,\n    setError,\n    clearErrors,\n  } = useForm({\n    mode: \"onChange\",\n    defaultValues,\n  });\n\n  const isAttributeKeyDuplicate = () => {\n    return activeFilters.some((filter) => filter.name === getValues().name);\n  };\n\n  const isAttributeNameValid = () => {\n    let valid = false;\n    if (!getValues().name.length) {\n      setError(\"name\", {\n        type: \"empty\",\n        message: t(\"searchUserByAttributeMissingKeyError\"),\n      });\n    } else if (\n      activeFilters.some((filter) => filter.name === getValues().name)\n    ) {\n      setError(\"name\", {\n        type: \"conflict\",\n        message: t(\"searchUserByAttributeKeyAlreadyInUseError\"),\n      });\n    } else {\n      valid = true;\n    }\n    return valid;\n  };\n\n  const isAttributeValueValid = () => {\n    let valid = false;\n    if (!getValues().value.length) {\n      setError(\"value\", {\n        type: \"empty\",\n        message: t(\"searchUserByAttributeMissingValueError\"),\n      });\n    } else {\n      valid = true;\n    }\n    return valid;\n  };\n\n  const isAttributeValid = () =>\n    isAttributeNameValid() && isAttributeValueValid();\n\n  const addToFilter = () => {\n    if (isAttributeValid()) {\n      setActiveFilters([\n        ...activeFilters,\n        {\n          ...getValues(),\n        },\n      ]);\n      reset();\n    } else {\n      errors.name?.message &&\n        addAlert(errors.name.message, AlertVariant.danger);\n      errors.value?.message &&\n        addAlert(errors.value.message, AlertVariant.danger);\n    }\n  };\n\n  const clearActiveFilters = () => {\n    const filtered = [...activeFilters].filter(\n      (chip) => chip.name !== chip.name\n    );\n    setActiveFilters(filtered);\n  };\n\n  const createAttributeKeyInputField = () => {\n    if (profile) {\n      return (\n         setSelectAttributeKeyOpen(isOpen)}\n          selections={getValues().displayName}\n          onSelect={(_, selectedValue) => {\n            setValue(\"displayName\", selectedValue.toString());\n            if (isAttributeKeyDuplicate()) {\n              setError(\"name\", { type: \"conflict\" });\n            } else {\n              clearErrors(\"name\");\n            }\n          }}\n          isOpen={selectAttributeKeyOpen}\n          placeholderText={t(\"selectAttribute\")}\n          validated={errors.name && \"error\"}\n          maxHeight={300}\n          {...register(\"displayName\", {\n            required: true,\n            validate: isAttributeNameValid,\n          })}\n        >\n          {profile.attributes?.map((option) => (\n             {\n                e.stopPropagation();\n                setSelectAttributeKeyOpen(false);\n                setValue(\"name\", option.name!);\n              }}\n            />\n          ))}\n        \n      );\n    } else {\n      return (\n         e.key === \"Enter\" && addToFilter()}\n          {...register(\"name\", {\n            required: true,\n            validate: isAttributeNameValid,\n          })}\n        />\n      );\n    }\n  };\n\n  return (\n    
\n \n {t(\"selectAttributes\")}\n \n \n \n
\n {t(\"common:key\")}\n
\n
\n {t(\"common:value\")}\n
\n
\n
\n {createAttributeKeyInputField()}\n
\n
\n \n {\n if (e.key === \"Enter\") {\n e.preventDefault();\n addToFilter();\n }\n }}\n {...register(\"value\", {\n required: true,\n validate: isAttributeValueValid,\n })}\n />\n }\n onClick={addToFilter}\n />\n \n
\n {createAttributeSearchChips()}\n \n \n {t(\"common:search\")}\n \n {\n reset();\n clearActiveFilters();\n }}\n >\n {t(\"common:reset\")}\n \n \n \n );\n}\n","import { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n Dropdown,\n DropdownItem,\n DropdownToggle,\n Select,\n SelectOption,\n ToolbarItem,\n} from \"@patternfly/react-core\";\nimport { FilterIcon } from \"@patternfly/react-icons\";\n\nexport type SearchType = \"default\" | \"attribute\";\n\ntype SearchToolbarProps = SearchDropdownProps;\n\ntype SearchDropdownProps = {\n searchType: SearchType;\n onSelect: (value: SearchType) => void;\n};\n\nexport const SearchDropdown = ({\n searchType,\n onSelect,\n}: SearchDropdownProps) => {\n const { t } = useTranslation(\"users\");\n const [searchToggle, setSearchToggle] = useState(false);\n\n const createDropdown = (searchType: SearchType) => (\n {\n onSelect(searchType);\n setSearchToggle(false);\n }}\n >\n {t(`searchType.${searchType}`)}\n \n );\n const options = [createDropdown(\"default\"), createDropdown(\"attribute\")];\n\n return (\n \n {t(`searchType.${searchType}`)}\n \n }\n isOpen={searchToggle}\n dropdownItems={options}\n />\n );\n};\n\nexport const SearchToolbar = ({ searchType, onSelect }: SearchToolbarProps) => {\n const { t } = useTranslation(\"users\");\n const [open, setOpen] = useState(false);\n\n return (\n <>\n \n \n \n \n setOpen(false)}\n >\n {t(\"default\")}\n {t(\"attribute\")}\n \n \n \n );\n};\n","import type RealmRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/realmRepresentation\";\nimport type UserProfileConfig from \"@keycloak/keycloak-admin-client/lib/defs/userProfileConfig\";\nimport {\n Button,\n ButtonVariant,\n Dropdown,\n DropdownItem,\n DropdownToggle,\n InputGroup,\n KebabToggle,\n SearchInput,\n ToolbarItem,\n} from \"@patternfly/react-core\";\nimport { ReactNode, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useAccess } from \"../../context/access/Access\";\nimport { UserDataTableAttributeSearchForm } from \"./UserDataTableAttributeSearchForm\";\nimport { ArrowRightIcon } from \"@patternfly/react-icons\";\nimport { SearchDropdown, SearchType } from \"../../user/details/SearchFilter\";\nimport { UserAttribute } from \"./UserDataTable\";\n\ntype UserDataTableToolbarItemsProps = {\n realm: RealmRepresentation;\n hasSelectedRows: boolean;\n toggleDeleteDialog: () => void;\n toggleUnlockUsersDialog: () => void;\n goToCreate: () => void;\n searchType: SearchType;\n setSearchType: (searchType: SearchType) => void;\n searchUser: string;\n setSearchUser: (searchUser: string) => void;\n activeFilters: UserAttribute[];\n setActiveFilters: (activeFilters: UserAttribute[]) => void;\n refresh: () => void;\n profile: UserProfileConfig;\n clearAllFilters: () => void;\n createAttributeSearchChips: () => ReactNode;\n searchUserWithAttributes: () => void;\n};\n\nexport function UserDataTableToolbarItems({\n realm,\n hasSelectedRows,\n toggleDeleteDialog,\n toggleUnlockUsersDialog,\n goToCreate,\n searchType,\n setSearchType,\n searchUser,\n setSearchUser,\n activeFilters,\n setActiveFilters,\n refresh,\n profile,\n clearAllFilters,\n createAttributeSearchChips,\n searchUserWithAttributes,\n}: UserDataTableToolbarItemsProps) {\n const { t } = useTranslation(\"users\");\n const [kebabOpen, setKebabOpen] = useState(false);\n const [searchDropdownOpen, setSearchDropdownOpen] = useState(false);\n\n const { hasAccess } = useAccess();\n\n // Only needs query-users access to attempt add/delete of users.\n // This is because the user could have fine-grained access to users\n // of a group. There is no way to know this without searching the\n // permissions of every group.\n const isManager = hasAccess(\"query-users\");\n\n const searchItem = () => {\n return (\n \n \n {\n clearAllFilters();\n setSearchType(searchType);\n }}\n />\n {searchType === \"default\" && defaultSearchInput()}\n {searchType === \"attribute\" && attributeSearchInput()}\n \n \n );\n };\n\n const defaultSearchInput = () => {\n return (\n \n {\n setSearchUser(value);\n }}\n onSearch={() => {\n setSearchUser(searchUser);\n refresh();\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n setSearchUser(searchUser);\n refresh();\n }\n }}\n onClear={() => {\n setSearchUser(\"\");\n }}\n />\n \n );\n };\n\n const attributeSearchInput = () => {\n return (\n <>\n {\n setSearchDropdownOpen(isOpen);\n }}\n className=\"keycloak__user_attribute_search_selector_dropdown__toggle\"\n >\n {t(\"selectAttributes\")}\n \n }\n isOpen={searchDropdownOpen}\n >\n \n \n }\n variant=\"control\"\n onClick={searchUserWithAttributes}\n />\n \n );\n };\n\n const bruteForceProtectionToolbarItem = !realm.bruteForceProtected ? (\n \n \n {t(\"deleteUser\")}\n \n \n ) : (\n \n setKebabOpen(open)} />}\n isOpen={kebabOpen}\n isPlain\n dropdownItems={[\n {\n toggleDeleteDialog();\n setKebabOpen(false);\n }}\n >\n {t(\"deleteUser\")}\n ,\n\n {\n toggleUnlockUsersDialog();\n setKebabOpen(false);\n }}\n >\n {t(\"unlockAllUsers\")}\n ,\n ]}\n />\n \n );\n\n const actionItems = (\n <>\n \n \n \n {bruteForceProtectionToolbarItem}\n \n );\n\n return (\n <>\n {searchItem()}\n {isManager ? actionItems : null}\n \n );\n}\n","import type ComponentRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/componentRepresentation\";\nimport type RealmRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/realmRepresentation\";\nimport type UserProfileConfig from \"@keycloak/keycloak-admin-client/lib/defs/userProfileConfig\";\nimport type UserRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/userRepresentation\";\nimport {\n AlertVariant,\n Button,\n ButtonVariant,\n Chip,\n ChipGroup,\n EmptyState,\n FlexItem,\n Label,\n Text,\n TextContent,\n Toolbar,\n ToolbarContent,\n ToolbarItem,\n Tooltip,\n} from \"@patternfly/react-core\";\nimport {\n ExclamationCircleIcon,\n InfoCircleIcon,\n WarningTriangleIcon,\n} from \"@patternfly/react-icons\";\nimport type { IRowData } from \"@patternfly/react-table\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useNavigate } from \"react-router-dom\";\n\nimport { adminClient } from \"../../admin-client\";\nimport { useAlerts } from \"../alert/Alerts\";\nimport { useConfirmDialog } from \"../confirm-dialog/ConfirmDialog\";\nimport { KeycloakSpinner } from \"../keycloak-spinner/KeycloakSpinner\";\nimport { ListEmptyState } from \"../list-empty-state/ListEmptyState\";\nimport { BruteUser, findUsers } from \"../role-mapping/resource\";\nimport { KeycloakDataTable } from \"../table-toolbar/KeycloakDataTable\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport { emptyFormatter } from \"../../util\";\nimport { useFetch } from \"../../utils/useFetch\";\nimport { toAddUser } from \"../../user/routes/AddUser\";\nimport { toUser } from \"../../user/routes/User\";\nimport { UserDataTableToolbarItems } from \"./UserDataTableToolbarItems\";\nimport { SearchType } from \"../../user/details/SearchFilter\";\n\nexport type UserAttribute = {\n name: string;\n displayName: string;\n value: string;\n};\n\nexport function UserDataTable() {\n const { t } = useTranslation(\"users\");\n const { addAlert, addError } = useAlerts();\n const { realm: realmName } = useRealm();\n const navigate = useNavigate();\n const [userStorage, setUserStorage] = useState();\n const [searchUser, setSearchUser] = useState(\"\");\n const [realm, setRealm] = useState();\n const [selectedRows, setSelectedRows] = useState([]);\n const [searchType, setSearchType] = useState(\"default\");\n const [activeFilters, setActiveFilters] = useState([]);\n const [profile, setProfile] = useState({});\n const [query, setQuery] = useState(\"\");\n\n const [key, setKey] = useState(0);\n const refresh = () => setKey(key + 1);\n\n useFetch(\n async () => {\n const testParams = {\n type: \"org.keycloak.storage.UserStorageProvider\",\n };\n\n try {\n return await Promise.all([\n adminClient.components.find(testParams),\n adminClient.realms.findOne({ realm: realmName }),\n adminClient.users.getProfile(),\n ]);\n } catch {\n return [[], {}, {}] as [\n ComponentRepresentation[],\n RealmRepresentation | undefined,\n UserProfileConfig\n ];\n }\n },\n ([storageProviders, realm, profile]) => {\n setUserStorage(\n storageProviders.filter((p) => p.config?.enabled[0] === \"true\")\n );\n setRealm(realm);\n setProfile(profile);\n },\n []\n );\n\n const UserDetailLink = (user: UserRepresentation) => (\n \n {user.username}\n \n );\n\n const loader = async (first?: number, max?: number, search?: string) => {\n const params: { [name: string]: string | number } = {\n first: first!,\n max: max!,\n q: query!,\n };\n\n const searchParam = search || searchUser || \"\";\n if (searchParam) {\n params.search = searchParam;\n }\n\n if (!listUsers && !searchParam) {\n return [];\n }\n\n try {\n return await findUsers({\n briefRepresentation: true,\n ...params,\n });\n } catch (error) {\n if (userStorage?.length) {\n addError(\"users:noUsersFoundErrorStorage\", error);\n } else {\n addError(\"users:noUsersFoundError\", error);\n }\n return [];\n }\n };\n\n const [toggleUnlockUsersDialog, UnlockUsersConfirm] = useConfirmDialog({\n titleKey: \"users:unlockAllUsers\",\n messageKey: \"users:unlockUsersConfirm\",\n continueButtonLabel: \"users:unlock\",\n onConfirm: async () => {\n try {\n await adminClient.attackDetection.delAll();\n refresh();\n addAlert(t(\"unlockUsersSuccess\"), AlertVariant.success);\n } catch (error) {\n addError(\"users:unlockUsersError\", error);\n }\n },\n });\n\n const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n titleKey: \"users:deleteConfirm\",\n messageKey: t(\"deleteConfirmDialog\", { count: selectedRows.length }),\n continueButtonLabel: \"delete\",\n continueButtonVariant: ButtonVariant.danger,\n onConfirm: async () => {\n try {\n for (const user of selectedRows) {\n await adminClient.users.del({ id: user.id! });\n }\n setSelectedRows([]);\n clearAllFilters();\n addAlert(t(\"userDeletedSuccess\"), AlertVariant.success);\n } catch (error) {\n addError(\"users:userDeletedError\", error);\n }\n },\n });\n\n const StatusRow = (user: BruteUser) => {\n return (\n <>\n {!user.enabled && (\n \n )}\n {user.bruteForceStatus?.disabled && (\n \n )}\n {user.enabled && !user.bruteForceStatus?.disabled && \"—\"}\n \n );\n };\n\n const ValidatedEmail = (user: UserRepresentation) => {\n return (\n <>\n {!user.emailVerified && (\n {t(\"notVerified\")}}\n >\n \n \n )}{\" \"}\n {emptyFormatter()(user.email)}\n \n );\n };\n\n const goToCreate = () => navigate(toAddUser({ realm: realmName }));\n\n if (!userStorage || !realm) {\n return ;\n }\n\n //should *only* list users when no user federation is configured\n const listUsers = !(userStorage.length > 0);\n\n const clearAllFilters = () => {\n const filtered = [...activeFilters].filter(\n (chip) => chip.name !== chip.name\n );\n setActiveFilters(filtered);\n setSearchUser(\"\");\n setQuery(\"\");\n refresh();\n };\n\n const createQueryString = (filters: UserAttribute[]) => {\n return filters.map((filter) => `${filter.name}:${filter.value}`).join(\" \");\n };\n\n const searchUserWithAttributes = () => {\n const attributes = createQueryString(activeFilters);\n setQuery(attributes);\n refresh();\n };\n\n const createAttributeSearchChips = () => {\n return (\n \n {activeFilters.length > 0 && (\n <>\n {Object.values(activeFilters).map((entry) => {\n return (\n {\n event.stopPropagation();\n\n const filtered = [...activeFilters].filter(\n (chip) => chip.name !== entry.name\n );\n const attributes = createQueryString(filtered);\n\n setActiveFilters(filtered);\n setQuery(attributes);\n refresh();\n }}\n >\n \n {entry.value}\n \n \n );\n })}\n \n )}\n \n );\n };\n\n const toolbar = () => {\n return (\n \n );\n };\n\n const subtoolbar = () => {\n if (!activeFilters.length) {\n return;\n }\n return (\n
\n {createAttributeSearchChips()}\n \n {\n clearAllFilters();\n }}\n >\n {t(\"common:clearAllFilters\")}\n \n \n
\n );\n };\n\n return (\n <>\n \n \n setSelectedRows([...rows])}\n emptyState={\n !listUsers ? (\n <>\n \n {toolbar()}\n \n \n \n {t(\"searchForUserDescription\")}\n \n \n \n ) : (\n \n )\n }\n toolbarItem={toolbar()}\n subToolbar={subtoolbar()}\n actionResolver={(rowData: IRowData) => {\n const user: UserRepresentation = rowData.data;\n if (!user.access?.manage) return [];\n\n return [\n {\n title: t(\"common:delete\"),\n onClick: () => {\n setSelectedRows([user]);\n toggleDeleteDialog();\n },\n },\n ];\n }}\n columns={[\n {\n name: \"username\",\n displayKey: \"users:username\",\n cellRenderer: UserDetailLink,\n },\n {\n name: \"email\",\n displayKey: \"users:email\",\n cellRenderer: ValidatedEmail,\n },\n {\n name: \"lastName\",\n displayKey: \"users:lastName\",\n cellFormatters: [emptyFormatter()],\n },\n {\n name: \"firstName\",\n displayKey: \"users:firstName\",\n cellFormatters: [emptyFormatter()],\n },\n {\n name: \"status\",\n displayKey: \"users:status\",\n cellRenderer: StatusRow,\n },\n ]}\n />\n \n );\n}\n","import { useTranslation } from \"react-i18next\";\nimport { PageSection, Tab, TabTitleText } from \"@patternfly/react-core\";\n\nimport { ViewHeader } from \"../components/view-header/ViewHeader\";\nimport { useRealm } from \"../context/realm-context/RealmContext\";\nimport helpUrls from \"../help-urls\";\nimport { PermissionsTab } from \"../components/permission-tab/PermissionTab\";\nimport { UserDataTable } from \"../components/users/UserDataTable\";\nimport { toUsers, UserTab } from \"./routes/Users\";\nimport {\n RoutableTabs,\n useRoutableTab,\n} from \"../components/routable-tabs/RoutableTabs\";\nimport useIsFeatureEnabled, { Feature } from \"../utils/useIsFeatureEnabled\";\nimport \"./user-section.css\";\n\nexport default function UsersSection() {\n const { t } = useTranslation(\"users\");\n const { realm: realmName } = useRealm();\n const isFeatureEnabled = useIsFeatureEnabled();\n\n const useTab = (tab: UserTab) =>\n useRoutableTab(\n toUsers({\n realm: realmName,\n tab,\n })\n );\n\n const listTab = useTab(\"list\");\n const permissionsTab = useTab(\"permissions\");\n\n return (\n <>\n \n \n \n {t(\"userList\")}}\n {...listTab}\n >\n \n \n {isFeatureEnabled(Feature.AdminFineGrainedAuthz) && (\n {t(\"common:permissions\")}}\n {...permissionsTab}\n >\n \n \n )}\n \n \n \n );\n}\n"],"names":["UserDataTableAttributeSearchForm","activeFilters","setActiveFilters","profile","createAttributeSearchChips","searchUserWithAttributes","t","useTranslation","addAlert","useAlerts","selectAttributeKeyOpen","setSelectAttributeKeyOpen","useState","defaultValues","getValues","register","reset","errors","setValue","setError","clearErrors","useForm","isAttributeKeyDuplicate","filter","isAttributeNameValid","valid","isAttributeValueValid","isAttributeValid","addToFilter","AlertVariant","clearActiveFilters","filtered","chip","createAttributeKeyInputField","jsx","Select","SelectVariant","isOpen","_","selectedValue","option","SelectOption","isBundleKey","unWrap","e","KeycloakTextInput","jsxs","Form","TextContent","Text","TextVariants","Alert","InputGroup","Button","CheckIcon","ActionGroup","ButtonVariant","SearchDropdown","searchType","onSelect","searchToggle","setSearchToggle","createDropdown","DropdownItem","options","Dropdown","DropdownToggle","FilterIcon","UserDataTableToolbarItems","realm","hasSelectedRows","toggleDeleteDialog","toggleUnlockUsersDialog","goToCreate","setSearchType","searchUser","setSearchUser","refresh","clearAllFilters","kebabOpen","setKebabOpen","searchDropdownOpen","setSearchDropdownOpen","hasAccess","useAccess","isManager","searchItem","ToolbarItem","defaultSearchInput","attributeSearchInput","SearchInput","value","Fragment","ArrowRightIcon","bruteForceProtectionToolbarItem","KebabToggle","open","actionItems","UserDataTable","addError","realmName","useRealm","navigate","useNavigate","userStorage","setUserStorage","setRealm","selectedRows","setSelectedRows","setProfile","query","setQuery","key","setKey","useFetch","testParams","adminClient","storageProviders","p","UserDetailLink","user","Link","toUser","loader","first","max","search","params","searchParam","listUsers","findUsers","error","UnlockUsersConfirm","useConfirmDialog","DeleteConfirm","StatusRow","Label","InfoCircleIcon","WarningTriangleIcon","ValidatedEmail","Tooltip","ExclamationCircleIcon","emptyFormatter","toAddUser","KeycloakSpinner","createQueryString","filters","attributes","FlexItem","entry","ChipGroup","event","Chip","toolbar","subtoolbar","KeycloakDataTable","rows","ListEmptyState","Toolbar","ToolbarContent","EmptyState","rowData","UsersSection","isFeatureEnabled","useIsFeatureEnabled","useTab","tab","useRoutableTab","toUsers","listTab","permissionsTab","ViewHeader","helpUrls","PageSection","RoutableTabs","Tab","TabTitleText","Feature","PermissionsTab"],"mappings":"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"}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy