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

theme.keycloak.v2.admin.resources.assets.GroupsSection-5e9af17f.js.map Maven / Gradle / Ivy

There is a newer version: 25.0.1
Show newest version
{"version":3,"file":"GroupsSection-5e9af17f.js","sources":["../../../../node_modules/.pnpm/@[email protected][email protected][email protected]/node_modules/@patternfly/react-core/dist/esm/components/Drawer/DrawerPanelBody.js","../../../../node_modules/.pnpm/@[email protected][email protected][email protected]/node_modules/@patternfly/react-core/dist/esm/components/Drawer/DrawerHead.js","../../../../node_modules/.pnpm/@[email protected][email protected][email protected]/node_modules/@patternfly/react-core/dist/esm/components/TreeView/TreeViewList.js","../../../../node_modules/.pnpm/@[email protected]/node_modules/@patternfly/react-styles/css/components/TreeView/tree-view.mjs","../../../../node_modules/.pnpm/@[email protected][email protected][email protected]/node_modules/@patternfly/react-core/dist/esm/components/TreeView/TreeViewListItem.js","../../../../node_modules/.pnpm/@[email protected][email protected][email protected]/node_modules/@patternfly/react-core/dist/esm/components/TreeView/TreeViewRoot.js","../../../../node_modules/.pnpm/@[email protected][email protected][email protected]/node_modules/@patternfly/react-core/dist/esm/components/TreeView/TreeView.js","../../src/components/bread-crumb/GroupBreadCrumbs.tsx","../../src/groups/groupIdUtils.ts","../../src/groups/GroupAttributes.tsx","../../src/groups/GroupRoleMapping.tsx","../../src/groups/GroupsModal.tsx","../../src/groups/components/DeleteGroup.tsx","../../src/groups/components/GroupToolbar.tsx","../../src/groups/components/MoveDialog.tsx","../../src/groups/GroupTable.tsx","../../src/groups/MembersModal.tsx","../../src/groups/Members.tsx","../../src/groups/components/GroupTree.tsx","../../src/groups/GroupsSection.tsx"],"sourcesContent":["import { __rest } from \"tslib\";\nimport * as React from 'react';\nimport styles from '@patternfly/react-styles/css/components/Drawer/drawer';\nimport { css } from '@patternfly/react-styles';\nexport const DrawerPanelBody = (_a) => {\n    var { \n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    className = '', children, hasNoPadding = false } = _a, props = __rest(_a, [\"className\", \"children\", \"hasNoPadding\"]);\n    return (React.createElement(\"div\", Object.assign({ className: css(styles.drawerBody, hasNoPadding && styles.modifiers.noPadding, className) }, props), children));\n};\nDrawerPanelBody.displayName = 'DrawerPanelBody';\n//# sourceMappingURL=DrawerPanelBody.js.map","import { __rest } from \"tslib\";\nimport * as React from 'react';\nimport styles from '@patternfly/react-styles/css/components/Drawer/drawer';\nimport { css } from '@patternfly/react-styles';\nimport { DrawerPanelBody } from './DrawerPanelBody';\nexport const DrawerHead = (_a) => {\n    var { \n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    className = '', children, hasNoPadding = false } = _a, props = __rest(_a, [\"className\", \"children\", \"hasNoPadding\"]);\n    return (React.createElement(DrawerPanelBody, { hasNoPadding: hasNoPadding },\n        React.createElement(\"div\", Object.assign({ className: css(styles.drawerHead, className) }, props), children)));\n};\nDrawerHead.displayName = 'DrawerHead';\n//# sourceMappingURL=DrawerHead.js.map","import { __rest } from \"tslib\";\nimport * as React from 'react';\nimport { css } from '@patternfly/react-styles';\nimport { Divider } from '../Divider';\nexport const TreeViewList = (_a) => {\n    var { isNested = false, toolbar, children } = _a, props = __rest(_a, [\"isNested\", \"toolbar\", \"children\"]);\n    return (React.createElement(React.Fragment, null,\n        toolbar && (React.createElement(React.Fragment, null,\n            toolbar,\n            React.createElement(Divider, null))),\n        React.createElement(\"ul\", Object.assign({ className: css('pf-c-tree-view__list'), role: isNested ? 'group' : 'tree' }, props), children)));\n};\nTreeViewList.displayName = 'TreeViewList';\n//# sourceMappingURL=TreeViewList.js.map","import './tree-view.css';\nexport default {\n  \"badge\": \"pf-c-badge\",\n  \"modifiers\": {\n    \"compact\": \"pf-m-compact\",\n    \"guides\": \"pf-m-guides\",\n    \"expanded\": \"pf-m-expanded\",\n    \"noBackground\": \"pf-m-no-background\",\n    \"current\": \"pf-m-current\",\n    \"read\": \"pf-m-read\",\n    \"selectable\": \"pf-m-selectable\",\n    \"truncate\": \"pf-m-truncate\"\n  },\n  \"themeDark\": \"pf-theme-dark\",\n  \"treeView\": \"pf-c-tree-view\",\n  \"treeViewAction\": \"pf-c-tree-view__action\",\n  \"treeViewContent\": \"pf-c-tree-view__content\",\n  \"treeViewListItem\": \"pf-c-tree-view__list-item\",\n  \"treeViewNode\": \"pf-c-tree-view__node\",\n  \"treeViewNodeCheck\": \"pf-c-tree-view__node-check\",\n  \"treeViewNodeContainer\": \"pf-c-tree-view__node-container\",\n  \"treeViewNodeContent\": \"pf-c-tree-view__node-content\",\n  \"treeViewNodeCount\": \"pf-c-tree-view__node-count\",\n  \"treeViewNodeIcon\": \"pf-c-tree-view__node-icon\",\n  \"treeViewNodeText\": \"pf-c-tree-view__node-text\",\n  \"treeViewNodeTitle\": \"pf-c-tree-view__node-title\",\n  \"treeViewNodeToggle\": \"pf-c-tree-view__node-toggle\",\n  \"treeViewNodeToggleIcon\": \"pf-c-tree-view__node-toggle-icon\",\n  \"treeViewSearch\": \"pf-c-tree-view__search\"\n};","import React, { useState, useEffect } from 'react';\nimport { css } from '@patternfly/react-styles';\nimport styles from '@patternfly/react-styles/css/components/TreeView/tree-view';\nimport AngleRightIcon from '@patternfly/react-icons/dist/esm/icons/angle-right-icon';\nimport { Badge } from '../Badge';\nimport { GenerateId } from '../../helpers/GenerateId/GenerateId';\nconst TreeViewListItemBase = ({ name, title, id, isExpanded, defaultExpanded = false, children = null, onSelect, onCheck, hasCheck = false, checkProps = {\n    checked: false\n}, hasBadge = false, customBadgeContent, badgeProps = { isRead: true }, isSelectable = false, isCompact, activeItems = [], itemData, parentItem, icon, expandedIcon, action, compareItems, \n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nuseMemo }) => {\n    const [internalIsExpanded, setIsExpanded] = useState(defaultExpanded);\n    useEffect(() => {\n        if (isExpanded !== undefined && isExpanded !== null) {\n            setIsExpanded(isExpanded);\n        }\n        else if (defaultExpanded !== undefined && defaultExpanded !== null) {\n            setIsExpanded(internalIsExpanded || defaultExpanded);\n        }\n    }, [isExpanded, defaultExpanded]);\n    let Component = 'button';\n    if (hasCheck) {\n        Component = 'label';\n    }\n    else if (isSelectable) {\n        Component = 'div';\n    }\n    const ToggleComponent = hasCheck || isSelectable ? 'button' : 'span';\n    const renderToggle = (randomId) => (React.createElement(ToggleComponent, Object.assign({ className: css(styles.treeViewNodeToggle), onClick: (evt) => {\n            if (isSelectable || hasCheck) {\n                setIsExpanded(!internalIsExpanded);\n            }\n            if (isSelectable) {\n                evt.stopPropagation();\n            }\n        } }, ((hasCheck || isSelectable) && { 'aria-labelledby': `label-${randomId}` }), { tabIndex: -1 }),\n        React.createElement(\"span\", { className: css(styles.treeViewNodeToggleIcon) },\n            React.createElement(AngleRightIcon, { \"aria-hidden\": \"true\" }))));\n    const renderCheck = (randomId) => (React.createElement(\"span\", { className: css(styles.treeViewNodeCheck) },\n        React.createElement(\"input\", Object.assign({ type: \"checkbox\", onChange: evt => onCheck && onCheck(evt, itemData, parentItem), onClick: evt => evt.stopPropagation(), ref: elem => elem && (elem.indeterminate = checkProps.checked === null) }, checkProps, { checked: checkProps.checked === null ? false : checkProps.checked, id: randomId, tabIndex: -1 }))));\n    const iconRendered = (React.createElement(\"span\", { className: css(styles.treeViewNodeIcon) },\n        !internalIsExpanded && icon,\n        internalIsExpanded && (expandedIcon || icon)));\n    const renderNodeContent = () => {\n        const content = (React.createElement(React.Fragment, null,\n            isCompact && title && React.createElement(\"span\", { className: css(styles.treeViewNodeTitle) }, title),\n            isSelectable ? (React.createElement(\"button\", { tabIndex: -1, className: css(styles.treeViewNodeText) }, name)) : (React.createElement(\"span\", { className: css(styles.treeViewNodeText) }, name))));\n        return isCompact ? React.createElement(\"span\", { className: css(styles.treeViewNodeContent) }, content) : content;\n    };\n    const badgeRendered = (React.createElement(React.Fragment, null,\n        hasBadge && children && (React.createElement(\"span\", { className: css(styles.treeViewNodeCount) },\n            React.createElement(Badge, Object.assign({}, badgeProps), customBadgeContent ? customBadgeContent : children.props.data.length))),\n        hasBadge && !children && customBadgeContent !== undefined && (React.createElement(\"span\", { className: css(styles.treeViewNodeCount) },\n            React.createElement(Badge, Object.assign({}, badgeProps), customBadgeContent)))));\n    return (React.createElement(\"li\", Object.assign({ id: id, className: css(styles.treeViewListItem, internalIsExpanded && styles.modifiers.expanded) }, (internalIsExpanded && { 'aria-expanded': 'true' }), { role: \"treeitem\", tabIndex: -1 }),\n        React.createElement(\"div\", { className: css(styles.treeViewContent) },\n            React.createElement(GenerateId, { prefix: isSelectable ? 'selectable-id' : 'checkbox-id' }, randomId => (React.createElement(Component, Object.assign({ className: css(styles.treeViewNode, children && (isSelectable || hasCheck) && styles.modifiers.selectable, (!children || isSelectable) &&\n                    activeItems &&\n                    activeItems.length > 0 &&\n                    activeItems.some(item => compareItems && item && compareItems(item, itemData))\n                    ? styles.modifiers.current\n                    : ''), onClick: (evt) => {\n                    if (!hasCheck) {\n                        onSelect && onSelect(evt, itemData, parentItem);\n                        if (!isSelectable && children && evt.isDefaultPrevented() !== true) {\n                            setIsExpanded(!internalIsExpanded);\n                        }\n                    }\n                } }, (hasCheck && { htmlFor: randomId }), ((hasCheck || (isSelectable && children)) && { id: `label-${randomId}` })),\n                React.createElement(\"span\", { className: css(styles.treeViewNodeContainer) },\n                    children && renderToggle(randomId),\n                    hasCheck && renderCheck(randomId),\n                    icon && iconRendered,\n                    renderNodeContent(),\n                    badgeRendered)))),\n            action && React.createElement(\"div\", { className: css(styles.treeViewAction) }, action)),\n        internalIsExpanded && children));\n};\nexport const TreeViewListItem = React.memo(TreeViewListItemBase, (prevProps, nextProps) => {\n    if (!nextProps.useMemo) {\n        return false;\n    }\n    const prevIncludes = prevProps.activeItems &&\n        prevProps.activeItems.length > 0 &&\n        prevProps.activeItems.some(item => prevProps.compareItems && item && prevProps.compareItems(item, prevProps.itemData));\n    const nextIncludes = nextProps.activeItems &&\n        nextProps.activeItems.length > 0 &&\n        nextProps.activeItems.some(item => nextProps.compareItems && item && nextProps.compareItems(item, nextProps.itemData));\n    if (prevIncludes || nextIncludes) {\n        return false;\n    }\n    if (prevProps.name !== nextProps.name ||\n        prevProps.title !== nextProps.title ||\n        prevProps.id !== nextProps.id ||\n        prevProps.isExpanded !== nextProps.isExpanded ||\n        prevProps.defaultExpanded !== nextProps.defaultExpanded ||\n        prevProps.onSelect !== nextProps.onSelect ||\n        prevProps.onCheck !== nextProps.onCheck ||\n        prevProps.hasCheck !== nextProps.hasCheck ||\n        prevProps.checkProps !== nextProps.checkProps ||\n        prevProps.hasBadge !== nextProps.hasBadge ||\n        prevProps.customBadgeContent !== nextProps.customBadgeContent ||\n        prevProps.badgeProps !== nextProps.badgeProps ||\n        prevProps.isCompact !== nextProps.isCompact ||\n        prevProps.icon !== nextProps.icon ||\n        prevProps.expandedIcon !== nextProps.expandedIcon ||\n        prevProps.action !== nextProps.action ||\n        prevProps.parentItem !== nextProps.parentItem ||\n        prevProps.itemData !== nextProps.itemData) {\n        return false;\n    }\n    return true;\n});\nTreeViewListItem.displayName = 'TreeViewListItem';\n//# sourceMappingURL=TreeViewListItem.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/TreeView/tree-view';\nimport { canUseDOM } from '../../helpers/util';\nimport { handleArrows } from '../../helpers';\nimport { KeyTypes } from '../../helpers/constants';\nexport class TreeViewRoot extends React.Component {\n    constructor() {\n        super(...arguments);\n        this.displayName = 'TreeViewRoot';\n        this.treeRef = React.createRef();\n        this.handleKeys = (event) => {\n            var _a, _b, _c, _d, _e, _f, _g;\n            if (!this.treeRef.current.contains(event.target)) {\n                return;\n            }\n            const activeElement = document.activeElement;\n            const key = event.key;\n            const treeItems = Array.from((_a = this.treeRef.current) === null || _a === void 0 ? void 0 : _a.getElementsByClassName('pf-c-tree-view__node')).filter(el => !el.classList.contains('pf-m-disabled'));\n            if (key === KeyTypes.Space) {\n                activeElement.click();\n                event.preventDefault();\n            }\n            handleArrows(event, treeItems, (element) => activeElement === element, undefined, [], undefined, true, true);\n            if (['ArrowLeft', 'ArrowRight'].includes(key)) {\n                const isExpandable = (_c = (_b = activeElement === null || activeElement === void 0 ? void 0 : activeElement.firstElementChild) === null || _b === void 0 ? void 0 : _b.firstElementChild) === null || _c === void 0 ? void 0 : _c.classList.contains('pf-c-tree-view__node-toggle');\n                const isExpanded = (_d = activeElement === null || activeElement === void 0 ? void 0 : activeElement.closest('li')) === null || _d === void 0 ? void 0 : _d.classList.contains('pf-m-expanded');\n                if (key === 'ArrowLeft') {\n                    if (isExpandable && isExpanded) {\n                        activeElement.click();\n                    }\n                    else {\n                        const parentList = (_e = activeElement === null || activeElement === void 0 ? void 0 : activeElement.closest('ul')) === null || _e === void 0 ? void 0 : _e.parentElement;\n                        if ((parentList === null || parentList === void 0 ? void 0 : parentList.tagName) !== 'DIV') {\n                            const parentButton = parentList === null || parentList === void 0 ? void 0 : parentList.querySelector('button');\n                            activeElement.tabIndex = -1;\n                            if (parentButton) {\n                                parentButton.tabIndex = 0;\n                                parentButton.focus();\n                            }\n                        }\n                    }\n                }\n                else {\n                    if (isExpandable && !isExpanded) {\n                        activeElement.tabIndex = -1;\n                        activeElement.click();\n                        const childElement = (_g = (_f = activeElement === null || activeElement === void 0 ? void 0 : activeElement.closest('li')) === null || _f === void 0 ? void 0 : _f.querySelector('ul > li')) === null || _g === void 0 ? void 0 : _g.querySelector('button');\n                        if (childElement) {\n                            childElement.tabIndex = 0;\n                            childElement.focus();\n                        }\n                    }\n                }\n                event.preventDefault();\n            }\n        };\n        this.handleKeysCheckbox = (event) => {\n            var _a, _b, _c, _d, _e;\n            if (!this.treeRef.current.contains(event.target)) {\n                return;\n            }\n            const activeElement = document.activeElement;\n            const key = event.key;\n            if (key === KeyTypes.Space) {\n                activeElement.click();\n                event.preventDefault();\n            }\n            const treeNodes = Array.from((_a = this.treeRef.current) === null || _a === void 0 ? void 0 : _a.getElementsByClassName('pf-c-tree-view__node'));\n            handleArrows(event, treeNodes, (element) => element.contains(activeElement), (element) => element.querySelector('button,input'), [], undefined, true, true);\n            if (['ArrowLeft', 'ArrowRight'].includes(key)) {\n                if (key === 'ArrowLeft') {\n                    if ((activeElement === null || activeElement === void 0 ? void 0 : activeElement.tagName) === 'INPUT') {\n                        ((_b = activeElement === null || activeElement === void 0 ? void 0 : activeElement.parentElement) === null || _b === void 0 ? void 0 : _b.previousSibling) &&\n                            activeElement.parentElement.previousSibling.focus();\n                    }\n                    else if (activeElement === null || activeElement === void 0 ? void 0 : activeElement.previousSibling) {\n                        if (((_c = activeElement.previousElementSibling) === null || _c === void 0 ? void 0 : _c.tagName) === 'SPAN') {\n                            activeElement.previousSibling.firstChild.focus();\n                        }\n                        else {\n                            activeElement.previousSibling.focus();\n                        }\n                    }\n                }\n                else {\n                    if ((activeElement === null || activeElement === void 0 ? void 0 : activeElement.tagName) === 'INPUT') {\n                        ((_d = activeElement.parentElement) === null || _d === void 0 ? void 0 : _d.nextSibling) && activeElement.parentElement.nextSibling.focus();\n                    }\n                    else if (activeElement === null || activeElement === void 0 ? void 0 : activeElement.nextSibling) {\n                        if (((_e = activeElement.nextElementSibling) === null || _e === void 0 ? void 0 : _e.tagName) === 'SPAN') {\n                            activeElement.nextSibling.firstChild.focus();\n                        }\n                        else {\n                            activeElement.nextSibling.focus();\n                        }\n                    }\n                }\n                event.preventDefault();\n            }\n        };\n        this.variantStyleModifiers = {\n            default: '',\n            compact: styles.modifiers.compact,\n            compactNoBackground: [styles.modifiers.compact, styles.modifiers.noBackground]\n        };\n    }\n    componentDidMount() {\n        var _a;\n        if (canUseDOM) {\n            window.addEventListener('keydown', this.props.hasChecks || this.props.hasSelectableNodes ? this.handleKeysCheckbox : this.handleKeys);\n        }\n        if (this.props.hasChecks || this.props.hasSelectableNodes) {\n            const firstToggle = this.treeRef.current.getElementsByClassName('pf-c-tree-view__node-toggle')[0];\n            if (firstToggle) {\n                firstToggle.tabIndex = 0;\n            }\n            if (this.props.hasChecks) {\n                const firstInput = this.treeRef.current.getElementsByTagName('INPUT')[0];\n                if (firstInput) {\n                    firstInput.tabIndex = 0;\n                }\n            }\n            if (this.props.hasSelectableNodes) {\n                const firstTextButton = this.treeRef.current.getElementsByClassName('pf-c-tree-view__node-text')[0];\n                if (firstTextButton) {\n                    firstTextButton.tabIndex = 0;\n                }\n            }\n        }\n        else {\n            ((_a = this.treeRef.current) === null || _a === void 0 ? void 0 : _a.getElementsByClassName('pf-c-tree-view__node')[0]).tabIndex = 0;\n        }\n    }\n    componentWillUnmount() {\n        if (canUseDOM) {\n            window.removeEventListener('keydown', this.props.hasChecks || this.props.hasSelectableNodes ? this.handleKeysCheckbox : this.handleKeys);\n        }\n    }\n    render() {\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        const _a = this.props, { children, hasChecks, hasGuides, variant, className, hasSelectableNodes } = _a, props = __rest(_a, [\"children\", \"hasChecks\", \"hasGuides\", \"variant\", \"className\", \"hasSelectableNodes\"]);\n        return (React.createElement(\"div\", Object.assign({ className: css(styles.treeView, hasGuides && styles.modifiers.guides, this.variantStyleModifiers[variant], className), ref: this.treeRef }, props), children));\n    }\n}\n//# sourceMappingURL=TreeViewRoot.js.map","import { __rest } from \"tslib\";\nimport * as React from 'react';\nimport { TreeViewList } from './TreeViewList';\nimport { TreeViewListItem } from './TreeViewListItem';\nimport { TreeViewRoot } from './TreeViewRoot';\nexport const TreeView = (_a) => {\n    var { data, isNested = false, hasChecks = false, hasBadges = false, hasGuides = false, hasSelectableNodes = false, variant = 'default', defaultAllExpanded = false, allExpanded, icon, expandedIcon, parentItem, onSelect, onCheck, toolbar, activeItems, compareItems = (item, itemToCheck) => item.id === itemToCheck.id, className, useMemo } = _a, props = __rest(_a, [\"data\", \"isNested\", \"hasChecks\", \"hasBadges\", \"hasGuides\", \"hasSelectableNodes\", \"variant\", \"defaultAllExpanded\", \"allExpanded\", \"icon\", \"expandedIcon\", \"parentItem\", \"onSelect\", \"onCheck\", \"toolbar\", \"activeItems\", \"compareItems\", \"className\", \"useMemo\"]);\n    const treeViewList = (React.createElement(TreeViewList, { isNested: isNested, toolbar: toolbar }, data.map(item => {\n        var _a, _b;\n        return (React.createElement(TreeViewListItem, Object.assign({ key: ((_a = item.id) === null || _a === void 0 ? void 0 : _a.toString()) || ((_b = item.name) === null || _b === void 0 ? void 0 : _b.toString()), name: item.name, title: item.title, id: item.id, isExpanded: allExpanded, isSelectable: hasSelectableNodes, defaultExpanded: item.defaultExpanded !== undefined ? item.defaultExpanded : defaultAllExpanded, onSelect: onSelect, onCheck: onCheck, hasCheck: item.hasCheck !== undefined ? item.hasCheck : hasChecks, checkProps: item.checkProps, hasBadge: item.hasBadge !== undefined ? item.hasBadge : hasBadges, customBadgeContent: item.customBadgeContent, badgeProps: item.badgeProps, activeItems: activeItems, parentItem: parentItem, itemData: item, icon: item.icon !== undefined ? item.icon : icon, expandedIcon: item.expandedIcon !== undefined ? item.expandedIcon : expandedIcon, action: item.action, compareItems: compareItems, isCompact: variant === 'compact' || variant === 'compactNoBackground', useMemo: useMemo }, (item.children && {\n            children: (React.createElement(TreeView, { data: item.children, isNested: true, parentItem: item, hasChecks: hasChecks, hasBadges: hasBadges, hasGuides: hasGuides, hasSelectableNodes: hasSelectableNodes, variant: variant, allExpanded: allExpanded, defaultAllExpanded: defaultAllExpanded, onSelect: onSelect, onCheck: onCheck, activeItems: activeItems, icon: icon, expandedIcon: expandedIcon }))\n        }))));\n    })));\n    return (React.createElement(React.Fragment, null, parentItem ? (treeViewList) : (React.createElement(TreeViewRoot, Object.assign({ hasSelectableNodes: hasSelectableNodes, hasChecks: hasChecks, hasGuides: hasGuides, variant: variant, className: className }, props), treeViewList))));\n};\nTreeView.displayName = 'TreeView';\n//# sourceMappingURL=TreeView.js.map","import { useEffect } from \"react\";\nimport { Link, useLocation } from \"react-router-dom\";\nimport { useTranslation } from \"react-i18next\";\nimport { Breadcrumb, BreadcrumbItem } from \"@patternfly/react-core\";\n\nimport { useSubGroups } from \"../../groups/SubGroupsContext\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\n\nexport const GroupBreadCrumbs = () => {\n  const { t } = useTranslation();\n  const { clear, remove, subGroups } = useSubGroups();\n  const { realm } = useRealm();\n  const location = useLocation();\n\n  useEffect(() => {\n    const { pathname } = location;\n\n    if (!pathname.includes(\"/groups\") || pathname.endsWith(\"/groups\")) {\n      clear();\n    }\n  }, [location]);\n\n  return subGroups.length !== 0 ? (\n    \n      \n        {t(\"groups\")}\n      \n      {subGroups.map((group, i) => {\n        const isLastGroup = i === subGroups.length - 1;\n        return (\n          \n            {!isLastGroup && (\n               remove(group)}\n              >\n                {group.name}\n              \n            )}\n            {isLastGroup &&\n              (group.id === \"search\" ? group.name : t(\"groups:groupDetails\"))}\n          \n        );\n      })}\n    \n  ) : null;\n};\n","export const getId = (pathname: string) => {\n  const pathParts = pathname.substr(1).split(\"/\");\n  return pathParts.length > 1 ? pathParts.splice(2) : undefined;\n};\n\nexport const getLastId = (pathname: string) => {\n  const pathParts = getId(pathname);\n  return pathParts ? pathParts[pathParts.length - 1] : undefined;\n};\n","import {\n  AlertVariant,\n  PageSection,\n  PageSectionVariants,\n} from \"@patternfly/react-core\";\nimport { useEffect } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { useLocation } from \"react-router-dom\";\n\nimport { adminClient } from \"../admin-client\";\nimport { useAlerts } from \"../components/alert/Alerts\";\nimport {\n  AttributeForm,\n  AttributesForm,\n} from \"../components/key-value-form/AttributeForm\";\nimport {\n  arrayToKeyValue,\n  keyValueToArray,\n} from \"../components/key-value-form/key-value-convert\";\nimport { useSubGroups } from \"./SubGroupsContext\";\nimport { getLastId } from \"./groupIdUtils\";\n\nexport const GroupAttributes = () => {\n  const { t } = useTranslation(\"groups\");\n  const { addAlert, addError } = useAlerts();\n  const form = useForm({\n    mode: \"onChange\",\n  });\n\n  const location = useLocation();\n  const id = getLastId(location.pathname);\n  const { currentGroup, subGroups, setSubGroups } = useSubGroups();\n\n  const convertAttributes = (attr?: Record) => {\n    return arrayToKeyValue(attr || currentGroup()?.attributes!);\n  };\n\n  useEffect(() => {\n    form.setValue(\"attributes\", convertAttributes());\n  }, [subGroups]);\n\n  const save = async (attributeForm: AttributeForm) => {\n    try {\n      const group = currentGroup();\n      const attributes = keyValueToArray(attributeForm.attributes!);\n      await adminClient.groups.update({ id: id! }, { ...group, attributes });\n\n      setSubGroups([\n        ...subGroups.slice(0, subGroups.length - 1),\n        { ...group, attributes },\n      ]);\n      addAlert(t(\"groupUpdated\"), AlertVariant.success);\n    } catch (error) {\n      addError(\"groups:groupUpdateError\", error);\n    }\n  };\n\n  return (\n    \n      \n          form.reset({\n            attributes: convertAttributes(),\n          })\n        }\n      />\n    \n  );\n};\n","import type { RoleMappingPayload } from \"@keycloak/keycloak-admin-client/lib/defs/roleRepresentation\";\nimport { AlertVariant } from \"@patternfly/react-core\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { adminClient } from \"../admin-client\";\nimport { useAlerts } from \"../components/alert/Alerts\";\nimport { RoleMapping, Row } from \"../components/role-mapping/RoleMapping\";\n\ntype GroupRoleMappingProps = {\n  id: string;\n  name: string;\n};\n\nexport const GroupRoleMapping = ({ id, name }: GroupRoleMappingProps) => {\n  const { t } = useTranslation(\"clients\");\n  const { addAlert, addError } = useAlerts();\n\n  const assignRoles = async (rows: Row[]) => {\n    try {\n      const realmRoles = rows\n        .filter((row) => row.client === undefined)\n        .map((row) => row.role as RoleMappingPayload)\n        .flat();\n      await adminClient.groups.addRealmRoleMappings({\n        id,\n        roles: realmRoles,\n      });\n      await Promise.all(\n        rows\n          .filter((row) => row.client !== undefined)\n          .map((row) =>\n            adminClient.groups.addClientRoleMappings({\n              id,\n              clientUniqueId: row.client!.id!,\n              roles: [row.role as RoleMappingPayload],\n            })\n          )\n      );\n      addAlert(t(\"roleMappingUpdatedSuccess\"), AlertVariant.success);\n    } catch (error) {\n      addError(\"clients:roleMappingUpdatedError\", error);\n    }\n  };\n\n  return ;\n};\n","import type GroupRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/groupRepresentation\";\nimport {\n  AlertVariant,\n  Button,\n  ButtonVariant,\n  Form,\n  FormGroup,\n  Modal,\n  ModalVariant,\n  ValidatedOptions,\n} from \"@patternfly/react-core\";\nimport { useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { adminClient } from \"../admin-client\";\nimport { useAlerts } from \"../components/alert/Alerts\";\nimport { KeycloakTextInput } from \"../components/keycloak-text-input/KeycloakTextInput\";\n\ntype GroupsModalProps = {\n  id?: string;\n  rename?: GroupRepresentation;\n  handleModalToggle: () => void;\n  refresh: (group?: GroupRepresentation) => void;\n};\n\nexport const GroupsModal = ({\n  id,\n  rename,\n  handleModalToggle,\n  refresh,\n}: GroupsModalProps) => {\n  const { t } = useTranslation(\"groups\");\n  const { addAlert, addError } = useAlerts();\n  const {\n    register,\n    handleSubmit,\n    formState: { errors },\n  } = useForm({\n    defaultValues: { name: rename?.name },\n  });\n\n  const submitForm = async (group: GroupRepresentation) => {\n    group.name = group.name?.trim();\n\n    try {\n      if (!id) {\n        await adminClient.groups.create(group);\n      } else if (rename) {\n        await adminClient.groups.update(\n          { id },\n          { ...rename, name: group.name }\n        );\n      } else {\n        await (group.id\n          ? adminClient.groups.updateChildGroup({ id }, group)\n          : adminClient.groups.createChildGroup({ id }, group));\n      }\n\n      refresh(rename ? { ...rename, name: group.name } : undefined);\n      handleModalToggle();\n      addAlert(\n        t(rename ? \"groupUpdated\" : \"groupCreated\"),\n        AlertVariant.success\n      );\n    } catch (error) {\n      addError(\"groups:couldNotCreateGroup\", error);\n    }\n  };\n\n  return (\n    \n          {t(rename ? \"rename\" : \"create\")}\n        ,\n         {\n            handleModalToggle();\n          }}\n        >\n          {t(\"common:cancel\")}\n        ,\n      ]}\n    >\n      
\n \n \n \n \n \n );\n};\n","import type GroupRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/groupRepresentation\";\nimport { ButtonVariant } from \"@patternfly/react-core\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { adminClient } from \"../../admin-client\";\nimport { useAlerts } from \"../../components/alert/Alerts\";\nimport { ConfirmDialogModal } from \"../../components/confirm-dialog/ConfirmDialog\";\n\ntype DeleteConfirmProps = {\n selectedRows: GroupRepresentation[];\n show: boolean;\n toggleDialog: () => void;\n refresh: () => void;\n};\n\nexport const DeleteGroup = ({\n selectedRows,\n show,\n toggleDialog,\n refresh,\n}: DeleteConfirmProps) => {\n const { t } = useTranslation(\"groups\");\n const { addAlert, addError } = useAlerts();\n\n const multiDelete = async () => {\n try {\n for (const group of selectedRows) {\n await adminClient.groups.del({\n id: group.id!,\n });\n }\n refresh();\n addAlert(t(\"groupDeleted\", { count: selectedRows.length }));\n } catch (error) {\n addError(\"groups:groupDeleteError\", error);\n }\n };\n\n return (\n \n );\n};\n","import { useTranslation } from \"react-i18next\";\nimport {\n Button,\n Dropdown,\n DropdownItem,\n KebabToggle,\n ToolbarItem,\n} from \"@patternfly/react-core\";\n\nimport { useSubGroups } from \"../SubGroupsContext\";\nimport { useAccess } from \"../../context/access/Access\";\nimport useToggle from \"../../utils/useToggle\";\n\ntype GroupToolbarProps = {\n toggleCreate: () => void;\n toggleDelete: () => void;\n kebabDisabled: boolean;\n};\n\nexport const GroupToolbar = ({\n toggleCreate,\n toggleDelete,\n kebabDisabled,\n}: GroupToolbarProps) => {\n const { t } = useTranslation(\"groups\");\n const { currentGroup } = useSubGroups();\n const { hasAccess } = useAccess();\n const isManager = hasAccess(\"manage-users\") || currentGroup()?.access?.manage;\n\n const [openKebab, toggleKebab] = useToggle();\n\n if (!isManager) return
;\n\n return (\n <>\n \n \n {t(\"createGroup\")}\n \n \n \n \n }\n isOpen={openKebab}\n isPlain\n dropdownItems={[\n {\n toggleDelete();\n toggleKebab();\n }}\n >\n {t(\"common:delete\")}\n ,\n ]}\n />\n \n \n );\n};\n","import type GroupRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/groupRepresentation\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { adminClient } from \"../../admin-client\";\nimport { useAlerts } from \"../../components/alert/Alerts\";\nimport { GroupPickerDialog } from \"../../components/group/GroupPickerDialog\";\n\ntype MoveDialogProps = {\n source: GroupRepresentation;\n onClose: () => void;\n refresh: () => void;\n};\n\nconst moveToRoot = (source: GroupRepresentation) =>\n source.id\n ? adminClient.groups.updateRoot(source)\n : adminClient.groups.create(source);\n\nconst moveToGroup = async (\n source: GroupRepresentation,\n dest: GroupRepresentation\n) => adminClient.groups.updateChildGroup({ id: dest.id! }, source);\n\nexport const MoveDialog = ({ source, onClose, refresh }: MoveDialogProps) => {\n const { t } = useTranslation(\"groups\");\n const { addAlert, addError } = useAlerts();\n\n const moveGroup = async (group?: GroupRepresentation[]) => {\n try {\n await (group ? moveToGroup(source, group[0]) : moveToRoot(source));\n refresh();\n addAlert(t(\"moveGroupSuccess\"));\n } catch (error) {\n addError(\"groups:moveGroupError\", error);\n }\n };\n\n return (\n \n );\n};\n","import type GroupRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/groupRepresentation\";\nimport { SearchInput, ToolbarItem } from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useLocation, useNavigate } from \"react-router-dom\";\n\nimport { adminClient } from \"../admin-client\";\nimport { ListEmptyState } from \"../components/list-empty-state/ListEmptyState\";\nimport { KeycloakDataTable } from \"../components/table-toolbar/KeycloakDataTable\";\nimport { useAccess } from \"../context/access/Access\";\nimport { fetchAdminUI } from \"../context/auth/admin-ui-endpoint\";\nimport { useRealm } from \"../context/realm-context/RealmContext\";\nimport useToggle from \"../utils/useToggle\";\nimport { GroupsModal } from \"./GroupsModal\";\nimport { useSubGroups } from \"./SubGroupsContext\";\nimport { DeleteGroup } from \"./components/DeleteGroup\";\nimport { GroupToolbar } from \"./components/GroupToolbar\";\nimport { MoveDialog } from \"./components/MoveDialog\";\nimport { getLastId } from \"./groupIdUtils\";\nimport { toGroups } from \"./routes/Groups\";\n\ntype GroupTableProps = {\n refresh: () => void;\n canViewDetails: boolean;\n};\n\nexport const GroupTable = ({\n refresh: viewRefresh,\n canViewDetails,\n}: GroupTableProps) => {\n const { t } = useTranslation(\"groups\");\n\n const { realm } = useRealm();\n const [selectedRows, setSelectedRows] = useState([]);\n\n const [rename, setRename] = useState();\n const [isCreateModalOpen, toggleCreateOpen] = useToggle();\n const [showDelete, toggleShowDelete] = useToggle();\n const [move, setMove] = useState();\n\n const { currentGroup } = useSubGroups();\n\n const [key, setKey] = useState(0);\n const refresh = () => setKey(key + 1);\n const [search, setSearch] = useState();\n\n const navigate = useNavigate();\n const location = useLocation();\n const id = getLastId(location.pathname);\n\n const { hasAccess } = useAccess();\n const isManager = hasAccess(\"manage-users\") || currentGroup()?.access?.manage;\n\n const loader = async (first?: number, max?: number) => {\n const params: Record = {\n search: search || \"\",\n first: first?.toString() || \"\",\n max: max?.toString() || \"\",\n };\n\n let groupsData = undefined;\n if (id) {\n const group = await adminClient.groups.findOne({ id });\n if (!group) {\n throw new Error(t(\"common:notFound\"));\n }\n\n groupsData = !search\n ? group.subGroups\n : group.subGroups?.filter((g) => g.name?.includes(search));\n } else {\n groupsData = await fetchAdminUI(\"ui-ext/groups\", {\n ...params,\n global: \"false\",\n });\n }\n\n if (!groupsData) {\n navigate(toGroups({ realm }));\n }\n\n return groupsData || [];\n };\n\n return (\n <>\n {\n refresh();\n viewRefresh();\n setSelectedRows([]);\n }}\n />\n {rename && (\n {\n refresh();\n viewRefresh();\n }}\n handleModalToggle={() => setRename(undefined)}\n />\n )}\n {isCreateModalOpen && (\n {\n setSelectedRows([]);\n refresh();\n viewRefresh();\n }}\n />\n )}\n {move && (\n {\n setMove(undefined);\n refresh();\n viewRefresh();\n }}\n onClose={() => setMove(undefined)}\n />\n )}\n setSelectedRows([...rows])}\n canSelectAll\n loader={loader}\n ariaLabelKey=\"groups:groups\"\n isPaginated\n isSearching={!!search}\n toolbarItem={\n <>\n \n {\n setSearch(value);\n }}\n onSearch={refresh}\n onClear={() => {\n setSearch(\"\");\n refresh();\n }}\n />\n \n \n \n }\n actions={\n !isManager\n ? []\n : [\n {\n title: t(\"rename\"),\n onRowClick: async (group) => {\n setRename(group);\n return false;\n },\n },\n {\n title: t(\"moveTo\"),\n onRowClick: async (group) => {\n setMove(group);\n return false;\n },\n },\n {\n title: t(\"createChildGroup\"),\n onRowClick: async (group) => {\n setSelectedRows([group]);\n toggleCreateOpen();\n return false;\n },\n },\n {\n isSeparator: true,\n },\n {\n title: t(\"common:delete\"),\n onRowClick: async (group: GroupRepresentation) => {\n setSelectedRows([group]);\n toggleShowDelete();\n return true;\n },\n },\n ]\n }\n columns={[\n {\n name: \"name\",\n displayKey: \"groups:groupName\",\n cellRenderer: (group) =>\n canViewDetails ? (\n navigate(toGroups({ realm, id: group.id }))}\n >\n {group.name}\n \n ) : (\n {group.name}\n ),\n },\n ]}\n emptyState={\n \n }\n />\n \n );\n};\n","import type UserRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/userRepresentation\";\nimport {\n AlertVariant,\n Button,\n Modal,\n ModalVariant,\n} from \"@patternfly/react-core\";\nimport { differenceBy } from \"lodash-es\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { adminClient } from \"../admin-client\";\nimport { useAlerts } from \"../components/alert/Alerts\";\nimport { ListEmptyState } from \"../components/list-empty-state/ListEmptyState\";\nimport { KeycloakDataTable } from \"../components/table-toolbar/KeycloakDataTable\";\nimport { emptyFormatter } from \"../util\";\n\ntype MemberModalProps = {\n groupId: string;\n onClose: () => void;\n};\n\nexport const MemberModal = ({ groupId, onClose }: MemberModalProps) => {\n const { t } = useTranslation(\"groups\");\n const { addAlert, addError } = useAlerts();\n const [selectedRows, setSelectedRows] = useState([]);\n\n const loader = async (first?: number, max?: number, search?: string) => {\n const members = await adminClient.groups.listMembers({ id: groupId });\n const params: { [name: string]: string | number } = {\n first: first!,\n max: max! + members.length,\n search: search || \"\",\n };\n\n try {\n const users = await adminClient.users.find({ ...params });\n return differenceBy(users, members, \"id\").slice(0, max);\n } catch (error) {\n addError(\"groups:noUsersFoundError\", error);\n return [];\n }\n };\n\n return (\n {\n try {\n await Promise.all(\n selectedRows.map((user) =>\n adminClient.users.addToGroup({ id: user.id!, groupId })\n )\n );\n onClose();\n addAlert(\n t(\"usersAdded\", { count: selectedRows.length }),\n AlertVariant.success\n );\n } catch (error) {\n addError(\"groups:usersAddedError\", error);\n }\n }}\n >\n {t(\"common:add\")}\n ,\n \n {t(\"common:cancel\")}\n ,\n ]}\n >\n setSelectedRows([...rows])}\n emptyState={\n \n }\n columns={[\n {\n name: \"username\",\n displayKey: \"users:username\",\n },\n {\n name: \"email\",\n displayKey: \"users:email\",\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 />\n \n );\n};\n","import type GroupRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/groupRepresentation\";\nimport type UserRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/userRepresentation\";\nimport {\n AlertVariant,\n Button,\n Checkbox,\n Dropdown,\n DropdownItem,\n KebabToggle,\n ToolbarItem,\n} from \"@patternfly/react-core\";\nimport { uniqBy } from \"lodash-es\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useLocation } from \"react-router-dom\";\n\nimport { adminClient } from \"../admin-client\";\nimport { useAlerts } from \"../components/alert/Alerts\";\nimport { GroupPath } from \"../components/group/GroupPath\";\nimport { ListEmptyState } from \"../components/list-empty-state/ListEmptyState\";\nimport {\n Action,\n KeycloakDataTable,\n} from \"../components/table-toolbar/KeycloakDataTable\";\nimport { useAccess } from \"../context/access/Access\";\nimport { useRealm } from \"../context/realm-context/RealmContext\";\nimport { toUser } from \"../user/routes/User\";\nimport { emptyFormatter } from \"../util\";\nimport { MemberModal } from \"./MembersModal\";\nimport { useSubGroups } from \"./SubGroupsContext\";\nimport { getLastId } from \"./groupIdUtils\";\n\ntype MembersOf = UserRepresentation & {\n membership: GroupRepresentation[];\n};\n\nconst MemberOfRenderer = (member: MembersOf) => {\n return (\n <>\n {member.membership.map((group, index) => (\n <>\n \n {member.membership[index + 1] ? \", \" : \"\"}\n \n ))}\n \n );\n};\n\nconst UserDetailLink = (user: MembersOf) => {\n const { realm } = useRealm();\n return (\n \n {user.username}\n \n );\n};\n\nexport const Members = () => {\n const { t } = useTranslation(\"groups\");\n\n const { addAlert, addError } = useAlerts();\n const location = useLocation();\n const id = getLastId(location.pathname);\n const [includeSubGroup, setIncludeSubGroup] = useState(false);\n const { currentGroup } = useSubGroups();\n const [addMembers, setAddMembers] = useState(false);\n const [isKebabOpen, setIsKebabOpen] = useState(false);\n const [selectedRows, setSelectedRows] = useState([]);\n const { hasAccess } = useAccess();\n\n const isManager =\n hasAccess(\"manage-users\") || currentGroup()!.access!.manageMembership;\n\n const [key, setKey] = useState(0);\n const refresh = () => setKey(new Date().getTime());\n\n const getMembership = async (id: string) =>\n await adminClient.users.listGroups({ id: id! });\n\n const getSubGroups = (groups: GroupRepresentation[]) => {\n let subGroups: GroupRepresentation[] = [];\n for (const group of groups!) {\n subGroups.push(group);\n const subs = getSubGroups(group.subGroups!);\n subGroups = subGroups.concat(subs);\n }\n return subGroups;\n };\n\n const loader = async (first?: number, max?: number) => {\n let members = await adminClient.groups.listMembers({\n id: id!,\n first,\n max,\n });\n\n if (includeSubGroup) {\n const subGroups = getSubGroups(currentGroup()?.subGroups!);\n for (const group of subGroups) {\n members = members.concat(\n await adminClient.groups.listMembers({ id: group.id! })\n );\n }\n members = uniqBy(members, (member) => member.username);\n }\n\n const memberOfPromises = await Promise.all(\n members.map((member) => getMembership(member.id!))\n );\n return members.map((member: UserRepresentation, i) => {\n return { ...member, membership: memberOfPromises[i] };\n });\n };\n\n return (\n <>\n {addMembers && (\n {\n setAddMembers(false);\n refresh();\n }}\n />\n )}\n setSelectedRows([...rows])}\n toolbarItem={\n isManager && (\n <>\n \n setAddMembers(true)}\n >\n {t(\"addMember\")}\n \n \n \n setIncludeSubGroup(!includeSubGroup)}\n />\n \n \n setIsKebabOpen(!isKebabOpen)}\n isDisabled={selectedRows.length === 0}\n />\n }\n isOpen={isKebabOpen}\n isPlain\n dropdownItems={[\n {\n try {\n await Promise.all(\n selectedRows.map((user) =>\n adminClient.users.delFromGroup({\n id: user.id!,\n groupId: id!,\n })\n )\n );\n setIsKebabOpen(false);\n addAlert(\n t(\"usersLeft\", { count: selectedRows.length }),\n AlertVariant.success\n );\n } catch (error) {\n addError(\"groups:usersLeftError\", error);\n }\n\n refresh();\n }}\n >\n {t(\"leave\")}\n ,\n ]}\n />\n \n \n )\n }\n actions={\n isManager\n ? [\n {\n title: t(\"leave\"),\n onRowClick: async (user) => {\n try {\n await adminClient.users.delFromGroup({\n id: user.id!,\n groupId: id!,\n });\n addAlert(\n t(\"usersLeft\", { count: 1 }),\n AlertVariant.success\n );\n } catch (error) {\n addError(\"groups:usersLeftError\", error);\n }\n\n return true;\n },\n } as Action,\n ]\n : []\n }\n columns={[\n {\n name: \"username\",\n displayKey: \"common:name\",\n cellRenderer: UserDetailLink,\n },\n {\n name: \"email\",\n displayKey: \"groups:email\",\n cellFormatters: [emptyFormatter()],\n },\n {\n name: \"firstName\",\n displayKey: \"groups:firstName\",\n cellFormatters: [emptyFormatter()],\n },\n {\n name: \"lastName\",\n displayKey: \"groups:lastName\",\n cellFormatters: [emptyFormatter()],\n },\n {\n name: \"membership\",\n displayKey: \"groups:membership\",\n cellRenderer: MemberOfRenderer,\n },\n ]}\n emptyState={\n setAddMembers(true)}\n secondaryActions={[\n {\n text: t(\"includeSubGroups\"),\n onClick: () => setIncludeSubGroup(true),\n },\n ]}\n />\n }\n />\n \n );\n};\n","import type GroupRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/groupRepresentation\";\nimport {\n AlertVariant,\n Checkbox,\n Dropdown,\n DropdownItem,\n DropdownPosition,\n DropdownSeparator,\n InputGroup,\n KebabToggle,\n Tooltip,\n TreeView,\n TreeViewDataItem,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\n\nimport { adminClient } from \"../../admin-client\";\nimport { useAlerts } from \"../../components/alert/Alerts\";\nimport { KeycloakSpinner } from \"../../components/keycloak-spinner/KeycloakSpinner\";\nimport { PaginatingTableToolbar } from \"../../components/table-toolbar/PaginatingTableToolbar\";\nimport { useAccess } from \"../../context/access/Access\";\nimport { fetchAdminUI } from \"../../context/auth/admin-ui-endpoint\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport { joinPath } from \"../../utils/joinPath\";\nimport { useFetch } from \"../../utils/useFetch\";\nimport useToggle from \"../../utils/useToggle\";\nimport { GroupsModal } from \"../GroupsModal\";\nimport { useSubGroups } from \"../SubGroupsContext\";\nimport { toGroups } from \"../routes/Groups\";\nimport { DeleteGroup } from \"./DeleteGroup\";\nimport { MoveDialog } from \"./MoveDialog\";\n\nimport \"./group-tree.css\";\n\ntype GroupTreeContextMenuProps = {\n group: GroupRepresentation;\n refresh: () => void;\n};\n\nconst GroupTreeContextMenu = ({\n group,\n refresh,\n}: GroupTreeContextMenuProps) => {\n const { t } = useTranslation(\"groups\");\n\n const [isOpen, toggleOpen] = useToggle();\n const [renameOpen, toggleRenameOpen] = useToggle();\n const [createOpen, toggleCreateOpen] = useToggle();\n const [moveOpen, toggleMoveOpen] = useToggle();\n const [deleteOpen, toggleDeleteOpen] = useToggle();\n\n return (\n <>\n {renameOpen && (\n {\n refresh();\n }}\n handleModalToggle={toggleRenameOpen}\n />\n )}\n {createOpen && (\n \n )}\n {moveOpen && (\n \n )}\n \n }\n isOpen={isOpen}\n isPlain\n position={DropdownPosition.right}\n dropdownItems={[\n \n {t(\"rename\")}\n ,\n \n {t(\"moveTo\")}\n ,\n \n {t(\"createChildGroup\")}\n ,\n ,\n \n {t(\"common:delete\")}\n ,\n ]}\n />\n \n );\n};\n\ntype GroupTreeProps = {\n refresh: () => void;\n canViewDetails: boolean;\n};\n\nexport const GroupTree = ({\n refresh: viewRefresh,\n canViewDetails,\n}: GroupTreeProps) => {\n const { t } = useTranslation(\"groups\");\n const { realm } = useRealm();\n const navigate = useNavigate();\n const { addAlert } = useAlerts();\n const { hasAccess } = useAccess();\n\n const [data, setData] = useState();\n const [groups, setGroups] = useState([]);\n const { subGroups, setSubGroups } = useSubGroups();\n\n const [search, setSearch] = useState(\"\");\n const [max, setMax] = useState(20);\n const [first, setFirst] = useState(0);\n const [count, setCount] = useState(0);\n const [exact, setExact] = useState(false);\n const [activeItem, setActiveItem] = useState();\n\n const [key, setKey] = useState(0);\n const refresh = () => {\n setKey(key + 1);\n viewRefresh();\n };\n\n const mapGroup = (\n group: GroupRepresentation,\n parents: GroupRepresentation[],\n refresh: () => void\n ): TreeViewDataItem => {\n const groups = [...parents, group];\n return {\n id: joinPath(...groups.map((g) => g.id!)),\n name: (\n \n {group.name}\n \n ),\n children:\n group.subGroups && group.subGroups.length > 0\n ? group.subGroups.map((g) => mapGroup(g, groups, refresh))\n : undefined,\n action: (hasAccess(\"manage-users\") || group.access?.manage) && (\n \n ),\n defaultExpanded: subGroups.map((g) => g.id).includes(group.id),\n };\n };\n\n useFetch(\n async () => {\n const groups = await fetchAdminUI(\n \"ui-ext/groups\",\n Object.assign(\n {\n first: `${first}`,\n max: `${max + 1}`,\n exact: `${exact}`,\n },\n search === \"\" ? null : { search }\n )\n );\n const count = (await adminClient.groups.count({ search, top: true }))\n .count;\n return { groups, count };\n },\n ({ groups, count }) => {\n setGroups(groups);\n setData(groups.map((g) => mapGroup(g, [], refresh)));\n setCount(count);\n },\n [key, first, max, search, exact]\n );\n\n const findGroup = (\n groups: GroupRepresentation[],\n id: string,\n path: GroupRepresentation[],\n found: GroupRepresentation[]\n ) => {\n return groups.map((group) => {\n if (found.length > 0) return;\n\n if (group.subGroups && group.subGroups.length > 0)\n findGroup(group.subGroups, id, [...path, group], found);\n\n if (group.id === id) {\n found.push(...path, group);\n }\n });\n };\n\n return data ? (\n {\n setFirst(first);\n setMax(max);\n }}\n inputGroupName=\"searchForGroups\"\n inputGroupPlaceholder={t(\"groups:searchForGroups\")}\n inputGroupOnEnter={setSearch}\n toolbarItem={\n \n setExact(value)}\n />\n \n \n }\n >\n {data.length > 0 && (\n 0}\n activeItems={activeItem ? [activeItem] : undefined}\n hasGuides\n hasSelectableNodes\n className=\"keycloak_groups_treeview\"\n onSelect={(_, item) => {\n setActiveItem(item);\n const id = item.id?.substring(item.id.lastIndexOf(\"/\") + 1);\n const subGroups: GroupRepresentation[] = [];\n findGroup(groups, id!, [], subGroups);\n setSubGroups(subGroups);\n\n if (canViewDetails || subGroups.at(-1)?.access?.view) {\n navigate(toGroups({ realm, id: item.id }));\n } else {\n addAlert(t(\"noViewRights\"), AlertVariant.warning);\n navigate(toGroups({ realm }));\n }\n }}\n />\n )}\n \n ) : (\n \n );\n};\n","import type GroupRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/groupRepresentation\";\nimport {\n Drawer,\n DrawerContent,\n DrawerContentBody,\n DrawerHead,\n DrawerPanelContent,\n DropdownItem,\n PageSection,\n PageSectionVariants,\n Tab,\n TabTitleText,\n Tabs,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useLocation, useNavigate } from \"react-router-dom\";\n\nimport { adminClient } from \"../admin-client\";\nimport { GroupBreadCrumbs } from \"../components/bread-crumb/GroupBreadCrumbs\";\nimport { PermissionsTab } from \"../components/permission-tab/PermissionTab\";\nimport { ViewHeader } from \"../components/view-header/ViewHeader\";\nimport { useAccess } from \"../context/access/Access\";\nimport { useRealm } from \"../context/realm-context/RealmContext\";\nimport helpUrls from \"../help-urls\";\nimport { useFetch } from \"../utils/useFetch\";\nimport useIsFeatureEnabled, { Feature } from \"../utils/useIsFeatureEnabled\";\nimport useToggle from \"../utils/useToggle\";\nimport { GroupAttributes } from \"./GroupAttributes\";\nimport { GroupRoleMapping } from \"./GroupRoleMapping\";\nimport { GroupTable } from \"./GroupTable\";\nimport { GroupsModal } from \"./GroupsModal\";\nimport { Members } from \"./Members\";\nimport { useSubGroups } from \"./SubGroupsContext\";\nimport { DeleteGroup } from \"./components/DeleteGroup\";\nimport { GroupTree } from \"./components/GroupTree\";\nimport { getId, getLastId } from \"./groupIdUtils\";\nimport { toGroups } from \"./routes/Groups\";\n\nimport \"./GroupsSection.css\";\n\nexport default function GroupsSection() {\n const { t } = useTranslation(\"groups\");\n const [activeTab, setActiveTab] = useState(0);\n\n const { subGroups, setSubGroups, currentGroup } = useSubGroups();\n const { realm } = useRealm();\n\n const [rename, setRename] = useState();\n const [deleteOpen, toggleDeleteOpen] = useToggle();\n\n const navigate = useNavigate();\n const location = useLocation();\n const id = getLastId(location.pathname);\n\n const [key, setKey] = useState(0);\n const refresh = () => setKey(key + 1);\n\n const { hasAccess } = useAccess();\n const isFeatureEnabled = useIsFeatureEnabled();\n const canViewPermissions =\n isFeatureEnabled(Feature.AdminFineGrainedAuthz) &&\n hasAccess(\"manage-authorization\", \"manage-users\", \"manage-clients\");\n const canManageGroup =\n hasAccess(\"manage-users\") || currentGroup()?.access?.manage;\n const canManageRoles = hasAccess(\"manage-users\");\n const canViewDetails =\n hasAccess(\"query-groups\", \"view-users\") ||\n hasAccess(\"manage-users\", \"query-groups\");\n const canViewMembers =\n hasAccess(\"view-users\") ||\n currentGroup()?.access?.viewMembers ||\n currentGroup()?.access?.manageMembers;\n\n useFetch(\n async () => {\n const ids = getId(location.pathname);\n const isNavigationStateInValid = ids && ids.length > subGroups.length;\n\n if (isNavigationStateInValid) {\n const groups: GroupRepresentation[] = [];\n for (const i of ids!) {\n const group =\n i !== \"search\"\n ? await adminClient.groups.findOne({ id: i })\n : { name: t(\"searchGroups\"), id: \"search\" };\n if (group) {\n groups.push(group);\n } else {\n throw new Error(t(\"common:notFound\"));\n }\n }\n return groups;\n }\n return [];\n },\n (groups: GroupRepresentation[]) => {\n if (groups.length) setSubGroups(groups);\n },\n [id]\n );\n\n return (\n <>\n {\n navigate(toGroups({ realm }));\n refresh();\n }}\n />\n {rename && (\n {\n refresh();\n setSubGroups([...subGroups.slice(0, subGroups.length - 1), group!]);\n }}\n handleModalToggle={() => setRename(undefined)}\n />\n )}\n \n \n \n \n \n setRename(currentGroup())}\n >\n {t(\"renameGroup\")}\n ,\n \n {t(\"deleteGroup\")}\n ,\n ]\n : undefined\n }\n />\n {subGroups.length > 0 && (\n setActiveTab(key as number)}\n isBox\n mountOnEnter\n unmountOnExit\n >\n {t(\"childGroups\")}}\n >\n \n \n {canViewMembers && (\n {t(\"members\")}}\n >\n \n \n )}\n {t(\"common:attributes\")}\n }\n >\n \n \n {canManageRoles && (\n {t(\"roleMapping\")}\n }\n >\n \n \n )}\n {canViewPermissions && (\n \n {t(\"common:permissions\")}\n \n }\n >\n \n \n )}\n \n )}\n {subGroups.length === 0 && (\n \n )}\n \n \n }\n >\n \n \n \n \n \n \n \n );\n}\n"],"names":["DrawerPanelBody","_a","className","children","hasNoPadding","props","__rest","React.createElement","css","styles","DrawerHead","TreeViewList","isNested","toolbar","React.Fragment","Divider","TreeViewListItemBase","name","title","id","isExpanded","defaultExpanded","onSelect","onCheck","hasCheck","checkProps","hasBadge","customBadgeContent","badgeProps","isSelectable","isCompact","activeItems","itemData","parentItem","icon","expandedIcon","action","compareItems","useMemo","internalIsExpanded","setIsExpanded","useState","useEffect","Component","ToggleComponent","renderToggle","randomId","React","evt","AngleRightIcon","renderCheck","elem","iconRendered","renderNodeContent","content","badgeRendered","Badge","GenerateId","item","TreeViewListItem","prevProps","nextProps","prevIncludes","nextIncludes","TreeViewRoot","React.Component","React.createRef","event","_b","_c","_d","_e","_f","_g","activeElement","key","treeItems","el","KeyTypes","handleArrows","element","isExpandable","parentList","parentButton","childElement","treeNodes","canUseDOM","firstToggle","firstInput","firstTextButton","hasChecks","hasGuides","variant","hasSelectableNodes","TreeView","data","hasBadges","defaultAllExpanded","allExpanded","itemToCheck","treeViewList","GroupBreadCrumbs","t","useTranslation","clear","remove","subGroups","useSubGroups","realm","useRealm","location","useLocation","pathname","jsxs","Breadcrumb","jsx","BreadcrumbItem","Link","group","i","isLastGroup","getId","pathParts","getLastId","GroupAttributes","addAlert","addError","useAlerts","form","useForm","currentGroup","setSubGroups","convertAttributes","attr","arrayToKeyValue","save","attributeForm","attributes","keyValueToArray","adminClient","AlertVariant","error","PageSection","PageSectionVariants","AttributesForm","GroupRoleMapping","assignRoles","rows","realmRoles","row","RoleMapping","GroupsModal","rename","handleModalToggle","refresh","register","handleSubmit","errors","submitForm","Modal","ModalVariant","Button","ButtonVariant","Form","FormGroup","ValidatedOptions","KeycloakTextInput","DeleteGroup","selectedRows","show","toggleDialog","multiDelete","ConfirmDialogModal","GroupToolbar","toggleCreate","toggleDelete","kebabDisabled","hasAccess","useAccess","isManager","openKebab","toggleKebab","useToggle","Fragment","ToolbarItem","Dropdown","KebabToggle","DropdownItem","moveToRoot","source","moveToGroup","dest","MoveDialog","onClose","moveGroup","GroupPickerDialog","GroupTable","viewRefresh","canViewDetails","setSelectedRows","setRename","isCreateModalOpen","toggleCreateOpen","showDelete","toggleShowDelete","move","setMove","setKey","search","setSearch","navigate","useNavigate","loader","first","max","params","groupsData","g","fetchAdminUI","toGroups","KeycloakDataTable","SearchInput","_","value","ListEmptyState","MemberModal","groupId","members","users","differenceBy","user","emptyFormatter","MemberOfRenderer","member","index","GroupPath","UserDetailLink","toUser","Members","includeSubGroup","setIncludeSubGroup","addMembers","setAddMembers","isKebabOpen","setIsKebabOpen","getMembership","getSubGroups","groups","subs","uniqBy","memberOfPromises","Checkbox","GroupTreeContextMenu","isOpen","toggleOpen","renameOpen","toggleRenameOpen","createOpen","moveOpen","toggleMoveOpen","deleteOpen","toggleDeleteOpen","DropdownPosition","DropdownSeparator","GroupTree","setData","setGroups","setMax","setFirst","count","setCount","exact","setExact","activeItem","setActiveItem","mapGroup","parents","joinPath","Tooltip","useFetch","findGroup","path","found","PaginatingTableToolbar","InputGroup","KeycloakSpinner","GroupsSection","activeTab","setActiveTab","canViewPermissions","useIsFeatureEnabled","Feature","canManageGroup","canManageRoles","canViewMembers","ids","Drawer","DrawerContent","DrawerPanelContent","ViewHeader","helpUrls","Tabs","Tab","TabTitleText","PermissionsTab","DrawerContentBody"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6]}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy