@greenbone/ui-lib 0.8.9-alpha0 → 1.0.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/README.md +1 -5
- package/lib/cjs/components/Badge/Badge.module.css +1 -1
- 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/AppHeader/AppHeader.js +1 -1
- package/lib/cjs/components/Layout/AppHeader/AppHeader.js.map +1 -1
- package/lib/cjs/components/Layout/AppHeader/userNav/UserNav.js +1 -1
- package/lib/cjs/components/Layout/AppHeader/userNav/UserNav.js.map +1 -1
- package/lib/cjs/components/Layout/AppNavigation/AppNavigation.js +1 -1
- package/lib/cjs/components/Layout/AppNavigation/AppNavigation.js.map +1 -1
- package/lib/cjs/components/Layout/AppNavigation/Menu/menuFactory.js +1 -1
- package/lib/cjs/components/Layout/AppNavigation/Menu/menuFactory.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/Badge/Badge.module.css +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/AppHeader/AppHeader.js +1 -1
- package/lib/esm/components/Layout/AppHeader/AppHeader.js.map +1 -1
- package/lib/esm/components/Layout/AppHeader/types.js.map +1 -1
- package/lib/esm/components/Layout/AppHeader/userNav/UserNav.js +1 -1
- package/lib/esm/components/Layout/AppHeader/userNav/UserNav.js.map +1 -1
- package/lib/esm/components/Layout/AppNavigation/AppNavigation.js +1 -1
- package/lib/esm/components/Layout/AppNavigation/AppNavigation.js.map +1 -1
- package/lib/esm/components/Layout/AppNavigation/Menu/menuFactory.js +1 -1
- package/lib/esm/components/Layout/AppNavigation/Menu/menuFactory.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/lib/esm/components/Layout/AppNavigation/Menu/types.js.map +1 -1
- package/package.json +15 -14
- package/types/src/components/Filter/RemotePersistence/RemotePersistentFilterDropdown.d.ts.map +1 -1
- package/types/src/components/Layout/AppHeader/AppHeader.d.ts +1 -1
- package/types/src/components/Layout/AppHeader/AppHeader.d.ts.map +1 -1
- package/types/src/components/Layout/AppHeader/types.d.ts +3 -0
- package/types/src/components/Layout/AppHeader/types.d.ts.map +1 -1
- package/types/src/components/Layout/AppHeader/userNav/UserNav.d.ts +1 -1
- package/types/src/components/Layout/AppHeader/userNav/UserNav.d.ts.map +1 -1
- package/types/src/components/Layout/AppNavigation/AppNavigation.d.ts.map +1 -1
- package/types/src/components/Layout/AppNavigation/Menu/menuFactory.d.ts +1 -1
- package/types/src/components/Layout/AppNavigation/Menu/menuFactory.d.ts.map +1 -1
- package/types/src/components/Layout/AppNavigation/Menu/types.d.ts +4 -0
- package/types/src/components/Layout/AppNavigation/Menu/types.d.ts.map +1 -1
package/README.md
CHANGED
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|

