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

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

There is a newer version: 26.0.7
Show newest version
{"version":3,"file":"GroupsSection-C2OkoLCc.js","sources":["../../../../../node_modules/.pnpm/@[email protected][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][email protected]/node_modules/@patternfly/react-core/dist/esm/components/Drawer/DrawerHead.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][email protected]/node_modules/@patternfly/react-core/dist/esm/components/TreeView/TreeViewList.js","../../../../../node_modules/.pnpm/@[email protected][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][email protected]/node_modules/@patternfly/react-core/dist/esm/components/TreeView/TreeViewRoot.js","../../../../../node_modules/.pnpm/@[email protected][email protected][email protected][email protected]/node_modules/@patternfly/react-core/dist/esm/components/TreeView/TreeView.js","../../../../../node_modules/.pnpm/@[email protected][email protected][email protected][email protected]/node_modules/@patternfly/react-icons/dist/esm/icons/tree-icon.js","../../../../../node_modules/.pnpm/[email protected]/node_modules/lodash-es/unionBy.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/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.mjs';\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.mjs';\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 './tree-view.css';\nexport default {\n  \"badge\": \"pf-v5-c-badge\",\n  \"dirRtl\": \"pf-v5-m-dir-rtl\",\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-v5-theme-dark\",\n  \"treeView\": \"pf-v5-c-tree-view\",\n  \"treeViewAction\": \"pf-v5-c-tree-view__action\",\n  \"treeViewContent\": \"pf-v5-c-tree-view__content\",\n  \"treeViewListItem\": \"pf-v5-c-tree-view__list-item\",\n  \"treeViewNode\": \"pf-v5-c-tree-view__node\",\n  \"treeViewNodeCheck\": \"pf-v5-c-tree-view__node-check\",\n  \"treeViewNodeContainer\": \"pf-v5-c-tree-view__node-container\",\n  \"treeViewNodeContent\": \"pf-v5-c-tree-view__node-content\",\n  \"treeViewNodeCount\": \"pf-v5-c-tree-view__node-count\",\n  \"treeViewNodeIcon\": \"pf-v5-c-tree-view__node-icon\",\n  \"treeViewNodeText\": \"pf-v5-c-tree-view__node-text\",\n  \"treeViewNodeTitle\": \"pf-v5-c-tree-view__node-title\",\n  \"treeViewNodeToggle\": \"pf-v5-c-tree-view__node-toggle\",\n  \"treeViewNodeToggleIcon\": \"pf-v5-c-tree-view__node-toggle-icon\",\n  \"treeViewSearch\": \"pf-v5-c-tree-view__search\"\n};","import { __rest } from \"tslib\";\nimport * as React from 'react';\nimport { css } from '@patternfly/react-styles';\nimport { Divider } from '../Divider';\nimport styles from '@patternfly/react-styles/css/components/TreeView/tree-view.mjs';\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(`${styles.treeView}__list`), role: isNested ? 'group' : 'tree' }, props), children)));\n};\nTreeViewList.displayName = 'TreeViewList';\n//# sourceMappingURL=TreeViewList.js.map","import React, { useState, useEffect } from 'react';\nimport { css } from '@patternfly/react-styles';\nimport styles from '@patternfly/react-styles/css/components/TreeView/tree-view.mjs';\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, onExpand, onCollapse, onCheck, hasCheckbox = 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 (hasCheckbox) {\n        Component = 'label';\n    }\n    else if (isSelectable) {\n        Component = 'div';\n    }\n    const ToggleComponent = hasCheckbox || isSelectable ? 'button' : 'span';\n    const renderToggle = (randomId) => (React.createElement(ToggleComponent, Object.assign({ className: css(styles.treeViewNodeToggle), onClick: (evt) => {\n            if (isSelectable || hasCheckbox) {\n                if (internalIsExpanded) {\n                    onCollapse && onCollapse(evt, itemData, parentItem);\n                }\n                else {\n                    onExpand && onExpand(evt, itemData, parentItem);\n                }\n                setIsExpanded(!internalIsExpanded);\n            }\n            if (isSelectable) {\n                evt.stopPropagation();\n            }\n        } }, ((hasCheckbox || isSelectable) && { 'aria-labelledby': `label-${randomId}` }), (ToggleComponent === 'button' && { type: 'button' }), { 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), type: \"button\" }, 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\", { id: id, className: css(styles.treeViewListItem, internalIsExpanded && styles.modifiers.expanded), \"aria-expanded\": internalIsExpanded, 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 || hasCheckbox) && 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 (!hasCheckbox) {\n                        onSelect && onSelect(evt, itemData, parentItem);\n                        if (!isSelectable && children && evt.isDefaultPrevented() !== true) {\n                            if (internalIsExpanded) {\n                                onCollapse && onCollapse(evt, itemData, parentItem);\n                            }\n                            else {\n                                onExpand && onExpand(evt, itemData, parentItem);\n                            }\n                            setIsExpanded(!internalIsExpanded);\n                        }\n                    }\n                } }, (hasCheckbox && { htmlFor: randomId }), ((hasCheckbox || (isSelectable && children)) && { id: `label-${randomId}` }), (Component === 'button' && { type: 'button' })),\n                React.createElement(\"span\", { className: css(styles.treeViewNodeContainer) },\n                    children && renderToggle(randomId),\n                    hasCheckbox && 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.onExpand !== nextProps.onExpand ||\n        prevProps.onCollapse !== nextProps.onCollapse ||\n        prevProps.hasCheckbox !== nextProps.hasCheckbox ||\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.mjs';\nimport { canUseDOM } from '../../helpers/util';\nimport { handleArrows } from '../../helpers';\nimport { KeyTypes } from '../../helpers/constants';\nclass 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                !event.target.classList.contains(styles.treeViewNode)) {\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(styles.treeViewNode)).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(styles.treeViewNodeToggle);\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(styles.treeViewNode));\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.hasCheckboxes || this.props.hasSelectableNodes ? this.handleKeysCheckbox : this.handleKeys);\n        }\n        if (this.props.hasCheckboxes || this.props.hasSelectableNodes) {\n            const firstToggle = this.treeRef.current.getElementsByClassName(styles.treeViewNodeToggle)[0];\n            if (firstToggle) {\n                firstToggle.tabIndex = 0;\n            }\n            if (this.props.hasCheckboxes) {\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(styles.treeViewNodeText)[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(styles.treeViewNode)[0]).tabIndex = 0;\n        }\n    }\n    componentWillUnmount() {\n        if (canUseDOM) {\n            window.removeEventListener('keydown', this.props.hasCheckboxes || 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, hasCheckboxes, hasGuides, variant, className, hasSelectableNodes } = _a, props = __rest(_a, [\"children\", \"hasCheckboxes\", \"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}\nexport { TreeViewRoot };\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, hasCheckboxes = false, hasBadges = false, hasGuides = false, hasSelectableNodes = false, variant = 'default', defaultAllExpanded = false, allExpanded, icon, expandedIcon, parentItem, onSelect, onCheck, onExpand, onCollapse, toolbar, activeItems, compareItems = (item, itemToCheck) => item.id === itemToCheck.id, className, useMemo } = _a, props = __rest(_a, [\"data\", \"isNested\", \"hasCheckboxes\", \"hasBadges\", \"hasGuides\", \"hasSelectableNodes\", \"variant\", \"defaultAllExpanded\", \"allExpanded\", \"icon\", \"expandedIcon\", \"parentItem\", \"onSelect\", \"onCheck\", \"onExpand\", \"onCollapse\", \"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, onExpand: onExpand, onCollapse: onCollapse, hasCheckbox: item.hasCheckbox !== undefined ? item.hasCheckbox : hasCheckboxes, 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, hasCheckboxes: hasCheckboxes, hasBadges: hasBadges, hasGuides: hasGuides, hasSelectableNodes: hasSelectableNodes, variant: variant, allExpanded: allExpanded, defaultAllExpanded: defaultAllExpanded, onSelect: onSelect, onCheck: onCheck, onExpand: onExpand, onCollapse: onCollapse, activeItems: activeItems, icon: icon, expandedIcon: expandedIcon }))\n        }))));\n    })));\n    return (React.createElement(React.Fragment, null, parentItem ? (treeViewList) : (React.createElement(TreeViewRoot, Object.assign({ hasSelectableNodes: hasSelectableNodes, hasCheckboxes: hasCheckboxes, hasGuides: hasGuides, variant: variant, className: className }, props), treeViewList))));\n};\nTreeView.displayName = 'TreeView';\n//# sourceMappingURL=TreeView.js.map","import { createIcon } from '../createIcon';\n\nexport const TreeIconConfig = {\n  name: 'TreeIcon',\n  height: 512,\n  width: 384,\n  svgPath: 'M378.31 378.49L298.42 288h30.63c9.01 0 16.98-5 20.78-13.06 3.8-8.04 2.55-17.26-3.28-24.05L268.42 160h28.89c9.1 0 17.3-5.35 20.86-13.61 3.52-8.13 1.86-17.59-4.24-24.08L203.66 4.83c-6.03-6.45-17.28-6.45-23.32 0L70.06 122.31c-6.1 6.49-7.75 15.95-4.24 24.08C69.38 154.65 77.59 160 86.69 160h28.89l-78.14 90.91c-5.81 6.78-7.06 15.99-3.27 24.04C37.97 283 45.93 288 54.95 288h30.63L5.69 378.49c-6 6.79-7.36 16.09-3.56 24.26 3.75 8.05 12 13.25 21.01 13.25H160v24.45l-30.29 48.4c-5.32 10.64 2.42 23.16 14.31 23.16h95.96c11.89 0 19.63-12.52 14.31-23.16L224 440.45V416h136.86c9.01 0 17.26-5.2 21.01-13.25 3.8-8.17 2.44-17.47-3.56-24.26z',\n  yOffset: 0,\n  xOffset: 0,\n};\n\nexport const TreeIcon = createIcon(TreeIconConfig);\n\nexport default TreeIcon;","import baseFlatten from './_baseFlatten.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseRest from './_baseRest.js';\nimport baseUniq from './_baseUniq.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport last from './last.js';\n\n/**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nvar unionBy = baseRest(function(arrays) {\n  var iteratee = last(arrays);\n  if (isArrayLikeObject(iteratee)) {\n    iteratee = undefined;\n  }\n  return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), baseIteratee(iteratee, 2));\n});\n\nexport default unionBy;\n","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(\"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 GroupRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/groupRepresentation\";\nimport {\n  AlertVariant,\n  PageSection,\n  PageSectionVariants,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { useLocation } from \"react-router-dom\";\nimport { useAdminClient } from \"../admin-client\";\nimport { useAlerts } from \"../components/alert/Alerts\";\nimport {\n  AttributeForm,\n  AttributesForm,\n} from \"../components/key-value-form/AttributeForm\";\nimport { arrayToKeyValue } from \"../components/key-value-form/key-value-convert\";\nimport { convertFormValuesToObject, convertToFormValues } from \"../util\";\nimport { useFetch } from \"../utils/useFetch\";\nimport { getLastId } from \"./groupIdUtils\";\n\nexport const GroupAttributes = () => {\n  const { adminClient } = useAdminClient();\n\n  const { t } = useTranslation();\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, setCurrentGroup] = useState();\n\n  useFetch(\n    () => adminClient.groups.findOne({ id }),\n    (group) => {\n      convertToFormValues(group!, form.setValue);\n      setCurrentGroup(group);\n    },\n    [id],\n  );\n\n  const save = async (attributeForm: AttributeForm) => {\n    try {\n      const attributes = convertFormValuesToObject(attributeForm).attributes;\n      await adminClient.groups.update(\n        { id: id! },\n        { ...currentGroup, attributes },\n      );\n\n      setCurrentGroup({ ...currentGroup, attributes });\n      addAlert(t(\"groupUpdated\"), AlertVariant.success);\n    } catch (error) {\n      addError(\"groupUpdateError\", error);\n    }\n  };\n\n  return (\n    \n      \n          form.reset({\n            attributes: arrayToKeyValue(currentGroup?.attributes!),\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\";\nimport { useAdminClient } 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 { adminClient } = useAdminClient();\n\n  const { t } = useTranslation();\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(\"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  Modal,\n  ModalVariant,\n} from \"@patternfly/react-core\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { FormSubmitButton, TextControl } from \"@keycloak/keycloak-ui-shared\";\nimport { useAdminClient } from \"../admin-client\";\nimport { useAlerts } from \"../components/alert/Alerts\";\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 { adminClient } = useAdminClient();\n\n  const { t } = useTranslation();\n  const { addAlert, addError } = useAlerts();\n\n  const form = useForm({\n    defaultValues: { name: rename?.name },\n  });\n  const { handleSubmit, formState } = form;\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(\"couldNotCreateGroup\", error);\n    }\n  };\n\n  return (\n    \n          {t(rename ? \"rename\" : \"create\")}\n        ,\n         {\n            handleModalToggle();\n          }}\n        >\n          {t(\"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\";\nimport { useAdminClient } 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 { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\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(\"groupDeleteError\", error);\n }\n };\n\n return (\n \n );\n};\n","import {\n Button,\n Dropdown,\n DropdownItem,\n DropdownList,\n MenuToggle,\n ToolbarItem,\n} from \"@patternfly/react-core\";\nimport { EllipsisVIcon } from \"@patternfly/react-icons\";\nimport { useTranslation } from \"react-i18next\";\nimport { useAccess } from \"../../context/access/Access\";\nimport useToggle from \"../../utils/useToggle\";\nimport { useSubGroups } from \"../SubGroupsContext\";\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();\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 \n \n )}\n isOpen={openKebab}\n >\n \n {\n toggleDelete();\n toggleKebab();\n }}\n >\n {t(\"delete\")}\n \n \n \n \n \n );\n};\n","import type KeycloakAdminClient from \"@keycloak/keycloak-admin-client\";\nimport type GroupRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/groupRepresentation\";\nimport { useTranslation } from \"react-i18next\";\nimport { useAdminClient } 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 = (\n adminClient: KeycloakAdminClient,\n source: GroupRepresentation,\n) =>\n source.id\n ? adminClient.groups.updateRoot(source)\n : adminClient.groups.create(source);\n\nconst moveToGroup = async (\n adminClient: KeycloakAdminClient,\n source: GroupRepresentation,\n dest: GroupRepresentation,\n) => adminClient.groups.updateChildGroup({ id: dest.id! }, source);\n\nexport const MoveDialog = ({ source, onClose, refresh }: MoveDialogProps) => {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n const { addAlert, addError } = useAlerts();\n\n const moveGroup = async (group?: GroupRepresentation[]) => {\n try {\n await (group\n ? moveToGroup(adminClient, source, group[0])\n : moveToRoot(adminClient, source));\n refresh();\n addAlert(t(\"moveGroupSuccess\"));\n } catch (error) {\n addError(\"moveGroupError\", error);\n }\n };\n\n return (\n \n );\n};\n","import type GroupRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/groupRepresentation\";\nimport {\n GroupQuery,\n SubGroupQuery,\n} from \"@keycloak/keycloak-admin-client/lib/resources/groups\";\nimport { SearchInput, ToolbarItem } from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useLocation } from \"react-router-dom\";\nimport { useAdminClient } 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 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\";\n\ntype GroupTableProps = {\n refresh: () => void;\n};\n\nexport const GroupTable = ({ refresh: viewRefresh }: GroupTableProps) => {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n\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 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 let groupsData = undefined;\n if (id) {\n const args: SubGroupQuery = {\n search: search || \"\",\n first: first,\n max: max,\n parentId: id,\n };\n groupsData = await adminClient.groups.listSubGroups(args);\n } else {\n const args: GroupQuery = {\n search: search || \"\",\n first: first || undefined,\n max: max || undefined,\n };\n groupsData = await adminClient.groups.find(args);\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\"\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(\"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: \"groupName\",\n cellRenderer: (group) =>\n group.access?.view ? (\n \n {group.name}\n \n ) : (\n {group.name}\n ),\n },\n ]}\n emptyState={\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 { SubGroupQuery } from \"@keycloak/keycloak-admin-client/lib/resources/groups\";\nimport {\n Button,\n Checkbox,\n Dropdown,\n DropdownItem,\n DropdownList,\n MenuToggle,\n ToolbarItem,\n} from \"@patternfly/react-core\";\nimport { EllipsisVIcon } from \"@patternfly/react-icons\";\nimport { uniqBy } from \"lodash-es\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useLocation } from \"react-router-dom\";\nimport { useAdminClient } from \"../admin-client\";\nimport { useAlerts } from \"../components/alert/Alerts\";\nimport { GroupPath } from \"../components/group/GroupPath\";\nimport { KeycloakSpinner } from \"../components/keycloak-spinner/KeycloakSpinner\";\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 { useFetch } from \"../utils/useFetch\";\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 { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\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: group } = useSubGroups();\n const [currentGroup, setCurrentGroup] = useState();\n const [addMembers, setAddMembers] = useState(false);\n const [isKebabOpen, setIsKebabOpen] = useState(false);\n const [selectedRows, setSelectedRows] = useState([]);\n const { hasAccess } = useAccess();\n\n useFetch(\n () => adminClient.groups.findOne({ id: group()!.id! }),\n setCurrentGroup,\n [],\n );\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 // this queries the subgroups using the new search paradigm but doesn't\n // account for pagination and therefore isn't going to scale well\n const getSubGroups = async (groupId?: string, count = 0) => {\n let nestedGroups: GroupRepresentation[] = [];\n if (!count || !groupId) {\n return nestedGroups;\n }\n const args: SubGroupQuery = {\n parentId: groupId,\n first: 0,\n max: count,\n };\n const subGroups: GroupRepresentation[] =\n await adminClient.groups.listSubGroups(args);\n nestedGroups = nestedGroups.concat(subGroups);\n\n await Promise.all(\n subGroups.map((g) => getSubGroups(g.id, g.subGroupCount)),\n ).then((values: GroupRepresentation[][]) => {\n values.forEach((groups) => (nestedGroups = nestedGroups.concat(groups)));\n });\n return nestedGroups;\n };\n\n const loader = async (first?: number, max?: number) => {\n if (!id) {\n return [];\n }\n\n let members = await adminClient.groups.listMembers({\n id: id!,\n first,\n max,\n });\n\n if (includeSubGroup && currentGroup?.subGroupCount && currentGroup.id) {\n const subGroups = await getSubGroups(\n currentGroup.id,\n currentGroup.subGroupCount,\n );\n await Promise.all(\n subGroups.map((g) => adminClient.groups.listMembers({ id: g.id! })),\n ).then((values: UserRepresentation[][]) => {\n values.forEach((users) => (members = members.concat(users)));\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 if (!currentGroup) {\n return ;\n }\n\n return (\n <>\n {addMembers && (\n \n await adminClient.groups.listMembers({ id: id! })\n }\n onAdd={async (selectedRows) => {\n try {\n await Promise.all(\n selectedRows.map((user) =>\n adminClient.users.addToGroup({ id: user.id!, groupId: id! }),\n ),\n );\n addAlert(t(\"usersAdded\", { count: selectedRows.length }));\n } catch (error) {\n addError(\"usersAddedError\", error);\n }\n }}\n onClose={() => {\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(isOpen)}\n toggle={(ref) => (\n setIsKebabOpen(!isKebabOpen)}\n isExpanded={isKebabOpen}\n isDisabled={selectedRows.length === 0}\n aria-label=\"Actions\"\n >\n \n \n )}\n shouldFocusToggleOnSelect\n isOpen={isKebabOpen}\n >\n \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 );\n } catch (error) {\n addError(\"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(t(\"usersLeft\", { count: 1 }));\n } catch (error) {\n addError(\"usersLeftError\", error);\n }\n\n return true;\n },\n } as Action,\n ]\n : []\n }\n columns={[\n {\n name: \"username\",\n displayKey: \"name\",\n cellRenderer: UserDetailLink,\n },\n {\n name: \"email\",\n displayKey: \"email\",\n cellFormatters: [emptyFormatter()],\n },\n {\n name: \"firstName\",\n displayKey: \"firstName\",\n cellFormatters: [emptyFormatter()],\n },\n {\n name: \"lastName\",\n displayKey: \"lastName\",\n cellFormatters: [emptyFormatter()],\n },\n {\n name: \"membership\",\n displayKey: \"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 Button,\n Checkbox,\n InputGroup,\n InputGroupItem,\n Spinner,\n Tooltip,\n TreeView,\n TreeViewDataItem,\n Dropdown,\n MenuToggle,\n DropdownList,\n Divider,\n DropdownItem,\n} from \"@patternfly/react-core\";\n\nimport { AngleRightIcon, EllipsisVIcon } from \"@patternfly/react-icons\";\nimport { unionBy } from \"lodash-es\";\nimport { useRef, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport { useAdminClient } 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 { 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 ExtendedTreeViewDataItem = TreeViewDataItem & {\n access?: Record;\n};\n\ntype GroupTreeContextMenuProps = {\n group: GroupRepresentation;\n refresh: () => void;\n};\n\nexport function countGroups(groups: GroupRepresentation[]) {\n let count = groups.length;\n for (const group of groups) {\n if (group.subGroups) {\n count += countGroups(group.subGroups);\n }\n }\n return count;\n}\n\nconst GroupTreeContextMenu = ({\n group,\n refresh,\n}: GroupTreeContextMenuProps) => {\n const { t } = useTranslation();\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 const navigate = useNavigate();\n const { realm } = useRealm();\n\n return (\n <>\n {renameOpen && (\n {\n navigate(toGroups({ realm }));\n refresh();\n }}\n handleModalToggle={toggleRenameOpen}\n />\n )}\n {createOpen && (\n \n )}\n {moveOpen && (\n \n )}\n {\n navigate(toGroups({ realm }));\n refresh();\n }}\n />\n (\n \n \n \n )}\n isOpen={isOpen}\n >\n \n \n {t(\"rename\")}\n \n \n {t(\"moveTo\")}\n \n \n {t(\"createChildGroup\")}\n \n ,\n \n {t(\"delete\")}\n \n \n \n \n );\n};\n\ntype GroupTreeProps = {\n refresh: () => void;\n canViewDetails: boolean;\n};\n\nconst SUBGROUP_COUNT = 50;\n\nconst TreeLoading = () => {\n const { t } = useTranslation();\n return (\n <>\n {t(\"spinnerLoading\")}\n \n );\n};\n\nconst LOADING_TREE = [\n {\n name: ,\n },\n];\n\nexport const GroupTree = ({\n refresh: viewRefresh,\n canViewDetails,\n}: GroupTreeProps) => {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n const { realm } = useRealm();\n const navigate = useNavigate();\n const { addAlert } = useAlerts();\n const { hasAccess } = useAccess();\n\n const [data, setData] = useState();\n const { subGroups, clear } = useSubGroups();\n\n const [search, setSearch] = useState(\"\");\n const [max, setMax] = useState(20);\n const [first, setFirst] = useState(0);\n const prefFirst = useRef(0);\n const prefMax = useRef(20);\n const [count, setCount] = useState(0);\n const [exact, setExact] = useState(false);\n const [activeItem, setActiveItem] = useState();\n\n const [firstSub, setFirstSub] = useState(0);\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 refresh: () => void,\n ): ExtendedTreeViewDataItem => {\n const hasSubGroups = group.subGroupCount;\n return {\n id: group.id,\n name: (\n \n {group.name}\n \n ),\n access: group.access || {},\n children: hasSubGroups\n ? search.length === 0\n ? LOADING_TREE\n : group.subGroups?.map((g) => mapGroup(g, 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 adminClient,\n \"groups\",\n Object.assign(\n {\n first: `${first}`,\n max: `${max + 1}`,\n exact: `${exact}`,\n global: `${search !== \"\"}`,\n },\n search === \"\" ? null : { search },\n ),\n );\n let subGroups: GroupRepresentation[] = [];\n if (activeItem) {\n subGroups = await fetchAdminUI(\n adminClient,\n `groups/${activeItem.id}/children`,\n {\n first: `${firstSub}`,\n max: `${SUBGROUP_COUNT}`,\n },\n );\n }\n return { groups, subGroups };\n },\n ({ groups, subGroups }) => {\n if (activeItem) {\n const found = findGroup(data || [], activeItem.id!, []);\n if (found.length && subGroups.length) {\n const foundTreeItem = found.pop()!;\n foundTreeItem.children = [\n ...(unionBy(foundTreeItem.children || []).splice(0, SUBGROUP_COUNT),\n subGroups.map((g) => mapGroup(g, refresh), \"id\")),\n ...(subGroups.length === SUBGROUP_COUNT\n ? [\n {\n id: \"next\",\n name: (\n setFirstSub(firstSub + SUBGROUP_COUNT)}\n >\n \n \n ),\n },\n ]\n : []),\n ];\n }\n }\n if (search || prefFirst.current !== first || prefMax.current !== max) {\n setData(groups.map((g) => mapGroup(g, refresh)));\n } else {\n setData(\n unionBy(\n data,\n groups.map((g) => mapGroup(g, refresh)),\n \"id\",\n ),\n );\n }\n setCount(countGroups(groups));\n prefFirst.current = first;\n prefMax.current = max;\n },\n [key, first, firstSub, max, search, exact, activeItem],\n );\n\n const findGroup = (\n groups: ExtendedTreeViewDataItem[],\n id: string,\n path: ExtendedTreeViewDataItem[],\n ) => {\n for (let index = 0; index < groups.length; index++) {\n const group = groups[index];\n if (group.id === id) {\n path.push(group);\n return path;\n }\n\n if (group.children) {\n path.push(group);\n findGroup(group.children, id, path);\n if (path[path.length - 1].id !== id) {\n path.pop();\n }\n }\n }\n return path;\n };\n\n const nav = (item: TreeViewDataItem, data: ExtendedTreeViewDataItem[]) => {\n if (item.id === \"next\") return;\n setActiveItem(item);\n\n const path = findGroup(data, item.id!, []);\n if (!subGroups.every(({ id }) => path.find((t) => t.id === id))) clear();\n if (\n canViewDetails ||\n path.at(-1)?.access?.view ||\n subGroups.at(-1)?.access?.view\n ) {\n navigate(\n toGroups({\n realm,\n id: path.map((g) => g.id).join(\"/\"),\n }),\n );\n } else {\n addAlert(t(\"noViewRights\"), AlertVariant.warning);\n navigate(toGroups({ realm }));\n }\n };\n\n return data ? (\n {\n setFirst(first);\n setMax(max);\n }}\n inputGroupName=\"searchForGroups\"\n inputGroupPlaceholder={t(\"searchForGroups\")}\n inputGroupOnEnter={setSearch}\n toolbarItem={\n \n \n setExact(value)}\n />\n \n \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 onExpand={(_, item) => {\n nav(item, data);\n }}\n onSelect={(_, item) => {\n nav(item, data);\n }}\n />\n )}\n \n ) : (\n \n );\n};\n","import type GroupRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/groupRepresentation\";\nimport {\n Button,\n Drawer,\n DrawerContent,\n DrawerContentBody,\n DrawerHead,\n DrawerPanelContent,\n DropdownItem,\n PageSection,\n PageSectionVariants,\n Tab,\n TabTitleText,\n Tabs,\n Tooltip,\n} from \"@patternfly/react-core\";\nimport { AngleLeftIcon, TreeIcon } from \"@patternfly/react-icons\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useLocation, useNavigate } from \"react-router-dom\";\nimport { useAdminClient } 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 { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\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 [open, toggle] = useToggle(true);\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 let group = undefined;\n if (i !== \"search\") {\n group = await adminClient.groups.findOne({ id: i });\n } else {\n group = { name: t(\"searchGroups\"), id: \"search\" };\n }\n if (group) {\n groups.push(group);\n } else {\n throw new Error(t(\"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 \n \n }\n >\n \n \n : }\n onClick={toggle}\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(\"attributes\")}}\n >\n \n \n {canManageRoles && (\n {t(\"roleMapping\")}}\n >\n \n \n )}\n {canViewPermissions && (\n {t(\"permissions\")}}\n >\n \n \n )}\n \n )}\n {subGroups.length === 0 && }\n \n \n \n \n \n );\n}\n"],"names":["DrawerPanelBody","_a","className","children","hasNoPadding","props","__rest","React","css","styles","DrawerHead","TreeViewList","isNested","toolbar","Divider","TreeViewListItemBase","name","title","id","isExpanded","defaultExpanded","onSelect","onExpand","onCollapse","onCheck","hasCheckbox","checkProps","hasBadge","customBadgeContent","badgeProps","isSelectable","isCompact","activeItems","itemData","parentItem","icon","expandedIcon","action","compareItems","useMemo","internalIsExpanded","setIsExpanded","useState","useEffect","Component","ToggleComponent","renderToggle","randomId","evt","AngleRightIcon","renderCheck","elem","iconRendered","renderNodeContent","content","badgeRendered","Badge","GenerateId","item","TreeViewListItem","prevProps","nextProps","prevIncludes","nextIncludes","TreeViewRoot","event","_b","_c","_d","_e","_f","_g","activeElement","key","treeItems","el","KeyTypes","handleArrows","element","isExpandable","parentList","parentButton","childElement","treeNodes","canUseDOM","firstToggle","firstInput","firstTextButton","hasCheckboxes","hasGuides","variant","hasSelectableNodes","TreeView","data","hasBadges","defaultAllExpanded","allExpanded","itemToCheck","treeViewList","TreeIconConfig","TreeIcon","createIcon","unionBy","baseRest","arrays","iteratee","last","isArrayLikeObject","baseUniq","baseFlatten","baseIteratee","GroupBreadCrumbs","useTranslation","clear","remove","subGroups","useSubGroups","realm","useRealm","location","useLocation","pathname","jsxs","Breadcrumb","jsx","BreadcrumbItem","Link","group","i","isLastGroup","getId","pathParts","getLastId","GroupAttributes","adminClient","useAdminClient","t","addAlert","addError","useAlerts","form","useForm","currentGroup","setCurrentGroup","useFetch","convertToFormValues","save","attributeForm","attributes","convertFormValuesToObject","AlertVariant","error","PageSection","PageSectionVariants","AttributesForm","arrayToKeyValue","GroupRoleMapping","RoleMapping","rows","realmRoles","row","GroupsModal","rename","handleModalToggle","refresh","handleSubmit","formState","submitForm","Modal","ModalVariant","FormSubmitButton","Button","ButtonVariant","FormProvider","Form","TextControl","DeleteGroup","selectedRows","show","toggleDialog","multiDelete","ConfirmDialogModal","GroupToolbar","toggleCreate","toggleDelete","kebabDisabled","hasAccess","useAccess","isManager","openKebab","toggleKebab","useToggle","Fragment","ToolbarItem","Dropdown","ref","MenuToggle","EllipsisVIcon","DropdownList","DropdownItem","moveToRoot","source","moveToGroup","dest","MoveDialog","onClose","GroupPickerDialog","GroupTable","viewRefresh","setSelectedRows","setRename","isCreateModalOpen","toggleCreateOpen","showDelete","toggleShowDelete","move","setMove","setKey","search","setSearch","loader","first","max","groupsData","args","KeycloakDataTable","SearchInput","_","value","ListEmptyState","MemberOfRenderer","member","index","GroupPath","UserDetailLink","user","toUser","Members","includeSubGroup","setIncludeSubGroup","addMembers","setAddMembers","isKebabOpen","setIsKebabOpen","getMembership","getSubGroups","groupId","count","nestedGroups","g","values","groups","members","users","uniqBy","memberOfPromises","MemberModal","Checkbox","isOpen","emptyFormatter","KeycloakSpinner","countGroups","GroupTreeContextMenu","toggleOpen","renameOpen","toggleRenameOpen","createOpen","moveOpen","toggleMoveOpen","deleteOpen","toggleDeleteOpen","navigate","useNavigate","toGroups","SUBGROUP_COUNT","TreeLoading","Spinner","LOADING_TREE","GroupTree","canViewDetails","setData","setMax","setFirst","prefFirst","useRef","prefMax","setCount","exact","setExact","activeItem","setActiveItem","firstSub","setFirstSub","mapGroup","hasSubGroups","Tooltip","fetchAdminUI","found","findGroup","foundTreeItem","path","nav","PaginatingTableToolbar","InputGroup","InputGroupItem","_event","GroupsSection","activeTab","setActiveTab","setSubGroups","open","toggle","canViewPermissions","useIsFeatureEnabled","Feature","canManageGroup","canManageRoles","canViewMembers","ids","Drawer","DrawerContent","DrawerPanelContent","DrawerContentBody","AngleLeftIcon","ViewHeader","helpUrls","Tabs","Tab","TabTitleText","PermissionsTab"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8]}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy