feat(i18n): bilingual language + roles selectors in user dialogs
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+2
-1
@@ -18,6 +18,7 @@
|
|||||||
<kendo-multiselect
|
<kendo-multiselect
|
||||||
formControlName="roles"
|
formControlName="roles"
|
||||||
[data]="roleOptions"
|
[data]="roleOptions"
|
||||||
|
textField="label" valueField="value" [valuePrimitive]="true"
|
||||||
placeholder="Select role(s)">
|
placeholder="Select role(s)">
|
||||||
</kendo-multiselect>
|
</kendo-multiselect>
|
||||||
</kendo-formfield>
|
</kendo-formfield>
|
||||||
@@ -26,7 +27,7 @@
|
|||||||
<kendo-label text="Language"></kendo-label>
|
<kendo-label text="Language"></kendo-label>
|
||||||
<kendo-dropdownlist
|
<kendo-dropdownlist
|
||||||
formControlName="languagePreference"
|
formControlName="languagePreference"
|
||||||
[data]="langOptions" textField="text" valueField="value"
|
[data]="langOptions" textField="label" valueField="value"
|
||||||
[valuePrimitive]="true">
|
[valuePrimitive]="true">
|
||||||
</kendo-dropdownlist>
|
</kendo-dropdownlist>
|
||||||
</kendo-formfield>
|
</kendo-formfield>
|
||||||
|
|||||||
+4
-6
@@ -8,7 +8,8 @@ import { DropDownsModule } from '@progress/kendo-angular-dropdowns';
|
|||||||
import { ButtonsModule } from '@progress/kendo-angular-buttons';
|
import { ButtonsModule } from '@progress/kendo-angular-buttons';
|
||||||
import { IndicatorsModule } from '@progress/kendo-angular-indicators';
|
import { IndicatorsModule } from '@progress/kendo-angular-indicators';
|
||||||
import { MemberListItemDto, memberDisplayName } from '../../models/member.model';
|
import { MemberListItemDto, memberDisplayName } from '../../models/member.model';
|
||||||
import { CreateUserRequest, CreateUserResult, ALL_ROLES } from '../../../users/models/user.model';
|
import { CreateUserRequest, CreateUserResult } from '../../../users/models/user.model';
|
||||||
|
import { LANGUAGE_OPTIONS, ROLE_OPTIONS } from '../../../../shared/i18n/option-lists';
|
||||||
import { UserApiService } from '../../../users/services/user-api.service';
|
import { UserApiService } from '../../../users/services/user-api.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
@@ -32,11 +33,8 @@ export class CreateUserDialogComponent implements OnInit {
|
|||||||
isLoading = false;
|
isLoading = false;
|
||||||
errorMessage = '';
|
errorMessage = '';
|
||||||
|
|
||||||
readonly roleOptions: string[] = [...ALL_ROLES];
|
readonly roleOptions = ROLE_OPTIONS;
|
||||||
readonly langOptions = [
|
readonly langOptions = LANGUAGE_OPTIONS;
|
||||||
{ text: 'English', value: 'en' },
|
|
||||||
{ text: '中文', value: 'zh-TW' },
|
|
||||||
];
|
|
||||||
|
|
||||||
get memberName(): string { return memberDisplayName(this.member); }
|
get memberName(): string { return memberDisplayName(this.member); }
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -12,6 +12,7 @@
|
|||||||
<kendo-formfield>
|
<kendo-formfield>
|
||||||
<kendo-label text="Roles *"></kendo-label>
|
<kendo-label text="Roles *"></kendo-label>
|
||||||
<kendo-multiselect formControlName="roles" [data]="roleOptions"
|
<kendo-multiselect formControlName="roles" [data]="roleOptions"
|
||||||
|
textField="label" valueField="value" [valuePrimitive]="true"
|
||||||
placeholder="Select roles"></kendo-multiselect>
|
placeholder="Select roles"></kendo-multiselect>
|
||||||
<kendo-formerror>At least one role is required.</kendo-formerror>
|
<kendo-formerror>At least one role is required.</kendo-formerror>
|
||||||
</kendo-formfield>
|
</kendo-formfield>
|
||||||
@@ -19,7 +20,7 @@
|
|||||||
<kendo-formfield>
|
<kendo-formfield>
|
||||||
<kendo-label text="Language"></kendo-label>
|
<kendo-label text="Language"></kendo-label>
|
||||||
<kendo-dropdownlist formControlName="languagePreference"
|
<kendo-dropdownlist formControlName="languagePreference"
|
||||||
[data]="langOptions" textField="text" valueField="value"
|
[data]="langOptions" textField="label" valueField="value"
|
||||||
[valuePrimitive]="true">
|
[valuePrimitive]="true">
|
||||||
</kendo-dropdownlist>
|
</kendo-dropdownlist>
|
||||||
</kendo-formfield>
|
</kendo-formfield>
|
||||||
|
|||||||
+4
-6
@@ -6,7 +6,8 @@ import { InputsModule } from '@progress/kendo-angular-inputs';
|
|||||||
import { LabelModule } from '@progress/kendo-angular-label';
|
import { LabelModule } from '@progress/kendo-angular-label';
|
||||||
import { DropDownsModule } from '@progress/kendo-angular-dropdowns';
|
import { DropDownsModule } from '@progress/kendo-angular-dropdowns';
|
||||||
import { ButtonsModule } from '@progress/kendo-angular-buttons';
|
import { ButtonsModule } from '@progress/kendo-angular-buttons';
|
||||||
import { CreateUserRequest, ALL_ROLES } from '../../models/user.model';
|
import { CreateUserRequest } from '../../models/user.model';
|
||||||
|
import { LANGUAGE_OPTIONS, ROLE_OPTIONS } from '../../../../shared/i18n/option-lists';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-create-user-dialog',
|
selector: 'app-create-user-dialog',
|
||||||
@@ -22,11 +23,8 @@ export class CreateUserDialogComponent {
|
|||||||
@Output() cancelled = new EventEmitter<void>();
|
@Output() cancelled = new EventEmitter<void>();
|
||||||
|
|
||||||
form: FormGroup;
|
form: FormGroup;
|
||||||
readonly roleOptions: string[] = [...ALL_ROLES];
|
readonly roleOptions = ROLE_OPTIONS;
|
||||||
readonly langOptions = [
|
readonly langOptions = LANGUAGE_OPTIONS;
|
||||||
{ text: 'English', value: 'en' },
|
|
||||||
{ text: '中文', value: 'zh-TW' },
|
|
||||||
];
|
|
||||||
|
|
||||||
constructor(private fb: FormBuilder) {
|
constructor(private fb: FormBuilder) {
|
||||||
this.form = this.fb.group({
|
this.form = this.fb.group({
|
||||||
|
|||||||
+2
-1
@@ -12,13 +12,14 @@
|
|||||||
<kendo-formfield>
|
<kendo-formfield>
|
||||||
<kendo-label text="Roles *"></kendo-label>
|
<kendo-label text="Roles *"></kendo-label>
|
||||||
<kendo-multiselect formControlName="roles" [data]="roleOptions"
|
<kendo-multiselect formControlName="roles" [data]="roleOptions"
|
||||||
|
textField="label" valueField="value" [valuePrimitive]="true"
|
||||||
placeholder="Select roles"></kendo-multiselect>
|
placeholder="Select roles"></kendo-multiselect>
|
||||||
</kendo-formfield>
|
</kendo-formfield>
|
||||||
|
|
||||||
<kendo-formfield>
|
<kendo-formfield>
|
||||||
<kendo-label text="Language"></kendo-label>
|
<kendo-label text="Language"></kendo-label>
|
||||||
<kendo-dropdownlist formControlName="languagePreference"
|
<kendo-dropdownlist formControlName="languagePreference"
|
||||||
[data]="langOptions" textField="text" valueField="value"
|
[data]="langOptions" textField="label" valueField="value"
|
||||||
[valuePrimitive]="true">
|
[valuePrimitive]="true">
|
||||||
</kendo-dropdownlist>
|
</kendo-dropdownlist>
|
||||||
</kendo-formfield>
|
</kendo-formfield>
|
||||||
|
|||||||
+4
-6
@@ -6,7 +6,8 @@ import { InputsModule } from '@progress/kendo-angular-inputs';
|
|||||||
import { LabelModule } from '@progress/kendo-angular-label';
|
import { LabelModule } from '@progress/kendo-angular-label';
|
||||||
import { DropDownsModule } from '@progress/kendo-angular-dropdowns';
|
import { DropDownsModule } from '@progress/kendo-angular-dropdowns';
|
||||||
import { ButtonsModule } from '@progress/kendo-angular-buttons';
|
import { ButtonsModule } from '@progress/kendo-angular-buttons';
|
||||||
import { UserDto, UpdateUserRequest, ALL_ROLES } from '../../models/user.model';
|
import { UserDto, UpdateUserRequest } from '../../models/user.model';
|
||||||
|
import { LANGUAGE_OPTIONS, ROLE_OPTIONS } from '../../../../shared/i18n/option-lists';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-edit-user-dialog',
|
selector: 'app-edit-user-dialog',
|
||||||
@@ -23,11 +24,8 @@ export class EditUserDialogComponent implements OnInit {
|
|||||||
@Output() cancelled = new EventEmitter<void>();
|
@Output() cancelled = new EventEmitter<void>();
|
||||||
|
|
||||||
form!: FormGroup;
|
form!: FormGroup;
|
||||||
readonly roleOptions: string[] = [...ALL_ROLES];
|
readonly roleOptions = ROLE_OPTIONS;
|
||||||
readonly langOptions = [
|
readonly langOptions = LANGUAGE_OPTIONS;
|
||||||
{ text: 'English', value: 'en' },
|
|
||||||
{ text: '中文', value: 'zh-TW' },
|
|
||||||
];
|
|
||||||
|
|
||||||
constructor(private fb: FormBuilder) {}
|
constructor(private fb: FormBuilder) {}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user