diff --git a/APP/src/app/features/users/components/edit-user-dialog/edit-user-dialog.component.html b/APP/src/app/features/users/components/edit-user-dialog/edit-user-dialog.component.html
new file mode 100644
index 0000000..39fd4d3
--- /dev/null
+++ b/APP/src/app/features/users/components/edit-user-dialog/edit-user-dialog.component.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
diff --git a/APP/src/app/features/users/components/edit-user-dialog/edit-user-dialog.component.ts b/APP/src/app/features/users/components/edit-user-dialog/edit-user-dialog.component.ts
new file mode 100644
index 0000000..2a20ed0
--- /dev/null
+++ b/APP/src/app/features/users/components/edit-user-dialog/edit-user-dialog.component.ts
@@ -0,0 +1,51 @@
+import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { FormBuilder, FormGroup, Validators, ReactiveFormsModule } from '@angular/forms';
+import { DialogsModule } from '@progress/kendo-angular-dialog';
+import { InputsModule } from '@progress/kendo-angular-inputs';
+import { LabelModule } from '@progress/kendo-angular-label';
+import { DropDownsModule } from '@progress/kendo-angular-dropdowns';
+import { ButtonsModule } from '@progress/kendo-angular-buttons';
+import { UserDto, UpdateUserRequest, ALL_ROLES } from '../../models/user.model';
+
+@Component({
+ selector: 'app-edit-user-dialog',
+ standalone: true,
+ imports: [
+ CommonModule, ReactiveFormsModule, DialogsModule,
+ InputsModule, LabelModule, DropDownsModule, ButtonsModule
+ ],
+ templateUrl: './edit-user-dialog.component.html',
+})
+export class EditUserDialogComponent implements OnInit {
+ @Input({ required: true }) user!: UserDto;
+ @Output() saved = new EventEmitter();
+ @Output() cancelled = new EventEmitter();
+
+ form!: FormGroup;
+ readonly roleOptions: string[] = [...ALL_ROLES];
+ readonly langOptions = [
+ { text: 'English', value: 'en' },
+ { text: '中文', value: 'zh-TW' },
+ ];
+
+ constructor(private fb: FormBuilder) {}
+
+ ngOnInit(): void {
+ this.form = this.fb.group({
+ email: [this.user.email, [Validators.required, Validators.email]],
+ roles: [this.user.roles, Validators.required],
+ isActive: [this.user.isActive],
+ languagePreference: [this.user.languagePreference],
+ });
+ }
+
+ onSubmit(): void {
+ if (this.form.invalid) { this.form.markAllAsTouched(); return; }
+ this.saved.emit(this.form.value as UpdateUserRequest);
+ }
+
+ onCancel(): void {
+ this.cancelled.emit();
+ }
+}