|
|
2
2
|
|
|
3
3
|
[](https://github.com/greenbone/opensight-frontend-components/releases)
|
|
4
|
-
<span class="badge-npmversion"><a href="https://npmjs.org/package/@greenbone/ui-lib" title="View this project on NPM"><img src="https://img.shields.io/npm/v/@greenbone/
|
|
4
|
+
<span class="badge-npmversion"><a href="https://npmjs.org/package/@greenbone/ui-lib" title="View this project on NPM"><img src="https://img.shields.io/npm/v/@greenbone/ui-lib.svg" alt="NPM version" /></a></span>
|
|
5
5
|
[](https://github.com/greenbone/opensight-frontend-components/actions/workflows/build.yml?query=branch%3Amain++)
|
|
6
6
|
|
|
7
7
|
# OpenSight User Interface Component Library
|
|
8
8
|
|
|
9
9
|
## About
|
|
10
10
|
|
|
11
|
-
This project is used to sequentially update the current opensight-ui-components library to mantine v7.
|
|
12
|
-
|
|
13
|
-
To use this in parallel with the current opensight-ui-components (mantine v6) (Dev mode):
|
|
14
|
-
|
|
15
11
|
- `npm run build` - build this project
|
|
16
12
|
- `npm pack` - Pack this project into a tarball (file is created in this project)
|
|
17
13
|
- Switch to main project
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.root{align-items:center;border-radius:calc(1.5rem*var(--mantine-scale));display:flex;font-size:var(--mantine-font-size-sm);gap:calc(.3125rem*var(--mantine-scale));justify-content:center;max-width:100%;padding:0 var(--mantine-spacing-xs);width:fit-content}.badge-size-sm{height:calc(1rem*var(--mantine-scale))}.badge-size-md{height:calc(1.5rem*var(--mantine-scale))}.badge-size-lg{height:calc(2rem*var(--mantine-scale))}.with-cursor-pointer{cursor:pointer}.neutral-root{background-color:var(--badge-neutral-background-color);color:var(--badge-neutral-color)}.neutral-muted-root{background-color:var(--badge-neutral-muted-background-color);color:var(--badge-neutral-muted-color)}.neutral-light-root{background-color:var(--badge-neutral-light-background-color);color:var(--badge-neutral-light-color)}.green-root{background-color:var(--badge-green-background-color);color:var(--badge-green-color)}.red-light-root{background-color:var(--badge-red-light-background-color);color:var(--badge-red-light-color)}.red-dark-root{background-color:var(--badge-red-dark-background-color);color:var(--badge-red-dark-color)}.orange-root{background-color:var(--badge-orange-background-color);color:var(--badge-orange-color)}.blue-root{background-color:var(--badge-blue-background-color);color:var(--badge-blue-color)}:root[data-mantine-color-scheme=dark]{--badge-neutral-light-background-color:var(--mantine-color-gray-7);--badge-neutral-light-color:var(--mantine-color-gray-1);--badge-neutral-muted-background-color:var(--mantine-color-gray-6);--badge-neutral-muted-color:var(--mantine-color-black);--badge-neutral-background-color:var(--mantine-color-gray-1);--badge-neutral-color:var(--mantine-color-black);--badge-green-background-color:var(--mantine-color-green-8);--badge-green-color:var(--mantine-color-green-3);--badge-red-light-background-color:var(--mantine-color-red-3);--badge-red-light-color:var(--mantine-color-red-8);--badge-red-dark-background-color:var(--mantine-color-red-7);--badge-red-dark-color:var(--mantine-color-red-
|
|
1
|
+
.root{align-items:center;border-radius:calc(1.5rem*var(--mantine-scale));display:flex;font-size:var(--mantine-font-size-sm);gap:calc(.3125rem*var(--mantine-scale));justify-content:center;max-width:100%;padding:0 var(--mantine-spacing-xs);width:fit-content}.badge-size-sm{height:calc(1rem*var(--mantine-scale))}.badge-size-md{height:calc(1.5rem*var(--mantine-scale))}.badge-size-lg{height:calc(2rem*var(--mantine-scale))}.with-cursor-pointer{cursor:pointer}.neutral-root{background-color:var(--badge-neutral-background-color);color:var(--badge-neutral-color)}.neutral-muted-root{background-color:var(--badge-neutral-muted-background-color);color:var(--badge-neutral-muted-color)}.neutral-light-root{background-color:var(--badge-neutral-light-background-color);color:var(--badge-neutral-light-color)}.green-root{background-color:var(--badge-green-background-color);color:var(--badge-green-color)}.red-light-root{background-color:var(--badge-red-light-background-color);color:var(--badge-red-light-color)}.red-dark-root{background-color:var(--badge-red-dark-background-color);color:var(--badge-red-dark-color)}.orange-root{background-color:var(--badge-orange-background-color);color:var(--badge-orange-color)}.blue-root{background-color:var(--badge-blue-background-color);color:var(--badge-blue-color)}:root[data-mantine-color-scheme=dark]{--badge-neutral-light-background-color:var(--mantine-color-gray-7);--badge-neutral-light-color:var(--mantine-color-gray-1);--badge-neutral-muted-background-color:var(--mantine-color-gray-6);--badge-neutral-muted-color:var(--mantine-color-black);--badge-neutral-background-color:var(--mantine-color-gray-1);--badge-neutral-color:var(--mantine-color-black);--badge-green-background-color:var(--mantine-color-green-8);--badge-green-color:var(--mantine-color-green-3);--badge-red-light-background-color:var(--mantine-color-red-3);--badge-red-light-color:var(--mantine-color-red-8);--badge-red-dark-background-color:var(--mantine-color-red-7);--badge-red-dark-color:var(--mantine-color-red-1);--badge-orange-background-color:var(--mantine-color-orange-3);--badge-orange-color:var(--mantine-color-orange-8);--badge-blue-background-color:var(--mantine-color-blue-3);--badge-blue-color:var(--mantine-color-blue-9)}:root:not([data-mantine-color-scheme=dark]){--badge-neutral-light-background-color:var(--mantine-color-gray-1);--badge-neutral-light-color:var(--mantine-color-gray-7);--badge-neutral-muted-background-color:var(--mantine-color-gray-6);--badge-neutral-muted-color:var(--mantine-color-white);--badge-neutral-background-color:var(--mantine-color-gray-8);--badge-neutral-color:var(--mantine-color-white);--badge-green-background-color:var(--mantine-color-green-1);--badge-green-color:var(--mantine-color-green-6);--badge-red-light-background-color:var(--mantine-color-red-3);--badge-red-light-color:var(--mantine-color-red-8);--badge-red-dark-background-color:var(--mantine-color-red-7);--badge-red-dark-color:var(--mantine-color-red-1);--badge-orange-background-color:var(--mantine-color-orange-3);--badge-orange-color:var(--mantine-color-orange-8);--badge-blue-background-color:var(--mantine-color-blue-3);--badge-blue-color:var(--mantine-color-blue-9)}
|
|
@@ -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");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:
|
|
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})]})};
|
|
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\"\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={{
|
|
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,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 AppHeader(){return AppHeader},get useHeaderMenuPoints(){return useHeaderMenuPoints}});const _jsxruntime=require("react/jsx-runtime");const _LanguageSwitch=require("./languageSwitch/LanguageSwitch");const _index=require("./index");const _icons=require("../../../icons");const _core=require("@mantine/core");const _reacti18next=require("react-i18next");const _lucidereact=require("lucide-react");const _TimeZone=require("./TimeZone");const
|
|
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 AppHeader(){return AppHeader},get useHeaderMenuPoints(){return useHeaderMenuPoints}});const _jsxruntime=require("react/jsx-runtime");const _LanguageSwitch=require("./languageSwitch/LanguageSwitch");const _index=require("./index");const _icons=require("../../../icons");const _core=require("@mantine/core");const _reacti18next=require("react-i18next");const _lucidereact=require("lucide-react");const _TimeZone=require("./TimeZone");const _theme=require("../../../theme");const _AppHeadermodulecss=/*#__PURE__*/_interop_require_default(require("./AppHeader.module.css"));const _Manual=require("./manual/Manual");function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}const AppHeader=({username,menuPoints,logoLink,isLoggedIn,languageSwitch,sessionTimer,logo,isThemeSwitchVisible=true,ianaTimeZone,manualLink,userNavWidth})=>{return(0,_jsxruntime.jsxs)("header",{className:_AppHeadermodulecss.default.header,style:{zIndex:_theme.Z_INDEX_LAYER.GROUND.HIGHEST},children:[(0,_jsxruntime.jsx)("a",{className:_AppHeadermodulecss.default["logo-link"],href:logoLink,children:logo||(0,_jsxruntime.jsx)(_icons.GreenboneLogo,{})}),(0,_jsxruntime.jsxs)("div",{className:_AppHeadermodulecss.default["right-side"],children:[(0,_jsxruntime.jsx)(_TimeZone.TimeZone,{ianaTimeZone:ianaTimeZone}),(0,_jsxruntime.jsx)(_core.Divider,{orientation:"vertical",className:_AppHeadermodulecss.default.divider}),languageSwitch||(0,_jsxruntime.jsx)(_LanguageSwitch.LanguageSwitch,{}),isThemeSwitchVisible&&(0,_jsxruntime.jsxs)(_jsxruntime.Fragment,{children:[(0,_jsxruntime.jsx)(_core.Divider,{orientation:"vertical",className:_AppHeadermodulecss.default.divider}),(0,_jsxruntime.jsx)(_index.ThemeSwitch,{})]}),manualLink&&(0,_jsxruntime.jsx)(_Manual.Manual,{manualLink:manualLink}),isLoggedIn&&(0,_jsxruntime.jsxs)(_jsxruntime.Fragment,{children:[sessionTimer&&(0,_jsxruntime.jsxs)(_jsxruntime.Fragment,{children:[(0,_jsxruntime.jsx)(_core.Divider,{orientation:"vertical",className:_AppHeadermodulecss.default.divider}),sessionTimer]}),(0,_jsxruntime.jsx)(_core.Divider,{orientation:"vertical",className:_AppHeadermodulecss.default.divider}),(0,_jsxruntime.jsx)(_index.UserNav,{menuPoints:menuPoints,username:username,userNavWidth:userNavWidth})]})]})]})};const useHeaderMenuPoints=logoutCallback=>{const{t}=(0,_reacti18next.useTranslation)();return[{linkText:t("Sign out"),id:"logout",icon:(0,_jsxruntime.jsx)(_lucidereact.Power,{size:14,strokeWidth:1.5}),to:()=>logoutCallback?logoutCallback():null}]};
|
|
2
2
|
//# sourceMappingURL=AppHeader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/Layout/AppHeader/AppHeader.tsx"],"sourcesContent":["/* Copyright (C) Greenbone AG\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { LanguageSwitch } from \"./languageSwitch/LanguageSwitch\"\nimport { ThemeSwitch, UserNav } from \"./index\"\nimport { TAppHeaderProps } from \"./types\"\nimport { GreenboneLogo } from \"../../../icons\"\nimport { Divider } from \"@mantine/core\"\nimport { useTranslation } from \"react-i18next\"\nimport { Power } from \"lucide-react\"\nimport { TimeZone } from \"./TimeZone\"\nimport { Z_INDEX_LAYER } from \"../../../theme
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/Layout/AppHeader/AppHeader.tsx"],"sourcesContent":["/* Copyright (C) Greenbone AG\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { LanguageSwitch } from \"./languageSwitch/LanguageSwitch\"\nimport { ThemeSwitch, UserNav } from \"./index\"\nimport { TAppHeaderProps } from \"./types\"\nimport { GreenboneLogo } from \"../../../icons\"\nimport { Divider } from \"@mantine/core\"\nimport { useTranslation } from \"react-i18next\"\nimport { Power } from \"lucide-react\"\nimport { TimeZone } from \"./TimeZone\"\nimport { Z_INDEX_LAYER } from \"../../../theme\"\nimport classes from \"./AppHeader.module.css\"\nimport { Manual } from \"./manual/Manual\"\n\nexport const AppHeader = ({\n username,\n menuPoints,\n logoLink,\n isLoggedIn,\n languageSwitch,\n sessionTimer,\n logo,\n isThemeSwitchVisible = true,\n ianaTimeZone,\n manualLink,\n userNavWidth,\n}: TAppHeaderProps) => {\n return (\n <header\n className={classes.header}\n style={{\n zIndex: Z_INDEX_LAYER.GROUND.HIGHEST,\n }}\n >\n <a className={classes[\"logo-link\"]} href={logoLink}>\n {logo || <GreenboneLogo />}\n </a>\n <div className={classes[\"right-side\"]}>\n <TimeZone ianaTimeZone={ianaTimeZone} />\n <Divider orientation=\"vertical\" className={classes.divider} />\n {languageSwitch || <LanguageSwitch />}\n {isThemeSwitchVisible && (\n <>\n <Divider orientation=\"vertical\" className={classes.divider} />\n <ThemeSwitch />\n </>\n )}\n {manualLink && <Manual manualLink={manualLink} />}\n {isLoggedIn && (\n <>\n {sessionTimer && (\n <>\n <Divider orientation=\"vertical\" className={classes.divider} />\n {sessionTimer}\n </>\n )}\n <Divider orientation=\"vertical\" className={classes.divider} />\n <UserNav menuPoints={menuPoints} username={username} userNavWidth={userNavWidth} />\n </>\n )}\n </div>\n </header>\n )\n}\n\nexport const useHeaderMenuPoints = (logoutCallback?: () => void) => {\n const { t } = useTranslation()\n\n return [\n {\n linkText: t(\"Sign out\"),\n id: \"logout\",\n icon: <Power size={14} strokeWidth={1.5} />,\n to: () => (logoutCallback ? logoutCallback() : null),\n },\n ]\n}\n"],"names":["AppHeader","useHeaderMenuPoints","username","menuPoints","logoLink","isLoggedIn","languageSwitch","sessionTimer","logo","isThemeSwitchVisible","ianaTimeZone","manualLink","userNavWidth","header","className","classes","style","zIndex","Z_INDEX_LAYER","GROUND","HIGHEST","a","href","GreenboneLogo","div","TimeZone","Divider","orientation","divider","LanguageSwitch","ThemeSwitch","Manual","UserNav","logoutCallback","t","useTranslation","linkText","id","icon","Power","size","strokeWidth","to"],"mappings":"mPAgBaA,mBAAAA,eAmDAC,6BAAAA,oGA/DkB,wDACM,gCAEP,sCACN,6CACO,4CACT,wCACG,mCACK,0FACV,iDACG,uGAEhB,MAAMD,UAAY,CAAC,CACxBE,QAAQ,CACRC,UAAU,CACVC,QAAQ,CACRC,UAAU,CACVC,cAAc,CACdC,YAAY,CACZC,IAAI,CACJC,qBAAuB,IAAI,CAC3BC,YAAY,CACZC,UAAU,CACVC,YAAY,CACI,IAChB,MACE,qBAACC,UACCC,UAAWC,2BAAO,CAACF,MAAM,CACzBG,MAAO,CACLC,OAAQC,oBAAa,CAACC,MAAM,CAACC,OAAO,AACtC,YAEA,oBAACC,KAAEP,UAAWC,2BAAO,CAAC,YAAY,CAAEO,KAAMlB,kBACvCI,MAAQ,oBAACe,oBAAa,OAEzB,qBAACC,OAAIV,UAAWC,2BAAO,CAAC,aAAa,WACnC,oBAACU,kBAAQ,EAACf,aAAcA,eACxB,oBAACgB,aAAO,EAACC,YAAY,WAAWb,UAAWC,2BAAO,CAACa,OAAO,GACzDtB,gBAAkB,oBAACuB,8BAAc,KACjCpB,sBACC,qDACE,oBAACiB,aAAO,EAACC,YAAY,WAAWb,UAAWC,2BAAO,CAACa,OAAO,GAC1D,oBAACE,kBAAW,QAGfnB,YAAc,oBAACoB,cAAM,EAACpB,WAAYA,aAClCN,YACC,qDACGE,cACC,qDACE,oBAACmB,aAAO,EAACC,YAAY,WAAWb,UAAWC,2BAAO,CAACa,OAAO,GACzDrB,gBAGL,oBAACmB,aAAO,EAACC,YAAY,WAAWb,UAAWC,2BAAO,CAACa,OAAO,GAC1D,oBAACI,cAAO,EAAC7B,WAAYA,WAAYD,SAAUA,SAAUU,aAAcA,uBAM/E,EAEO,MAAMX,oBAAsB,AAACgC,iBAClC,KAAM,CAAEC,CAAC,CAAE,CAAGC,GAAAA,4BAAc,IAE5B,MAAO,CACL,CACEC,SAAUF,EAAE,YACZG,GAAI,SACJC,KAAM,oBAACC,kBAAK,EAACC,KAAM,GAAIC,YAAa,MACpCC,GAAI,IAAOT,eAAiBA,iBAAmB,IACjD,EACD,AACH"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"UserNav",{enumerable:true,get:function(){return UserNav}});const _jsxruntime=require("react/jsx-runtime");const _core=require("@mantine/core");const _NavItem=require("./NavItem");const _lucidereact=require("lucide-react");const _UserNavmodulecss=/*#__PURE__*/_interop_require_default(require("./UserNav.module.css"));const
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"UserNav",{enumerable:true,get:function(){return UserNav}});const _jsxruntime=require("react/jsx-runtime");const _core=require("@mantine/core");const _NavItem=require("./NavItem");const _lucidereact=require("lucide-react");const _UserNavmodulecss=/*#__PURE__*/_interop_require_default(require("./UserNav.module.css"));const _theme=require("../../../../theme");function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}const UserNav=({username,menuPoints,userNavWidth=140})=>{return(0,_jsxruntime.jsxs)(_core.Menu,{shadow:"md",trigger:"hover",width:userNavWidth,closeDelay:100,offset:11,children:[(0,_jsxruntime.jsx)(_core.Menu.Target,{children:(0,_jsxruntime.jsxs)("div",{className:_UserNavmodulecss.default["user-nav-wrapper"],children:[(0,_jsxruntime.jsx)("div",{className:_UserNavmodulecss.default["user-name"],children:username}),(0,_jsxruntime.jsx)("div",{className:_UserNavmodulecss.default["user-icon-wrapper"],children:(0,_jsxruntime.jsx)(_lucidereact.UserCircle2,{size:_theme.ICON_SIZES.MEDIUM,strokeWidth:1.5})})]})}),(0,_jsxruntime.jsx)(_core.Menu.Dropdown,{children:menuPoints.map(menuPoint=>{if(typeof menuPoint.to==="string"){return(0,_jsxruntime.jsx)(_core.Menu.Item,{component:"a",href:menuPoint.to,children:(0,_jsxruntime.jsx)(_NavItem.NavItem,{linkText:menuPoint.linkText,icon:menuPoint.icon})},menuPoint.linkText)}if(typeof menuPoint.to==="function"){return(0,_jsxruntime.jsx)("div",{onClick:menuPoint.to,children:(0,_jsxruntime.jsx)(_core.Menu.Item,{children:(0,_jsxruntime.jsx)(_NavItem.NavItem,{linkText:menuPoint.linkText,icon:menuPoint.icon})})},menuPoint.linkText)}})})]})};
|
|
2
2
|
//# sourceMappingURL=UserNav.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/components/Layout/AppHeader/userNav/UserNav.tsx"],"sourcesContent":["/* Copyright (C) Greenbone AG\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Menu } from \"@mantine/core\"\nimport { TUserNavProps } from \"../types\"\nimport { NavItem } from \"./NavItem\"\nimport { UserCircle2 } from \"lucide-react\"\nimport classes from \"./UserNav.module.css\"\nimport { ICON_SIZES } from \"../../../../theme
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/components/Layout/AppHeader/userNav/UserNav.tsx"],"sourcesContent":["/* Copyright (C) Greenbone AG\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Menu } from \"@mantine/core\"\nimport { TUserNavProps } from \"../types\"\nimport { NavItem } from \"./NavItem\"\nimport { UserCircle2 } from \"lucide-react\"\nimport classes from \"./UserNav.module.css\"\nimport { ICON_SIZES } from \"../../../../theme\"\n\nexport const UserNav = ({ username, menuPoints, userNavWidth = 140 }: TUserNavProps) => {\n return (\n <Menu shadow=\"md\" trigger=\"hover\" width={userNavWidth} closeDelay={100} offset={11}>\n <Menu.Target>\n <div className={classes[\"user-nav-wrapper\"]}>\n <div className={classes[\"user-name\"]}>{username}</div>\n <div className={classes[\"user-icon-wrapper\"]}>\n <UserCircle2 size={ICON_SIZES.MEDIUM} strokeWidth={1.5} />\n </div>\n </div>\n </Menu.Target>\n\n <Menu.Dropdown>\n {menuPoints.map((menuPoint) => {\n if (typeof menuPoint.to === \"string\") {\n return (\n <Menu.Item component={\"a\"} href={menuPoint.to} key={menuPoint.linkText}>\n <NavItem linkText={menuPoint.linkText} icon={menuPoint.icon} />\n </Menu.Item>\n )\n }\n if (typeof menuPoint.to === \"function\") {\n return (\n <div key={menuPoint.linkText} onClick={menuPoint.to}>\n <Menu.Item>\n <NavItem linkText={menuPoint.linkText} icon={menuPoint.icon} />\n </Menu.Item>\n </div>\n )\n }\n })}\n </Menu.Dropdown>\n </Menu>\n )\n}\n"],"names":["UserNav","username","menuPoints","userNavWidth","Menu","shadow","trigger","width","closeDelay","offset","Target","div","className","classes","UserCircle2","size","ICON_SIZES","MEDIUM","strokeWidth","Dropdown","map","menuPoint","to","Item","component","href","NavItem","linkText","icon","onClick"],"mappings":"oGAWaA,iDAAAA,8EAPQ,wCAEG,wCACI,sFACR,8CACO,yGAEpB,MAAMA,QAAU,CAAC,CAAEC,QAAQ,CAAEC,UAAU,CAAEC,aAAe,GAAG,CAAiB,IACjF,MACE,qBAACC,UAAI,EAACC,OAAO,KAAKC,QAAQ,QAAQC,MAAOJ,aAAcK,WAAY,IAAKC,OAAQ,aAC9E,oBAACL,UAAI,CAACM,MAAM,WACV,qBAACC,OAAIC,UAAWC,yBAAO,CAAC,mBAAmB,WACzC,oBAACF,OAAIC,UAAWC,yBAAO,CAAC,YAAY,UAAGZ,WACvC,oBAACU,OAAIC,UAAWC,yBAAO,CAAC,oBAAoB,UAC1C,oBAACC,wBAAW,EAACC,KAAMC,iBAAU,CAACC,MAAM,CAAEC,YAAa,aAKzD,oBAACd,UAAI,CAACe,QAAQ,WACXjB,WAAWkB,GAAG,CAAC,AAACC,YACf,GAAI,OAAOA,UAAUC,EAAE,GAAK,SAAU,CACpC,MACE,oBAAClB,UAAI,CAACmB,IAAI,EAACC,UAAW,IAAKC,KAAMJ,UAAUC,EAAE,UAC3C,oBAACI,gBAAO,EAACC,SAAUN,UAAUM,QAAQ,CAAEC,KAAMP,UAAUO,IAAI,IADTP,UAAUM,QAAQ,CAI1E,CACA,GAAI,OAAON,UAAUC,EAAE,GAAK,WAAY,CACtC,MACE,oBAACX,OAA6BkB,QAASR,UAAUC,EAAE,UACjD,oBAAClB,UAAI,CAACmB,IAAI,WACR,oBAACG,gBAAO,EAACC,SAAUN,UAAUM,QAAQ,CAAEC,KAAMP,UAAUO,IAAI,MAFrDP,UAAUM,QAAQ,CAMhC,CACF,OAIR"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"AppNavigation",{enumerable:true,get:function(){return AppNavigation}});const _jsxruntime=require("react/jsx-runtime");const _core=require("@mantine/core");const _AppNavigationLink=require("./AppNavigationLink");const _AppNavigationmodulecss=/*#__PURE__*/_interop_require_default(require("./AppNavigation.module.css"));function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}const AppNavigation=({menuPoints,as})=>{return(0,_jsxruntime.jsx)("div",{className:_AppNavigationmodulecss.default.navigation,children:menuPoints.map((navSection,navSectionIndex,navSectionArray)=>navSection.map((item,itemIndex,itemArray)=>{var _item_subNav;const submenu=item===null||item===void 0?void 0:(_item_subNav=item.subNav)===null||_item_subNav===void 0?void 0:_item_subNav.map(item=>(0,_jsxruntime.jsx)(_AppNavigationLink.AppNavigationLink,{component:item.active&&item.isPathMatch?"span":item.isExternal?"a":as,to:item.to,href:item.to,active:item.active,label:item.label,leftSection:item.icon?(0,_jsxruntime.jsx)(item.icon,{}):undefined,rightSection:item.rightSection||undefined,className:item.icon?"":_AppNavigationmodulecss.default["navigation-item-without-icon"]},item.key||item.to));return(0,_jsxruntime.jsxs)("div",{children:[(0,_jsxruntime.jsx)(_AppNavigationLink.AppNavigationLink,{component:item.active&&item.isPathMatch?"span":item.isExternal?"a":as,to:item.to,active:item.active,href:item.to,label:item.label,rightSection:item.rightSection,leftSection:item.icon?(0,_jsxruntime.jsx)(item.icon,{}):undefined,defaultOpened:item.defaultOpened,children:submenu}),itemIndex===itemArray.length-1&&navSectionIndex!==navSectionArray.length-1&&(0,_jsxruntime.jsx)(_core.Divider,{className:_AppNavigationmodulecss.default["divider-root"],my:"sm"})]},item.key||item.to)}))})};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"AppNavigation",{enumerable:true,get:function(){return AppNavigation}});const _jsxruntime=require("react/jsx-runtime");const _core=require("@mantine/core");const _AppNavigationLink=require("./AppNavigationLink");const _AppNavigationmodulecss=/*#__PURE__*/_interop_require_default(require("./AppNavigation.module.css"));function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}const AppNavigation=({menuPoints,as})=>{return(0,_jsxruntime.jsx)("div",{className:_AppNavigationmodulecss.default.navigation,children:menuPoints.map((navSection,navSectionIndex,navSectionArray)=>navSection.map((item,itemIndex,itemArray)=>{var _item_subNav;const submenu=item===null||item===void 0?void 0:(_item_subNav=item.subNav)===null||_item_subNav===void 0?void 0:_item_subNav.map(item=>(0,_jsxruntime.jsx)(_AppNavigationLink.AppNavigationLink,{component:item.active&&item.isPathMatch?"span":item.isExternal?"a":as,to:item.to,href:item.to,active:item.active,label:item.label,leftSection:item.icon?(0,_jsxruntime.jsx)(item.icon,{}):undefined,rightSection:item.rightSection||undefined,className:item.icon?"":_AppNavigationmodulecss.default["navigation-item-without-icon"],target:item.openInNewTab?"_blank":"_self",rel:item.openInNewTab?"noopener noreferrer":undefined},item.key||item.to));return(0,_jsxruntime.jsxs)("div",{children:[(0,_jsxruntime.jsx)(_AppNavigationLink.AppNavigationLink,{component:item.active&&item.isPathMatch?"span":item.isExternal?"a":as,to:item.to,active:item.active,href:item.to,label:item.label,rightSection:item.rightSection,leftSection:item.icon?(0,_jsxruntime.jsx)(item.icon,{}):undefined,defaultOpened:item.defaultOpened,target:item.openInNewTab?"_blank":"_self",rel:item.openInNewTab?"noopener noreferrer":undefined,children:submenu}),itemIndex===itemArray.length-1&&navSectionIndex!==navSectionArray.length-1&&(0,_jsxruntime.jsx)(_core.Divider,{className:_AppNavigationmodulecss.default["divider-root"],my:"sm"})]},item.key||item.to)}))})};
|
|
2
2
|
//# sourceMappingURL=AppNavigation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/Layout/AppNavigation/AppNavigation.tsx"],"sourcesContent":["/* Copyright (C) Greenbone AG\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Divider } from \"@mantine/core\"\nimport { AppNavigationLink } from \"./AppNavigationLink\"\nimport { TNavLinkConfig } from \"./Menu/types\"\nimport classes from \"./AppNavigation.module.css\"\n\ntype TAppNavigationProps = {\n menuPoints: TNavLinkConfig[][]\n as: any\n}\n\nexport const AppNavigation = ({ menuPoints, as }: TAppNavigationProps) => {\n return (\n <div className={classes.navigation}>\n {menuPoints.map((navSection, navSectionIndex, navSectionArray) =>\n navSection.map((item, itemIndex, itemArray) => {\n const submenu = item?.subNav?.map((item) => (\n <AppNavigationLink\n component={item.active && item.isPathMatch ? \"span\" : item.isExternal ? \"a\" : as}\n to={item.to}\n href={item.to}\n key={item.key || item.to}\n active={item.active}\n label={item.label}\n leftSection={item.icon ? <item.icon /> : undefined}\n rightSection={item.rightSection || undefined}\n className={item.icon ? \"\" : classes[\"navigation-item-without-icon\"]}\n />\n ))\n return (\n <div key={item.key || item.to}>\n <AppNavigationLink\n component={item.active && item.isPathMatch ? \"span\" : item.isExternal ? \"a\" : as}\n to={item.to}\n active={item.active}\n href={item.to}\n label={item.label}\n rightSection={item.rightSection}\n leftSection={item.icon ? <item.icon /> : undefined}\n defaultOpened={item.defaultOpened}\n >\n {submenu}\n </AppNavigationLink>\n {itemIndex === itemArray.length - 1 &&\n navSectionIndex !== navSectionArray.length - 1 && (\n <Divider className={classes[\"divider-root\"]} my=\"sm\" />\n )}\n </div>\n )\n })\n )}\n </div>\n )\n}\n"],"names":["AppNavigation","menuPoints","as","div","className","classes","navigation","map","navSection","navSectionIndex","navSectionArray","item","itemIndex","itemArray","submenu","subNav","AppNavigationLink","component","active","isPathMatch","isExternal","to","href","label","leftSection","icon","undefined","rightSection","key","defaultOpened","length","Divider","my"],"mappings":"oGAcaA,uDAAAA,oFAVW,kDACU,mGAEd,mHAOb,MAAMA,cAAgB,CAAC,CAAEC,UAAU,CAAEC,EAAE,CAAuB,IACnE,MACE,oBAACC,OAAIC,UAAWC,+BAAO,CAACC,UAAU,UAC/BL,WAAWM,GAAG,CAAC,CAACC,WAAYC,gBAAiBC,kBAC5CF,WAAWD,GAAG,CAAC,CAACI,KAAMC,UAAWC,iBACfF,aAAhB,MAAMG,QAAUH,aAAAA,sBAAAA,aAAAA,KAAMI,MAAM,UAAZJ,6BAAAA,aAAcJ,GAAG,CAAC,AAACI,MACjC,oBAACK,oCAAiB,EAChBC,UAAWN,KAAKO,MAAM,EAAIP,KAAKQ,WAAW,CAAG,OAASR,KAAKS,UAAU,CAAG,IAAMlB,GAC9EmB,GAAIV,KAAKU,EAAE,CACXC,KAAMX,KAAKU,EAAE,CAEbH,OAAQP,KAAKO,MAAM,CACnBK,MAAOZ,KAAKY,KAAK,CACjBC,YAAab,KAAKc,IAAI,CAAG,oBAACd,KAAKc,IAAI,KAAMC,UACzCC,aAAchB,KAAKgB,YAAY,EAAID,UACnCtB,UAAWO,KAAKc,IAAI,CAAG,GAAKpB,+BAAO,CAAC,+BAA+B,
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/Layout/AppNavigation/AppNavigation.tsx"],"sourcesContent":["/* Copyright (C) Greenbone AG\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Divider } from \"@mantine/core\"\nimport { AppNavigationLink } from \"./AppNavigationLink\"\nimport { TNavLinkConfig } from \"./Menu/types\"\nimport classes from \"./AppNavigation.module.css\"\n\ntype TAppNavigationProps = {\n menuPoints: TNavLinkConfig[][]\n as: any\n}\n\nexport const AppNavigation = ({ menuPoints, as }: TAppNavigationProps) => {\n return (\n <div className={classes.navigation}>\n {menuPoints.map((navSection, navSectionIndex, navSectionArray) =>\n navSection.map((item, itemIndex, itemArray) => {\n const submenu = item?.subNav?.map((item) => (\n <AppNavigationLink\n component={item.active && item.isPathMatch ? \"span\" : item.isExternal ? \"a\" : as}\n to={item.to}\n href={item.to}\n key={item.key || item.to}\n active={item.active}\n label={item.label}\n leftSection={item.icon ? <item.icon /> : undefined}\n rightSection={item.rightSection || undefined}\n className={item.icon ? \"\" : classes[\"navigation-item-without-icon\"]}\n target={item.openInNewTab ? \"_blank\" : \"_self\"}\n rel={item.openInNewTab ? \"noopener noreferrer\" : undefined}\n />\n ))\n return (\n <div key={item.key || item.to}>\n <AppNavigationLink\n component={item.active && item.isPathMatch ? \"span\" : item.isExternal ? \"a\" : as}\n to={item.to}\n active={item.active}\n href={item.to}\n label={item.label}\n rightSection={item.rightSection}\n leftSection={item.icon ? <item.icon /> : undefined}\n defaultOpened={item.defaultOpened}\n target={item.openInNewTab ? \"_blank\" : \"_self\"}\n rel={item.openInNewTab ? \"noopener noreferrer\" : undefined}\n >\n {submenu}\n </AppNavigationLink>\n {itemIndex === itemArray.length - 1 &&\n navSectionIndex !== navSectionArray.length - 1 && (\n <Divider className={classes[\"divider-root\"]} my=\"sm\" />\n )}\n </div>\n )\n })\n )}\n </div>\n )\n}\n"],"names":["AppNavigation","menuPoints","as","div","className","classes","navigation","map","navSection","navSectionIndex","navSectionArray","item","itemIndex","itemArray","submenu","subNav","AppNavigationLink","component","active","isPathMatch","isExternal","to","href","label","leftSection","icon","undefined","rightSection","target","openInNewTab","rel","key","defaultOpened","length","Divider","my"],"mappings":"oGAcaA,uDAAAA,oFAVW,kDACU,mGAEd,mHAOb,MAAMA,cAAgB,CAAC,CAAEC,UAAU,CAAEC,EAAE,CAAuB,IACnE,MACE,oBAACC,OAAIC,UAAWC,+BAAO,CAACC,UAAU,UAC/BL,WAAWM,GAAG,CAAC,CAACC,WAAYC,gBAAiBC,kBAC5CF,WAAWD,GAAG,CAAC,CAACI,KAAMC,UAAWC,iBACfF,aAAhB,MAAMG,QAAUH,aAAAA,sBAAAA,aAAAA,KAAMI,MAAM,UAAZJ,6BAAAA,aAAcJ,GAAG,CAAC,AAACI,MACjC,oBAACK,oCAAiB,EAChBC,UAAWN,KAAKO,MAAM,EAAIP,KAAKQ,WAAW,CAAG,OAASR,KAAKS,UAAU,CAAG,IAAMlB,GAC9EmB,GAAIV,KAAKU,EAAE,CACXC,KAAMX,KAAKU,EAAE,CAEbH,OAAQP,KAAKO,MAAM,CACnBK,MAAOZ,KAAKY,KAAK,CACjBC,YAAab,KAAKc,IAAI,CAAG,oBAACd,KAAKc,IAAI,KAAMC,UACzCC,aAAchB,KAAKgB,YAAY,EAAID,UACnCtB,UAAWO,KAAKc,IAAI,CAAG,GAAKpB,+BAAO,CAAC,+BAA+B,CACnEuB,OAAQjB,KAAKkB,YAAY,CAAG,SAAW,QACvCC,IAAKnB,KAAKkB,YAAY,CAAG,sBAAwBH,WAP5Cf,KAAKoB,GAAG,EAAIpB,KAAKU,EAAE,GAU5B,MACE,qBAAClB,iBACC,oBAACa,oCAAiB,EAChBC,UAAWN,KAAKO,MAAM,EAAIP,KAAKQ,WAAW,CAAG,OAASR,KAAKS,UAAU,CAAG,IAAMlB,GAC9EmB,GAAIV,KAAKU,EAAE,CACXH,OAAQP,KAAKO,MAAM,CACnBI,KAAMX,KAAKU,EAAE,CACbE,MAAOZ,KAAKY,KAAK,CACjBI,aAAchB,KAAKgB,YAAY,CAC/BH,YAAab,KAAKc,IAAI,CAAG,oBAACd,KAAKc,IAAI,KAAMC,UACzCM,cAAerB,KAAKqB,aAAa,CACjCJ,OAAQjB,KAAKkB,YAAY,CAAG,SAAW,QACvCC,IAAKnB,KAAKkB,YAAY,CAAG,sBAAwBH,mBAEhDZ,UAEFF,YAAcC,UAAUoB,MAAM,CAAG,GAChCxB,kBAAoBC,gBAAgBuB,MAAM,CAAG,GAC3C,oBAACC,aAAO,EAAC9B,UAAWC,+BAAO,CAAC,eAAe,CAAE8B,GAAG,SAjB5CxB,KAAKoB,GAAG,EAAIpB,KAAKU,EAAE,CAqBjC,KAIR"}
|
|
@@ -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 NavLinkConfigFactory(){return NavLinkConfigFactory},get getMenuItemFromString(){return getMenuItemFromString},get parseMenuEnvString(){return parseMenuEnvString},get useBuildUseNavigationMenuPoints(){return useBuildUseNavigationMenuPoints},get useMenuItemStringsToNavigationMenuItemPoints(){return useMenuItemStringsToNavigationMenuItemPoints}});const _NavigationLink=require("../NavigationLink");const _buildUrl=require("../NavigationLink/buildUrl");const _isActive=require("../NavigationLink/isActive");const _reacti18next=require("react-i18next");const _menuItems=require("./menuItems");const _core=require("@mantine/core");const NavLinkConfigFactory=(currentPath,requester)=>({icon,label,to,owner,subNav})=>{const fullTargetUrl=to?(0,_buildUrl.buildUrl)(owner,requester,to):"";const defaultOpened=!!(subNav===null||subNav===void 0?void 0:subNav.find(sn=>sn.to===currentPath));return{isPathMatch:currentPath.endsWith(fullTargetUrl),active:to?(0,_isActive.isActive)(currentPath,fullTargetUrl):false,icon:icon,isExternal:owner!==requester,label:label,to:fullTargetUrl,defaultOpened:defaultOpened,subNav:subNav?subNav.map(sn=>({isPathMatch:currentPath.endsWith(sn.to||""),label:sn.label,to:sn.to?(0,_buildUrl.buildUrl)(sn.owner,requester,sn.to):"",active:sn.to?(0,_isActive.isActive)(currentPath,sn.to):false,isExternal:sn.owner!==requester})):undefined}};const useBuildUseNavigationMenuPoints=({requestingDomain,menuPointsCategories,currentLocation,additional,realmAccessRoles})=>{const factory=NavLinkConfigFactory(currentLocation,requestingDomain);const menuPoints=useMenuItemStringsToNavigationMenuItemPoints(menuPointsCategories,factory,realmAccessRoles);if(additional)menuPoints.push(additional.map(factory));return menuPoints};const getMenuItemFromString=(menuItem,factory,t,theme,realmAccessRoles)=>{switch(menuItem){case _NavigationLink.ESideNavEnum.VI:return(0,_menuItems.getVIDomainMenuItemsVulnerabilityIntel)(factory,t,theme);case _NavigationLink.ESideNavEnum.ASSET:return(0,_menuItems.getAssetDomainMenuItems)(factory,t,theme,realmAccessRoles);case _NavigationLink.ESideNavEnum.SCAN:return(0,_menuItems.getScanDomainMenuItems)(factory,t,theme);case _NavigationLink.ESideNavEnum.USER:return(0,_menuItems.getUserDomainMenuItems)(factory,t,theme,realmAccessRoles);case _NavigationLink.ESideNavEnum.SYSTEM:return(0,_menuItems.getSystemManagementDomainMenuItems)(factory,t,theme);case _NavigationLink.ESideNavEnum.NOTIFICATIONS:return(0,_menuItems.getNotificationsDomainMenuItems)(factory,t,theme);default:return[]}};const useMenuItemStringsToNavigationMenuItemPoints=(menuItems,factory,realmAccessRoles)=>{const{t}=(0,_reacti18next.useTranslation)();const theme=(0,_core.useMantineTheme)();return menuItems.flatMap(item=>getMenuItemFromString(item,factory,t,theme,realmAccessRoles))};const parseMenuEnvString=(envString,separator=",")=>envString.split(separator);
|
|
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 NavLinkConfigFactory(){return NavLinkConfigFactory},get getMenuItemFromString(){return getMenuItemFromString},get parseMenuEnvString(){return parseMenuEnvString},get useBuildUseNavigationMenuPoints(){return useBuildUseNavigationMenuPoints},get useMenuItemStringsToNavigationMenuItemPoints(){return useMenuItemStringsToNavigationMenuItemPoints}});const _NavigationLink=require("../NavigationLink");const _buildUrl=require("../NavigationLink/buildUrl");const _isActive=require("../NavigationLink/isActive");const _reacti18next=require("react-i18next");const _menuItems=require("./menuItems");const _core=require("@mantine/core");const NavLinkConfigFactory=(currentPath,requester)=>({icon,label,to,owner,subNav,openInNewTab})=>{const fullTargetUrl=to?(0,_buildUrl.buildUrl)(owner,requester,to):"";const defaultOpened=!!(subNav===null||subNav===void 0?void 0:subNav.find(sn=>sn.to===currentPath));return{isPathMatch:currentPath.endsWith(fullTargetUrl),active:to?(0,_isActive.isActive)(currentPath,fullTargetUrl):false,icon:icon,isExternal:owner!==requester,label:label,to:fullTargetUrl,defaultOpened:defaultOpened,openInNewTab,subNav:subNav?subNav.map(sn=>({isPathMatch:currentPath.endsWith(sn.to||""),label:sn.label,to:sn.to?(0,_buildUrl.buildUrl)(sn.owner,requester,sn.to):"",active:sn.to?(0,_isActive.isActive)(currentPath,sn.to):false,isExternal:sn.owner!==requester,openInNewTab})):undefined}};const useBuildUseNavigationMenuPoints=({requestingDomain,menuPointsCategories,currentLocation,additional,realmAccessRoles})=>{const factory=NavLinkConfigFactory(currentLocation,requestingDomain);const menuPoints=useMenuItemStringsToNavigationMenuItemPoints(menuPointsCategories,factory,realmAccessRoles);if(additional)menuPoints.push(additional.map(factory));return menuPoints};const getMenuItemFromString=(menuItem,factory,t,theme,realmAccessRoles)=>{switch(menuItem){case _NavigationLink.ESideNavEnum.VI:return(0,_menuItems.getVIDomainMenuItemsVulnerabilityIntel)(factory,t,theme);case _NavigationLink.ESideNavEnum.ASSET:return(0,_menuItems.getAssetDomainMenuItems)(factory,t,theme,realmAccessRoles);case _NavigationLink.ESideNavEnum.SCAN:return(0,_menuItems.getScanDomainMenuItems)(factory,t,theme);case _NavigationLink.ESideNavEnum.USER:return(0,_menuItems.getUserDomainMenuItems)(factory,t,theme,realmAccessRoles);case _NavigationLink.ESideNavEnum.SYSTEM:return(0,_menuItems.getSystemManagementDomainMenuItems)(factory,t,theme);case _NavigationLink.ESideNavEnum.NOTIFICATIONS:return(0,_menuItems.getNotificationsDomainMenuItems)(factory,t,theme);default:return[]}};const useMenuItemStringsToNavigationMenuItemPoints=(menuItems,factory,realmAccessRoles)=>{const{t}=(0,_reacti18next.useTranslation)();const theme=(0,_core.useMantineTheme)();return menuItems.flatMap(item=>getMenuItemFromString(item,factory,t,theme,realmAccessRoles))};const parseMenuEnvString=(envString,separator=",")=>envString.split(separator);
|
|
2
2
|
//# sourceMappingURL=menuFactory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/components/Layout/AppNavigation/Menu/menuFactory.ts"],"sourcesContent":["/* Copyright (C) Greenbone AG\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Domain, ESideNavEnum } from \"../NavigationLink\"\nimport { buildUrl } from \"../NavigationLink/buildUrl\"\nimport { isActive } from \"../NavigationLink/isActive\"\nimport { TBuildNavLinkParams, TNavLinkConfig } from \"./types\"\nimport { useTranslation } from \"react-i18next\"\nimport {\n getAssetDomainMenuItems,\n getNotificationsDomainMenuItems,\n getScanDomainMenuItems,\n getSystemManagementDomainMenuItems,\n getUserDomainMenuItems,\n getVIDomainMenuItemsVulnerabilityIntel,\n TFactory,\n} from \"./menuItems\"\nimport { TFunction } from \"i18next\"\nimport { MantineTheme, useMantineTheme } from \"@mantine/core\"\n\nexport const NavLinkConfigFactory =\n (currentPath: string, requester: Domain) =>\n ({ icon, label, to, owner, subNav }: TBuildNavLinkParams): TNavLinkConfig => {\n const fullTargetUrl = to ? buildUrl(owner, requester, to) : \"\"\n const defaultOpened = !!subNav?.find((sn) => sn.to === currentPath)\n\n return {\n isPathMatch: currentPath.endsWith(fullTargetUrl),\n active: to ? isActive(currentPath, fullTargetUrl) : false,\n icon: icon,\n isExternal: owner !== requester,\n label: label,\n to: fullTargetUrl,\n defaultOpened: defaultOpened,\n subNav: subNav\n ? subNav.map((sn) => ({\n isPathMatch: currentPath.endsWith(sn.to || \"\"),\n label: sn.label,\n to: sn.to ? buildUrl(sn.owner, requester, sn.to) : \"\",\n active: sn.to ? isActive(currentPath, sn.to) : false,\n isExternal: sn.owner !== requester,\n }))\n : undefined,\n }\n }\n\nexport const useBuildUseNavigationMenuPoints = ({\n requestingDomain,\n menuPointsCategories,\n currentLocation,\n additional,\n realmAccessRoles,\n}: {\n requestingDomain: Domain\n currentLocation: string\n menuPointsCategories: ESideNavEnum[]\n additional?: TBuildNavLinkParams[]\n realmAccessRoles?: Array<string>\n}): TNavLinkConfig[][] => {\n const factory = NavLinkConfigFactory(currentLocation, requestingDomain)\n const menuPoints = useMenuItemStringsToNavigationMenuItemPoints(\n menuPointsCategories,\n factory,\n realmAccessRoles\n )\n if (additional) menuPoints.push(additional.map(factory))\n return menuPoints\n}\n\nexport const getMenuItemFromString = (\n menuItem: ESideNavEnum,\n factory: TFactory,\n t: TFunction,\n theme: MantineTheme,\n realmAccessRoles?: Array<string>\n) => {\n switch (menuItem) {\n case ESideNavEnum.VI:\n return getVIDomainMenuItemsVulnerabilityIntel(factory, t, theme)\n case ESideNavEnum.ASSET:\n return getAssetDomainMenuItems(factory, t, theme, realmAccessRoles)\n case ESideNavEnum.SCAN:\n return getScanDomainMenuItems(factory, t, theme)\n case ESideNavEnum.USER:\n return getUserDomainMenuItems(factory, t, theme, realmAccessRoles)\n case ESideNavEnum.SYSTEM:\n return getSystemManagementDomainMenuItems(factory, t, theme)\n case ESideNavEnum.NOTIFICATIONS:\n return getNotificationsDomainMenuItems(factory, t, theme)\n default:\n return []\n }\n}\n\nexport const useMenuItemStringsToNavigationMenuItemPoints = (\n menuItems: ESideNavEnum[],\n factory: TFactory,\n realmAccessRoles?: Array<string>\n) => {\n const { t } = useTranslation()\n const theme = useMantineTheme()\n return menuItems.flatMap((item) =>\n getMenuItemFromString(item, factory, t, theme, realmAccessRoles)\n )\n}\n\nexport const parseMenuEnvString = (envString: string, separator = \",\"): ESideNavEnum[] =>\n envString.split(separator) as ESideNavEnum[]\n"],"names":["NavLinkConfigFactory","getMenuItemFromString","parseMenuEnvString","useBuildUseNavigationMenuPoints","useMenuItemStringsToNavigationMenuItemPoints","currentPath","requester","icon","label","to","owner","subNav","fullTargetUrl","buildUrl","defaultOpened","find","sn","isPathMatch","endsWith","active","isActive","isExternal","map","undefined","requestingDomain","menuPointsCategories","currentLocation","additional","realmAccessRoles","factory","menuPoints","push","menuItem","t","theme","ESideNavEnum","VI","getVIDomainMenuItemsVulnerabilityIntel","ASSET","getAssetDomainMenuItems","SCAN","getScanDomainMenuItems","USER","getUserDomainMenuItems","SYSTEM","getSystemManagementDomainMenuItems","NOTIFICATIONS","getNotificationsDomainMenuItems","menuItems","useTranslation","useMantineTheme","flatMap","item","envString","separator","split"],"mappings":"mPAqBaA,8BAAAA,
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/components/Layout/AppNavigation/Menu/menuFactory.ts"],"sourcesContent":["/* Copyright (C) Greenbone AG\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Domain, ESideNavEnum } from \"../NavigationLink\"\nimport { buildUrl } from \"../NavigationLink/buildUrl\"\nimport { isActive } from \"../NavigationLink/isActive\"\nimport { TBuildNavLinkParams, TNavLinkConfig } from \"./types\"\nimport { useTranslation } from \"react-i18next\"\nimport {\n getAssetDomainMenuItems,\n getNotificationsDomainMenuItems,\n getScanDomainMenuItems,\n getSystemManagementDomainMenuItems,\n getUserDomainMenuItems,\n getVIDomainMenuItemsVulnerabilityIntel,\n TFactory,\n} from \"./menuItems\"\nimport { TFunction } from \"i18next\"\nimport { MantineTheme, useMantineTheme } from \"@mantine/core\"\n\nexport const NavLinkConfigFactory =\n (currentPath: string, requester: Domain) =>\n ({ icon, label, to, owner, subNav, openInNewTab }: TBuildNavLinkParams): TNavLinkConfig => {\n const fullTargetUrl = to ? buildUrl(owner, requester, to) : \"\"\n const defaultOpened = !!subNav?.find((sn) => sn.to === currentPath)\n\n return {\n isPathMatch: currentPath.endsWith(fullTargetUrl),\n active: to ? isActive(currentPath, fullTargetUrl) : false,\n icon: icon,\n isExternal: owner !== requester,\n label: label,\n to: fullTargetUrl,\n defaultOpened: defaultOpened,\n openInNewTab,\n subNav: subNav\n ? subNav.map((sn) => ({\n isPathMatch: currentPath.endsWith(sn.to || \"\"),\n label: sn.label,\n to: sn.to ? buildUrl(sn.owner, requester, sn.to) : \"\",\n active: sn.to ? isActive(currentPath, sn.to) : false,\n isExternal: sn.owner !== requester,\n openInNewTab,\n }))\n : undefined,\n }\n }\n\nexport const useBuildUseNavigationMenuPoints = ({\n requestingDomain,\n menuPointsCategories,\n currentLocation,\n additional,\n realmAccessRoles,\n}: {\n requestingDomain: Domain\n currentLocation: string\n menuPointsCategories: ESideNavEnum[]\n additional?: TBuildNavLinkParams[]\n realmAccessRoles?: Array<string>\n}): TNavLinkConfig[][] => {\n const factory = NavLinkConfigFactory(currentLocation, requestingDomain)\n const menuPoints = useMenuItemStringsToNavigationMenuItemPoints(\n menuPointsCategories,\n factory,\n realmAccessRoles\n )\n if (additional) menuPoints.push(additional.map(factory))\n return menuPoints\n}\n\nexport const getMenuItemFromString = (\n menuItem: ESideNavEnum,\n factory: TFactory,\n t: TFunction,\n theme: MantineTheme,\n realmAccessRoles?: Array<string>\n) => {\n switch (menuItem) {\n case ESideNavEnum.VI:\n return getVIDomainMenuItemsVulnerabilityIntel(factory, t, theme)\n case ESideNavEnum.ASSET:\n return getAssetDomainMenuItems(factory, t, theme, realmAccessRoles)\n case ESideNavEnum.SCAN:\n return getScanDomainMenuItems(factory, t, theme)\n case ESideNavEnum.USER:\n return getUserDomainMenuItems(factory, t, theme, realmAccessRoles)\n case ESideNavEnum.SYSTEM:\n return getSystemManagementDomainMenuItems(factory, t, theme)\n case ESideNavEnum.NOTIFICATIONS:\n return getNotificationsDomainMenuItems(factory, t, theme)\n default:\n return []\n }\n}\n\nexport const useMenuItemStringsToNavigationMenuItemPoints = (\n menuItems: ESideNavEnum[],\n factory: TFactory,\n realmAccessRoles?: Array<string>\n) => {\n const { t } = useTranslation()\n const theme = useMantineTheme()\n return menuItems.flatMap((item) =>\n getMenuItemFromString(item, factory, t, theme, realmAccessRoles)\n )\n}\n\nexport const parseMenuEnvString = (envString: string, separator = \",\"): ESideNavEnum[] =>\n envString.split(separator) as ESideNavEnum[]\n"],"names":["NavLinkConfigFactory","getMenuItemFromString","parseMenuEnvString","useBuildUseNavigationMenuPoints","useMenuItemStringsToNavigationMenuItemPoints","currentPath","requester","icon","label","to","owner","subNav","openInNewTab","fullTargetUrl","buildUrl","defaultOpened","find","sn","isPathMatch","endsWith","active","isActive","isExternal","map","undefined","requestingDomain","menuPointsCategories","currentLocation","additional","realmAccessRoles","factory","menuPoints","push","menuItem","t","theme","ESideNavEnum","VI","getVIDomainMenuItemsVulnerabilityIntel","ASSET","getAssetDomainMenuItems","SCAN","getScanDomainMenuItems","USER","getUserDomainMenuItems","SYSTEM","getSystemManagementDomainMenuItems","NOTIFICATIONS","getNotificationsDomainMenuItems","menuItems","useTranslation","useMantineTheme","flatMap","item","envString","separator","split"],"mappings":"mPAqBaA,8BAAAA,0BAmDAC,+BAAAA,2BAqCAC,4BAAAA,wBA5DAC,yCAAAA,qCAgDAC,sDAAAA,8EA7FwB,6CACZ,sDACA,0DAEM,0CASxB,mCAEuC,iBAEvC,MAAMJ,qBACX,CAACK,YAAqBC,YACtB,CAAC,CAAEC,IAAI,CAAEC,KAAK,CAAEC,EAAE,CAAEC,KAAK,CAAEC,MAAM,CAAEC,YAAY,CAAuB,IACpE,MAAMC,cAAgBJ,GAAKK,GAAAA,kBAAQ,EAACJ,MAAOJ,UAAWG,IAAM,GAC5D,MAAMM,cAAgB,CAAC,EAACJ,eAAAA,uBAAAA,OAAQK,IAAI,CAAC,AAACC,IAAOA,GAAGR,EAAE,GAAKJ,cAEvD,MAAO,CACLa,YAAab,YAAYc,QAAQ,CAACN,eAClCO,OAAQX,GAAKY,GAAAA,kBAAQ,EAAChB,YAAaQ,eAAiB,MACpDN,KAAMA,KACNe,WAAYZ,QAAUJ,UACtBE,MAAOA,MACPC,GAAII,cACJE,cAAeA,cACfH,aACAD,OAAQA,OACJA,OAAOY,GAAG,CAAC,AAACN,IAAQ,CAAA,CAClBC,YAAab,YAAYc,QAAQ,CAACF,GAAGR,EAAE,EAAI,IAC3CD,MAAOS,GAAGT,KAAK,CACfC,GAAIQ,GAAGR,EAAE,CAAGK,GAAAA,kBAAQ,EAACG,GAAGP,KAAK,CAAEJ,UAAWW,GAAGR,EAAE,EAAI,GACnDW,OAAQH,GAAGR,EAAE,CAAGY,GAAAA,kBAAQ,EAAChB,YAAaY,GAAGR,EAAE,EAAI,MAC/Ca,WAAYL,GAAGP,KAAK,GAAKJ,UACzBM,YACF,CAAA,GACAY,SACN,CACF,EAEK,MAAMrB,gCAAkC,CAAC,CAC9CsB,gBAAgB,CAChBC,oBAAoB,CACpBC,eAAe,CACfC,UAAU,CACVC,gBAAgB,CAOjB,IACC,MAAMC,QAAU9B,qBAAqB2B,gBAAiBF,kBACtD,MAAMM,WAAa3B,6CACjBsB,qBACAI,QACAD,kBAEF,GAAID,WAAYG,WAAWC,IAAI,CAACJ,WAAWL,GAAG,CAACO,UAC/C,OAAOC,UACT,EAEO,MAAM9B,sBAAwB,CACnCgC,SACAH,QACAI,EACAC,MACAN,oBAEA,OAAQI,UACN,KAAKG,4BAAY,CAACC,EAAE,CAClB,MAAOC,GAAAA,iDAAsC,EAACR,QAASI,EAAGC,MAC5D,MAAKC,4BAAY,CAACG,KAAK,CACrB,MAAOC,GAAAA,kCAAuB,EAACV,QAASI,EAAGC,MAAON,iBACpD,MAAKO,4BAAY,CAACK,IAAI,CACpB,MAAOC,GAAAA,iCAAsB,EAACZ,QAASI,EAAGC,MAC5C,MAAKC,4BAAY,CAACO,IAAI,CACpB,MAAOC,GAAAA,iCAAsB,EAACd,QAASI,EAAGC,MAAON,iBACnD,MAAKO,4BAAY,CAACS,MAAM,CACtB,MAAOC,GAAAA,6CAAkC,EAAChB,QAASI,EAAGC,MACxD,MAAKC,4BAAY,CAACW,aAAa,CAC7B,MAAOC,GAAAA,0CAA+B,EAAClB,QAASI,EAAGC,MACrD,SACE,MAAO,EAAE,AACb,CACF,EAEO,MAAM/B,6CAA+C,CAC1D6C,UACAnB,QACAD,oBAEA,KAAM,CAAEK,CAAC,CAAE,CAAGgB,GAAAA,4BAAc,IAC5B,MAAMf,MAAQgB,GAAAA,qBAAe,IAC7B,OAAOF,UAAUG,OAAO,CAAC,AAACC,MACxBpD,sBAAsBoD,KAAMvB,QAASI,EAAGC,MAAON,kBAEnD,EAEO,MAAM3B,mBAAqB,CAACoD,UAAmBC,UAAY,GAAG,GACnED,UAAUE,KAAK,CAACD"}
|
|
@@ -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)=>{
|
|
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("Appliances"),to:"/appliances",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}]})]]};
|
|
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 return [\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(\"Appliances\"),\n to: \"/appliances\",\n owner: Domain.Asset,\n },\n ],\n }),\n ],\n [\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 ...(realmAccessRoles?.includes(\"admin\")\n ? [\n {\n label: t(\"Asset management\"),\n to: \"/asset-management-settings\",\n owner: Domain.Asset,\n },\n ]\n : []),\n ],\n }),\n ],\n ]\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","icon","BarChart3","size","other","iconSizes","MEDIUM_LARGE","strokeWidth","label","owner","Domain","Asset","subNav","to","Server","Settings","includes","ShieldCheck","Scan","View","VI","Users","User","Bell","Notifications","ServerCog","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(\"Appliances\"),\n to: \"/appliances\",\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":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.root{align-items:center;border-radius:calc(1.5rem*var(--mantine-scale));display:flex;font-size:var(--mantine-font-size-sm);gap:calc(.3125rem*var(--mantine-scale));justify-content:center;max-width:100%;padding:0 var(--mantine-spacing-xs);width:fit-content}.badge-size-sm{height:calc(1rem*var(--mantine-scale))}.badge-size-md{height:calc(1.5rem*var(--mantine-scale))}.badge-size-lg{height:calc(2rem*var(--mantine-scale))}.with-cursor-pointer{cursor:pointer}.neutral-root{background-color:var(--badge-neutral-background-color);color:var(--badge-neutral-color)}.neutral-muted-root{background-color:var(--badge-neutral-muted-background-color);color:var(--badge-neutral-muted-color)}.neutral-light-root{background-color:var(--badge-neutral-light-background-color);color:var(--badge-neutral-light-color)}.green-root{background-color:var(--badge-green-background-color);color:var(--badge-green-color)}.red-light-root{background-color:var(--badge-red-light-background-color);color:var(--badge-red-light-color)}.red-dark-root{background-color:var(--badge-red-dark-background-color);color:var(--badge-red-dark-color)}.orange-root{background-color:var(--badge-orange-background-color);color:var(--badge-orange-color)}.blue-root{background-color:var(--badge-blue-background-color);color:var(--badge-blue-color)}:root[data-mantine-color-scheme=dark]{--badge-neutral-light-background-color:var(--mantine-color-gray-7);--badge-neutral-light-color:var(--mantine-color-gray-1);--badge-neutral-muted-background-color:var(--mantine-color-gray-6);--badge-neutral-muted-color:var(--mantine-color-black);--badge-neutral-background-color:var(--mantine-color-gray-1);--badge-neutral-color:var(--mantine-color-black);--badge-green-background-color:var(--mantine-color-green-8);--badge-green-color:var(--mantine-color-green-3);--badge-red-light-background-color:var(--mantine-color-red-3);--badge-red-light-color:var(--mantine-color-red-8);--badge-red-dark-background-color:var(--mantine-color-red-7);--badge-red-dark-color:var(--mantine-color-red-
|
|
1
|
+
.root{align-items:center;border-radius:calc(1.5rem*var(--mantine-scale));display:flex;font-size:var(--mantine-font-size-sm);gap:calc(.3125rem*var(--mantine-scale));justify-content:center;max-width:100%;padding:0 var(--mantine-spacing-xs);width:fit-content}.badge-size-sm{height:calc(1rem*var(--mantine-scale))}.badge-size-md{height:calc(1.5rem*var(--mantine-scale))}.badge-size-lg{height:calc(2rem*var(--mantine-scale))}.with-cursor-pointer{cursor:pointer}.neutral-root{background-color:var(--badge-neutral-background-color);color:var(--badge-neutral-color)}.neutral-muted-root{background-color:var(--badge-neutral-muted-background-color);color:var(--badge-neutral-muted-color)}.neutral-light-root{background-color:var(--badge-neutral-light-background-color);color:var(--badge-neutral-light-color)}.green-root{background-color:var(--badge-green-background-color);color:var(--badge-green-color)}.red-light-root{background-color:var(--badge-red-light-background-color);color:var(--badge-red-light-color)}.red-dark-root{background-color:var(--badge-red-dark-background-color);color:var(--badge-red-dark-color)}.orange-root{background-color:var(--badge-orange-background-color);color:var(--badge-orange-color)}.blue-root{background-color:var(--badge-blue-background-color);color:var(--badge-blue-color)}:root[data-mantine-color-scheme=dark]{--badge-neutral-light-background-color:var(--mantine-color-gray-7);--badge-neutral-light-color:var(--mantine-color-gray-1);--badge-neutral-muted-background-color:var(--mantine-color-gray-6);--badge-neutral-muted-color:var(--mantine-color-black);--badge-neutral-background-color:var(--mantine-color-gray-1);--badge-neutral-color:var(--mantine-color-black);--badge-green-background-color:var(--mantine-color-green-8);--badge-green-color:var(--mantine-color-green-3);--badge-red-light-background-color:var(--mantine-color-red-3);--badge-red-light-color:var(--mantine-color-red-8);--badge-red-dark-background-color:var(--mantine-color-red-7);--badge-red-dark-color:var(--mantine-color-red-1);--badge-orange-background-color:var(--mantine-color-orange-3);--badge-orange-color:var(--mantine-color-orange-8);--badge-blue-background-color:var(--mantine-color-blue-3);--badge-blue-color:var(--mantine-color-blue-9)}:root:not([data-mantine-color-scheme=dark]){--badge-neutral-light-background-color:var(--mantine-color-gray-1);--badge-neutral-light-color:var(--mantine-color-gray-7);--badge-neutral-muted-background-color:var(--mantine-color-gray-6);--badge-neutral-muted-color:var(--mantine-color-white);--badge-neutral-background-color:var(--mantine-color-gray-8);--badge-neutral-color:var(--mantine-color-white);--badge-green-background-color:var(--mantine-color-green-1);--badge-green-color:var(--mantine-color-green-6);--badge-red-light-background-color:var(--mantine-color-red-3);--badge-red-light-color:var(--mantine-color-red-8);--badge-red-dark-background-color:var(--mantine-color-red-7);--badge-red-dark-color:var(--mantine-color-red-1);--badge-orange-background-color:var(--mantine-color-orange-3);--badge-orange-color:var(--mantine-color-orange-8);--badge-blue-background-color:var(--mantine-color-blue-3);--badge-blue-color:var(--mantine-color-blue-9)}
|
|
@@ -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";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:
|
|
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};
|
|
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\"\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={{
|
|
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,2 +1,2 @@
|
|
|
1
|
-
import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";import{LanguageSwitch}from"./languageSwitch/LanguageSwitch";import{ThemeSwitch,UserNav}from"./index";import{GreenboneLogo}from"../../../icons";import{Divider}from"@mantine/core";import{useTranslation}from"react-i18next";import{Power}from"lucide-react";import{TimeZone}from"./TimeZone";import{Z_INDEX_LAYER}from"../../../theme
|
|
1
|
+
import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";import{LanguageSwitch}from"./languageSwitch/LanguageSwitch";import{ThemeSwitch,UserNav}from"./index";import{GreenboneLogo}from"../../../icons";import{Divider}from"@mantine/core";import{useTranslation}from"react-i18next";import{Power}from"lucide-react";import{TimeZone}from"./TimeZone";import{Z_INDEX_LAYER}from"../../../theme";import classes from"./AppHeader.module.css";import{Manual}from"./manual/Manual";export const AppHeader=({username,menuPoints,logoLink,isLoggedIn,languageSwitch,sessionTimer,logo,isThemeSwitchVisible=true,ianaTimeZone,manualLink,userNavWidth})=>{return _jsxs("header",{className:classes.header,style:{zIndex:Z_INDEX_LAYER.GROUND.HIGHEST},children:[_jsx("a",{className:classes["logo-link"],href:logoLink,children:logo||_jsx(GreenboneLogo,{})}),_jsxs("div",{className:classes["right-side"],children:[_jsx(TimeZone,{ianaTimeZone:ianaTimeZone}),_jsx(Divider,{orientation:"vertical",className:classes.divider}),languageSwitch||_jsx(LanguageSwitch,{}),isThemeSwitchVisible&&_jsxs(_Fragment,{children:[_jsx(Divider,{orientation:"vertical",className:classes.divider}),_jsx(ThemeSwitch,{})]}),manualLink&&_jsx(Manual,{manualLink:manualLink}),isLoggedIn&&_jsxs(_Fragment,{children:[sessionTimer&&_jsxs(_Fragment,{children:[_jsx(Divider,{orientation:"vertical",className:classes.divider}),sessionTimer]}),_jsx(Divider,{orientation:"vertical",className:classes.divider}),_jsx(UserNav,{menuPoints:menuPoints,username:username,userNavWidth:userNavWidth})]})]})]})};export const useHeaderMenuPoints=logoutCallback=>{const{t}=useTranslation();return[{linkText:t("Sign out"),id:"logout",icon:_jsx(Power,{size:14,strokeWidth:1.5}),to:()=>logoutCallback?logoutCallback():null}]};
|
|
2
2
|
//# sourceMappingURL=AppHeader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/Layout/AppHeader/AppHeader.tsx"],"sourcesContent":["/* Copyright (C) Greenbone AG\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { LanguageSwitch } from \"./languageSwitch/LanguageSwitch\"\nimport { ThemeSwitch, UserNav } from \"./index\"\nimport { TAppHeaderProps } from \"./types\"\nimport { GreenboneLogo } from \"../../../icons\"\nimport { Divider } from \"@mantine/core\"\nimport { useTranslation } from \"react-i18next\"\nimport { Power } from \"lucide-react\"\nimport { TimeZone } from \"./TimeZone\"\nimport { Z_INDEX_LAYER } from \"../../../theme
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/Layout/AppHeader/AppHeader.tsx"],"sourcesContent":["/* Copyright (C) Greenbone AG\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { LanguageSwitch } from \"./languageSwitch/LanguageSwitch\"\nimport { ThemeSwitch, UserNav } from \"./index\"\nimport { TAppHeaderProps } from \"./types\"\nimport { GreenboneLogo } from \"../../../icons\"\nimport { Divider } from \"@mantine/core\"\nimport { useTranslation } from \"react-i18next\"\nimport { Power } from \"lucide-react\"\nimport { TimeZone } from \"./TimeZone\"\nimport { Z_INDEX_LAYER } from \"../../../theme\"\nimport classes from \"./AppHeader.module.css\"\nimport { Manual } from \"./manual/Manual\"\n\nexport const AppHeader = ({\n username,\n menuPoints,\n logoLink,\n isLoggedIn,\n languageSwitch,\n sessionTimer,\n logo,\n isThemeSwitchVisible = true,\n ianaTimeZone,\n manualLink,\n userNavWidth,\n}: TAppHeaderProps) => {\n return (\n <header\n className={classes.header}\n style={{\n zIndex: Z_INDEX_LAYER.GROUND.HIGHEST,\n }}\n >\n <a className={classes[\"logo-link\"]} href={logoLink}>\n {logo || <GreenboneLogo />}\n </a>\n <div className={classes[\"right-side\"]}>\n <TimeZone ianaTimeZone={ianaTimeZone} />\n <Divider orientation=\"vertical\" className={classes.divider} />\n {languageSwitch || <LanguageSwitch />}\n {isThemeSwitchVisible && (\n <>\n <Divider orientation=\"vertical\" className={classes.divider} />\n <ThemeSwitch />\n </>\n )}\n {manualLink && <Manual manualLink={manualLink} />}\n {isLoggedIn && (\n <>\n {sessionTimer && (\n <>\n <Divider orientation=\"vertical\" className={classes.divider} />\n {sessionTimer}\n </>\n )}\n <Divider orientation=\"vertical\" className={classes.divider} />\n <UserNav menuPoints={menuPoints} username={username} userNavWidth={userNavWidth} />\n </>\n )}\n </div>\n </header>\n )\n}\n\nexport const useHeaderMenuPoints = (logoutCallback?: () => void) => {\n const { t } = useTranslation()\n\n return [\n {\n linkText: t(\"Sign out\"),\n id: \"logout\",\n icon: <Power size={14} strokeWidth={1.5} />,\n to: () => (logoutCallback ? logoutCallback() : null),\n },\n ]\n}\n"],"names":["LanguageSwitch","ThemeSwitch","UserNav","GreenboneLogo","Divider","useTranslation","Power","TimeZone","Z_INDEX_LAYER","classes","Manual","AppHeader","username","menuPoints","logoLink","isLoggedIn","languageSwitch","sessionTimer","logo","isThemeSwitchVisible","ianaTimeZone","manualLink","userNavWidth","header","className","style","zIndex","GROUND","HIGHEST","a","href","div","orientation","divider","useHeaderMenuPoints","logoutCallback","t","linkText","id","icon","size","strokeWidth","to"],"mappings":"8EAIA,QAASA,cAAc,KAAQ,iCAAiC,AAChE,QAASC,WAAW,CAAEC,OAAO,KAAQ,SAAS,AAE9C,QAASC,aAAa,KAAQ,gBAAgB,AAC9C,QAASC,OAAO,KAAQ,eAAe,AACvC,QAASC,cAAc,KAAQ,eAAe,AAC9C,QAASC,KAAK,KAAQ,cAAc,AACpC,QAASC,QAAQ,KAAQ,YAAY,AACrC,QAASC,aAAa,KAAQ,gBAAgB,AAC9C,QAAOC,YAAa,wBAAwB,AAC5C,QAASC,MAAM,KAAQ,iBAAiB,AAExC,QAAO,MAAMC,UAAY,CAAC,CACxBC,QAAQ,CACRC,UAAU,CACVC,QAAQ,CACRC,UAAU,CACVC,cAAc,CACdC,YAAY,CACZC,IAAI,CACJC,qBAAuB,IAAI,CAC3BC,YAAY,CACZC,UAAU,CACVC,YAAY,CACI,IAChB,OACE,MAACC,UACCC,UAAWf,QAAQc,MAAM,CACzBE,MAAO,CACLC,OAAQlB,cAAcmB,MAAM,CAACC,OAAO,AACtC,YAEA,KAACC,KAAEL,UAAWf,OAAO,CAAC,YAAY,CAAEqB,KAAMhB,kBACvCI,MAAQ,KAACf,oBAEZ,MAAC4B,OAAIP,UAAWf,OAAO,CAAC,aAAa,WACnC,KAACF,UAASa,aAAcA,eACxB,KAAChB,SAAQ4B,YAAY,WAAWR,UAAWf,QAAQwB,OAAO,GACzDjB,gBAAkB,KAAChB,mBACnBmB,sBACC,2BACE,KAACf,SAAQ4B,YAAY,WAAWR,UAAWf,QAAQwB,OAAO,GAC1D,KAAChC,mBAGJoB,YAAc,KAACX,QAAOW,WAAYA,aAClCN,YACC,2BACGE,cACC,2BACE,KAACb,SAAQ4B,YAAY,WAAWR,UAAWf,QAAQwB,OAAO,GACzDhB,gBAGL,KAACb,SAAQ4B,YAAY,WAAWR,UAAWf,QAAQwB,OAAO,GAC1D,KAAC/B,SAAQW,WAAYA,WAAYD,SAAUA,SAAUU,aAAcA,uBAM/E,CAAC,AAED,QAAO,MAAMY,oBAAsB,AAACC,iBAClC,KAAM,CAAEC,CAAC,CAAE,CAAG/B,iBAEd,MAAO,CACL,CACEgC,SAAUD,EAAE,YACZE,GAAI,SACJC,KAAM,KAACjC,OAAMkC,KAAM,GAAIC,YAAa,MACpCC,GAAI,IAAOP,eAAiBA,iBAAmB,IACjD,EACD,AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/Layout/AppHeader/types.ts"],"sourcesContent":["/* Copyright (C) Greenbone AG\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { ReactNode } from \"react\"\n\nexport type TAppHeaderProps = {\n username?: string\n menuPoints: TMenuPoint[]\n logoLink: string\n isLoggedIn: boolean\n languageSwitch?: JSX.Element\n sessionTimer?: ReactNode\n logo?: ReactNode\n isThemeSwitchVisible?: boolean\n ianaTimeZone?: string\n manualLink?: string\n}\n\nexport type TMenuPoint = {\n linkText: string\n icon: JSX.Element\n to: string | (() => void)\n}\n\nexport type TUserNavProps = {\n username?: string\n menuPoints: TMenuPoint[]\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/Layout/AppHeader/types.ts"],"sourcesContent":["/* Copyright (C) Greenbone AG\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { ReactNode } from \"react\"\nimport { PopoverWidth } from \"@mantine/core\"\n\nexport type TAppHeaderProps = {\n username?: string\n menuPoints: TMenuPoint[]\n logoLink: string\n isLoggedIn: boolean\n languageSwitch?: JSX.Element\n sessionTimer?: ReactNode\n logo?: ReactNode\n isThemeSwitchVisible?: boolean\n ianaTimeZone?: string\n manualLink?: string\n userNavWidth?: PopoverWidth\n}\n\nexport type TMenuPoint = {\n linkText: string\n icon: JSX.Element\n to: string | (() => void)\n}\n\nexport type TUserNavProps = {\n username?: string\n menuPoints: TMenuPoint[]\n userNavWidth?: PopoverWidth\n}\n"],"names":[],"mappings":"AA2BA,QAIC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{Menu}from"@mantine/core";import{NavItem}from"./NavItem";import{UserCircle2}from"lucide-react";import classes from"./UserNav.module.css";import{ICON_SIZES}from"../../../../theme
|
|
1
|
+
import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{Menu}from"@mantine/core";import{NavItem}from"./NavItem";import{UserCircle2}from"lucide-react";import classes from"./UserNav.module.css";import{ICON_SIZES}from"../../../../theme";export const UserNav=({username,menuPoints,userNavWidth=140})=>{return _jsxs(Menu,{shadow:"md",trigger:"hover",width:userNavWidth,closeDelay:100,offset:11,children:[_jsx(Menu.Target,{children:_jsxs("div",{className:classes["user-nav-wrapper"],children:[_jsx("div",{className:classes["user-name"],children:username}),_jsx("div",{className:classes["user-icon-wrapper"],children:_jsx(UserCircle2,{size:ICON_SIZES.MEDIUM,strokeWidth:1.5})})]})}),_jsx(Menu.Dropdown,{children:menuPoints.map(menuPoint=>{if(typeof menuPoint.to==="string"){return _jsx(Menu.Item,{component:"a",href:menuPoint.to,children:_jsx(NavItem,{linkText:menuPoint.linkText,icon:menuPoint.icon})},menuPoint.linkText)}if(typeof menuPoint.to==="function"){return _jsx("div",{onClick:menuPoint.to,children:_jsx(Menu.Item,{children:_jsx(NavItem,{linkText:menuPoint.linkText,icon:menuPoint.icon})})},menuPoint.linkText)}})})]})};
|
|
2
2
|
//# sourceMappingURL=UserNav.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/components/Layout/AppHeader/userNav/UserNav.tsx"],"sourcesContent":["/* Copyright (C) Greenbone AG\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Menu } from \"@mantine/core\"\nimport { TUserNavProps } from \"../types\"\nimport { NavItem } from \"./NavItem\"\nimport { UserCircle2 } from \"lucide-react\"\nimport classes from \"./UserNav.module.css\"\nimport { ICON_SIZES } from \"../../../../theme
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/components/Layout/AppHeader/userNav/UserNav.tsx"],"sourcesContent":["/* Copyright (C) Greenbone AG\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Menu } from \"@mantine/core\"\nimport { TUserNavProps } from \"../types\"\nimport { NavItem } from \"./NavItem\"\nimport { UserCircle2 } from \"lucide-react\"\nimport classes from \"./UserNav.module.css\"\nimport { ICON_SIZES } from \"../../../../theme\"\n\nexport const UserNav = ({ username, menuPoints, userNavWidth = 140 }: TUserNavProps) => {\n return (\n <Menu shadow=\"md\" trigger=\"hover\" width={userNavWidth} closeDelay={100} offset={11}>\n <Menu.Target>\n <div className={classes[\"user-nav-wrapper\"]}>\n <div className={classes[\"user-name\"]}>{username}</div>\n <div className={classes[\"user-icon-wrapper\"]}>\n <UserCircle2 size={ICON_SIZES.MEDIUM} strokeWidth={1.5} />\n </div>\n </div>\n </Menu.Target>\n\n <Menu.Dropdown>\n {menuPoints.map((menuPoint) => {\n if (typeof menuPoint.to === \"string\") {\n return (\n <Menu.Item component={\"a\"} href={menuPoint.to} key={menuPoint.linkText}>\n <NavItem linkText={menuPoint.linkText} icon={menuPoint.icon} />\n </Menu.Item>\n )\n }\n if (typeof menuPoint.to === \"function\") {\n return (\n <div key={menuPoint.linkText} onClick={menuPoint.to}>\n <Menu.Item>\n <NavItem linkText={menuPoint.linkText} icon={menuPoint.icon} />\n </Menu.Item>\n </div>\n )\n }\n })}\n </Menu.Dropdown>\n </Menu>\n )\n}\n"],"names":["Menu","NavItem","UserCircle2","classes","ICON_SIZES","UserNav","username","menuPoints","userNavWidth","shadow","trigger","width","closeDelay","offset","Target","div","className","size","MEDIUM","strokeWidth","Dropdown","map","menuPoint","to","Item","component","href","linkText","icon","onClick"],"mappings":"wDAIA,QAASA,IAAI,KAAQ,eAAe,AAEpC,QAASC,OAAO,KAAQ,WAAW,AACnC,QAASC,WAAW,KAAQ,cAAc,AAC1C,QAAOC,YAAa,sBAAsB,AAC1C,QAASC,UAAU,KAAQ,mBAAmB,AAE9C,QAAO,MAAMC,QAAU,CAAC,CAAEC,QAAQ,CAAEC,UAAU,CAAEC,aAAe,GAAG,CAAiB,IACjF,OACE,MAACR,MAAKS,OAAO,KAAKC,QAAQ,QAAQC,MAAOH,aAAcI,WAAY,IAAKC,OAAQ,aAC9E,KAACb,KAAKc,MAAM,WACV,MAACC,OAAIC,UAAWb,OAAO,CAAC,mBAAmB,WACzC,KAACY,OAAIC,UAAWb,OAAO,CAAC,YAAY,UAAGG,WACvC,KAACS,OAAIC,UAAWb,OAAO,CAAC,oBAAoB,UAC1C,KAACD,aAAYe,KAAMb,WAAWc,MAAM,CAAEC,YAAa,aAKzD,KAACnB,KAAKoB,QAAQ,WACXb,WAAWc,GAAG,CAAC,AAACC,YACf,GAAI,OAAOA,UAAUC,EAAE,GAAK,SAAU,CACpC,OACE,KAACvB,KAAKwB,IAAI,EAACC,UAAW,IAAKC,KAAMJ,UAAUC,EAAE,UAC3C,KAACtB,SAAQ0B,SAAUL,UAAUK,QAAQ,CAAEC,KAAMN,UAAUM,IAAI,IADTN,UAAUK,QAAQ,CAI1E,CACA,GAAI,OAAOL,UAAUC,EAAE,GAAK,WAAY,CACtC,OACE,KAACR,OAA6Bc,QAASP,UAAUC,EAAE,UACjD,KAACvB,KAAKwB,IAAI,WACR,KAACvB,SAAQ0B,SAAUL,UAAUK,QAAQ,CAAEC,KAAMN,UAAUM,IAAI,MAFrDN,UAAUK,QAAQ,CAMhC,CACF,OAIR,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{Divider}from"@mantine/core";import{AppNavigationLink}from"./AppNavigationLink";import classes from"./AppNavigation.module.css";export const AppNavigation=({menuPoints,as})=>{return _jsx("div",{className:classes.navigation,children:menuPoints.map((navSection,navSectionIndex,navSectionArray)=>navSection.map((item,itemIndex,itemArray)=>{var _item_subNav;const submenu=item===null||item===void 0?void 0:(_item_subNav=item.subNav)===null||_item_subNav===void 0?void 0:_item_subNav.map(item=>_jsx(AppNavigationLink,{component:item.active&&item.isPathMatch?"span":item.isExternal?"a":as,to:item.to,href:item.to,active:item.active,label:item.label,leftSection:item.icon?_jsx(item.icon,{}):undefined,rightSection:item.rightSection||undefined,className:item.icon?"":classes["navigation-item-without-icon"]},item.key||item.to));return _jsxs("div",{children:[_jsx(AppNavigationLink,{component:item.active&&item.isPathMatch?"span":item.isExternal?"a":as,to:item.to,active:item.active,href:item.to,label:item.label,rightSection:item.rightSection,leftSection:item.icon?_jsx(item.icon,{}):undefined,defaultOpened:item.defaultOpened,children:submenu}),itemIndex===itemArray.length-1&&navSectionIndex!==navSectionArray.length-1&&_jsx(Divider,{className:classes["divider-root"],my:"sm"})]},item.key||item.to)}))})};
|
|
1
|
+
import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{Divider}from"@mantine/core";import{AppNavigationLink}from"./AppNavigationLink";import classes from"./AppNavigation.module.css";export const AppNavigation=({menuPoints,as})=>{return _jsx("div",{className:classes.navigation,children:menuPoints.map((navSection,navSectionIndex,navSectionArray)=>navSection.map((item,itemIndex,itemArray)=>{var _item_subNav;const submenu=item===null||item===void 0?void 0:(_item_subNav=item.subNav)===null||_item_subNav===void 0?void 0:_item_subNav.map(item=>_jsx(AppNavigationLink,{component:item.active&&item.isPathMatch?"span":item.isExternal?"a":as,to:item.to,href:item.to,active:item.active,label:item.label,leftSection:item.icon?_jsx(item.icon,{}):undefined,rightSection:item.rightSection||undefined,className:item.icon?"":classes["navigation-item-without-icon"],target:item.openInNewTab?"_blank":"_self",rel:item.openInNewTab?"noopener noreferrer":undefined},item.key||item.to));return _jsxs("div",{children:[_jsx(AppNavigationLink,{component:item.active&&item.isPathMatch?"span":item.isExternal?"a":as,to:item.to,active:item.active,href:item.to,label:item.label,rightSection:item.rightSection,leftSection:item.icon?_jsx(item.icon,{}):undefined,defaultOpened:item.defaultOpened,target:item.openInNewTab?"_blank":"_self",rel:item.openInNewTab?"noopener noreferrer":undefined,children:submenu}),itemIndex===itemArray.length-1&&navSectionIndex!==navSectionArray.length-1&&_jsx(Divider,{className:classes["divider-root"],my:"sm"})]},item.key||item.to)}))})};
|
|
2
2
|
//# sourceMappingURL=AppNavigation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/Layout/AppNavigation/AppNavigation.tsx"],"sourcesContent":["/* Copyright (C) Greenbone AG\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Divider } from \"@mantine/core\"\nimport { AppNavigationLink } from \"./AppNavigationLink\"\nimport { TNavLinkConfig } from \"./Menu/types\"\nimport classes from \"./AppNavigation.module.css\"\n\ntype TAppNavigationProps = {\n menuPoints: TNavLinkConfig[][]\n as: any\n}\n\nexport const AppNavigation = ({ menuPoints, as }: TAppNavigationProps) => {\n return (\n <div className={classes.navigation}>\n {menuPoints.map((navSection, navSectionIndex, navSectionArray) =>\n navSection.map((item, itemIndex, itemArray) => {\n const submenu = item?.subNav?.map((item) => (\n <AppNavigationLink\n component={item.active && item.isPathMatch ? \"span\" : item.isExternal ? \"a\" : as}\n to={item.to}\n href={item.to}\n key={item.key || item.to}\n active={item.active}\n label={item.label}\n leftSection={item.icon ? <item.icon /> : undefined}\n rightSection={item.rightSection || undefined}\n className={item.icon ? \"\" : classes[\"navigation-item-without-icon\"]}\n />\n ))\n return (\n <div key={item.key || item.to}>\n <AppNavigationLink\n component={item.active && item.isPathMatch ? \"span\" : item.isExternal ? \"a\" : as}\n to={item.to}\n active={item.active}\n href={item.to}\n label={item.label}\n rightSection={item.rightSection}\n leftSection={item.icon ? <item.icon /> : undefined}\n defaultOpened={item.defaultOpened}\n >\n {submenu}\n </AppNavigationLink>\n {itemIndex === itemArray.length - 1 &&\n navSectionIndex !== navSectionArray.length - 1 && (\n <Divider className={classes[\"divider-root\"]} my=\"sm\" />\n )}\n </div>\n )\n })\n )}\n </div>\n )\n}\n"],"names":["Divider","AppNavigationLink","classes","AppNavigation","menuPoints","as","div","className","navigation","map","navSection","navSectionIndex","navSectionArray","item","itemIndex","itemArray","submenu","subNav","component","active","isPathMatch","isExternal","to","href","label","leftSection","icon","undefined","rightSection","key","defaultOpened","length","my"],"mappings":"wDAIA,QAASA,OAAO,KAAQ,eAAe,AACvC,QAASC,iBAAiB,KAAQ,qBAAqB,AAEvD,QAAOC,YAAa,4BAA4B,AAOhD,QAAO,MAAMC,cAAgB,CAAC,CAAEC,UAAU,CAAEC,EAAE,CAAuB,IACnE,OACE,KAACC,OAAIC,UAAWL,QAAQM,UAAU,UAC/BJ,WAAWK,GAAG,CAAC,CAACC,WAAYC,gBAAiBC,kBAC5CF,WAAWD,GAAG,CAAC,CAACI,KAAMC,UAAWC,iBACfF,aAAhB,MAAMG,QAAUH,aAAAA,sBAAAA,aAAAA,KAAMI,MAAM,UAAZJ,6BAAAA,aAAcJ,GAAG,CAAC,AAACI,MACjC,KAACZ,mBACCiB,UAAWL,KAAKM,MAAM,EAAIN,KAAKO,WAAW,CAAG,OAASP,KAAKQ,UAAU,CAAG,IAAMhB,GAC9EiB,GAAIT,KAAKS,EAAE,CACXC,KAAMV,KAAKS,EAAE,CAEbH,OAAQN,KAAKM,MAAM,CACnBK,MAAOX,KAAKW,KAAK,CACjBC,YAAaZ,KAAKa,IAAI,CAAG,KAACb,KAAKa,IAAI,KAAMC,UACzCC,aAAcf,KAAKe,YAAY,EAAID,UACnCpB,UAAWM,KAAKa,IAAI,CAAG,GAAKxB,OAAO,CAAC,+BAA+B,
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/Layout/AppNavigation/AppNavigation.tsx"],"sourcesContent":["/* Copyright (C) Greenbone AG\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Divider } from \"@mantine/core\"\nimport { AppNavigationLink } from \"./AppNavigationLink\"\nimport { TNavLinkConfig } from \"./Menu/types\"\nimport classes from \"./AppNavigation.module.css\"\n\ntype TAppNavigationProps = {\n menuPoints: TNavLinkConfig[][]\n as: any\n}\n\nexport const AppNavigation = ({ menuPoints, as }: TAppNavigationProps) => {\n return (\n <div className={classes.navigation}>\n {menuPoints.map((navSection, navSectionIndex, navSectionArray) =>\n navSection.map((item, itemIndex, itemArray) => {\n const submenu = item?.subNav?.map((item) => (\n <AppNavigationLink\n component={item.active && item.isPathMatch ? \"span\" : item.isExternal ? \"a\" : as}\n to={item.to}\n href={item.to}\n key={item.key || item.to}\n active={item.active}\n label={item.label}\n leftSection={item.icon ? <item.icon /> : undefined}\n rightSection={item.rightSection || undefined}\n className={item.icon ? \"\" : classes[\"navigation-item-without-icon\"]}\n target={item.openInNewTab ? \"_blank\" : \"_self\"}\n rel={item.openInNewTab ? \"noopener noreferrer\" : undefined}\n />\n ))\n return (\n <div key={item.key || item.to}>\n <AppNavigationLink\n component={item.active && item.isPathMatch ? \"span\" : item.isExternal ? \"a\" : as}\n to={item.to}\n active={item.active}\n href={item.to}\n label={item.label}\n rightSection={item.rightSection}\n leftSection={item.icon ? <item.icon /> : undefined}\n defaultOpened={item.defaultOpened}\n target={item.openInNewTab ? \"_blank\" : \"_self\"}\n rel={item.openInNewTab ? \"noopener noreferrer\" : undefined}\n >\n {submenu}\n </AppNavigationLink>\n {itemIndex === itemArray.length - 1 &&\n navSectionIndex !== navSectionArray.length - 1 && (\n <Divider className={classes[\"divider-root\"]} my=\"sm\" />\n )}\n </div>\n )\n })\n )}\n </div>\n )\n}\n"],"names":["Divider","AppNavigationLink","classes","AppNavigation","menuPoints","as","div","className","navigation","map","navSection","navSectionIndex","navSectionArray","item","itemIndex","itemArray","submenu","subNav","component","active","isPathMatch","isExternal","to","href","label","leftSection","icon","undefined","rightSection","target","openInNewTab","rel","key","defaultOpened","length","my"],"mappings":"wDAIA,QAASA,OAAO,KAAQ,eAAe,AACvC,QAASC,iBAAiB,KAAQ,qBAAqB,AAEvD,QAAOC,YAAa,4BAA4B,AAOhD,QAAO,MAAMC,cAAgB,CAAC,CAAEC,UAAU,CAAEC,EAAE,CAAuB,IACnE,OACE,KAACC,OAAIC,UAAWL,QAAQM,UAAU,UAC/BJ,WAAWK,GAAG,CAAC,CAACC,WAAYC,gBAAiBC,kBAC5CF,WAAWD,GAAG,CAAC,CAACI,KAAMC,UAAWC,iBACfF,aAAhB,MAAMG,QAAUH,aAAAA,sBAAAA,aAAAA,KAAMI,MAAM,UAAZJ,6BAAAA,aAAcJ,GAAG,CAAC,AAACI,MACjC,KAACZ,mBACCiB,UAAWL,KAAKM,MAAM,EAAIN,KAAKO,WAAW,CAAG,OAASP,KAAKQ,UAAU,CAAG,IAAMhB,GAC9EiB,GAAIT,KAAKS,EAAE,CACXC,KAAMV,KAAKS,EAAE,CAEbH,OAAQN,KAAKM,MAAM,CACnBK,MAAOX,KAAKW,KAAK,CACjBC,YAAaZ,KAAKa,IAAI,CAAG,KAACb,KAAKa,IAAI,KAAMC,UACzCC,aAAcf,KAAKe,YAAY,EAAID,UACnCpB,UAAWM,KAAKa,IAAI,CAAG,GAAKxB,OAAO,CAAC,+BAA+B,CACnE2B,OAAQhB,KAAKiB,YAAY,CAAG,SAAW,QACvCC,IAAKlB,KAAKiB,YAAY,CAAG,sBAAwBH,WAP5Cd,KAAKmB,GAAG,EAAInB,KAAKS,EAAE,GAU5B,OACE,MAAChB,iBACC,KAACL,mBACCiB,UAAWL,KAAKM,MAAM,EAAIN,KAAKO,WAAW,CAAG,OAASP,KAAKQ,UAAU,CAAG,IAAMhB,GAC9EiB,GAAIT,KAAKS,EAAE,CACXH,OAAQN,KAAKM,MAAM,CACnBI,KAAMV,KAAKS,EAAE,CACbE,MAAOX,KAAKW,KAAK,CACjBI,aAAcf,KAAKe,YAAY,CAC/BH,YAAaZ,KAAKa,IAAI,CAAG,KAACb,KAAKa,IAAI,KAAMC,UACzCM,cAAepB,KAAKoB,aAAa,CACjCJ,OAAQhB,KAAKiB,YAAY,CAAG,SAAW,QACvCC,IAAKlB,KAAKiB,YAAY,CAAG,sBAAwBH,mBAEhDX,UAEFF,YAAcC,UAAUmB,MAAM,CAAG,GAChCvB,kBAAoBC,gBAAgBsB,MAAM,CAAG,GAC3C,KAAClC,SAAQO,UAAWL,OAAO,CAAC,eAAe,CAAEiC,GAAG,SAjB5CtB,KAAKmB,GAAG,EAAInB,KAAKS,EAAE,CAqBjC,KAIR,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ESideNavEnum}from"../NavigationLink";import{buildUrl}from"../NavigationLink/buildUrl";import{isActive}from"../NavigationLink/isActive";import{useTranslation}from"react-i18next";import{getAssetDomainMenuItems,getNotificationsDomainMenuItems,getScanDomainMenuItems,getSystemManagementDomainMenuItems,getUserDomainMenuItems,getVIDomainMenuItemsVulnerabilityIntel}from"./menuItems";import{useMantineTheme}from"@mantine/core";export const NavLinkConfigFactory=(currentPath,requester)=>({icon,label,to,owner,subNav})=>{const fullTargetUrl=to?buildUrl(owner,requester,to):"";const defaultOpened=!!(subNav===null||subNav===void 0?void 0:subNav.find(sn=>sn.to===currentPath));return{isPathMatch:currentPath.endsWith(fullTargetUrl),active:to?isActive(currentPath,fullTargetUrl):false,icon:icon,isExternal:owner!==requester,label:label,to:fullTargetUrl,defaultOpened:defaultOpened,subNav:subNav?subNav.map(sn=>({isPathMatch:currentPath.endsWith(sn.to||""),label:sn.label,to:sn.to?buildUrl(sn.owner,requester,sn.to):"",active:sn.to?isActive(currentPath,sn.to):false,isExternal:sn.owner!==requester})):undefined}};export const useBuildUseNavigationMenuPoints=({requestingDomain,menuPointsCategories,currentLocation,additional,realmAccessRoles})=>{const factory=NavLinkConfigFactory(currentLocation,requestingDomain);const menuPoints=useMenuItemStringsToNavigationMenuItemPoints(menuPointsCategories,factory,realmAccessRoles);if(additional)menuPoints.push(additional.map(factory));return menuPoints};export const getMenuItemFromString=(menuItem,factory,t,theme,realmAccessRoles)=>{switch(menuItem){case ESideNavEnum.VI:return getVIDomainMenuItemsVulnerabilityIntel(factory,t,theme);case ESideNavEnum.ASSET:return getAssetDomainMenuItems(factory,t,theme,realmAccessRoles);case ESideNavEnum.SCAN:return getScanDomainMenuItems(factory,t,theme);case ESideNavEnum.USER:return getUserDomainMenuItems(factory,t,theme,realmAccessRoles);case ESideNavEnum.SYSTEM:return getSystemManagementDomainMenuItems(factory,t,theme);case ESideNavEnum.NOTIFICATIONS:return getNotificationsDomainMenuItems(factory,t,theme);default:return[]}};export const useMenuItemStringsToNavigationMenuItemPoints=(menuItems,factory,realmAccessRoles)=>{const{t}=useTranslation();const theme=useMantineTheme();return menuItems.flatMap(item=>getMenuItemFromString(item,factory,t,theme,realmAccessRoles))};export const parseMenuEnvString=(envString,separator=",")=>envString.split(separator);
|
|
1
|
+
import{ESideNavEnum}from"../NavigationLink";import{buildUrl}from"../NavigationLink/buildUrl";import{isActive}from"../NavigationLink/isActive";import{useTranslation}from"react-i18next";import{getAssetDomainMenuItems,getNotificationsDomainMenuItems,getScanDomainMenuItems,getSystemManagementDomainMenuItems,getUserDomainMenuItems,getVIDomainMenuItemsVulnerabilityIntel}from"./menuItems";import{useMantineTheme}from"@mantine/core";export const NavLinkConfigFactory=(currentPath,requester)=>({icon,label,to,owner,subNav,openInNewTab})=>{const fullTargetUrl=to?buildUrl(owner,requester,to):"";const defaultOpened=!!(subNav===null||subNav===void 0?void 0:subNav.find(sn=>sn.to===currentPath));return{isPathMatch:currentPath.endsWith(fullTargetUrl),active:to?isActive(currentPath,fullTargetUrl):false,icon:icon,isExternal:owner!==requester,label:label,to:fullTargetUrl,defaultOpened:defaultOpened,openInNewTab,subNav:subNav?subNav.map(sn=>({isPathMatch:currentPath.endsWith(sn.to||""),label:sn.label,to:sn.to?buildUrl(sn.owner,requester,sn.to):"",active:sn.to?isActive(currentPath,sn.to):false,isExternal:sn.owner!==requester,openInNewTab})):undefined}};export const useBuildUseNavigationMenuPoints=({requestingDomain,menuPointsCategories,currentLocation,additional,realmAccessRoles})=>{const factory=NavLinkConfigFactory(currentLocation,requestingDomain);const menuPoints=useMenuItemStringsToNavigationMenuItemPoints(menuPointsCategories,factory,realmAccessRoles);if(additional)menuPoints.push(additional.map(factory));return menuPoints};export const getMenuItemFromString=(menuItem,factory,t,theme,realmAccessRoles)=>{switch(menuItem){case ESideNavEnum.VI:return getVIDomainMenuItemsVulnerabilityIntel(factory,t,theme);case ESideNavEnum.ASSET:return getAssetDomainMenuItems(factory,t,theme,realmAccessRoles);case ESideNavEnum.SCAN:return getScanDomainMenuItems(factory,t,theme);case ESideNavEnum.USER:return getUserDomainMenuItems(factory,t,theme,realmAccessRoles);case ESideNavEnum.SYSTEM:return getSystemManagementDomainMenuItems(factory,t,theme);case ESideNavEnum.NOTIFICATIONS:return getNotificationsDomainMenuItems(factory,t,theme);default:return[]}};export const useMenuItemStringsToNavigationMenuItemPoints=(menuItems,factory,realmAccessRoles)=>{const{t}=useTranslation();const theme=useMantineTheme();return menuItems.flatMap(item=>getMenuItemFromString(item,factory,t,theme,realmAccessRoles))};export const parseMenuEnvString=(envString,separator=",")=>envString.split(separator);
|
|
2
2
|
//# sourceMappingURL=menuFactory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/components/Layout/AppNavigation/Menu/menuFactory.ts"],"sourcesContent":["/* Copyright (C) Greenbone AG\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Domain, ESideNavEnum } from \"../NavigationLink\"\nimport { buildUrl } from \"../NavigationLink/buildUrl\"\nimport { isActive } from \"../NavigationLink/isActive\"\nimport { TBuildNavLinkParams, TNavLinkConfig } from \"./types\"\nimport { useTranslation } from \"react-i18next\"\nimport {\n getAssetDomainMenuItems,\n getNotificationsDomainMenuItems,\n getScanDomainMenuItems,\n getSystemManagementDomainMenuItems,\n getUserDomainMenuItems,\n getVIDomainMenuItemsVulnerabilityIntel,\n TFactory,\n} from \"./menuItems\"\nimport { TFunction } from \"i18next\"\nimport { MantineTheme, useMantineTheme } from \"@mantine/core\"\n\nexport const NavLinkConfigFactory =\n (currentPath: string, requester: Domain) =>\n ({ icon, label, to, owner, subNav }: TBuildNavLinkParams): TNavLinkConfig => {\n const fullTargetUrl = to ? buildUrl(owner, requester, to) : \"\"\n const defaultOpened = !!subNav?.find((sn) => sn.to === currentPath)\n\n return {\n isPathMatch: currentPath.endsWith(fullTargetUrl),\n active: to ? isActive(currentPath, fullTargetUrl) : false,\n icon: icon,\n isExternal: owner !== requester,\n label: label,\n to: fullTargetUrl,\n defaultOpened: defaultOpened,\n subNav: subNav\n ? subNav.map((sn) => ({\n isPathMatch: currentPath.endsWith(sn.to || \"\"),\n label: sn.label,\n to: sn.to ? buildUrl(sn.owner, requester, sn.to) : \"\",\n active: sn.to ? isActive(currentPath, sn.to) : false,\n isExternal: sn.owner !== requester,\n }))\n : undefined,\n }\n }\n\nexport const useBuildUseNavigationMenuPoints = ({\n requestingDomain,\n menuPointsCategories,\n currentLocation,\n additional,\n realmAccessRoles,\n}: {\n requestingDomain: Domain\n currentLocation: string\n menuPointsCategories: ESideNavEnum[]\n additional?: TBuildNavLinkParams[]\n realmAccessRoles?: Array<string>\n}): TNavLinkConfig[][] => {\n const factory = NavLinkConfigFactory(currentLocation, requestingDomain)\n const menuPoints = useMenuItemStringsToNavigationMenuItemPoints(\n menuPointsCategories,\n factory,\n realmAccessRoles\n )\n if (additional) menuPoints.push(additional.map(factory))\n return menuPoints\n}\n\nexport const getMenuItemFromString = (\n menuItem: ESideNavEnum,\n factory: TFactory,\n t: TFunction,\n theme: MantineTheme,\n realmAccessRoles?: Array<string>\n) => {\n switch (menuItem) {\n case ESideNavEnum.VI:\n return getVIDomainMenuItemsVulnerabilityIntel(factory, t, theme)\n case ESideNavEnum.ASSET:\n return getAssetDomainMenuItems(factory, t, theme, realmAccessRoles)\n case ESideNavEnum.SCAN:\n return getScanDomainMenuItems(factory, t, theme)\n case ESideNavEnum.USER:\n return getUserDomainMenuItems(factory, t, theme, realmAccessRoles)\n case ESideNavEnum.SYSTEM:\n return getSystemManagementDomainMenuItems(factory, t, theme)\n case ESideNavEnum.NOTIFICATIONS:\n return getNotificationsDomainMenuItems(factory, t, theme)\n default:\n return []\n }\n}\n\nexport const useMenuItemStringsToNavigationMenuItemPoints = (\n menuItems: ESideNavEnum[],\n factory: TFactory,\n realmAccessRoles?: Array<string>\n) => {\n const { t } = useTranslation()\n const theme = useMantineTheme()\n return menuItems.flatMap((item) =>\n getMenuItemFromString(item, factory, t, theme, realmAccessRoles)\n )\n}\n\nexport const parseMenuEnvString = (envString: string, separator = \",\"): ESideNavEnum[] =>\n envString.split(separator) as ESideNavEnum[]\n"],"names":["ESideNavEnum","buildUrl","isActive","useTranslation","getAssetDomainMenuItems","getNotificationsDomainMenuItems","getScanDomainMenuItems","getSystemManagementDomainMenuItems","getUserDomainMenuItems","getVIDomainMenuItemsVulnerabilityIntel","useMantineTheme","NavLinkConfigFactory","currentPath","requester","icon","label","to","owner","subNav","fullTargetUrl","defaultOpened","find","sn","isPathMatch","endsWith","active","isExternal","map","undefined","useBuildUseNavigationMenuPoints","requestingDomain","menuPointsCategories","currentLocation","additional","realmAccessRoles","factory","menuPoints","useMenuItemStringsToNavigationMenuItemPoints","push","getMenuItemFromString","menuItem","t","theme","VI","ASSET","SCAN","USER","SYSTEM","NOTIFICATIONS","menuItems","flatMap","item","parseMenuEnvString","envString","separator","split"],"mappings":"AAIA,OAAiBA,YAAY,KAAQ,mBAAmB,AACxD,QAASC,QAAQ,KAAQ,4BAA4B,AACrD,QAASC,QAAQ,KAAQ,4BAA4B,AAErD,QAASC,cAAc,KAAQ,eAAe,AAC9C,QACEC,uBAAuB,CACvBC,+BAA+B,CAC/BC,sBAAsB,CACtBC,kCAAkC,CAClCC,sBAAsB,CACtBC,sCAAsC,KAEjC,aAAa,AAEpB,QAAuBC,eAAe,KAAQ,eAAe,AAE7D,QAAO,MAAMC,qBACX,CAACC,YAAqBC,YACtB,CAAC,CAAEC,IAAI,CAAEC,KAAK,CAAEC,EAAE,CAAEC,KAAK,CAAEC,MAAM,CAAuB,
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/components/Layout/AppNavigation/Menu/menuFactory.ts"],"sourcesContent":["/* Copyright (C) Greenbone AG\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Domain, ESideNavEnum } from \"../NavigationLink\"\nimport { buildUrl } from \"../NavigationLink/buildUrl\"\nimport { isActive } from \"../NavigationLink/isActive\"\nimport { TBuildNavLinkParams, TNavLinkConfig } from \"./types\"\nimport { useTranslation } from \"react-i18next\"\nimport {\n getAssetDomainMenuItems,\n getNotificationsDomainMenuItems,\n getScanDomainMenuItems,\n getSystemManagementDomainMenuItems,\n getUserDomainMenuItems,\n getVIDomainMenuItemsVulnerabilityIntel,\n TFactory,\n} from \"./menuItems\"\nimport { TFunction } from \"i18next\"\nimport { MantineTheme, useMantineTheme } from \"@mantine/core\"\n\nexport const NavLinkConfigFactory =\n (currentPath: string, requester: Domain) =>\n ({ icon, label, to, owner, subNav, openInNewTab }: TBuildNavLinkParams): TNavLinkConfig => {\n const fullTargetUrl = to ? buildUrl(owner, requester, to) : \"\"\n const defaultOpened = !!subNav?.find((sn) => sn.to === currentPath)\n\n return {\n isPathMatch: currentPath.endsWith(fullTargetUrl),\n active: to ? isActive(currentPath, fullTargetUrl) : false,\n icon: icon,\n isExternal: owner !== requester,\n label: label,\n to: fullTargetUrl,\n defaultOpened: defaultOpened,\n openInNewTab,\n subNav: subNav\n ? subNav.map((sn) => ({\n isPathMatch: currentPath.endsWith(sn.to || \"\"),\n label: sn.label,\n to: sn.to ? buildUrl(sn.owner, requester, sn.to) : \"\",\n active: sn.to ? isActive(currentPath, sn.to) : false,\n isExternal: sn.owner !== requester,\n openInNewTab,\n }))\n : undefined,\n }\n }\n\nexport const useBuildUseNavigationMenuPoints = ({\n requestingDomain,\n menuPointsCategories,\n currentLocation,\n additional,\n realmAccessRoles,\n}: {\n requestingDomain: Domain\n currentLocation: string\n menuPointsCategories: ESideNavEnum[]\n additional?: TBuildNavLinkParams[]\n realmAccessRoles?: Array<string>\n}): TNavLinkConfig[][] => {\n const factory = NavLinkConfigFactory(currentLocation, requestingDomain)\n const menuPoints = useMenuItemStringsToNavigationMenuItemPoints(\n menuPointsCategories,\n factory,\n realmAccessRoles\n )\n if (additional) menuPoints.push(additional.map(factory))\n return menuPoints\n}\n\nexport const getMenuItemFromString = (\n menuItem: ESideNavEnum,\n factory: TFactory,\n t: TFunction,\n theme: MantineTheme,\n realmAccessRoles?: Array<string>\n) => {\n switch (menuItem) {\n case ESideNavEnum.VI:\n return getVIDomainMenuItemsVulnerabilityIntel(factory, t, theme)\n case ESideNavEnum.ASSET:\n return getAssetDomainMenuItems(factory, t, theme, realmAccessRoles)\n case ESideNavEnum.SCAN:\n return getScanDomainMenuItems(factory, t, theme)\n case ESideNavEnum.USER:\n return getUserDomainMenuItems(factory, t, theme, realmAccessRoles)\n case ESideNavEnum.SYSTEM:\n return getSystemManagementDomainMenuItems(factory, t, theme)\n case ESideNavEnum.NOTIFICATIONS:\n return getNotificationsDomainMenuItems(factory, t, theme)\n default:\n return []\n }\n}\n\nexport const useMenuItemStringsToNavigationMenuItemPoints = (\n menuItems: ESideNavEnum[],\n factory: TFactory,\n realmAccessRoles?: Array<string>\n) => {\n const { t } = useTranslation()\n const theme = useMantineTheme()\n return menuItems.flatMap((item) =>\n getMenuItemFromString(item, factory, t, theme, realmAccessRoles)\n )\n}\n\nexport const parseMenuEnvString = (envString: string, separator = \",\"): ESideNavEnum[] =>\n envString.split(separator) as ESideNavEnum[]\n"],"names":["ESideNavEnum","buildUrl","isActive","useTranslation","getAssetDomainMenuItems","getNotificationsDomainMenuItems","getScanDomainMenuItems","getSystemManagementDomainMenuItems","getUserDomainMenuItems","getVIDomainMenuItemsVulnerabilityIntel","useMantineTheme","NavLinkConfigFactory","currentPath","requester","icon","label","to","owner","subNav","openInNewTab","fullTargetUrl","defaultOpened","find","sn","isPathMatch","endsWith","active","isExternal","map","undefined","useBuildUseNavigationMenuPoints","requestingDomain","menuPointsCategories","currentLocation","additional","realmAccessRoles","factory","menuPoints","useMenuItemStringsToNavigationMenuItemPoints","push","getMenuItemFromString","menuItem","t","theme","VI","ASSET","SCAN","USER","SYSTEM","NOTIFICATIONS","menuItems","flatMap","item","parseMenuEnvString","envString","separator","split"],"mappings":"AAIA,OAAiBA,YAAY,KAAQ,mBAAmB,AACxD,QAASC,QAAQ,KAAQ,4BAA4B,AACrD,QAASC,QAAQ,KAAQ,4BAA4B,AAErD,QAASC,cAAc,KAAQ,eAAe,AAC9C,QACEC,uBAAuB,CACvBC,+BAA+B,CAC/BC,sBAAsB,CACtBC,kCAAkC,CAClCC,sBAAsB,CACtBC,sCAAsC,KAEjC,aAAa,AAEpB,QAAuBC,eAAe,KAAQ,eAAe,AAE7D,QAAO,MAAMC,qBACX,CAACC,YAAqBC,YACtB,CAAC,CAAEC,IAAI,CAAEC,KAAK,CAAEC,EAAE,CAAEC,KAAK,CAAEC,MAAM,CAAEC,YAAY,CAAuB,IACpE,MAAMC,cAAgBJ,GAAKf,SAASgB,MAAOJ,UAAWG,IAAM,GAC5D,MAAMK,cAAgB,CAAC,EAACH,eAAAA,uBAAAA,OAAQI,IAAI,CAAC,AAACC,IAAOA,GAAGP,EAAE,GAAKJ,cAEvD,MAAO,CACLY,YAAaZ,YAAYa,QAAQ,CAACL,eAClCM,OAAQV,GAAKd,SAASU,YAAaQ,eAAiB,MACpDN,KAAMA,KACNa,WAAYV,QAAUJ,UACtBE,MAAOA,MACPC,GAAII,cACJC,cAAeA,cACfF,aACAD,OAAQA,OACJA,OAAOU,GAAG,CAAC,AAACL,IAAQ,CAAA,CAClBC,YAAaZ,YAAYa,QAAQ,CAACF,GAAGP,EAAE,EAAI,IAC3CD,MAAOQ,GAAGR,KAAK,CACfC,GAAIO,GAAGP,EAAE,CAAGf,SAASsB,GAAGN,KAAK,CAAEJ,UAAWU,GAAGP,EAAE,EAAI,GACnDU,OAAQH,GAAGP,EAAE,CAAGd,SAASU,YAAaW,GAAGP,EAAE,EAAI,MAC/CW,WAAYJ,GAAGN,KAAK,GAAKJ,UACzBM,YACF,CAAA,GACAU,SACN,CACF,CAAC,AAEH,QAAO,MAAMC,gCAAkC,CAAC,CAC9CC,gBAAgB,CAChBC,oBAAoB,CACpBC,eAAe,CACfC,UAAU,CACVC,gBAAgB,CAOjB,IACC,MAAMC,QAAUzB,qBAAqBsB,gBAAiBF,kBACtD,MAAMM,WAAaC,6CACjBN,qBACAI,QACAD,kBAEF,GAAID,WAAYG,WAAWE,IAAI,CAACL,WAAWN,GAAG,CAACQ,UAC/C,OAAOC,UACT,CAAC,AAED,QAAO,MAAMG,sBAAwB,CACnCC,SACAL,QACAM,EACAC,MACAR,oBAEA,OAAQM,UACN,KAAKzC,aAAa4C,EAAE,CAClB,OAAOnC,uCAAuC2B,QAASM,EAAGC,MAC5D,MAAK3C,aAAa6C,KAAK,CACrB,OAAOzC,wBAAwBgC,QAASM,EAAGC,MAAOR,iBACpD,MAAKnC,aAAa8C,IAAI,CACpB,OAAOxC,uBAAuB8B,QAASM,EAAGC,MAC5C,MAAK3C,aAAa+C,IAAI,CACpB,OAAOvC,uBAAuB4B,QAASM,EAAGC,MAAOR,iBACnD,MAAKnC,aAAagD,MAAM,CACtB,OAAOzC,mCAAmC6B,QAASM,EAAGC,MACxD,MAAK3C,aAAaiD,aAAa,CAC7B,OAAO5C,gCAAgC+B,QAASM,EAAGC,MACrD,SACE,MAAO,EAAE,AACb,CACF,CAAC,AAED,QAAO,MAAML,6CAA+C,CAC1DY,UACAd,QACAD,oBAEA,KAAM,CAAEO,CAAC,CAAE,CAAGvC,iBACd,MAAMwC,MAAQjC,kBACd,OAAOwC,UAAUC,OAAO,CAAC,AAACC,MACxBZ,sBAAsBY,KAAMhB,QAASM,EAAGC,MAAOR,kBAEnD,CAAC,AAED,QAAO,MAAMkB,mBAAqB,CAACC,UAAmBC,UAAY,GAAG,GACnED,UAAUE,KAAK,CAACD,UAA4B"}
|
|
@@ -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)=>{
|
|
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("Appliances"),to:"/appliances",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}]})]]};
|
|
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 return [\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(\"Appliances\"),\n to: \"/appliances\",\n owner: Domain.Asset,\n },\n ],\n }),\n ],\n [\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 ...(realmAccessRoles?.includes(\"admin\")\n ? [\n {\n label: t(\"Asset management\"),\n to: \"/asset-management-settings\",\n owner: Domain.Asset,\n },\n ]\n : []),\n ],\n }),\n ],\n ]\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","icon","size","other","iconSizes","MEDIUM_LARGE","strokeWidth","label","owner","Asset","subNav","to","includes","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(\"Appliances\"),\n to: \"/appliances\",\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 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/components/Layout/AppNavigation/Menu/types.ts"],"sourcesContent":["/* Copyright (C) Greenbone AG\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Domain } from \"../NavigationLink\"\n\nexport type TNavLinkConfig = {\n icon?: React.FC\n label: string\n to?: string\n key?: string\n active?: boolean\n defaultOpened?: boolean\n isExternal?: boolean\n isPathMatch?: boolean\n\n rightSection?: JSX.Element\n subNav?: Array<{\n icon?: React.FC\n label: string\n to: string\n key?: string\n active?: boolean\n isExternal?: boolean\n rightSection?: JSX.Element\n isPathMatch?: boolean\n }>\n}\n\nexport type TBuildNavLinkParams = {\n icon: TNavLinkConfig[\"icon\"]\n label: TNavLinkConfig[\"label\"]\n to?: TNavLinkConfig[\"to\"]\n owner: Domain\n subNav?: Array<{\n label: TNavLinkConfig[\"label\"]\n to: TNavLinkConfig[\"to\"]\n owner: Domain\n }>\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/components/Layout/AppNavigation/Menu/types.ts"],"sourcesContent":["/* Copyright (C) Greenbone AG\n *\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Domain } from \"../NavigationLink\"\n\nexport type TNavLinkConfig = {\n icon?: React.FC\n label: string\n to?: string\n key?: string\n active?: boolean\n defaultOpened?: boolean\n isExternal?: boolean\n isPathMatch?: boolean\n openInNewTab?: boolean\n\n rightSection?: JSX.Element\n subNav?: Array<{\n icon?: React.FC\n label: string\n to: string\n key?: string\n active?: boolean\n isExternal?: boolean\n rightSection?: JSX.Element\n isPathMatch?: boolean\n openInNewTab?: boolean\n }>\n}\n\nexport type TBuildNavLinkParams = {\n icon: TNavLinkConfig[\"icon\"]\n label: TNavLinkConfig[\"label\"]\n to?: TNavLinkConfig[\"to\"]\n owner: Domain\n openInNewTab?: TNavLinkConfig[\"openInNewTab\"]\n subNav?: Array<{\n label: TNavLinkConfig[\"label\"]\n to: TNavLinkConfig[\"to\"]\n owner: Domain\n openInNewTab?: TNavLinkConfig[\"openInNewTab\"]\n }>\n}\n"],"names":[],"mappings":"AA+BA,QAYC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@greenbone/ui-lib",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "Greenbone UI Components Mantine v7",
|
|
5
5
|
"types": "types/src/index.d.ts",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
"bootstrap": "npm install",
|
|
22
22
|
"bootstrap-ci": "npm ci",
|
|
23
23
|
"build": "npm run build:source && npm run build:source-cjs && npm run build:types && npm run build:css",
|
|
24
|
+
"build:dev": "npx swc ./src --config-file .swcrc --out-dir ./lib/esm --source-maps --delete-dir-on-start --copy-files --strip-leading-paths && npm run build:types && npm run build:css",
|
|
24
25
|
"build:source": "npx swc ./src --config-file .swcrc.production-esm --out-dir ./lib/esm --source-maps --delete-dir-on-start --copy-files --strip-leading-paths",
|
|
25
26
|
"build:source-cjs": "npx swc ./src --config-file .swcrc.production-cjs --out-dir ./lib/cjs --source-maps --delete-dir-on-start --copy-files --strip-leading-paths",
|
|
26
27
|
"build:types": "tsc -p ./tsconfig.types.json",
|
|
@@ -41,28 +42,28 @@
|
|
|
41
42
|
"devDependencies": {
|
|
42
43
|
"@emotion/react": "^11.14.0",
|
|
43
44
|
"@svgr/cli": "^8.1.0",
|
|
44
|
-
"@swc/cli": "^0.7.
|
|
45
|
-
"@swc/core": "^1.13.
|
|
46
|
-
"@swc/jest": "^0.2.
|
|
45
|
+
"@swc/cli": "^0.7.8",
|
|
46
|
+
"@swc/core": "^1.13.3",
|
|
47
|
+
"@swc/jest": "^0.2.39",
|
|
47
48
|
"@testing-library/dom": "^10.4.0",
|
|
48
|
-
"@testing-library/jest-dom": "^6.
|
|
49
|
+
"@testing-library/jest-dom": "^6.7.0",
|
|
49
50
|
"@testing-library/react": "^16.3.0",
|
|
50
51
|
"@testing-library/user-event": "^14.6.1",
|
|
51
52
|
"@types/jest": "^30.0.0",
|
|
52
53
|
"@types/lodash": "^4.17.20",
|
|
53
|
-
"@types/luxon": "^3.
|
|
54
|
-
"@types/node": "^
|
|
54
|
+
"@types/luxon": "^3.7.1",
|
|
55
|
+
"@types/node": "^24.3.0",
|
|
55
56
|
"@types/react": "18.3.18",
|
|
56
57
|
"@types/react-dom": "^18.3.5",
|
|
57
58
|
"@types/webfontloader": "^1.6.38",
|
|
58
59
|
"acorn": "^8.14.0",
|
|
59
60
|
"chokidar": "^4.0.3",
|
|
60
61
|
"concurrently": "^9.1.2",
|
|
61
|
-
"cssnano": "^7.0
|
|
62
|
+
"cssnano": "^7.1.0",
|
|
62
63
|
"dayjs": "^1.11.13",
|
|
63
|
-
"i18next": "^25.
|
|
64
|
+
"i18next": "^25.3.6",
|
|
64
65
|
"identity-obj-proxy": "^3.0.0",
|
|
65
|
-
"jest": "^30.0.
|
|
66
|
+
"jest": "^30.0.5",
|
|
66
67
|
"jest-chain-transform": "^0.0.8",
|
|
67
68
|
"jest-environment-jsdom": "^30.0.4",
|
|
68
69
|
"jest-watch-typeahead": "^3.0.1",
|
|
@@ -72,14 +73,14 @@
|
|
|
72
73
|
"prettier": "^3.6.2",
|
|
73
74
|
"resize-observer-polyfill": "^1.5.1",
|
|
74
75
|
"typescript": "^5.7.3",
|
|
75
|
-
"web-vitals": "^5.0
|
|
76
|
+
"web-vitals": "^5.1.0"
|
|
76
77
|
},
|
|
77
78
|
"peerDependencies": {
|
|
78
79
|
"@mantine/core": "^7.17.7",
|
|
79
80
|
"@mantine/dates": "^7.17.7",
|
|
80
81
|
"@mantine/hooks": "^7.17.7",
|
|
81
82
|
"@mantine/notifications": "^7.17.7",
|
|
82
|
-
"lucide-react": "^0.
|
|
83
|
+
"lucide-react": "^0.540.0",
|
|
83
84
|
"react": "^18.x.x",
|
|
84
85
|
"react-dom": "^18.x.x",
|
|
85
86
|
"react-i18next": "^15.x.x"
|
|
@@ -94,7 +95,7 @@
|
|
|
94
95
|
"@mantine/hooks": "^7.17.7",
|
|
95
96
|
"@mantine/notifications": "^7.17.7",
|
|
96
97
|
"lodash": "^4.17.21",
|
|
97
|
-
"lucide-react": "^0.
|
|
98
|
+
"lucide-react": "^0.540.0",
|
|
98
99
|
"luxon": "^3.7.1",
|
|
99
100
|
"react": "^18.x.x",
|
|
100
101
|
"react-dom": "^18.x.x",
|
|
@@ -104,7 +105,7 @@
|
|
|
104
105
|
"tiny-invariant": "^1.3.3",
|
|
105
106
|
"urlcat": "^3",
|
|
106
107
|
"webfontloader": "^1.6.28",
|
|
107
|
-
"yup": "^1.
|
|
108
|
+
"yup": "^1.7.0"
|
|
108
109
|
},
|
|
109
110
|
"directories": {
|
|
110
111
|
"lib": "lib"
|
package/types/src/components/Filter/RemotePersistence/RemotePersistentFilterDropdown.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemotePersistentFilterDropdown.d.ts","sourceRoot":"","sources":["../../../../../src/components/Filter/RemotePersistence/RemotePersistentFilterDropdown.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAoD,MAAM,OAAO,CAAA;AAGxE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"RemotePersistentFilterDropdown.d.ts","sourceRoot":"","sources":["../../../../../src/components/Filter/RemotePersistence/RemotePersistentFilterDropdown.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAoD,MAAM,OAAO,CAAA;AAGxE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AASjD,KAAK,oBAAoB,GAAG;IAC1B,MAAM,EAAE,OAAO,CAAC,MAAM,CAAA;IACtB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,uBAAuB,EAAE,uBAAuB,EAAE,CAAA;CACnD,CAAA;AAED,QAAA,MAAM,8BAA8B,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA8HlE,CAAA;AAED,OAAO,EAAE,8BAA8B,EAAE,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TAppHeaderProps } from "./types";
|
|
2
|
-
export declare const AppHeader: ({ username, menuPoints, logoLink, isLoggedIn, languageSwitch, sessionTimer, logo, isThemeSwitchVisible, ianaTimeZone, manualLink, }: TAppHeaderProps) => import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare const AppHeader: ({ username, menuPoints, logoLink, isLoggedIn, languageSwitch, sessionTimer, logo, isThemeSwitchVisible, ianaTimeZone, manualLink, userNavWidth, }: TAppHeaderProps) => import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
export declare const useHeaderMenuPoints: (logoutCallback?: () => void) => {
|
|
4
4
|
linkText: string;
|
|
5
5
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppHeader.d.ts","sourceRoot":"","sources":["../../../../../src/components/Layout/AppHeader/AppHeader.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAUzC,eAAO,MAAM,SAAS,GAAI,
|
|
1
|
+
{"version":3,"file":"AppHeader.d.ts","sourceRoot":"","sources":["../../../../../src/components/Layout/AppHeader/AppHeader.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAUzC,eAAO,MAAM,SAAS,GAAI,mJAYvB,eAAe,4CAqCjB,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,iBAAiB,MAAM,IAAI;;;;;GAW9D,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ReactNode } from "react";
|
|
2
|
+
import { PopoverWidth } from "@mantine/core";
|
|
2
3
|
export type TAppHeaderProps = {
|
|
3
4
|
username?: string;
|
|
4
5
|
menuPoints: TMenuPoint[];
|
|
@@ -10,6 +11,7 @@ export type TAppHeaderProps = {
|
|
|
10
11
|
isThemeSwitchVisible?: boolean;
|
|
11
12
|
ianaTimeZone?: string;
|
|
12
13
|
manualLink?: string;
|
|
14
|
+
userNavWidth?: PopoverWidth;
|
|
13
15
|
};
|
|
14
16
|
export type TMenuPoint = {
|
|
15
17
|
linkText: string;
|
|
@@ -19,5 +21,6 @@ export type TMenuPoint = {
|
|
|
19
21
|
export type TUserNavProps = {
|
|
20
22
|
username?: string;
|
|
21
23
|
menuPoints: TMenuPoint[];
|
|
24
|
+
userNavWidth?: PopoverWidth;
|
|
22
25
|
};
|
|
23
26
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/components/Layout/AppHeader/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/components/Layout/AppHeader/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,UAAU,EAAE,CAAA;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,OAAO,CAAA;IACnB,cAAc,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IAC5B,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,GAAG,CAAC,OAAO,CAAA;IACjB,EAAE,EAAE,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,UAAU,EAAE,CAAA;IACxB,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { TUserNavProps } from "../types";
|
|
2
|
-
export declare const UserNav: ({ username, menuPoints }: TUserNavProps) => import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare const UserNav: ({ username, menuPoints, userNavWidth }: TUserNavProps) => import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
//# sourceMappingURL=UserNav.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserNav.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Layout/AppHeader/userNav/UserNav.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAMxC,eAAO,MAAM,OAAO,GAAI,
|
|
1
|
+
{"version":3,"file":"UserNav.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Layout/AppHeader/userNav/UserNav.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAMxC,eAAO,MAAM,OAAO,GAAI,wCAA8C,aAAa,4CAkClF,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppNavigation.d.ts","sourceRoot":"","sources":["../../../../../src/components/Layout/AppNavigation/AppNavigation.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAG7C,KAAK,mBAAmB,GAAG;IACzB,UAAU,EAAE,cAAc,EAAE,EAAE,CAAA;IAC9B,EAAE,EAAE,GAAG,CAAA;CACR,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,oBAAoB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"AppNavigation.d.ts","sourceRoot":"","sources":["../../../../../src/components/Layout/AppNavigation/AppNavigation.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAG7C,KAAK,mBAAmB,GAAG;IACzB,UAAU,EAAE,cAAc,EAAE,EAAE,CAAA;IAC9B,EAAE,EAAE,GAAG,CAAA;CACR,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,oBAAoB,mBAAmB,4CA8CpE,CAAA"}
|
|
@@ -3,7 +3,7 @@ import { TBuildNavLinkParams, TNavLinkConfig } from "./types";
|
|
|
3
3
|
import { TFactory } from "./menuItems";
|
|
4
4
|
import { TFunction } from "i18next";
|
|
5
5
|
import { MantineTheme } from "@mantine/core";
|
|
6
|
-
export declare const NavLinkConfigFactory: (currentPath: string, requester: Domain) => ({ icon, label, to, owner, subNav }: TBuildNavLinkParams) => TNavLinkConfig;
|
|
6
|
+
export declare const NavLinkConfigFactory: (currentPath: string, requester: Domain) => ({ icon, label, to, owner, subNav, openInNewTab }: TBuildNavLinkParams) => TNavLinkConfig;
|
|
7
7
|
export declare const useBuildUseNavigationMenuPoints: ({ requestingDomain, menuPointsCategories, currentLocation, additional, realmAccessRoles, }: {
|
|
8
8
|
requestingDomain: Domain;
|
|
9
9
|
currentLocation: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menuFactory.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Layout/AppNavigation/Menu/menuFactory.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGxD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7D,OAAO,EAOL,QAAQ,EACT,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,YAAY,EAAmB,MAAM,eAAe,CAAA;AAE7D,eAAO,MAAM,oBAAoB,GAC9B,aAAa,MAAM,EAAE,WAAW,MAAM,MACtC,
|
|
1
|
+
{"version":3,"file":"menuFactory.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Layout/AppNavigation/Menu/menuFactory.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGxD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7D,OAAO,EAOL,QAAQ,EACT,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,YAAY,EAAmB,MAAM,eAAe,CAAA;AAE7D,eAAO,MAAM,oBAAoB,GAC9B,aAAa,MAAM,EAAE,WAAW,MAAM,MACtC,kDAAkD,mBAAmB,KAAG,cAwBxE,CAAA;AAEH,eAAO,MAAM,+BAA+B,GAAI,4FAM7C;IACD,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,MAAM,CAAA;IACvB,oBAAoB,EAAE,YAAY,EAAE,CAAA;IACpC,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAA;IAClC,gBAAgB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;CACjC,KAAG,cAAc,EAAE,EASnB,CAAA;AAED,eAAO,MAAM,qBAAqB,GAChC,UAAU,YAAY,EACtB,SAAS,QAAQ,EACjB,GAAG,SAAS,EACZ,OAAO,YAAY,EACnB,mBAAmB,KAAK,CAAC,MAAM,CAAC,uBAkBjC,CAAA;AAED,eAAO,MAAM,4CAA4C,GACvD,WAAW,YAAY,EAAE,EACzB,SAAS,QAAQ,EACjB,mBAAmB,KAAK,CAAC,MAAM,CAAC,uBAOjC,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,WAAW,MAAM,EAAE,kBAAe,KAAG,YAAY,EACtC,CAAA"}
|
|
@@ -8,6 +8,7 @@ export type TNavLinkConfig = {
|
|
|
8
8
|
defaultOpened?: boolean;
|
|
9
9
|
isExternal?: boolean;
|
|
10
10
|
isPathMatch?: boolean;
|
|
11
|
+
openInNewTab?: boolean;
|
|
11
12
|
rightSection?: JSX.Element;
|
|
12
13
|
subNav?: Array<{
|
|
13
14
|
icon?: React.FC;
|
|
@@ -18,6 +19,7 @@ export type TNavLinkConfig = {
|
|
|
18
19
|
isExternal?: boolean;
|
|
19
20
|
rightSection?: JSX.Element;
|
|
20
21
|
isPathMatch?: boolean;
|
|
22
|
+
openInNewTab?: boolean;
|
|
21
23
|
}>;
|
|
22
24
|
};
|
|
23
25
|
export type TBuildNavLinkParams = {
|
|
@@ -25,10 +27,12 @@ export type TBuildNavLinkParams = {
|
|
|
25
27
|
label: TNavLinkConfig["label"];
|
|
26
28
|
to?: TNavLinkConfig["to"];
|
|
27
29
|
owner: Domain;
|
|
30
|
+
openInNewTab?: TNavLinkConfig["openInNewTab"];
|
|
28
31
|
subNav?: Array<{
|
|
29
32
|
label: TNavLinkConfig["label"];
|
|
30
33
|
to: TNavLinkConfig["to"];
|
|
31
34
|
owner: Domain;
|
|
35
|
+
openInNewTab?: TNavLinkConfig["openInNewTab"];
|
|
32
36
|
}>;
|
|
33
37
|
};
|
|
34
38
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Layout/AppNavigation/Menu/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE1C,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Layout/AppNavigation/Menu/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE1C,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,YAAY,CAAC,EAAE,OAAO,CAAA;IAEtB,YAAY,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IAC1B,MAAM,CAAC,EAAE,KAAK,CAAC;QACb,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,CAAA;QACf,KAAK,EAAE,MAAM,CAAA;QACb,EAAE,EAAE,MAAM,CAAA;QACV,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,MAAM,CAAC,EAAE,OAAO,CAAA;QAChB,UAAU,CAAC,EAAE,OAAO,CAAA;QACpB,YAAY,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;QAC1B,WAAW,CAAC,EAAE,OAAO,CAAA;QACrB,YAAY,CAAC,EAAE,OAAO,CAAA;KACvB,CAAC,CAAA;CACH,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;IAC5B,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,CAAA;IAC9B,EAAE,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC,CAAA;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAA;IAC7C,MAAM,CAAC,EAAE,KAAK,CAAC;QACb,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,CAAA;QAC9B,EAAE,EAAE,cAAc,CAAC,IAAI,CAAC,CAAA;QACxB,KAAK,EAAE,MAAM,CAAA;QACb,YAAY,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAA;KAC9C,CAAC,CAAA;CACH,CAAA"}
|