@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.
@@ -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:"258px",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})]})};
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: \"258px\", 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
+ {"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":"oGAwJSA,wEAAAA,6IApJwD,qCAClC,6GACX,oEAGyB,6CACd,wCACP,mDACW,wDACX,6CACH,mCACS,0kCAS9B,MAAMA,+BAAiE,CAAC,CACtEC,uBAAuB,CACvBC,QAAQ,CACRC,QAAQ,CACT,IACC,KAAM,CAAEC,CAAC,CAAE,CAAGC,GAAAA,4BAAc,IAC5B,KAAM,CAACC,eAAgBC,kBAAkB,CAAGC,GAAAA,eAAQ,IACpD,KAAM,CAACC,UAAWC,aAAa,CAAGF,GAAAA,eAAQ,EAAgB,MAC1D,MAAMG,SAAWC,GAAAA,iBAAW,IAE5B,MAAMC,aAAeC,GAAAA,cAAO,EAC1B,IACEb,wBAAwBc,GAAG,CAAC,AAACC,QAAY,CAAA,CACvCC,MAAOD,OAAOE,EAAE,CAChBC,MAAOH,OAAOI,UAAU,AAC1B,CAAA,GACF,CAACnB,wBAAwB,EAG3B,MAAMoB,YAAc,IAAMV,SAASW,cAAc,GAEjDC,GAAAA,gBAAS,EAAC,KACR,GAAIjB,eAAgBJ,SAASI,eAC/B,EAAG,CAACA,eAAgBJ,SAAS,EAE7B,MAAMsB,aAAeC,GAAAA,kBAAW,EAC9B,AAACT,SACC,GAAIA,OAAQ,CACVL,SAASe,aAAa,GACtBnB,kBAAkBS,OACpB,CACF,EACA,CAACL,SAAS,EAGZ,MAAMgB,aAAeF,GAAAA,kBAAW,EAAC,CAACG,EAAoCC,YACpED,EAAEE,eAAe,GACjBpB,aAAamB,SACf,EAAG,EAAE,EAEL,MAAME,oBAAsBN,GAAAA,kBAAW,EAAC,KACtC,GAAIhB,UAAW,CACbN,SAASM,WACTC,aAAa,KACf,CACF,EAAG,CAACD,UAAWN,SAAS,EAExB,MAAM6B,QAAUlB,GAAAA,cAAO,EACrB,IACED,aACGoB,IAAI,CAAC,CAACC,EAAGC,IAAMD,EAAEf,KAAK,CAACiB,aAAa,CAACD,EAAEhB,KAAK,GAC5CJ,GAAG,CAAC,AAACsB,MACJ,oBAACC,cAAQ,CAACC,MAAM,EAACC,cAAY,kBAAkBvB,MAAOoB,KAAKpB,KAAK,UAC9D,qBAACwB,WAAK,EAACC,UAAWC,gDAAO,CAACX,OAAO,WAC9BK,KAAKlB,KAAK,CAACyB,MAAM,CAAG,GACnB,oBAACC,gBAAO,EAAC1B,MAAOkB,KAAKlB,KAAK,UACxB,oBAAC2B,QAAKJ,UAAWC,gDAAO,CAAC,gBAAgB,UAAGN,KAAKlB,KAAK,KAGxD,oBAAC2B,iBAAMT,KAAKlB,KAAK,GAEnB,oBAAC0B,gBAAO,EAAC1B,MAAOf,EAAE,0BAChB,oBAAC2C,mBAAM,EACLP,cAAa,cACbQ,MAAM,MACNC,KAAM,GACNP,UAAWC,gDAAO,CAAC,gBAAgB,CACnCO,QAAS,AAACtB,GAAMD,aAAaC,EAAGS,KAAKpB,KAAK,UAfqBoB,KAAKpB,KAAK,GAqBvF,CAACJ,aAAcc,aAAcvB,EAAE,EAGjC,MAAM+C,YACJ,oBAACb,cAAQ,CAACC,MAAM,EAACtB,MAAO,YACtB,oBAACwB,WAAK,EAACC,UAAWC,gDAAO,CAACX,OAAO,UAC/B,oBAACc,iBAAM1C,EAAE,mCAFoB,IAOnC,MACE,qDACE,qBAACkC,cAAQ,EACPc,MAAOzC,SACP0C,MAAO,IACPC,SAAS,eACTC,SAAS,MACTC,eAAgBhC,aAChBiC,OAAQ,CACNC,SAAU,CAAEC,OAAQC,oBAAa,CAACC,MAAM,CAACC,OAAO,CAAEC,UAAW,QAASC,SAAU,MAAO,CACzF,YAEA,oBAAC1B,cAAQ,CAAC2B,MAAM,WACd,oBAACC,OAAI1B,cAAa,cAAeE,UAAWC,gDAAO,CAACwB,OAAO,CAAEjB,QAAS7B,qBACpE,oBAACwB,gBAAO,EAACuB,OAAQ,GAAIjD,MAAOf,EAAE,0BAC5B,oBAACiE,mBAAM,EACL7B,cAAa,uBACbQ,MAAO,8BACPC,KAAM,WAMd,oBAACX,cAAQ,CAACgC,QAAQ,WAChB,oBAAChC,cAAQ,CAACiC,OAAO,WAAEvC,QAAQY,MAAM,CAAG,EAAIZ,QAAUmB,mBAItD,oBAACqB,sCAAkB,EACjBC,YAAaC,qBAAO,CAACC,KAAK,CAC1BC,MAAOxE,EAAE,iBACTyE,QAAS,oBAACC,UAAI,EAACC,KAAK,gBAAQ3E,EAAE,+CAC9B4E,OAAQ,CAAC,CAACvE,UACVwE,QAAS,IAAMvE,aAAa,MAC5BwE,uBAAwB9E,EAAE,WAC1B+E,0BAA2B,SAC3BC,iBAAkBhF,EAAE,UACpBiF,SAAUtD,wBAIlB"}
@@ -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("GEA reports"),to:"/gea-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}]})]]};
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:"258px",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};
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: \"258px\", 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
+ {"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("GEA reports"),to:"/gea-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}]})]]};
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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@greenbone/ui-lib",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Greenbone UI Components Mantine v7",
5
5
  "types": "types/src/index.d.ts",
6
6
  "main": "lib/index.js",