120 lines
2.6 KiB
TypeScript
120 lines
2.6 KiB
TypeScript
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<CodeBlockDialog>);
|
|
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();
|
|
}
|
|
} |