@greenbone/ui-lib 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/components/Filter/RemotePersistence/RemotePersistentFilterDropdown.js +1 -1
- package/lib/cjs/components/Filter/RemotePersistence/RemotePersistentFilterDropdown.js.map +1 -1
- package/lib/cjs/components/Layout/AppNavigation/Menu/menuItems.js +1 -1
- package/lib/cjs/components/Layout/AppNavigation/Menu/menuItems.js.map +1 -1
- package/lib/esm/components/Filter/RemotePersistence/RemotePersistentFilterDropdown.js +1 -1
- package/lib/esm/components/Filter/RemotePersistence/RemotePersistentFilterDropdown.js.map +1 -1
- package/lib/esm/components/Layout/AppNavigation/Menu/menuItems.js +1 -1
- package/lib/esm/components/Layout/AppNavigation/Menu/menuItems.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"RemotePersistentFilterDropdown",{enumerable:true,get:function(){return RemotePersistentFilterDropdown}});const _jsxruntime=require("react/jsx-runtime");const _react=/*#__PURE__*/_interop_require_wildcard(require("react"));const _lucidereact=require("lucide-react");const _RemotePersistentFilterDropdownmodulecss=/*#__PURE__*/_interop_require_default(require("./RemotePersistentFilterDropdown.module.css"));const _core=require("@mantine/core");const _reacti18next=require("react-i18next");const _Tooltip=require("../../Tooltip");const _ConfirmationDialog=require("../../ConfirmationDialog");const _genericTypes=require("../../../genericTypes");const _Typo=require("../../Typo");const _theme=require("../../../theme");function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap;var cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interop_require_wildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj}}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj)}var newObj={__proto__:null};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc)}else{newObj[key]=obj[key]}}}newObj.default=obj;if(cache){cache.set(obj,newObj)}return newObj}const RemotePersistentFilterDropdown=({remotePersistentFilters,onSelect,onDelete})=>{const{t}=(0,_reacti18next.useTranslation)();const[selectedFilter,setSelectedFilter]=(0,_react.useState)();const[modalData,setModalData]=(0,_react.useState)(null);const combobox=(0,_core.useCombobox)();const dropdownList=(0,_react.useMemo)(()=>remotePersistentFilters.map(filter=>({value:filter.id,label:filter.filterName})),[remotePersistentFilters]);const handleClick=()=>combobox.toggleDropdown();(0,_react.useEffect)(()=>{if(selectedFilter)onSelect(selectedFilter)},[selectedFilter,onSelect]);const handleSelect=(0,_react.useCallback)(filter=>{if(filter){combobox.closeDropdown();setSelectedFilter(filter)}},[combobox]);const handleDelete=(0,_react.useCallback)((e,filterId)=>{e.stopPropagation();setModalData(filterId)},[]);const handleConfirmDelete=(0,_react.useCallback)(()=>{if(modalData){onDelete(modalData);setModalData(null)}},[modalData,onDelete]);const options=(0,_react.useMemo)(()=>dropdownList.sort((a,b)=>a.label.localeCompare(b.label)).map(item=>(0,_jsxruntime.jsx)(_core.Combobox.Option,{"data-testid":"dropdown-option",value:item.value,children:(0,_jsxruntime.jsxs)(_core.Group,{className:_RemotePersistentFilterDropdownmodulecss.default.options,children:[item.label.length>35?(0,_jsxruntime.jsx)(_Tooltip.Tooltip,{label:item.label,children:(0,_jsxruntime.jsx)("span",{className:_RemotePersistentFilterDropdownmodulecss.default["truncate-text"],children:item.label})}):(0,_jsxruntime.jsx)("span",{children:item.label}),(0,_jsxruntime.jsx)(_Tooltip.Tooltip,{label:t("Delete filter"),children:(0,_jsxruntime.jsx)(_lucidereact.Trash2,{"data-testid":"delete-icon",color:"red",size:16,className:_RemotePersistentFilterDropdownmodulecss.default["options-label"],onClick:e=>handleDelete(e,item.value)})})]})},item.value)),[dropdownList,handleDelete,t]);const emptyOption=(0,_jsxruntime.jsx)(_core.Combobox.Option,{value:"",children:(0,_jsxruntime.jsx)(_core.Group,{className:_RemotePersistentFilterDropdownmodulecss.default.options,children:(0,_jsxruntime.jsx)("span",{children:t("No saved filters available")})})},"");return(0,_jsxruntime.jsxs)(_jsxruntime.Fragment,{children:[(0,_jsxruntime.jsxs)(_core.Combobox,{store:combobox,width:300,position:"bottom-start",withArrow:true,onOptionSubmit:handleSelect,styles:{dropdown:{zIndex:_theme.Z_INDEX_LAYER.GROUND.HIGHEST,maxHeight:"
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"RemotePersistentFilterDropdown",{enumerable:true,get:function(){return RemotePersistentFilterDropdown}});const _jsxruntime=require("react/jsx-runtime");const _react=/*#__PURE__*/_interop_require_wildcard(require("react"));const _lucidereact=require("lucide-react");const _RemotePersistentFilterDropdownmodulecss=/*#__PURE__*/_interop_require_default(require("./RemotePersistentFilterDropdown.module.css"));const _core=require("@mantine/core");const _reacti18next=require("react-i18next");const _Tooltip=require("../../Tooltip");const _ConfirmationDialog=require("../../ConfirmationDialog");const _genericTypes=require("../../../genericTypes");const _Typo=require("../../Typo");const _theme=require("../../../theme");function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap;var cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interop_require_wildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj}}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj)}var newObj={__proto__:null};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc)}else{newObj[key]=obj[key]}}}newObj.default=obj;if(cache){cache.set(obj,newObj)}return newObj}const RemotePersistentFilterDropdown=({remotePersistentFilters,onSelect,onDelete})=>{const{t}=(0,_reacti18next.useTranslation)();const[selectedFilter,setSelectedFilter]=(0,_react.useState)();const[modalData,setModalData]=(0,_react.useState)(null);const combobox=(0,_core.useCombobox)();const dropdownList=(0,_react.useMemo)(()=>remotePersistentFilters.map(filter=>({value:filter.id,label:filter.filterName})),[remotePersistentFilters]);const handleClick=()=>combobox.toggleDropdown();(0,_react.useEffect)(()=>{if(selectedFilter)onSelect(selectedFilter)},[selectedFilter,onSelect]);const handleSelect=(0,_react.useCallback)(filter=>{if(filter){combobox.closeDropdown();setSelectedFilter(filter)}},[combobox]);const handleDelete=(0,_react.useCallback)((e,filterId)=>{e.stopPropagation();setModalData(filterId)},[]);const handleConfirmDelete=(0,_react.useCallback)(()=>{if(modalData){onDelete(modalData);setModalData(null)}},[modalData,onDelete]);const options=(0,_react.useMemo)(()=>dropdownList.sort((a,b)=>a.label.localeCompare(b.label)).map(item=>(0,_jsxruntime.jsx)(_core.Combobox.Option,{"data-testid":"dropdown-option",value:item.value,children:(0,_jsxruntime.jsxs)(_core.Group,{className:_RemotePersistentFilterDropdownmodulecss.default.options,children:[item.label.length>35?(0,_jsxruntime.jsx)(_Tooltip.Tooltip,{label:item.label,children:(0,_jsxruntime.jsx)("span",{className:_RemotePersistentFilterDropdownmodulecss.default["truncate-text"],children:item.label})}):(0,_jsxruntime.jsx)("span",{children:item.label}),(0,_jsxruntime.jsx)(_Tooltip.Tooltip,{label:t("Delete filter"),children:(0,_jsxruntime.jsx)(_lucidereact.Trash2,{"data-testid":"delete-icon",color:"red",size:16,className:_RemotePersistentFilterDropdownmodulecss.default["options-label"],onClick:e=>handleDelete(e,item.value)})})]})},item.value)),[dropdownList,handleDelete,t]);const emptyOption=(0,_jsxruntime.jsx)(_core.Combobox.Option,{value:"",children:(0,_jsxruntime.jsx)(_core.Group,{className:_RemotePersistentFilterDropdownmodulecss.default.options,children:(0,_jsxruntime.jsx)("span",{children:t("No saved filters available")})})},"");return(0,_jsxruntime.jsxs)(_jsxruntime.Fragment,{children:[(0,_jsxruntime.jsxs)(_core.Combobox,{store:combobox,width:300,position:"bottom-start",withArrow:true,onOptionSubmit:handleSelect,styles:{dropdown:{zIndex:_theme.Z_INDEX_LAYER.GROUND.HIGHEST,maxHeight:"238px",overflow:"auto"}},children:[(0,_jsxruntime.jsx)(_core.Combobox.Target,{children:(0,_jsxruntime.jsx)("div",{"data-testid":"filter-icon",className:_RemotePersistentFilterDropdownmodulecss.default.actions,onClick:handleClick,children:(0,_jsxruntime.jsx)(_Tooltip.Tooltip,{offset:15,label:t("Saved filters"),children:(0,_jsxruntime.jsx)(_lucidereact.Filter,{"data-testid":"filter-chevron-image",color:"var(--filter-chevron-color)",size:16})})})}),(0,_jsxruntime.jsx)(_core.Combobox.Dropdown,{children:(0,_jsxruntime.jsx)(_core.Combobox.Options,{children:options.length>0?options:emptyOption})})]}),(0,_jsxruntime.jsx)(_ConfirmationDialog.ConfirmationDialog,{alertStatus:_genericTypes.EStatus.ERROR,title:t("Delete filter"),content:(0,_jsxruntime.jsx)(_Typo.Typo,{type:"body",children:t("Do you really want to delete this filter?")}),opened:!!modalData,onClose:()=>setModalData(null),confirmationButtonText:t("Confirm"),confirmationButtonVariant:"danger",cancelButtonText:t("Cancel"),onSubmit:handleConfirmDelete})]})};
|
|
2
2
|
//# sourceMappingURL=RemotePersistentFilterDropdown.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/Filter/RemotePersistence/RemotePersistentFilterDropdown.tsx"],"sourcesContent":["/* Copyright (C) Greenbone AG\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\"\nimport { Filter, Trash2 } from \"lucide-react\"\nimport classes from \"./RemotePersistentFilterDropdown.module.css\"\nimport { TFilter } from \"../utils\"\nimport { TRemotePersistentFilter } from \"./types\"\nimport { Combobox, Group, useCombobox } from \"@mantine/core\"\nimport { useTranslation } from \"react-i18next\"\nimport { Tooltip } from \"../../Tooltip\"\nimport { ConfirmationDialog } from \"../../ConfirmationDialog\"\nimport { EStatus } from \"../../../genericTypes\"\nimport { Typo } from \"../../Typo\"\nimport { Z_INDEX_LAYER } from \"../../../theme\"\n\ntype TFilterDropdownProps = {\n config: TFilter.Config\n onSelect: (id: string) => void\n onDelete: (id: string) => void\n remotePersistentFilters: TRemotePersistentFilter[]\n}\n\nconst RemotePersistentFilterDropdown: React.FC<TFilterDropdownProps> = ({\n remotePersistentFilters,\n onSelect,\n onDelete,\n}) => {\n const { t } = useTranslation()\n const [selectedFilter, setSelectedFilter] = useState<string>()\n const [modalData, setModalData] = useState<string | null>(null)\n const combobox = useCombobox()\n\n const dropdownList = useMemo(\n () =>\n remotePersistentFilters.map((filter) => ({\n value: filter.id,\n label: filter.filterName,\n })),\n [remotePersistentFilters]\n )\n\n const handleClick = () => combobox.toggleDropdown()\n\n useEffect(() => {\n if (selectedFilter) onSelect(selectedFilter)\n }, [selectedFilter, onSelect])\n\n const handleSelect = useCallback(\n (filter: string) => {\n if (filter) {\n combobox.closeDropdown()\n setSelectedFilter(filter)\n }\n },\n [combobox]\n )\n\n const handleDelete = useCallback((e: React.MouseEvent<SVGSVGElement>, filterId: string) => {\n e.stopPropagation()\n setModalData(filterId)\n }, [])\n\n const handleConfirmDelete = useCallback(() => {\n if (modalData) {\n onDelete(modalData)\n setModalData(null)\n }\n }, [modalData, onDelete])\n\n const options = useMemo(\n () =>\n dropdownList\n .sort((a, b) => a.label.localeCompare(b.label))\n .map((item) => (\n <Combobox.Option data-testid=\"dropdown-option\" value={item.value} key={item.value}>\n <Group className={classes.options}>\n {item.label.length > 35 ? (\n <Tooltip label={item.label}>\n <span className={classes[\"truncate-text\"]}>{item.label}</span>\n </Tooltip>\n ) : (\n <span>{item.label}</span>\n )}\n <Tooltip label={t(\"Delete filter\")}>\n <Trash2\n data-testid={\"delete-icon\"}\n color=\"red\"\n size={16}\n className={classes[\"options-label\"]}\n onClick={(e) => handleDelete(e, item.value)}\n />\n </Tooltip>\n </Group>\n </Combobox.Option>\n )),\n [dropdownList, handleDelete, t]\n )\n\n const emptyOption = (\n <Combobox.Option value={\"\"} key={\"\"}>\n <Group className={classes.options}>\n <span>{t(\"No saved filters available\")}</span>\n </Group>\n </Combobox.Option>\n )\n\n return (\n <>\n <Combobox\n store={combobox}\n width={300}\n position=\"bottom-start\"\n withArrow\n onOptionSubmit={handleSelect}\n styles={{\n dropdown: { zIndex: Z_INDEX_LAYER.GROUND.HIGHEST, maxHeight: \"
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/Filter/RemotePersistence/RemotePersistentFilterDropdown.tsx"],"sourcesContent":["/* Copyright (C) Greenbone AG\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\"\nimport { Filter, Trash2 } from \"lucide-react\"\nimport classes from \"./RemotePersistentFilterDropdown.module.css\"\nimport { TFilter } from \"../utils\"\nimport { TRemotePersistentFilter } from \"./types\"\nimport { Combobox, Group, useCombobox } from \"@mantine/core\"\nimport { useTranslation } from \"react-i18next\"\nimport { Tooltip } from \"../../Tooltip\"\nimport { ConfirmationDialog } from \"../../ConfirmationDialog\"\nimport { EStatus } from \"../../../genericTypes\"\nimport { Typo } from \"../../Typo\"\nimport { Z_INDEX_LAYER } from \"../../../theme\"\n\ntype TFilterDropdownProps = {\n config: TFilter.Config\n onSelect: (id: string) => void\n onDelete: (id: string) => void\n remotePersistentFilters: TRemotePersistentFilter[]\n}\n\nconst RemotePersistentFilterDropdown: React.FC<TFilterDropdownProps> = ({\n remotePersistentFilters,\n onSelect,\n onDelete,\n}) => {\n const { t } = useTranslation()\n const [selectedFilter, setSelectedFilter] = useState<string>()\n const [modalData, setModalData] = useState<string | null>(null)\n const combobox = useCombobox()\n\n const dropdownList = useMemo(\n () =>\n remotePersistentFilters.map((filter) => ({\n value: filter.id,\n label: filter.filterName,\n })),\n [remotePersistentFilters]\n )\n\n const handleClick = () => combobox.toggleDropdown()\n\n useEffect(() => {\n if (selectedFilter) onSelect(selectedFilter)\n }, [selectedFilter, onSelect])\n\n const handleSelect = useCallback(\n (filter: string) => {\n if (filter) {\n combobox.closeDropdown()\n setSelectedFilter(filter)\n }\n },\n [combobox]\n )\n\n const handleDelete = useCallback((e: React.MouseEvent<SVGSVGElement>, filterId: string) => {\n e.stopPropagation()\n setModalData(filterId)\n }, [])\n\n const handleConfirmDelete = useCallback(() => {\n if (modalData) {\n onDelete(modalData)\n setModalData(null)\n }\n }, [modalData, onDelete])\n\n const options = useMemo(\n () =>\n dropdownList\n .sort((a, b) => a.label.localeCompare(b.label))\n .map((item) => (\n <Combobox.Option data-testid=\"dropdown-option\" value={item.value} key={item.value}>\n <Group className={classes.options}>\n {item.label.length > 35 ? (\n <Tooltip label={item.label}>\n <span className={classes[\"truncate-text\"]}>{item.label}</span>\n </Tooltip>\n ) : (\n <span>{item.label}</span>\n )}\n <Tooltip label={t(\"Delete filter\")}>\n <Trash2\n data-testid={\"delete-icon\"}\n color=\"red\"\n size={16}\n className={classes[\"options-label\"]}\n onClick={(e) => handleDelete(e, item.value)}\n />\n </Tooltip>\n </Group>\n </Combobox.Option>\n )),\n [dropdownList, handleDelete, t]\n )\n\n const emptyOption = (\n <Combobox.Option value={\"\"} key={\"\"}>\n <Group className={classes.options}>\n <span>{t(\"No saved filters available\")}</span>\n </Group>\n </Combobox.Option>\n )\n\n return (\n <>\n <Combobox\n store={combobox}\n width={300}\n position=\"bottom-start\"\n withArrow\n onOptionSubmit={handleSelect}\n styles={{\n dropdown: { zIndex: Z_INDEX_LAYER.GROUND.HIGHEST, maxHeight: \"238px\", overflow: \"auto\" },\n }}\n >\n <Combobox.Target>\n <div data-testid={\"filter-icon\"} className={classes.actions} onClick={handleClick}>\n <Tooltip offset={15} label={t(\"Saved filters\")}>\n <Filter\n data-testid={\"filter-chevron-image\"}\n color={\"var(--filter-chevron-color)\"}\n size={16}\n />\n </Tooltip>\n </div>\n </Combobox.Target>\n\n <Combobox.Dropdown>\n <Combobox.Options>{options.length > 0 ? options : emptyOption}</Combobox.Options>\n </Combobox.Dropdown>\n </Combobox>\n\n <ConfirmationDialog\n alertStatus={EStatus.ERROR}\n title={t(\"Delete filter\")}\n content={<Typo type=\"body\">{t(\"Do you really want to delete this filter?\")}</Typo>}\n opened={!!modalData}\n onClose={() => setModalData(null)}\n confirmationButtonText={t(\"Confirm\")}\n confirmationButtonVariant={\"danger\"}\n cancelButtonText={t(\"Cancel\")}\n onSubmit={handleConfirmDelete}\n />\n </>\n )\n}\n\nexport { RemotePersistentFilterDropdown }\n"],"names":["RemotePersistentFilterDropdown","remotePersistentFilters","onSelect","onDelete","t","useTranslation","selectedFilter","setSelectedFilter","useState","modalData","setModalData","combobox","useCombobox","dropdownList","useMemo","map","filter","value","id","label","filterName","handleClick","toggleDropdown","useEffect","handleSelect","useCallback","closeDropdown","handleDelete","e","filterId","stopPropagation","handleConfirmDelete","options","sort","a","b","localeCompare","item","Combobox","Option","data-testid","Group","className","classes","length","Tooltip","span","Trash2","color","size","onClick","emptyOption","store","width","position","withArrow","onOptionSubmit","styles","dropdown","zIndex","Z_INDEX_LAYER","GROUND","HIGHEST","maxHeight","overflow","Target","div","actions","offset","Filter","Dropdown","Options","ConfirmationDialog","alertStatus","EStatus","ERROR","title","content","Typo","type","opened","onClose","confirmationButtonText","confirmationButtonVariant","cancelButtonText","onSubmit"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:Object.getOwnPropertyDescriptor(all,name).get})}_export(exports,{get getAssetDomainMenuItems(){return getAssetDomainMenuItems},get getNotificationsDomainMenuItems(){return getNotificationsDomainMenuItems},get getScanDomainMenuItems(){return getScanDomainMenuItems},get getSystemManagementDomainMenuItems(){return getSystemManagementDomainMenuItems},get getUserDomainMenuItems(){return getUserDomainMenuItems},get getVIDomainMenuItemsVulnerabilityIntel(){return getVIDomainMenuItemsVulnerabilityIntel}});const _jsxruntime=require("react/jsx-runtime");const _lucidereact=require("lucide-react");const _NavigationLink=require("../NavigationLink");const getAssetDomainMenuItems=(factory,t,theme,realmAccessRoles)=>{const domainMenuItems=[[factory({icon:()=>(0,_jsxruntime.jsx)(_lucidereact.BarChart3,{size:theme.other.iconSizes.MEDIUM_LARGE,strokeWidth:1.5}),label:t("Analysis"),owner:_NavigationLink.Domain.Asset,subNav:[{label:t("Dashboard"),to:"/dashboard",owner:_NavigationLink.Domain.Asset},{label:t("Assets"),to:"/assets",owner:_NavigationLink.Domain.Asset},{label:t("Vulnerabilities"),to:"/vulnerabilities",owner:_NavigationLink.Domain.Asset}]})],[factory({icon:()=>(0,_jsxruntime.jsx)(_lucidereact.Server,{size:theme.other.iconSizes.MEDIUM_LARGE,strokeWidth:1.5}),label:t("Import"),owner:_NavigationLink.Domain.Asset,subNav:[{label:t("Sources"),to:"/sources",owner:_NavigationLink.Domain.Asset}]})]];if(realmAccessRoles===null||realmAccessRoles===void 0?void 0:realmAccessRoles.includes("admin")){domainMenuItems.push([factory({icon:()=>(0,_jsxruntime.jsx)(_lucidereact.Settings,{size:theme.other.iconSizes.MEDIUM_LARGE,strokeWidth:1.5}),label:t("Global settings"),owner:_NavigationLink.Domain.Asset,subNav:[{label:t("Asset management"),to:"/asset-management-settings",owner:_NavigationLink.Domain.Asset}]})])}return domainMenuItems};const getScanDomainMenuItems=(factory,t,theme)=>{return[[factory({icon:()=>(0,_jsxruntime.jsx)(_lucidereact.ShieldCheck,{size:theme.other.iconSizes.MEDIUM_LARGE,strokeWidth:1.5}),owner:_NavigationLink.Domain.Scan,label:t("Scan control"),subNav:[{label:t("Tasks"),to:"/tasks",owner:_NavigationLink.Domain.Scan},{label:t("Targets"),to:"/targets",owner:_NavigationLink.Domain.Scan},{label:t("Credentials"),to:"/credentials",owner:_NavigationLink.Domain.Scan},{label:t("Schedules"),to:"/schedules",owner:_NavigationLink.Domain.Scan},{label:t("Sensors"),to:"/sensors",owner:_NavigationLink.Domain.Scan}]})]]};const getVIDomainMenuItemsVulnerabilityIntel=(factory,t,theme)=>{return[[factory({icon:()=>(0,_jsxruntime.jsx)(_lucidereact.View,{size:theme.other.iconSizes.MEDIUM_LARGE,strokeWidth:1.5}),owner:_NavigationLink.Domain.VI,label:t("VIEW"),to:"/vulnerability-intelligence",subNav:[{label:t("CVE"),to:"/advisories-cve",owner:_NavigationLink.Domain.VI},{label:t("CSAF"),to:"/advisories-csaf",owner:_NavigationLink.Domain.VI},{label:t("CPE"),to:"/cpe",owner:_NavigationLink.Domain.VI},{label:t("Vulnerability tests"),to:"/vulnerability-tests",owner:_NavigationLink.Domain.VI},{label:t("SBOMs"),to:"/sboms",owner:_NavigationLink.Domain.VI},{label:t("
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:Object.getOwnPropertyDescriptor(all,name).get})}_export(exports,{get getAssetDomainMenuItems(){return getAssetDomainMenuItems},get getNotificationsDomainMenuItems(){return getNotificationsDomainMenuItems},get getScanDomainMenuItems(){return getScanDomainMenuItems},get getSystemManagementDomainMenuItems(){return getSystemManagementDomainMenuItems},get getUserDomainMenuItems(){return getUserDomainMenuItems},get getVIDomainMenuItemsVulnerabilityIntel(){return getVIDomainMenuItemsVulnerabilityIntel}});const _jsxruntime=require("react/jsx-runtime");const _lucidereact=require("lucide-react");const _NavigationLink=require("../NavigationLink");const getAssetDomainMenuItems=(factory,t,theme,realmAccessRoles)=>{const domainMenuItems=[[factory({icon:()=>(0,_jsxruntime.jsx)(_lucidereact.BarChart3,{size:theme.other.iconSizes.MEDIUM_LARGE,strokeWidth:1.5}),label:t("Analysis"),owner:_NavigationLink.Domain.Asset,subNav:[{label:t("Dashboard"),to:"/dashboard",owner:_NavigationLink.Domain.Asset},{label:t("Assets"),to:"/assets",owner:_NavigationLink.Domain.Asset},{label:t("Vulnerabilities"),to:"/vulnerabilities",owner:_NavigationLink.Domain.Asset}]})],[factory({icon:()=>(0,_jsxruntime.jsx)(_lucidereact.Server,{size:theme.other.iconSizes.MEDIUM_LARGE,strokeWidth:1.5}),label:t("Import"),owner:_NavigationLink.Domain.Asset,subNav:[{label:t("Sources"),to:"/sources",owner:_NavigationLink.Domain.Asset}]})]];if(realmAccessRoles===null||realmAccessRoles===void 0?void 0:realmAccessRoles.includes("admin")){domainMenuItems.push([factory({icon:()=>(0,_jsxruntime.jsx)(_lucidereact.Settings,{size:theme.other.iconSizes.MEDIUM_LARGE,strokeWidth:1.5}),label:t("Global settings"),owner:_NavigationLink.Domain.Asset,subNav:[{label:t("Asset management"),to:"/asset-management-settings",owner:_NavigationLink.Domain.Asset}]})])}return domainMenuItems};const getScanDomainMenuItems=(factory,t,theme)=>{return[[factory({icon:()=>(0,_jsxruntime.jsx)(_lucidereact.ShieldCheck,{size:theme.other.iconSizes.MEDIUM_LARGE,strokeWidth:1.5}),owner:_NavigationLink.Domain.Scan,label:t("Scan control"),subNav:[{label:t("Tasks"),to:"/tasks",owner:_NavigationLink.Domain.Scan},{label:t("Targets"),to:"/targets",owner:_NavigationLink.Domain.Scan},{label:t("Credentials"),to:"/credentials",owner:_NavigationLink.Domain.Scan},{label:t("Schedules"),to:"/schedules",owner:_NavigationLink.Domain.Scan},{label:t("Sensors"),to:"/sensors",owner:_NavigationLink.Domain.Scan}]})]]};const getVIDomainMenuItemsVulnerabilityIntel=(factory,t,theme)=>{return[[factory({icon:()=>(0,_jsxruntime.jsx)(_lucidereact.View,{size:theme.other.iconSizes.MEDIUM_LARGE,strokeWidth:1.5}),owner:_NavigationLink.Domain.VI,label:t("VIEW"),to:"/vulnerability-intelligence",subNav:[{label:t("CVE"),to:"/advisories-cve",owner:_NavigationLink.Domain.VI},{label:t("CSAF"),to:"/advisories-csaf",owner:_NavigationLink.Domain.VI},{label:t("CPE"),to:"/cpe",owner:_NavigationLink.Domain.VI},{label:t("Vulnerability tests"),to:"/vulnerability-tests",owner:_NavigationLink.Domain.VI},{label:t("SBOMs"),to:"/sboms",owner:_NavigationLink.Domain.VI},{label:t("SCAN reports"),to:"/scan-reports",owner:_NavigationLink.Domain.VI},{label:t("CSAF sources"),to:"/csaf-sources",owner:_NavigationLink.Domain.VI},{label:t("Feed"),to:"/feed",owner:_NavigationLink.Domain.VI}]})]]};const getUserDomainMenuItems=(factory,t,theme,realmAccessRoles)=>{return[[factory({icon:()=>(0,_jsxruntime.jsx)(_lucidereact.Users,{size:theme.other.iconSizes.MEDIUM_LARGE,strokeWidth:1.5}),owner:_NavigationLink.Domain.User,label:t("User management"),to:"",subNav:[...(realmAccessRoles===null||realmAccessRoles===void 0?void 0:realmAccessRoles.includes("admin"))?[{label:t("Users"),to:"/users",owner:_NavigationLink.Domain.User}]:[],{label:t("Personal settings"),to:"/personal-settings",owner:_NavigationLink.Domain.User}]})]]};const getNotificationsDomainMenuItems=(factory,t,theme)=>{return[[factory({icon:()=>(0,_jsxruntime.jsx)(_lucidereact.Bell,{size:theme.other.iconSizes.MEDIUM_LARGE,strokeWidth:1.5}),owner:_NavigationLink.Domain.Notifications,label:t("Notifications"),to:"/notifications"})]]};const getSystemManagementDomainMenuItems=(factory,t,theme)=>{return[[factory({icon:()=>(0,_jsxruntime.jsx)(_lucidereact.ServerCog,{size:theme.other.iconSizes.MEDIUM_LARGE,strokeWidth:1.5}),owner:_NavigationLink.Domain.SystemManagement,label:t("Systems"),subNav:[{label:t("Appliances"),to:"/appliances",owner:_NavigationLink.Domain.SystemManagement}]})]]};
|
|
2
2
|
//# sourceMappingURL=menuItems.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/components/Layout/AppNavigation/Menu/menuItems.tsx"],"sourcesContent":["/* Copyright (C) Greenbone AG\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { TFunction } from \"i18next\"\nimport {\n BarChart3,\n Bell,\n Server,\n ServerCog,\n Settings,\n ShieldCheck,\n Users,\n View,\n} from \"lucide-react\"\nimport { Domain } from \"../NavigationLink\"\nimport { TBuildNavLinkParams, TNavLinkConfig } from \"./types\"\nimport { MantineTheme } from \"@mantine/core\"\n\nexport type TFactory = ({ icon, label, to, owner, subNav }: TBuildNavLinkParams) => TNavLinkConfig\n\nexport type TMenuItemContainer = (\n factory: TFactory,\n t: TFunction,\n theme: MantineTheme,\n realmAccessRoles?: Array<string>\n) => TNavLinkConfig[][]\n\nexport const getAssetDomainMenuItems: TMenuItemContainer = (\n factory,\n t,\n theme,\n realmAccessRoles\n) => {\n const domainMenuItems = [\n [\n factory({\n icon: () => <BarChart3 size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n label: t(\"Analysis\"),\n owner: Domain.Asset,\n subNav: [\n {\n label: t(\"Dashboard\"),\n to: \"/dashboard\",\n owner: Domain.Asset,\n },\n {\n label: t(\"Assets\"),\n to: \"/assets\",\n owner: Domain.Asset,\n },\n {\n label: t(\"Vulnerabilities\"),\n to: \"/vulnerabilities\",\n owner: Domain.Asset,\n },\n ],\n }),\n ],\n [\n factory({\n icon: () => <Server size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n label: t(\"Import\"),\n owner: Domain.Asset,\n subNav: [\n {\n label: t(\"Sources\"),\n to: \"/sources\",\n owner: Domain.Asset,\n },\n ],\n }),\n ],\n ]\n\n if (realmAccessRoles?.includes(\"admin\")) {\n domainMenuItems.push([\n factory({\n icon: () => <Settings size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n label: t(\"Global settings\"),\n owner: Domain.Asset,\n subNav: [\n {\n label: t(\"Asset management\"),\n to: \"/asset-management-settings\",\n owner: Domain.Asset,\n },\n ],\n }),\n ])\n }\n return domainMenuItems\n}\n\nexport const getScanDomainMenuItems: TMenuItemContainer = (factory, t, theme) => {\n return [\n [\n factory({\n icon: () => <ShieldCheck size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n owner: Domain.Scan,\n label: t(\"Scan control\"),\n subNav: [\n {\n label: t(\"Tasks\"),\n to: \"/tasks\",\n owner: Domain.Scan,\n },\n {\n label: t(\"Targets\"),\n to: \"/targets\",\n owner: Domain.Scan,\n },\n {\n label: t(\"Credentials\"),\n to: \"/credentials\",\n owner: Domain.Scan,\n },\n {\n label: t(\"Schedules\"),\n to: \"/schedules\",\n owner: Domain.Scan,\n },\n {\n label: t(\"Sensors\"),\n to: \"/sensors\",\n owner: Domain.Scan,\n },\n ],\n }),\n ],\n ]\n}\n\nexport const getVIDomainMenuItemsVulnerabilityIntel: TMenuItemContainer = (factory, t, theme) => {\n return [\n [\n factory({\n icon: () => <View size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n owner: Domain.VI,\n label: t(\"VIEW\"),\n to: \"/vulnerability-intelligence\",\n subNav: [\n {\n label: t(\"CVE\"),\n to: \"/advisories-cve\",\n owner: Domain.VI,\n },\n {\n label: t(\"CSAF\"),\n to: \"/advisories-csaf\",\n owner: Domain.VI,\n },\n {\n label: t(\"CPE\"),\n to: \"/cpe\",\n owner: Domain.VI,\n },\n {\n label: t(\"Vulnerability tests\"),\n to: \"/vulnerability-tests\",\n owner: Domain.VI,\n },\n {\n label: t(\"SBOMs\"),\n to: \"/sboms\",\n owner: Domain.VI,\n },\n {\n label: t(\"GEA reports\"),\n to: \"/gea-reports\",\n owner: Domain.VI,\n },\n {\n label: t(\"CSAF sources\"),\n to: \"/csaf-sources\",\n owner: Domain.VI,\n },\n {\n label: t(\"Feed\"),\n to: \"/feed\",\n owner: Domain.VI,\n },\n ],\n }),\n ],\n ]\n}\n\nexport const getUserDomainMenuItems: TMenuItemContainer = (factory, t, theme, realmAccessRoles) => {\n return [\n [\n factory({\n icon: () => <Users size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n owner: Domain.User,\n label: t(\"User management\"),\n to: \"\",\n subNav: [\n ...(realmAccessRoles?.includes(\"admin\")\n ? [\n {\n label: t(\"Users\"),\n to: \"/users\",\n owner: Domain.User,\n },\n ]\n : []),\n {\n label: t(\"Personal settings\"),\n to: \"/personal-settings\",\n owner: Domain.User,\n },\n ],\n }),\n ],\n ]\n}\n\nexport const getNotificationsDomainMenuItems: TMenuItemContainer = (factory, t, theme) => {\n return [\n [\n factory({\n icon: () => <Bell size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n owner: Domain.Notifications,\n label: t(\"Notifications\"),\n to: \"/notifications\",\n }),\n ],\n ]\n}\n\nexport const getSystemManagementDomainMenuItems: TMenuItemContainer = (factory, t, theme) => {\n return [\n [\n factory({\n icon: () => <ServerCog size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n owner: Domain.SystemManagement,\n label: t(\"Systems\"),\n subNav: [\n {\n label: t(\"Appliances\"),\n to: \"/appliances\",\n owner: Domain.SystemManagement,\n },\n ],\n }),\n ],\n ]\n}\n"],"names":["getAssetDomainMenuItems","getNotificationsDomainMenuItems","getScanDomainMenuItems","getSystemManagementDomainMenuItems","getUserDomainMenuItems","getVIDomainMenuItemsVulnerabilityIntel","factory","t","theme","realmAccessRoles","domainMenuItems","icon","BarChart3","size","other","iconSizes","MEDIUM_LARGE","strokeWidth","label","owner","Domain","Asset","subNav","to","Server","includes","push","Settings","ShieldCheck","Scan","View","VI","Users","User","Bell","Notifications","ServerCog","SystemManagement"],"mappings":"mPA4BaA,iCAAAA,6BA6LAC,yCAAAA,qCA3HAC,gCAAAA,4BAwIAC,4CAAAA,wCA1CAC,gCAAAA,4BAvDAC,gDAAAA,oHAvHN,8CACgB,qBAahB,MAAML,wBAA8C,CACzDM,QACAC,EACAC,MACAC,oBAEA,MAAMC,gBAAkB,CACtB,CACEJ,QAAQ,CACNK,KAAM,IAAM,oBAACC,sBAAS,EAACC,KAAML,MAAMM,KAAK,CAACC,SAAS,CAACC,YAAY,CAAEC,YAAa,MAC9EC,MAAOX,EAAE,YACTY,MAAOC,sBAAM,CAACC,KAAK,CACnBC,OAAQ,CACN,CACEJ,MAAOX,EAAE,aACTgB,GAAI,aACJJ,MAAOC,sBAAM,CAACC,KAAK,AACrB,EACA,CACEH,MAAOX,EAAE,UACTgB,GAAI,UACJJ,MAAOC,sBAAM,CAACC,KAAK,AACrB,EACA,CACEH,MAAOX,EAAE,mBACTgB,GAAI,mBACJJ,MAAOC,sBAAM,CAACC,KAAK,AACrB,EACD,AACH,GACD,CACD,CACEf,QAAQ,CACNK,KAAM,IAAM,oBAACa,mBAAM,EAACX,KAAML,MAAMM,KAAK,CAACC,SAAS,CAACC,YAAY,CAAEC,YAAa,MAC3EC,MAAOX,EAAE,UACTY,MAAOC,sBAAM,CAACC,KAAK,CACnBC,OAAQ,CACN,CACEJ,MAAOX,EAAE,WACTgB,GAAI,WACJJ,MAAOC,sBAAM,CAACC,KAAK,AACrB,EACD,AACH,GACD,CACF,CAED,GAAIZ,yBAAAA,iCAAAA,iBAAkBgB,QAAQ,CAAC,SAAU,CACvCf,gBAAgBgB,IAAI,CAAC,CACnBpB,QAAQ,CACNK,KAAM,IAAM,oBAACgB,qBAAQ,EAACd,KAAML,MAAMM,KAAK,CAACC,SAAS,CAACC,YAAY,CAAEC,YAAa,MAC7EC,MAAOX,EAAE,mBACTY,MAAOC,sBAAM,CAACC,KAAK,CACnBC,OAAQ,CACN,CACEJ,MAAOX,EAAE,oBACTgB,GAAI,6BACJJ,MAAOC,sBAAM,CAACC,KAAK,AACrB,EACD,AACH,GACD,CACH,CACA,OAAOX,eACT,EAEO,MAAMR,uBAA6C,CAACI,QAASC,EAAGC,SACrE,MAAO,CACL,CACEF,QAAQ,CACNK,KAAM,IAAM,oBAACiB,wBAAW,EAACf,KAAML,MAAMM,KAAK,CAACC,SAAS,CAACC,YAAY,CAAEC,YAAa,MAChFE,MAAOC,sBAAM,CAACS,IAAI,CAClBX,MAAOX,EAAE,gBACTe,OAAQ,CACN,CACEJ,MAAOX,EAAE,SACTgB,GAAI,SACJJ,MAAOC,sBAAM,CAACS,IAAI,AACpB,EACA,CACEX,MAAOX,EAAE,WACTgB,GAAI,WACJJ,MAAOC,sBAAM,CAACS,IAAI,AACpB,EACA,CACEX,MAAOX,EAAE,eACTgB,GAAI,eACJJ,MAAOC,sBAAM,CAACS,IAAI,AACpB,EACA,CACEX,MAAOX,EAAE,aACTgB,GAAI,aACJJ,MAAOC,sBAAM,CAACS,IAAI,AACpB,EACA,CACEX,MAAOX,EAAE,WACTgB,GAAI,WACJJ,MAAOC,sBAAM,CAACS,IAAI,AACpB,EACD,AACH,GACD,CACF,AACH,EAEO,MAAMxB,uCAA6D,CAACC,QAASC,EAAGC,SACrF,MAAO,CACL,CACEF,QAAQ,CACNK,KAAM,IAAM,oBAACmB,iBAAI,EAACjB,KAAML,MAAMM,KAAK,CAACC,SAAS,CAACC,YAAY,CAAEC,YAAa,MACzEE,MAAOC,sBAAM,CAACW,EAAE,CAChBb,MAAOX,EAAE,QACTgB,GAAI,8BACJD,OAAQ,CACN,CACEJ,MAAOX,EAAE,OACTgB,GAAI,kBACJJ,MAAOC,sBAAM,CAACW,EAAE,AAClB,EACA,CACEb,MAAOX,EAAE,QACTgB,GAAI,mBACJJ,MAAOC,sBAAM,CAACW,EAAE,AAClB,EACA,CACEb,MAAOX,EAAE,OACTgB,GAAI,OACJJ,MAAOC,sBAAM,CAACW,EAAE,AAClB,EACA,CACEb,MAAOX,EAAE,uBACTgB,GAAI,uBACJJ,MAAOC,sBAAM,CAACW,EAAE,AAClB,EACA,CACEb,MAAOX,EAAE,SACTgB,GAAI,SACJJ,MAAOC,sBAAM,CAACW,EAAE,AAClB,EACA,CACEb,MAAOX,EAAE,eACTgB,GAAI,eACJJ,MAAOC,sBAAM,CAACW,EAAE,AAClB,EACA,CACEb,MAAOX,EAAE,gBACTgB,GAAI,gBACJJ,MAAOC,sBAAM,CAACW,EAAE,AAClB,EACA,CACEb,MAAOX,EAAE,QACTgB,GAAI,QACJJ,MAAOC,sBAAM,CAACW,EAAE,AAClB,EACD,AACH,GACD,CACF,AACH,EAEO,MAAM3B,uBAA6C,CAACE,QAASC,EAAGC,MAAOC,oBAC5E,MAAO,CACL,CACEH,QAAQ,CACNK,KAAM,IAAM,oBAACqB,kBAAK,EAACnB,KAAML,MAAMM,KAAK,CAACC,SAAS,CAACC,YAAY,CAAEC,YAAa,MAC1EE,MAAOC,sBAAM,CAACa,IAAI,CAClBf,MAAOX,EAAE,mBACTgB,GAAI,GACJD,OAAQ,IACFb,CAAAA,yBAAAA,iCAAAA,iBAAkBgB,QAAQ,CAAC,UAC3B,CACE,CACEP,MAAOX,EAAE,SACTgB,GAAI,SACJJ,MAAOC,sBAAM,CAACa,IAAI,AACpB,EACD,CACD,EAAE,CACN,CACEf,MAAOX,EAAE,qBACTgB,GAAI,qBACJJ,MAAOC,sBAAM,CAACa,IAAI,AACpB,EACD,AACH,GACD,CACF,AACH,EAEO,MAAMhC,gCAAsD,CAACK,QAASC,EAAGC,SAC9E,MAAO,CACL,CACEF,QAAQ,CACNK,KAAM,IAAM,oBAACuB,iBAAI,EAACrB,KAAML,MAAMM,KAAK,CAACC,SAAS,CAACC,YAAY,CAAEC,YAAa,MACzEE,MAAOC,sBAAM,CAACe,aAAa,CAC3BjB,MAAOX,EAAE,iBACTgB,GAAI,gBACN,GACD,CACF,AACH,EAEO,MAAMpB,mCAAyD,CAACG,QAASC,EAAGC,SACjF,MAAO,CACL,CACEF,QAAQ,CACNK,KAAM,IAAM,oBAACyB,sBAAS,EAACvB,KAAML,MAAMM,KAAK,CAACC,SAAS,CAACC,YAAY,CAAEC,YAAa,MAC9EE,MAAOC,sBAAM,CAACiB,gBAAgB,CAC9BnB,MAAOX,EAAE,WACTe,OAAQ,CACN,CACEJ,MAAOX,EAAE,cACTgB,GAAI,cACJJ,MAAOC,sBAAM,CAACiB,gBAAgB,AAChC,EACD,AACH,GACD,CACF,AACH"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/components/Layout/AppNavigation/Menu/menuItems.tsx"],"sourcesContent":["/* Copyright (C) Greenbone AG\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { TFunction } from \"i18next\"\nimport {\n BarChart3,\n Bell,\n Server,\n ServerCog,\n Settings,\n ShieldCheck,\n Users,\n View,\n} from \"lucide-react\"\nimport { Domain } from \"../NavigationLink\"\nimport { TBuildNavLinkParams, TNavLinkConfig } from \"./types\"\nimport { MantineTheme } from \"@mantine/core\"\n\nexport type TFactory = ({ icon, label, to, owner, subNav }: TBuildNavLinkParams) => TNavLinkConfig\n\nexport type TMenuItemContainer = (\n factory: TFactory,\n t: TFunction,\n theme: MantineTheme,\n realmAccessRoles?: Array<string>\n) => TNavLinkConfig[][]\n\nexport const getAssetDomainMenuItems: TMenuItemContainer = (\n factory,\n t,\n theme,\n realmAccessRoles\n) => {\n const domainMenuItems = [\n [\n factory({\n icon: () => <BarChart3 size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n label: t(\"Analysis\"),\n owner: Domain.Asset,\n subNav: [\n {\n label: t(\"Dashboard\"),\n to: \"/dashboard\",\n owner: Domain.Asset,\n },\n {\n label: t(\"Assets\"),\n to: \"/assets\",\n owner: Domain.Asset,\n },\n {\n label: t(\"Vulnerabilities\"),\n to: \"/vulnerabilities\",\n owner: Domain.Asset,\n },\n ],\n }),\n ],\n [\n factory({\n icon: () => <Server size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n label: t(\"Import\"),\n owner: Domain.Asset,\n subNav: [\n {\n label: t(\"Sources\"),\n to: \"/sources\",\n owner: Domain.Asset,\n },\n ],\n }),\n ],\n ]\n\n if (realmAccessRoles?.includes(\"admin\")) {\n domainMenuItems.push([\n factory({\n icon: () => <Settings size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n label: t(\"Global settings\"),\n owner: Domain.Asset,\n subNav: [\n {\n label: t(\"Asset management\"),\n to: \"/asset-management-settings\",\n owner: Domain.Asset,\n },\n ],\n }),\n ])\n }\n return domainMenuItems\n}\n\nexport const getScanDomainMenuItems: TMenuItemContainer = (factory, t, theme) => {\n return [\n [\n factory({\n icon: () => <ShieldCheck size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n owner: Domain.Scan,\n label: t(\"Scan control\"),\n subNav: [\n {\n label: t(\"Tasks\"),\n to: \"/tasks\",\n owner: Domain.Scan,\n },\n {\n label: t(\"Targets\"),\n to: \"/targets\",\n owner: Domain.Scan,\n },\n {\n label: t(\"Credentials\"),\n to: \"/credentials\",\n owner: Domain.Scan,\n },\n {\n label: t(\"Schedules\"),\n to: \"/schedules\",\n owner: Domain.Scan,\n },\n {\n label: t(\"Sensors\"),\n to: \"/sensors\",\n owner: Domain.Scan,\n },\n ],\n }),\n ],\n ]\n}\n\nexport const getVIDomainMenuItemsVulnerabilityIntel: TMenuItemContainer = (factory, t, theme) => {\n return [\n [\n factory({\n icon: () => <View size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n owner: Domain.VI,\n label: t(\"VIEW\"),\n to: \"/vulnerability-intelligence\",\n subNav: [\n {\n label: t(\"CVE\"),\n to: \"/advisories-cve\",\n owner: Domain.VI,\n },\n {\n label: t(\"CSAF\"),\n to: \"/advisories-csaf\",\n owner: Domain.VI,\n },\n {\n label: t(\"CPE\"),\n to: \"/cpe\",\n owner: Domain.VI,\n },\n {\n label: t(\"Vulnerability tests\"),\n to: \"/vulnerability-tests\",\n owner: Domain.VI,\n },\n {\n label: t(\"SBOMs\"),\n to: \"/sboms\",\n owner: Domain.VI,\n },\n {\n label: t(\"SCAN reports\"),\n to: \"/scan-reports\",\n owner: Domain.VI,\n },\n {\n label: t(\"CSAF sources\"),\n to: \"/csaf-sources\",\n owner: Domain.VI,\n },\n {\n label: t(\"Feed\"),\n to: \"/feed\",\n owner: Domain.VI,\n },\n ],\n }),\n ],\n ]\n}\n\nexport const getUserDomainMenuItems: TMenuItemContainer = (factory, t, theme, realmAccessRoles) => {\n return [\n [\n factory({\n icon: () => <Users size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n owner: Domain.User,\n label: t(\"User management\"),\n to: \"\",\n subNav: [\n ...(realmAccessRoles?.includes(\"admin\")\n ? [\n {\n label: t(\"Users\"),\n to: \"/users\",\n owner: Domain.User,\n },\n ]\n : []),\n {\n label: t(\"Personal settings\"),\n to: \"/personal-settings\",\n owner: Domain.User,\n },\n ],\n }),\n ],\n ]\n}\n\nexport const getNotificationsDomainMenuItems: TMenuItemContainer = (factory, t, theme) => {\n return [\n [\n factory({\n icon: () => <Bell size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n owner: Domain.Notifications,\n label: t(\"Notifications\"),\n to: \"/notifications\",\n }),\n ],\n ]\n}\n\nexport const getSystemManagementDomainMenuItems: TMenuItemContainer = (factory, t, theme) => {\n return [\n [\n factory({\n icon: () => <ServerCog size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n owner: Domain.SystemManagement,\n label: t(\"Systems\"),\n subNav: [\n {\n label: t(\"Appliances\"),\n to: \"/appliances\",\n owner: Domain.SystemManagement,\n },\n ],\n }),\n ],\n ]\n}\n"],"names":["getAssetDomainMenuItems","getNotificationsDomainMenuItems","getScanDomainMenuItems","getSystemManagementDomainMenuItems","getUserDomainMenuItems","getVIDomainMenuItemsVulnerabilityIntel","factory","t","theme","realmAccessRoles","domainMenuItems","icon","BarChart3","size","other","iconSizes","MEDIUM_LARGE","strokeWidth","label","owner","Domain","Asset","subNav","to","Server","includes","push","Settings","ShieldCheck","Scan","View","VI","Users","User","Bell","Notifications","ServerCog","SystemManagement"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";import React,{useCallback,useEffect,useMemo,useState}from"react";import{Filter,Trash2}from"lucide-react";import classes from"./RemotePersistentFilterDropdown.module.css";import{Combobox,Group,useCombobox}from"@mantine/core";import{useTranslation}from"react-i18next";import{Tooltip}from"../../Tooltip";import{ConfirmationDialog}from"../../ConfirmationDialog";import{EStatus}from"../../../genericTypes";import{Typo}from"../../Typo";import{Z_INDEX_LAYER}from"../../../theme";const RemotePersistentFilterDropdown=({remotePersistentFilters,onSelect,onDelete})=>{const{t}=useTranslation();const[selectedFilter,setSelectedFilter]=useState();const[modalData,setModalData]=useState(null);const combobox=useCombobox();const dropdownList=useMemo(()=>remotePersistentFilters.map(filter=>({value:filter.id,label:filter.filterName})),[remotePersistentFilters]);const handleClick=()=>combobox.toggleDropdown();useEffect(()=>{if(selectedFilter)onSelect(selectedFilter)},[selectedFilter,onSelect]);const handleSelect=useCallback(filter=>{if(filter){combobox.closeDropdown();setSelectedFilter(filter)}},[combobox]);const handleDelete=useCallback((e,filterId)=>{e.stopPropagation();setModalData(filterId)},[]);const handleConfirmDelete=useCallback(()=>{if(modalData){onDelete(modalData);setModalData(null)}},[modalData,onDelete]);const options=useMemo(()=>dropdownList.sort((a,b)=>a.label.localeCompare(b.label)).map(item=>_jsx(Combobox.Option,{"data-testid":"dropdown-option",value:item.value,children:_jsxs(Group,{className:classes.options,children:[item.label.length>35?_jsx(Tooltip,{label:item.label,children:_jsx("span",{className:classes["truncate-text"],children:item.label})}):_jsx("span",{children:item.label}),_jsx(Tooltip,{label:t("Delete filter"),children:_jsx(Trash2,{"data-testid":"delete-icon",color:"red",size:16,className:classes["options-label"],onClick:e=>handleDelete(e,item.value)})})]})},item.value)),[dropdownList,handleDelete,t]);const emptyOption=_jsx(Combobox.Option,{value:"",children:_jsx(Group,{className:classes.options,children:_jsx("span",{children:t("No saved filters available")})})},"");return _jsxs(_Fragment,{children:[_jsxs(Combobox,{store:combobox,width:300,position:"bottom-start",withArrow:true,onOptionSubmit:handleSelect,styles:{dropdown:{zIndex:Z_INDEX_LAYER.GROUND.HIGHEST,maxHeight:"
|
|
1
|
+
import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";import React,{useCallback,useEffect,useMemo,useState}from"react";import{Filter,Trash2}from"lucide-react";import classes from"./RemotePersistentFilterDropdown.module.css";import{Combobox,Group,useCombobox}from"@mantine/core";import{useTranslation}from"react-i18next";import{Tooltip}from"../../Tooltip";import{ConfirmationDialog}from"../../ConfirmationDialog";import{EStatus}from"../../../genericTypes";import{Typo}from"../../Typo";import{Z_INDEX_LAYER}from"../../../theme";const RemotePersistentFilterDropdown=({remotePersistentFilters,onSelect,onDelete})=>{const{t}=useTranslation();const[selectedFilter,setSelectedFilter]=useState();const[modalData,setModalData]=useState(null);const combobox=useCombobox();const dropdownList=useMemo(()=>remotePersistentFilters.map(filter=>({value:filter.id,label:filter.filterName})),[remotePersistentFilters]);const handleClick=()=>combobox.toggleDropdown();useEffect(()=>{if(selectedFilter)onSelect(selectedFilter)},[selectedFilter,onSelect]);const handleSelect=useCallback(filter=>{if(filter){combobox.closeDropdown();setSelectedFilter(filter)}},[combobox]);const handleDelete=useCallback((e,filterId)=>{e.stopPropagation();setModalData(filterId)},[]);const handleConfirmDelete=useCallback(()=>{if(modalData){onDelete(modalData);setModalData(null)}},[modalData,onDelete]);const options=useMemo(()=>dropdownList.sort((a,b)=>a.label.localeCompare(b.label)).map(item=>_jsx(Combobox.Option,{"data-testid":"dropdown-option",value:item.value,children:_jsxs(Group,{className:classes.options,children:[item.label.length>35?_jsx(Tooltip,{label:item.label,children:_jsx("span",{className:classes["truncate-text"],children:item.label})}):_jsx("span",{children:item.label}),_jsx(Tooltip,{label:t("Delete filter"),children:_jsx(Trash2,{"data-testid":"delete-icon",color:"red",size:16,className:classes["options-label"],onClick:e=>handleDelete(e,item.value)})})]})},item.value)),[dropdownList,handleDelete,t]);const emptyOption=_jsx(Combobox.Option,{value:"",children:_jsx(Group,{className:classes.options,children:_jsx("span",{children:t("No saved filters available")})})},"");return _jsxs(_Fragment,{children:[_jsxs(Combobox,{store:combobox,width:300,position:"bottom-start",withArrow:true,onOptionSubmit:handleSelect,styles:{dropdown:{zIndex:Z_INDEX_LAYER.GROUND.HIGHEST,maxHeight:"238px",overflow:"auto"}},children:[_jsx(Combobox.Target,{children:_jsx("div",{"data-testid":"filter-icon",className:classes.actions,onClick:handleClick,children:_jsx(Tooltip,{offset:15,label:t("Saved filters"),children:_jsx(Filter,{"data-testid":"filter-chevron-image",color:"var(--filter-chevron-color)",size:16})})})}),_jsx(Combobox.Dropdown,{children:_jsx(Combobox.Options,{children:options.length>0?options:emptyOption})})]}),_jsx(ConfirmationDialog,{alertStatus:EStatus.ERROR,title:t("Delete filter"),content:_jsx(Typo,{type:"body",children:t("Do you really want to delete this filter?")}),opened:!!modalData,onClose:()=>setModalData(null),confirmationButtonText:t("Confirm"),confirmationButtonVariant:"danger",cancelButtonText:t("Cancel"),onSubmit:handleConfirmDelete})]})};export{RemotePersistentFilterDropdown};
|
|
2
2
|
//# sourceMappingURL=RemotePersistentFilterDropdown.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/Filter/RemotePersistence/RemotePersistentFilterDropdown.tsx"],"sourcesContent":["/* Copyright (C) Greenbone AG\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\"\nimport { Filter, Trash2 } from \"lucide-react\"\nimport classes from \"./RemotePersistentFilterDropdown.module.css\"\nimport { TFilter } from \"../utils\"\nimport { TRemotePersistentFilter } from \"./types\"\nimport { Combobox, Group, useCombobox } from \"@mantine/core\"\nimport { useTranslation } from \"react-i18next\"\nimport { Tooltip } from \"../../Tooltip\"\nimport { ConfirmationDialog } from \"../../ConfirmationDialog\"\nimport { EStatus } from \"../../../genericTypes\"\nimport { Typo } from \"../../Typo\"\nimport { Z_INDEX_LAYER } from \"../../../theme\"\n\ntype TFilterDropdownProps = {\n config: TFilter.Config\n onSelect: (id: string) => void\n onDelete: (id: string) => void\n remotePersistentFilters: TRemotePersistentFilter[]\n}\n\nconst RemotePersistentFilterDropdown: React.FC<TFilterDropdownProps> = ({\n remotePersistentFilters,\n onSelect,\n onDelete,\n}) => {\n const { t } = useTranslation()\n const [selectedFilter, setSelectedFilter] = useState<string>()\n const [modalData, setModalData] = useState<string | null>(null)\n const combobox = useCombobox()\n\n const dropdownList = useMemo(\n () =>\n remotePersistentFilters.map((filter) => ({\n value: filter.id,\n label: filter.filterName,\n })),\n [remotePersistentFilters]\n )\n\n const handleClick = () => combobox.toggleDropdown()\n\n useEffect(() => {\n if (selectedFilter) onSelect(selectedFilter)\n }, [selectedFilter, onSelect])\n\n const handleSelect = useCallback(\n (filter: string) => {\n if (filter) {\n combobox.closeDropdown()\n setSelectedFilter(filter)\n }\n },\n [combobox]\n )\n\n const handleDelete = useCallback((e: React.MouseEvent<SVGSVGElement>, filterId: string) => {\n e.stopPropagation()\n setModalData(filterId)\n }, [])\n\n const handleConfirmDelete = useCallback(() => {\n if (modalData) {\n onDelete(modalData)\n setModalData(null)\n }\n }, [modalData, onDelete])\n\n const options = useMemo(\n () =>\n dropdownList\n .sort((a, b) => a.label.localeCompare(b.label))\n .map((item) => (\n <Combobox.Option data-testid=\"dropdown-option\" value={item.value} key={item.value}>\n <Group className={classes.options}>\n {item.label.length > 35 ? (\n <Tooltip label={item.label}>\n <span className={classes[\"truncate-text\"]}>{item.label}</span>\n </Tooltip>\n ) : (\n <span>{item.label}</span>\n )}\n <Tooltip label={t(\"Delete filter\")}>\n <Trash2\n data-testid={\"delete-icon\"}\n color=\"red\"\n size={16}\n className={classes[\"options-label\"]}\n onClick={(e) => handleDelete(e, item.value)}\n />\n </Tooltip>\n </Group>\n </Combobox.Option>\n )),\n [dropdownList, handleDelete, t]\n )\n\n const emptyOption = (\n <Combobox.Option value={\"\"} key={\"\"}>\n <Group className={classes.options}>\n <span>{t(\"No saved filters available\")}</span>\n </Group>\n </Combobox.Option>\n )\n\n return (\n <>\n <Combobox\n store={combobox}\n width={300}\n position=\"bottom-start\"\n withArrow\n onOptionSubmit={handleSelect}\n styles={{\n dropdown: { zIndex: Z_INDEX_LAYER.GROUND.HIGHEST, maxHeight: \"
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/Filter/RemotePersistence/RemotePersistentFilterDropdown.tsx"],"sourcesContent":["/* Copyright (C) Greenbone AG\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\"\nimport { Filter, Trash2 } from \"lucide-react\"\nimport classes from \"./RemotePersistentFilterDropdown.module.css\"\nimport { TFilter } from \"../utils\"\nimport { TRemotePersistentFilter } from \"./types\"\nimport { Combobox, Group, useCombobox } from \"@mantine/core\"\nimport { useTranslation } from \"react-i18next\"\nimport { Tooltip } from \"../../Tooltip\"\nimport { ConfirmationDialog } from \"../../ConfirmationDialog\"\nimport { EStatus } from \"../../../genericTypes\"\nimport { Typo } from \"../../Typo\"\nimport { Z_INDEX_LAYER } from \"../../../theme\"\n\ntype TFilterDropdownProps = {\n config: TFilter.Config\n onSelect: (id: string) => void\n onDelete: (id: string) => void\n remotePersistentFilters: TRemotePersistentFilter[]\n}\n\nconst RemotePersistentFilterDropdown: React.FC<TFilterDropdownProps> = ({\n remotePersistentFilters,\n onSelect,\n onDelete,\n}) => {\n const { t } = useTranslation()\n const [selectedFilter, setSelectedFilter] = useState<string>()\n const [modalData, setModalData] = useState<string | null>(null)\n const combobox = useCombobox()\n\n const dropdownList = useMemo(\n () =>\n remotePersistentFilters.map((filter) => ({\n value: filter.id,\n label: filter.filterName,\n })),\n [remotePersistentFilters]\n )\n\n const handleClick = () => combobox.toggleDropdown()\n\n useEffect(() => {\n if (selectedFilter) onSelect(selectedFilter)\n }, [selectedFilter, onSelect])\n\n const handleSelect = useCallback(\n (filter: string) => {\n if (filter) {\n combobox.closeDropdown()\n setSelectedFilter(filter)\n }\n },\n [combobox]\n )\n\n const handleDelete = useCallback((e: React.MouseEvent<SVGSVGElement>, filterId: string) => {\n e.stopPropagation()\n setModalData(filterId)\n }, [])\n\n const handleConfirmDelete = useCallback(() => {\n if (modalData) {\n onDelete(modalData)\n setModalData(null)\n }\n }, [modalData, onDelete])\n\n const options = useMemo(\n () =>\n dropdownList\n .sort((a, b) => a.label.localeCompare(b.label))\n .map((item) => (\n <Combobox.Option data-testid=\"dropdown-option\" value={item.value} key={item.value}>\n <Group className={classes.options}>\n {item.label.length > 35 ? (\n <Tooltip label={item.label}>\n <span className={classes[\"truncate-text\"]}>{item.label}</span>\n </Tooltip>\n ) : (\n <span>{item.label}</span>\n )}\n <Tooltip label={t(\"Delete filter\")}>\n <Trash2\n data-testid={\"delete-icon\"}\n color=\"red\"\n size={16}\n className={classes[\"options-label\"]}\n onClick={(e) => handleDelete(e, item.value)}\n />\n </Tooltip>\n </Group>\n </Combobox.Option>\n )),\n [dropdownList, handleDelete, t]\n )\n\n const emptyOption = (\n <Combobox.Option value={\"\"} key={\"\"}>\n <Group className={classes.options}>\n <span>{t(\"No saved filters available\")}</span>\n </Group>\n </Combobox.Option>\n )\n\n return (\n <>\n <Combobox\n store={combobox}\n width={300}\n position=\"bottom-start\"\n withArrow\n onOptionSubmit={handleSelect}\n styles={{\n dropdown: { zIndex: Z_INDEX_LAYER.GROUND.HIGHEST, maxHeight: \"238px\", overflow: \"auto\" },\n }}\n >\n <Combobox.Target>\n <div data-testid={\"filter-icon\"} className={classes.actions} onClick={handleClick}>\n <Tooltip offset={15} label={t(\"Saved filters\")}>\n <Filter\n data-testid={\"filter-chevron-image\"}\n color={\"var(--filter-chevron-color)\"}\n size={16}\n />\n </Tooltip>\n </div>\n </Combobox.Target>\n\n <Combobox.Dropdown>\n <Combobox.Options>{options.length > 0 ? options : emptyOption}</Combobox.Options>\n </Combobox.Dropdown>\n </Combobox>\n\n <ConfirmationDialog\n alertStatus={EStatus.ERROR}\n title={t(\"Delete filter\")}\n content={<Typo type=\"body\">{t(\"Do you really want to delete this filter?\")}</Typo>}\n opened={!!modalData}\n onClose={() => setModalData(null)}\n confirmationButtonText={t(\"Confirm\")}\n confirmationButtonVariant={\"danger\"}\n cancelButtonText={t(\"Cancel\")}\n onSubmit={handleConfirmDelete}\n />\n </>\n )\n}\n\nexport { RemotePersistentFilterDropdown }\n"],"names":["React","useCallback","useEffect","useMemo","useState","Filter","Trash2","classes","Combobox","Group","useCombobox","useTranslation","Tooltip","ConfirmationDialog","EStatus","Typo","Z_INDEX_LAYER","RemotePersistentFilterDropdown","remotePersistentFilters","onSelect","onDelete","t","selectedFilter","setSelectedFilter","modalData","setModalData","combobox","dropdownList","map","filter","value","id","label","filterName","handleClick","toggleDropdown","handleSelect","closeDropdown","handleDelete","e","filterId","stopPropagation","handleConfirmDelete","options","sort","a","b","localeCompare","item","Option","data-testid","className","length","span","color","size","onClick","emptyOption","store","width","position","withArrow","onOptionSubmit","styles","dropdown","zIndex","GROUND","HIGHEST","maxHeight","overflow","Target","div","actions","offset","Dropdown","Options","alertStatus","ERROR","title","content","type","opened","onClose","confirmationButtonText","confirmationButtonVariant","cancelButtonText","onSubmit"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as _jsx}from"react/jsx-runtime";import{BarChart3,Bell,Server,ServerCog,Settings,ShieldCheck,Users,View}from"lucide-react";import{Domain}from"../NavigationLink";export const getAssetDomainMenuItems=(factory,t,theme,realmAccessRoles)=>{const domainMenuItems=[[factory({icon:()=>_jsx(BarChart3,{size:theme.other.iconSizes.MEDIUM_LARGE,strokeWidth:1.5}),label:t("Analysis"),owner:Domain.Asset,subNav:[{label:t("Dashboard"),to:"/dashboard",owner:Domain.Asset},{label:t("Assets"),to:"/assets",owner:Domain.Asset},{label:t("Vulnerabilities"),to:"/vulnerabilities",owner:Domain.Asset}]})],[factory({icon:()=>_jsx(Server,{size:theme.other.iconSizes.MEDIUM_LARGE,strokeWidth:1.5}),label:t("Import"),owner:Domain.Asset,subNav:[{label:t("Sources"),to:"/sources",owner:Domain.Asset}]})]];if(realmAccessRoles===null||realmAccessRoles===void 0?void 0:realmAccessRoles.includes("admin")){domainMenuItems.push([factory({icon:()=>_jsx(Settings,{size:theme.other.iconSizes.MEDIUM_LARGE,strokeWidth:1.5}),label:t("Global settings"),owner:Domain.Asset,subNav:[{label:t("Asset management"),to:"/asset-management-settings",owner:Domain.Asset}]})])}return domainMenuItems};export const getScanDomainMenuItems=(factory,t,theme)=>{return[[factory({icon:()=>_jsx(ShieldCheck,{size:theme.other.iconSizes.MEDIUM_LARGE,strokeWidth:1.5}),owner:Domain.Scan,label:t("Scan control"),subNav:[{label:t("Tasks"),to:"/tasks",owner:Domain.Scan},{label:t("Targets"),to:"/targets",owner:Domain.Scan},{label:t("Credentials"),to:"/credentials",owner:Domain.Scan},{label:t("Schedules"),to:"/schedules",owner:Domain.Scan},{label:t("Sensors"),to:"/sensors",owner:Domain.Scan}]})]]};export const getVIDomainMenuItemsVulnerabilityIntel=(factory,t,theme)=>{return[[factory({icon:()=>_jsx(View,{size:theme.other.iconSizes.MEDIUM_LARGE,strokeWidth:1.5}),owner:Domain.VI,label:t("VIEW"),to:"/vulnerability-intelligence",subNav:[{label:t("CVE"),to:"/advisories-cve",owner:Domain.VI},{label:t("CSAF"),to:"/advisories-csaf",owner:Domain.VI},{label:t("CPE"),to:"/cpe",owner:Domain.VI},{label:t("Vulnerability tests"),to:"/vulnerability-tests",owner:Domain.VI},{label:t("SBOMs"),to:"/sboms",owner:Domain.VI},{label:t("
|
|
1
|
+
import{jsx as _jsx}from"react/jsx-runtime";import{BarChart3,Bell,Server,ServerCog,Settings,ShieldCheck,Users,View}from"lucide-react";import{Domain}from"../NavigationLink";export const getAssetDomainMenuItems=(factory,t,theme,realmAccessRoles)=>{const domainMenuItems=[[factory({icon:()=>_jsx(BarChart3,{size:theme.other.iconSizes.MEDIUM_LARGE,strokeWidth:1.5}),label:t("Analysis"),owner:Domain.Asset,subNav:[{label:t("Dashboard"),to:"/dashboard",owner:Domain.Asset},{label:t("Assets"),to:"/assets",owner:Domain.Asset},{label:t("Vulnerabilities"),to:"/vulnerabilities",owner:Domain.Asset}]})],[factory({icon:()=>_jsx(Server,{size:theme.other.iconSizes.MEDIUM_LARGE,strokeWidth:1.5}),label:t("Import"),owner:Domain.Asset,subNav:[{label:t("Sources"),to:"/sources",owner:Domain.Asset}]})]];if(realmAccessRoles===null||realmAccessRoles===void 0?void 0:realmAccessRoles.includes("admin")){domainMenuItems.push([factory({icon:()=>_jsx(Settings,{size:theme.other.iconSizes.MEDIUM_LARGE,strokeWidth:1.5}),label:t("Global settings"),owner:Domain.Asset,subNav:[{label:t("Asset management"),to:"/asset-management-settings",owner:Domain.Asset}]})])}return domainMenuItems};export const getScanDomainMenuItems=(factory,t,theme)=>{return[[factory({icon:()=>_jsx(ShieldCheck,{size:theme.other.iconSizes.MEDIUM_LARGE,strokeWidth:1.5}),owner:Domain.Scan,label:t("Scan control"),subNav:[{label:t("Tasks"),to:"/tasks",owner:Domain.Scan},{label:t("Targets"),to:"/targets",owner:Domain.Scan},{label:t("Credentials"),to:"/credentials",owner:Domain.Scan},{label:t("Schedules"),to:"/schedules",owner:Domain.Scan},{label:t("Sensors"),to:"/sensors",owner:Domain.Scan}]})]]};export const getVIDomainMenuItemsVulnerabilityIntel=(factory,t,theme)=>{return[[factory({icon:()=>_jsx(View,{size:theme.other.iconSizes.MEDIUM_LARGE,strokeWidth:1.5}),owner:Domain.VI,label:t("VIEW"),to:"/vulnerability-intelligence",subNav:[{label:t("CVE"),to:"/advisories-cve",owner:Domain.VI},{label:t("CSAF"),to:"/advisories-csaf",owner:Domain.VI},{label:t("CPE"),to:"/cpe",owner:Domain.VI},{label:t("Vulnerability tests"),to:"/vulnerability-tests",owner:Domain.VI},{label:t("SBOMs"),to:"/sboms",owner:Domain.VI},{label:t("SCAN reports"),to:"/scan-reports",owner:Domain.VI},{label:t("CSAF sources"),to:"/csaf-sources",owner:Domain.VI},{label:t("Feed"),to:"/feed",owner:Domain.VI}]})]]};export const getUserDomainMenuItems=(factory,t,theme,realmAccessRoles)=>{return[[factory({icon:()=>_jsx(Users,{size:theme.other.iconSizes.MEDIUM_LARGE,strokeWidth:1.5}),owner:Domain.User,label:t("User management"),to:"",subNav:[...(realmAccessRoles===null||realmAccessRoles===void 0?void 0:realmAccessRoles.includes("admin"))?[{label:t("Users"),to:"/users",owner:Domain.User}]:[],{label:t("Personal settings"),to:"/personal-settings",owner:Domain.User}]})]]};export const getNotificationsDomainMenuItems=(factory,t,theme)=>{return[[factory({icon:()=>_jsx(Bell,{size:theme.other.iconSizes.MEDIUM_LARGE,strokeWidth:1.5}),owner:Domain.Notifications,label:t("Notifications"),to:"/notifications"})]]};export const getSystemManagementDomainMenuItems=(factory,t,theme)=>{return[[factory({icon:()=>_jsx(ServerCog,{size:theme.other.iconSizes.MEDIUM_LARGE,strokeWidth:1.5}),owner:Domain.SystemManagement,label:t("Systems"),subNav:[{label:t("Appliances"),to:"/appliances",owner:Domain.SystemManagement}]})]]};
|
|
2
2
|
//# sourceMappingURL=menuItems.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/components/Layout/AppNavigation/Menu/menuItems.tsx"],"sourcesContent":["/* Copyright (C) Greenbone AG\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { TFunction } from \"i18next\"\nimport {\n BarChart3,\n Bell,\n Server,\n ServerCog,\n Settings,\n ShieldCheck,\n Users,\n View,\n} from \"lucide-react\"\nimport { Domain } from \"../NavigationLink\"\nimport { TBuildNavLinkParams, TNavLinkConfig } from \"./types\"\nimport { MantineTheme } from \"@mantine/core\"\n\nexport type TFactory = ({ icon, label, to, owner, subNav }: TBuildNavLinkParams) => TNavLinkConfig\n\nexport type TMenuItemContainer = (\n factory: TFactory,\n t: TFunction,\n theme: MantineTheme,\n realmAccessRoles?: Array<string>\n) => TNavLinkConfig[][]\n\nexport const getAssetDomainMenuItems: TMenuItemContainer = (\n factory,\n t,\n theme,\n realmAccessRoles\n) => {\n const domainMenuItems = [\n [\n factory({\n icon: () => <BarChart3 size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n label: t(\"Analysis\"),\n owner: Domain.Asset,\n subNav: [\n {\n label: t(\"Dashboard\"),\n to: \"/dashboard\",\n owner: Domain.Asset,\n },\n {\n label: t(\"Assets\"),\n to: \"/assets\",\n owner: Domain.Asset,\n },\n {\n label: t(\"Vulnerabilities\"),\n to: \"/vulnerabilities\",\n owner: Domain.Asset,\n },\n ],\n }),\n ],\n [\n factory({\n icon: () => <Server size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n label: t(\"Import\"),\n owner: Domain.Asset,\n subNav: [\n {\n label: t(\"Sources\"),\n to: \"/sources\",\n owner: Domain.Asset,\n },\n ],\n }),\n ],\n ]\n\n if (realmAccessRoles?.includes(\"admin\")) {\n domainMenuItems.push([\n factory({\n icon: () => <Settings size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n label: t(\"Global settings\"),\n owner: Domain.Asset,\n subNav: [\n {\n label: t(\"Asset management\"),\n to: \"/asset-management-settings\",\n owner: Domain.Asset,\n },\n ],\n }),\n ])\n }\n return domainMenuItems\n}\n\nexport const getScanDomainMenuItems: TMenuItemContainer = (factory, t, theme) => {\n return [\n [\n factory({\n icon: () => <ShieldCheck size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n owner: Domain.Scan,\n label: t(\"Scan control\"),\n subNav: [\n {\n label: t(\"Tasks\"),\n to: \"/tasks\",\n owner: Domain.Scan,\n },\n {\n label: t(\"Targets\"),\n to: \"/targets\",\n owner: Domain.Scan,\n },\n {\n label: t(\"Credentials\"),\n to: \"/credentials\",\n owner: Domain.Scan,\n },\n {\n label: t(\"Schedules\"),\n to: \"/schedules\",\n owner: Domain.Scan,\n },\n {\n label: t(\"Sensors\"),\n to: \"/sensors\",\n owner: Domain.Scan,\n },\n ],\n }),\n ],\n ]\n}\n\nexport const getVIDomainMenuItemsVulnerabilityIntel: TMenuItemContainer = (factory, t, theme) => {\n return [\n [\n factory({\n icon: () => <View size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n owner: Domain.VI,\n label: t(\"VIEW\"),\n to: \"/vulnerability-intelligence\",\n subNav: [\n {\n label: t(\"CVE\"),\n to: \"/advisories-cve\",\n owner: Domain.VI,\n },\n {\n label: t(\"CSAF\"),\n to: \"/advisories-csaf\",\n owner: Domain.VI,\n },\n {\n label: t(\"CPE\"),\n to: \"/cpe\",\n owner: Domain.VI,\n },\n {\n label: t(\"Vulnerability tests\"),\n to: \"/vulnerability-tests\",\n owner: Domain.VI,\n },\n {\n label: t(\"SBOMs\"),\n to: \"/sboms\",\n owner: Domain.VI,\n },\n {\n label: t(\"GEA reports\"),\n to: \"/gea-reports\",\n owner: Domain.VI,\n },\n {\n label: t(\"CSAF sources\"),\n to: \"/csaf-sources\",\n owner: Domain.VI,\n },\n {\n label: t(\"Feed\"),\n to: \"/feed\",\n owner: Domain.VI,\n },\n ],\n }),\n ],\n ]\n}\n\nexport const getUserDomainMenuItems: TMenuItemContainer = (factory, t, theme, realmAccessRoles) => {\n return [\n [\n factory({\n icon: () => <Users size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n owner: Domain.User,\n label: t(\"User management\"),\n to: \"\",\n subNav: [\n ...(realmAccessRoles?.includes(\"admin\")\n ? [\n {\n label: t(\"Users\"),\n to: \"/users\",\n owner: Domain.User,\n },\n ]\n : []),\n {\n label: t(\"Personal settings\"),\n to: \"/personal-settings\",\n owner: Domain.User,\n },\n ],\n }),\n ],\n ]\n}\n\nexport const getNotificationsDomainMenuItems: TMenuItemContainer = (factory, t, theme) => {\n return [\n [\n factory({\n icon: () => <Bell size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n owner: Domain.Notifications,\n label: t(\"Notifications\"),\n to: \"/notifications\",\n }),\n ],\n ]\n}\n\nexport const getSystemManagementDomainMenuItems: TMenuItemContainer = (factory, t, theme) => {\n return [\n [\n factory({\n icon: () => <ServerCog size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n owner: Domain.SystemManagement,\n label: t(\"Systems\"),\n subNav: [\n {\n label: t(\"Appliances\"),\n to: \"/appliances\",\n owner: Domain.SystemManagement,\n },\n ],\n }),\n ],\n ]\n}\n"],"names":["BarChart3","Bell","Server","ServerCog","Settings","ShieldCheck","Users","View","Domain","getAssetDomainMenuItems","factory","t","theme","realmAccessRoles","domainMenuItems","icon","size","other","iconSizes","MEDIUM_LARGE","strokeWidth","label","owner","Asset","subNav","to","includes","push","getScanDomainMenuItems","Scan","getVIDomainMenuItemsVulnerabilityIntel","VI","getUserDomainMenuItems","User","getNotificationsDomainMenuItems","Notifications","getSystemManagementDomainMenuItems","SystemManagement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/components/Layout/AppNavigation/Menu/menuItems.tsx"],"sourcesContent":["/* Copyright (C) Greenbone AG\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { TFunction } from \"i18next\"\nimport {\n BarChart3,\n Bell,\n Server,\n ServerCog,\n Settings,\n ShieldCheck,\n Users,\n View,\n} from \"lucide-react\"\nimport { Domain } from \"../NavigationLink\"\nimport { TBuildNavLinkParams, TNavLinkConfig } from \"./types\"\nimport { MantineTheme } from \"@mantine/core\"\n\nexport type TFactory = ({ icon, label, to, owner, subNav }: TBuildNavLinkParams) => TNavLinkConfig\n\nexport type TMenuItemContainer = (\n factory: TFactory,\n t: TFunction,\n theme: MantineTheme,\n realmAccessRoles?: Array<string>\n) => TNavLinkConfig[][]\n\nexport const getAssetDomainMenuItems: TMenuItemContainer = (\n factory,\n t,\n theme,\n realmAccessRoles\n) => {\n const domainMenuItems = [\n [\n factory({\n icon: () => <BarChart3 size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n label: t(\"Analysis\"),\n owner: Domain.Asset,\n subNav: [\n {\n label: t(\"Dashboard\"),\n to: \"/dashboard\",\n owner: Domain.Asset,\n },\n {\n label: t(\"Assets\"),\n to: \"/assets\",\n owner: Domain.Asset,\n },\n {\n label: t(\"Vulnerabilities\"),\n to: \"/vulnerabilities\",\n owner: Domain.Asset,\n },\n ],\n }),\n ],\n [\n factory({\n icon: () => <Server size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n label: t(\"Import\"),\n owner: Domain.Asset,\n subNav: [\n {\n label: t(\"Sources\"),\n to: \"/sources\",\n owner: Domain.Asset,\n },\n ],\n }),\n ],\n ]\n\n if (realmAccessRoles?.includes(\"admin\")) {\n domainMenuItems.push([\n factory({\n icon: () => <Settings size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n label: t(\"Global settings\"),\n owner: Domain.Asset,\n subNav: [\n {\n label: t(\"Asset management\"),\n to: \"/asset-management-settings\",\n owner: Domain.Asset,\n },\n ],\n }),\n ])\n }\n return domainMenuItems\n}\n\nexport const getScanDomainMenuItems: TMenuItemContainer = (factory, t, theme) => {\n return [\n [\n factory({\n icon: () => <ShieldCheck size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n owner: Domain.Scan,\n label: t(\"Scan control\"),\n subNav: [\n {\n label: t(\"Tasks\"),\n to: \"/tasks\",\n owner: Domain.Scan,\n },\n {\n label: t(\"Targets\"),\n to: \"/targets\",\n owner: Domain.Scan,\n },\n {\n label: t(\"Credentials\"),\n to: \"/credentials\",\n owner: Domain.Scan,\n },\n {\n label: t(\"Schedules\"),\n to: \"/schedules\",\n owner: Domain.Scan,\n },\n {\n label: t(\"Sensors\"),\n to: \"/sensors\",\n owner: Domain.Scan,\n },\n ],\n }),\n ],\n ]\n}\n\nexport const getVIDomainMenuItemsVulnerabilityIntel: TMenuItemContainer = (factory, t, theme) => {\n return [\n [\n factory({\n icon: () => <View size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n owner: Domain.VI,\n label: t(\"VIEW\"),\n to: \"/vulnerability-intelligence\",\n subNav: [\n {\n label: t(\"CVE\"),\n to: \"/advisories-cve\",\n owner: Domain.VI,\n },\n {\n label: t(\"CSAF\"),\n to: \"/advisories-csaf\",\n owner: Domain.VI,\n },\n {\n label: t(\"CPE\"),\n to: \"/cpe\",\n owner: Domain.VI,\n },\n {\n label: t(\"Vulnerability tests\"),\n to: \"/vulnerability-tests\",\n owner: Domain.VI,\n },\n {\n label: t(\"SBOMs\"),\n to: \"/sboms\",\n owner: Domain.VI,\n },\n {\n label: t(\"SCAN reports\"),\n to: \"/scan-reports\",\n owner: Domain.VI,\n },\n {\n label: t(\"CSAF sources\"),\n to: \"/csaf-sources\",\n owner: Domain.VI,\n },\n {\n label: t(\"Feed\"),\n to: \"/feed\",\n owner: Domain.VI,\n },\n ],\n }),\n ],\n ]\n}\n\nexport const getUserDomainMenuItems: TMenuItemContainer = (factory, t, theme, realmAccessRoles) => {\n return [\n [\n factory({\n icon: () => <Users size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n owner: Domain.User,\n label: t(\"User management\"),\n to: \"\",\n subNav: [\n ...(realmAccessRoles?.includes(\"admin\")\n ? [\n {\n label: t(\"Users\"),\n to: \"/users\",\n owner: Domain.User,\n },\n ]\n : []),\n {\n label: t(\"Personal settings\"),\n to: \"/personal-settings\",\n owner: Domain.User,\n },\n ],\n }),\n ],\n ]\n}\n\nexport const getNotificationsDomainMenuItems: TMenuItemContainer = (factory, t, theme) => {\n return [\n [\n factory({\n icon: () => <Bell size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n owner: Domain.Notifications,\n label: t(\"Notifications\"),\n to: \"/notifications\",\n }),\n ],\n ]\n}\n\nexport const getSystemManagementDomainMenuItems: TMenuItemContainer = (factory, t, theme) => {\n return [\n [\n factory({\n icon: () => <ServerCog size={theme.other.iconSizes.MEDIUM_LARGE} strokeWidth={1.5} />,\n owner: Domain.SystemManagement,\n label: t(\"Systems\"),\n subNav: [\n {\n label: t(\"Appliances\"),\n to: \"/appliances\",\n owner: Domain.SystemManagement,\n },\n ],\n }),\n ],\n ]\n}\n"],"names":["BarChart3","Bell","Server","ServerCog","Settings","ShieldCheck","Users","View","Domain","getAssetDomainMenuItems","factory","t","theme","realmAccessRoles","domainMenuItems","icon","size","other","iconSizes","MEDIUM_LARGE","strokeWidth","label","owner","Asset","subNav","to","includes","push","getScanDomainMenuItems","Scan","getVIDomainMenuItemsVulnerabilityIntel","VI","getUserDomainMenuItems","User","getNotificationsDomainMenuItems","Notifications","getSystemManagementDomainMenuItems","SystemManagement"],"mappings":"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"}
|