import { Component, inject } from "@angular/core"; import { FormBuilder, FormControl, ReactiveFormsModule, Validators } from "@angular/forms"; import { MatRippleModule } from "@angular/material/core"; import { MatDialogRef } from "@angular/material/dialog"; import { MatFormFieldModule } from "@angular/material/form-field"; import { MatIcon } from "@angular/material/icon"; import { MatInputModule } from "@angular/material/input"; import { MatSelectModule } from '@angular/material/select'; import { MatTooltip } from "@angular/material/tooltip"; export interface ProgramingLanguage { code: string; label: string; } export const PROGRAMMING_LANGUAGES: ProgramingLanguage[] = [ { code: 'bash', label: 'Bash' }, { code: 'c', label: 'C' }, { code: 'cpp', label: 'C++' }, { code: 'cs', label: 'C#' }, { code: 'lua', label: 'Lua' }, { code: 'java', label: 'Java' }, { code: 'json5', label: 'JSON' }, { code: 'kt', label: 'Kotlin' }, { code: 'markup', label: 'html/xml' }, { code: 'php', label: 'PHP' }, { code: 'plsql', label: 'PL/SQL' }, { code: 'python', label: 'Python' }, { code: 'powershell', label: 'PowerShell' }, { code: 'rust', label: 'Rust' }, { code: 'sql', label: 'SQL' }, { code: 'ts', label: 'Typescript' }, { code: 'yml', label: 'YAML' }, ]; @Component({ selector: 'app-code-block-dialog', standalone: true, templateUrl: './code-block-dialog.component.html', styleUrl: './code-block-dialog.component.scss', imports: [ MatFormFieldModule, MatIcon, MatInputModule, MatRippleModule, MatSelectModule, MatTooltip, ReactiveFormsModule, ] }) export class CodeBlockDialog { private readonly dialogRef = inject(MatDialogRef); private formBuilder = inject(FormBuilder); programmingLanguages = PROGRAMMING_LANGUAGES; formGroup = this.formBuilder.group({ programmingLanguage: new FormControl('', Validators.required), codeBlock: new FormControl('', Validators.required) }); closeAndValidate(): void { if (this.formGroup.valid) { this.dialogRef.close(this.formGroup.value); } } closeDialog(): void { this.dialogRef.close(); } }