feat(i18n): bilingual gender/status dropdowns on member form + members page

This commit is contained in:
Chris Chen
2026-05-29 22:11:39 -07:00
parent 61e34d343a
commit e5296e79dc
4 changed files with 13 additions and 11 deletions
@@ -38,9 +38,9 @@
<kendo-dropdownlist <kendo-dropdownlist
formControlName="gender" formControlName="gender"
[data]="genderOptions" [data]="genderOptions"
textField="text" valueField="value" textField="label" valueField="value"
[valuePrimitive]="true" [valuePrimitive]="true"
[defaultItem]="{ text: '-- Select --', value: null }"> [defaultItem]="{ label: '-- Select --/請選擇', value: null }">
</kendo-dropdownlist> </kendo-dropdownlist>
</kendo-formfield> </kendo-formfield>
@@ -51,7 +51,8 @@
<kendo-formfield> <kendo-formfield>
<kendo-label text="Status *"></kendo-label> <kendo-label text="Status *"></kendo-label>
<kendo-dropdownlist formControlName="status" [data]="statusOptions"> <kendo-dropdownlist formControlName="status" [data]="statusOptions"
textField="label" valueField="value" [valuePrimitive]="true">
</kendo-dropdownlist> </kendo-dropdownlist>
</kendo-formfield> </kendo-formfield>
@@ -9,6 +9,7 @@ import { DateInputsModule } from '@progress/kendo-angular-dateinputs';
import { LayoutModule } from '@progress/kendo-angular-layout'; import { LayoutModule } from '@progress/kendo-angular-layout';
import { ButtonsModule } from '@progress/kendo-angular-buttons'; import { ButtonsModule } from '@progress/kendo-angular-buttons';
import { MemberDto, CreateMemberRequest } from '../../models/member.model'; import { MemberDto, CreateMemberRequest } from '../../models/member.model';
import { GENDER_OPTIONS, MEMBER_STATUS_OPTIONS } from '../../../../shared/i18n/option-lists';
@Component({ @Component({
selector: 'app-member-form-dialog', selector: 'app-member-form-dialog',
@@ -27,12 +28,8 @@ export class MemberFormDialogComponent implements OnInit {
form!: FormGroup; form!: FormGroup;
isEditMode = false; isEditMode = false;
readonly statusOptions = ['Member', 'Visitor', 'Inactive', 'Former']; readonly statusOptions = MEMBER_STATUS_OPTIONS;
readonly genderOptions = [ readonly genderOptions = GENDER_OPTIONS;
{ text: 'Male', value: 'M' },
{ text: 'Female', value: 'F' },
{ text: 'Other', value: 'Other' },
];
readonly langOptions = [ readonly langOptions = [
{ text: 'English', value: 'en' }, { text: 'English', value: 'en' },
{ text: '中文', value: 'zh-TW' }, { text: '中文', value: 'zh-TW' },
@@ -17,7 +17,7 @@
<kendo-dropdownlist <kendo-dropdownlist
[(ngModel)]="filterStatus" [(ngModel)]="filterStatus"
[data]="statusOptions" [data]="statusOptions"
[defaultItem]="'All Status'" textField="label" valueField="value" [valuePrimitive]="true"
(valueChange)="onSearch()" (valueChange)="onSearch()"
style="width: 160px"> style="width: 160px">
</kendo-dropdownlist> </kendo-dropdownlist>
@@ -13,6 +13,7 @@ import {
MemberListItemDto, MemberDto, CreateMemberRequest, MemberListItemDto, MemberDto, CreateMemberRequest,
PagedResult, memberDisplayName PagedResult, memberDisplayName
} from '../../models/member.model'; } from '../../models/member.model';
import { MEMBER_STATUS_OPTIONS } from '../../../../shared/i18n/option-lists';
@Component({ @Component({
selector: 'app-members-page', selector: 'app-members-page',
@@ -36,7 +37,10 @@ export class MembersPageComponent implements OnInit {
// Filters // Filters
searchText = ''; searchText = '';
filterStatus = ''; filterStatus = '';
readonly statusOptions = ['', 'Member', 'Visitor', 'Inactive', 'Former']; readonly statusOptions = [
{ value: '', label: 'All Status/全部狀態' },
...MEMBER_STATUS_OPTIONS,
];
// Dialogs // Dialogs
showMemberDialog = false; showMemberDialog = false;