44 lines
1.3 KiB
TypeScript
44 lines
1.3 KiB
TypeScript
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<Policy>();
|
|
|
|
|
|
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);
|
|
});
|
|
}
|
|
} |