import { Component, EventEmitter, inject, Input, Output } from '@angular/core'; import { Policy } from '../../shared/models/policy'; import { PolicyItemEditComponent } from '../policy-item-edit/policy-item-edit.component'; import { MatDialog } from '@angular/material/dialog'; import { MatButtonModule } from '@angular/material/button'; import { MatIconModule } from '@angular/material/icon'; import { Group } from '../../shared/models/group'; @Component({ selector: 'policy-add-button', imports: [ MatButtonModule, MatIconModule, ], templateUrl: './policy-add-button.component.html', styleUrl: './policy-add-button.component.scss' }) export class PolicyAddButtonComponent { private readonly dialog = inject(MatDialog); @Input({ required: true }) policies: Policy[] = []; @Input({ required: true }) groups: Group[] = []; @Input() group: string | undefined = undefined; @Output() policy = new EventEmitter(); openDialog(): void { const dialogRef = this.dialog.open(PolicyItemEditComponent, { data: { policies: this.policies, groups: this.groups, group_id: this.group, groupDisabled: !!this.group, isNew: true, } }); dialogRef.afterClosed().subscribe((result: Policy) => { if (!result) return; this.policy.emit(result); }); } }