diff --git a/src/app/agents/show-agents/show-agents.component.html b/src/app/agents/show-agents/show-agents.component.html index 39427a936..465a15125 100644 --- a/src/app/agents/show-agents/show-agents.component.html +++ b/src/app/agents/show-agents/show-agents.component.html @@ -1,6 +1,6 @@ -
- + -
- -
-
- -
-
- -
-
- -
- {{ item.label }} diff --git a/src/app/core/_components/menus/action-menu/action-menu.component.scss b/src/app/core/_components/menus/action-menu/action-menu.component.scss new file mode 100644 index 000000000..cc3715a8f --- /dev/null +++ b/src/app/core/_components/menus/action-menu/action-menu.component.scss @@ -0,0 +1,19 @@ +.menu-item-content { + display: flex; + align-items: center; +} + +.menu-item-add-btn { + margin-left: auto; + padding-left: 20px; + cursor: pointer; + + fa-icon { + transition: filter 0.2s, color 0.2s; + } + + &:hover fa-icon { + filter: brightness(1.3); + color: #607d8b; + } +} diff --git a/src/app/core/_components/menus/action-menu/action-menu.component.ts b/src/app/core/_components/menus/action-menu/action-menu.component.ts index 71fec7eaa..a19fb79b6 100644 --- a/src/app/core/_components/menus/action-menu/action-menu.component.ts +++ b/src/app/core/_components/menus/action-menu/action-menu.component.ts @@ -1,6 +1,6 @@ import { faDiscord, faGithub } from '@fortawesome/free-brands-svg-icons'; import { faGlobe, faPaperPlane } from '@fortawesome/free-solid-svg-icons'; -import { faBook } from '@fortawesome/free-solid-svg-icons'; +import { faBook, faSquarePlus } from '@fortawesome/free-solid-svg-icons'; import { Subscription } from 'rxjs'; import { LocalStorageService } from 'src/app/core/_services/storage/local-storage.service'; @@ -28,6 +28,7 @@ import { UISettingsUtilityClass } from '@src/app/shared/utils/config'; @Component({ selector: 'action-menu', templateUrl: './action-menu.component.html', + styleUrls: ['./action-menu.component.scss'], standalone: false }) export class ActionMenuComponent implements OnInit, AfterViewInit, OnDestroy { @@ -71,6 +72,7 @@ export class ActionMenuComponent implements OnInit, AfterViewInit, OnDestroy { faPaperplane = faPaperPlane; faGlobe = faGlobe; faBook = faBook; + faSquarePlus = faSquarePlus; isDarkMode = false; faIconColor = 'white'; @@ -214,6 +216,21 @@ export class ActionMenuComponent implements OnInit, AfterViewInit, OnDestroy { } } + /** + * Handles a click on the add menu item. + * Navigates internally or externally based on menuItem properties, + * or emits an event for custom handling. + * Closes the menu afterward. + * @param menuItem The clicked ActionMenuItem + */ + onAddMenuItemClick(menuItem: ActionMenuItem): void { + if (menuItem.routerLinkAdd && !menuItem.external) { + this.router.navigate(menuItem.routerLinkAdd).then(() => { + this.closeMenuIfOpen(); + }); + } + } + /** * Closes the menu if it is currently open. */ diff --git a/src/app/core/_components/menus/action-menu/action-menu.model.ts b/src/app/core/_components/menus/action-menu/action-menu.model.ts index 70c189b70..aa135ae01 100644 --- a/src/app/core/_components/menus/action-menu/action-menu.model.ts +++ b/src/app/core/_components/menus/action-menu/action-menu.model.ts @@ -10,4 +10,7 @@ export interface ActionMenuItem { red?: boolean; routerLink?: string[]; external?: boolean; + showAddButton?: boolean; + routerLinkAdd?: string[]; + tooltipAddButton?: string; } diff --git a/src/app/layout/header/header.component.ts b/src/app/layout/header/header.component.ts index 3e227ddd7..88096a42b 100644 --- a/src/app/layout/header/header.component.ts +++ b/src/app/layout/header/header.component.ts @@ -149,7 +149,10 @@ export class HeaderComponent implements OnInit, OnDestroy { const agentActions = [ { label: HeaderMenuLabel.SHOW_AGENTS, - routerLink: ['agents', 'show-agents'] + routerLink: ['agents', 'show-agents'], + showAddButton: true, + routerLinkAdd: ['agents', 'new-agent'], + tooltipAddButton: 'New Agent' } ]; @@ -158,7 +161,10 @@ export class HeaderComponent implements OnInit, OnDestroy { if (canReadAgentStats) { agentActions.push({ label: HeaderMenuLabel.AGENT_STATUS, - routerLink: ['agents', 'agent-status'] + routerLink: ['agents', 'agent-status'], + showAddButton: false, + routerLinkAdd: [], + tooltipAddButton: '' }); } @@ -183,15 +189,24 @@ export class HeaderComponent implements OnInit, OnDestroy { const taskActions = [ { label: HeaderMenuLabel.SHOW_TASKS, - routerLink: ['tasks', 'show-tasks'] + routerLink: ['tasks', 'show-tasks'], + showAddButton: true, + routerLinkAdd: ['tasks', 'new-task'], + tooltipAddButton: 'New Task' }, { label: HeaderMenuLabel.PRECONFIGURED_TASKS, - routerLink: ['tasks', 'preconfigured-tasks'] + routerLink: ['tasks', 'preconfigured-tasks'], + showAddButton: true, + routerLinkAdd: ['tasks', 'new-preconfigured-tasks'], + tooltipAddButton: 'New Preconfigured Task' }, { label: HeaderMenuLabel.SUPERTASKS, - routerLink: ['tasks', 'supertasks'] + routerLink: ['tasks', 'supertasks'], + showAddButton: true, + routerLinkAdd: ['tasks', 'new-supertasks'], + tooltipAddButton: 'New Supertask' }, { label: HeaderMenuLabel.IMPORT_SUPERTASK, @@ -228,11 +243,17 @@ export class HeaderComponent implements OnInit, OnDestroy { const actions = [ { label: HeaderMenuLabel.SHOW_HASHLISTS, - routerLink: ['hashlists', 'hashlist'] + routerLink: ['hashlists', 'hashlist'], + showAddButton: true, + routerLinkAdd: ['hashlists', 'new-hashlist'], + tooltipAddButton: 'New Hashlist' }, { label: HeaderMenuLabel.SUPERHASHLISTS, - routerLink: ['hashlists', 'superhashlist'] + routerLink: ['hashlists', 'superhashlist'], + showAddButton: true, + routerLinkAdd: ['hashlists', 'new-superhashlist'], + tooltipAddButton: 'New Superhashlist' } ]; @@ -241,11 +262,17 @@ export class HeaderComponent implements OnInit, OnDestroy { actions.push( { label: HeaderMenuLabel.SEARCH_HASH, - routerLink: ['hashlists', 'search-hash'] + routerLink: ['hashlists', 'search-hash'], + showAddButton: false, + routerLinkAdd: [], + tooltipAddButton: '' }, { label: HeaderMenuLabel.SHOW_CRACKS, - routerLink: ['hashlists', 'show-cracks'] + routerLink: ['hashlists', 'show-cracks'], + showAddButton: false, + routerLinkAdd: [], + tooltipAddButton: '' } ); } @@ -274,15 +301,24 @@ export class HeaderComponent implements OnInit, OnDestroy { [ { label: HeaderMenuLabel.WORDLISTS, - routerLink: ['files', 'wordlist'] + routerLink: ['files', 'wordlist'], + showAddButton: true, + routerLinkAdd: ['files', 'wordlist', 'new-wordlist'], + tooltipAddButton: 'New Wordlist' }, { label: HeaderMenuLabel.RULES, - routerLink: ['files', 'rules'] + routerLink: ['files', 'rules'], + showAddButton: true, + routerLinkAdd: ['files', 'rules', 'new-rule'], + tooltipAddButton: 'New Rule' }, { label: HeaderMenuLabel.OTHER, - routerLink: ['files', 'other'] + routerLink: ['files', 'other'], + showAddButton: true, + routerLinkAdd: ['files', 'other', 'new-other'], + tooltipAddButton: 'New File' } ] ] diff --git a/src/app/layout/header/header.constants.ts b/src/app/layout/header/header.constants.ts index 214a2f37c..fdbe64885 100644 --- a/src/app/layout/header/header.constants.ts +++ b/src/app/layout/header/header.constants.ts @@ -4,10 +4,10 @@ export const HeaderMenuAction = { export const HeaderMenuLabel = { AGENTS: 'Agents', - SHOW_AGENTS: 'Show Agents', + SHOW_AGENTS: 'Agents Overview', AGENT_STATUS: 'Agent Status', TASKS: 'Tasks', - SHOW_TASKS: 'Show Tasks', + SHOW_TASKS: 'Tasks', PRECONFIGURED_TASKS: 'Preconfigured Tasks', SUPERTASKS: 'Supertasks', IMPORT_SUPERTASK: 'Supertask Builder', diff --git a/src/app/tasks/show-tasks/show-tasks.component.ts b/src/app/tasks/show-tasks/show-tasks.component.ts index e200e636a..1f2478b65 100644 --- a/src/app/tasks/show-tasks/show-tasks.component.ts +++ b/src/app/tasks/show-tasks/show-tasks.component.ts @@ -15,7 +15,7 @@ export class ShowTasksComponent { pageTitle = 'Tasks'; constructor(private titleService: AutoTitleService) { - titleService.set(['Show Tasks']); + titleService.set(['Tasks']); } toggleIsArchived(event: MatSlideToggleChange): void { diff --git a/src/app/users/globalpermissionsgroups/globalpermissionsgroups.component.html b/src/app/users/globalpermissionsgroups/globalpermissionsgroups.component.html index bf702c732..f78fb3888 100644 --- a/src/app/users/globalpermissionsgroups/globalpermissionsgroups.component.html +++ b/src/app/users/globalpermissionsgroups/globalpermissionsgroups.component.html @@ -1,7 +1,7 @@