Skip to content

Commit 0d4ee6d

Browse files
committed
Add placeholders and standardize validation messages
Updated `CreateContact.razor`, `EditContact.razor`, and `ContactFormDialog.razor` to include `Placeholder` attributes for `MudTextField` components, improving user guidance. Standardized validation error messages across components and resource files by replacing exclamation marks with periods for consistency. Added localized placeholder text translations to `.resx` files for English, German, and Chinese. Updated resource files for `Contacts`, `Documents`, `Profile`, `Users`, `PicklistSets`, and `Tenants` modules to reflect these changes. Introduced a `requirements.md` file documenting placeholder functionality, localization requirements, and naming conventions. Enhanced usability, accessibility, and maintainability by unifying placeholder key naming conventions and ensuring consistent structure in form components.
1 parent f86fce8 commit 0d4ee6d

32 files changed

Lines changed: 164 additions & 100 deletions

src/Server.UI/Pages/Contacts/Components/ContactFormDialog.razor

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,19 @@
99
<MudForm Model="@_model" @ref="@_contactForm" Validation="@(Validator.ValidateValue(_model))">
1010
<MudGrid>
1111
<MudItem xs="12" md="6">
12-
<MudTextField Label="@L[_model.GetMemberDescription(x=>x.Name)]" @bind-Value="_model.Name" For="@(() => _model.Name)" Required="true" RequiredError="@L["name is required!"]"></MudTextField>
12+
<MudTextField Label="@L[_model.GetMemberDescription(x=>x.Name)]" @bind-Value="_model.Name" For="@(() => _model.Name)" Required="true" RequiredError="@L["name is required."]" Placeholder="@L["Enter contact name"]"></MudTextField>
1313
</MudItem>
1414
<MudItem xs="12" md="6">
15-
<MudTextField Label="@L[_model.GetMemberDescription(x=>x.Description)]" For="@(() => _model.Description)" @bind-Value="_model.Description"></MudTextField>
15+
<MudTextField Label="@L[_model.GetMemberDescription(x=>x.Description)]" For="@(() => _model.Description)" @bind-Value="_model.Description" Placeholder="@L["Enter description"]"></MudTextField>
1616
</MudItem>
1717
<MudItem xs="12" md="6">
18-
<MudTextField Label="@L[_model.GetMemberDescription(x=>x.Email)]" @bind-Value="_model.Email" For="@(() => _model.Email)" Required="false" RequiredError="@L["email is required!"]"></MudTextField>
18+
<MudTextField Label="@L[_model.GetMemberDescription(x=>x.Email)]" @bind-Value="_model.Email" For="@(() => _model.Email)" Required="false" RequiredError="@L["email is required."]" Placeholder="@L["Enter email address"]"></MudTextField>
1919
</MudItem>
2020
<MudItem xs="12" md="6">
21-
<MudTextField Label="@L[_model.GetMemberDescription(x=>x.PhoneNumber)]" @bind-Value="_model.PhoneNumber" For="@(() => _model.PhoneNumber)" Required="false" RequiredError="@L["phone number is required!"]"></MudTextField>
21+
<MudTextField Label="@L[_model.GetMemberDescription(x=>x.PhoneNumber)]" @bind-Value="_model.PhoneNumber" For="@(() => _model.PhoneNumber)" Required="false" RequiredError="@L["phone number is required."]" Placeholder="@L["Enter phone number"]"></MudTextField>
2222
</MudItem>
2323
<MudItem xs="12" md="6">
24-
<MudTextField Label="@L[_model.GetMemberDescription(x=>x.Country)]" @bind-Value="_model.Country" For="@(() => _model.Country)" Required="false" RequiredError="@L["country is required!"]"></MudTextField>
24+
<MudTextField Label="@L[_model.GetMemberDescription(x=>x.Country)]" @bind-Value="_model.Country" For="@(() => _model.Country)" Required="false" RequiredError="@L["country is required."]" Placeholder="@L["Enter country"]"></MudTextField>
2525
</MudItem>
2626

2727
</MudGrid>

src/Server.UI/Pages/Contacts/CreateContact.razor

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,26 +20,30 @@
2020
<MudGrid Spacing="2">
2121
<MudItem xs="12" md="6">
2222
<MudTextField Label="@L[_model.GetMemberDescription(x => x.Name)]" @bind-Value="_model.Name"
23-
For="@(() => _model.Name)" Required="true" RequiredError="@L["name is required!"]">
23+
For="@(() => _model.Name)" Required="true" RequiredError="@L["name is required."]"
24+
Placeholder="@L["Enter contact name"]">
2425
</MudTextField>
2526
</MudItem>
2627
<MudItem xs="12" md="6">
2728
<MudTextField Label="@L[_model.GetMemberDescription(x => x.Description)]"
28-
For="@(() => _model.Description)" @bind-Value="_model.Description"></MudTextField>
29+
For="@(() => _model.Description)" @bind-Value="_model.Description"
30+
Placeholder="@L["Enter description"]"></MudTextField>
2931
</MudItem>
3032
<MudItem xs="12" md="6">
3133
<MudTextField Label="@L[_model.GetMemberDescription(x => x.Email)]" @bind-Value="_model.Email"
32-
For="@(() => _model.Email)" Required="false" RequiredError="@L["email is required!"]">
34+
For="@(() => _model.Email)" Required="false" RequiredError="@L["email is required."]"
35+
Placeholder="@L["Enter email address"]">
3336
</MudTextField>
3437
</MudItem>
3538
<MudItem xs="12" md="6">
3639
<MudTextField Label="@L[_model.GetMemberDescription(x => x.PhoneNumber)]"
3740
@bind-Value="_model.PhoneNumber" For="@(() => _model.PhoneNumber)" Required="false"
38-
RequiredError="@L["phone number is required!"]"></MudTextField>
41+
RequiredError="@L["phone number is required."]" Placeholder="@L["Enter phone number"]"></MudTextField>
3942
</MudItem>
4043
<MudItem xs="12" md="6">
4144
<MudTextField Label="@L[_model.GetMemberDescription(x => x.Country)]" @bind-Value="_model.Country"
42-
For="@(() => _model.Country)" Required="false" RequiredError="@L["country is required!"]">
45+
For="@(() => _model.Country)" Required="false" RequiredError="@L["country is required."]"
46+
Placeholder="@L["Enter country"]">
4347
</MudTextField>
4448
</MudItem>
4549

src/Server.UI/Pages/Contacts/EditContact.razor

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,19 @@
2424
<MudForm Model="@_model" @ref="@_contactForm" Validation="@(Validator.ValidateValue(_model))">
2525
<MudGrid Spacing="2">
2626
<MudItem xs="12" md="6">
27-
<MudTextField Label="@L[_model.GetMemberDescription(x=>x.Name)]" @bind-Value="_model.Name" For="@(() => _model.Name)" Required="true" RequiredError="@L["name is required!"]"></MudTextField>
27+
<MudTextField Label="@L[_model.GetMemberDescription(x=>x.Name)]" @bind-Value="_model.Name" For="@(() => _model.Name)" Required="true" RequiredError="@L["name is required."]" Placeholder="@L["Enter contact name"]"></MudTextField>
2828
</MudItem>
2929
<MudItem xs="12" md="6">
30-
<MudTextField Label="@L[_model.GetMemberDescription(x=>x.Description)]" For="@(() => _model.Description)" @bind-Value="_model.Description"></MudTextField>
30+
<MudTextField Label="@L[_model.GetMemberDescription(x=>x.Description)]" For="@(() => _model.Description)" @bind-Value="_model.Description" Placeholder="@L["Enter description"]"></MudTextField>
3131
</MudItem>
3232
<MudItem xs="12" md="6">
33-
<MudTextField Label="@L[_model.GetMemberDescription(x=>x.Email)]" @bind-Value="_model.Email" For="@(() => _model.Email)" Required="false" RequiredError="@L["email is required!"]"></MudTextField>
33+
<MudTextField Label="@L[_model.GetMemberDescription(x=>x.Email)]" @bind-Value="_model.Email" For="@(() => _model.Email)" Required="false" RequiredError="@L["email is required."]" Placeholder="@L["Enter email address"]"></MudTextField>
3434
</MudItem>
3535
<MudItem xs="12" md="6">
36-
<MudTextField Label="@L[_model.GetMemberDescription(x=>x.PhoneNumber)]" @bind-Value="_model.PhoneNumber" For="@(() => _model.PhoneNumber)" Required="false" RequiredError="@L["phone number is required!"]"></MudTextField>
36+
<MudTextField Label="@L[_model.GetMemberDescription(x=>x.PhoneNumber)]" @bind-Value="_model.PhoneNumber" For="@(() => _model.PhoneNumber)" Required="false" RequiredError="@L["phone number is required."]" Placeholder="@L["Enter phone number"]"></MudTextField>
3737
</MudItem>
3838
<MudItem xs="12" md="6">
39-
<MudTextField Label="@L[_model.GetMemberDescription(x=>x.Country)]" @bind-Value="_model.Country" For="@(() => _model.Country)" Required="false" RequiredError="@L["country is required!"]"></MudTextField>
39+
<MudTextField Label="@L[_model.GetMemberDescription(x=>x.Country)]" @bind-Value="_model.Country" For="@(() => _model.Country)" Required="false" RequiredError="@L["country is required."]" Placeholder="@L["Enter country"]"></MudTextField>
4040
</MudItem>
4141

4242
</MudGrid>

src/Server.UI/Pages/Documents/Components/DocumentFormDialog.razor

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@
1313
<MudTextField Label="@L["Title"]" @bind-Value="Model.Title"
1414
For="@(() => Model.Title)"
1515
Required="true"
16-
RequiredError="@L["Title is required!"]">
16+
RequiredError="@L["Title is required."]">
1717
</MudTextField>
1818
</MudItem>
1919
<MudItem xs="12" sm="6">
2020
<MudSelect Label="@L["Select Document Type"]"
2121
For="@(() => Model.DocumentType)"
2222
Required="true"
23-
RequiredError="@L["Document type is required!"]"
23+
RequiredError="@L["Document type is required."]"
2424
@bind-Value="Model.DocumentType">
2525
@foreach (var doctype in Enum.GetValues<DocumentType>())
2626
{

src/Server.UI/Pages/Identity/Roles/Components/RoleFormDialog.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
Required="true"
1616
For="@(() => Model.Name)"
1717
Validation="@(new Func<string, IEnumerable<string>>(ValidateName))"
18-
RequiredError="@L["Role name is required!"]"
18+
RequiredError="@L["Role name is required."]"
1919
MaxLength="50"
2020
Immediate="true">
2121
</MudTextField>

src/Server.UI/Pages/PicklistSets/Components/CreatePicklistDialog.razor

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
For="@(() => _model.Name)"
1212
Placeholder="@L["Select picklist name"]"
1313
Required="true"
14-
RequiredError="@L["Name is required!"]">
14+
RequiredError="@L["Name is required."]">
1515
</MudEnumSelect>
1616
</MudItem>
1717
<MudItem xs="12" md="6">
@@ -25,15 +25,15 @@
2525
For="@(() => _model.Value)"
2626
Placeholder="@L["Enter value"]"
2727
Required="true"
28-
RequiredError="@L["Value is required!"]">
28+
RequiredError="@L["Value is required."]">
2929
</MudTextField>
3030
</MudItem>
3131
<MudItem xs="12" md="6">
3232
<MudTextField Label="@L[_model.GetMemberDescription(x => x.Text)]" @bind-Value="_model.Text"
3333
For="@(() => _model.Text)"
3434
Placeholder="@L["Enter text"]"
3535
Required="true"
36-
RequiredError="@L["Text is required!"]">
36+
RequiredError="@L["Text is required."]">
3737
</MudTextField>
3838
</MudItem>
3939

src/Server.UI/Pages/Products/Components/ProductFormDialog.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
For="@(() => _model.Name)"
2424
Placeholder="@L["Enter product name"]"
2525
Required="true"
26-
RequiredError="@L["product name is required!"]">
26+
RequiredError="@L["product name is required."]">
2727
</MudTextField>
2828
</MudItem>
2929
<MudItem xs="12">

src/Server.UI/Pages/Tenants/TenantFormDialog.razor

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,15 @@
1313
Required="true"
1414
Placeholder="@L["Auto-generated tenant id"]"
1515
HelperText="@L["This identifier cannot be changed"]"
16-
RequiredError="@L["Tenant id is required!"]">
16+
RequiredError="@L["Tenant id is required."]">
1717
</MudTextField>
1818
</MudItem>
1919
<MudItem xs="12">
2020
<MudTextField Label="@L[_model.GetMemberDescription(x => x.Name)]" @bind-Value="_model.Name"
2121
For="@(() => _model.Name)"
2222
Placeholder="@L["Enter tenant name"]"
2323
Required="true"
24-
RequiredError="@L["Tenant name is required!"]">
24+
RequiredError="@L["Tenant name is required."]">
2525
</MudTextField>
2626
</MudItem>
2727
<MudItem xs="12">

src/Server.UI/Resources/Pages/Contacts/Contacts.de-DE.resx

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,17 +36,17 @@
3636
<data name="Create Contact" xml:space="preserve">
3737
<value>Kontakt erstellen</value>
3838
</data>
39-
<data name="name is required!" xml:space="preserve">
40-
<value>Name ist erforderlich!</value>
39+
<data name="name is required." xml:space="preserve">
40+
<value>Name ist erforderlich.</value>
4141
</data>
42-
<data name="email is required!" xml:space="preserve">
43-
<value>E-Mail ist erforderlich!</value>
42+
<data name="email is required." xml:space="preserve">
43+
<value>E-Mail ist erforderlich.</value>
4444
</data>
45-
<data name="phone number is required!" xml:space="preserve">
46-
<value>Telefonnummer ist erforderlich!</value>
45+
<data name="phone number is required." xml:space="preserve">
46+
<value>Telefonnummer ist erforderlich.</value>
4747
</data>
48-
<data name="country is required!" xml:space="preserve">
49-
<value>Land ist erforderlich!</value>
48+
<data name="country is required." xml:space="preserve">
49+
<value>Land ist erforderlich.</value>
5050
</data>
5151
<data name="Id" xml:space="preserve">
5252
<value>ID</value>
@@ -66,4 +66,19 @@
6666
<data name="Country" xml:space="preserve">
6767
<value>Land</value>
6868
</data>
69+
<data name="Enter contact name" xml:space="preserve">
70+
<value>Kontaktnamen eingeben</value>
71+
</data>
72+
<data name="Enter description" xml:space="preserve">
73+
<value>Beschreibung eingeben</value>
74+
</data>
75+
<data name="Enter email address" xml:space="preserve">
76+
<value>E-Mail-Adresse eingeben</value>
77+
</data>
78+
<data name="Enter phone number" xml:space="preserve">
79+
<value>Telefonnummer eingeben</value>
80+
</data>
81+
<data name="Enter country" xml:space="preserve">
82+
<value>Land eingeben</value>
83+
</data>
6984
</root>

src/Server.UI/Resources/Pages/Contacts/Contacts.en.resx

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,17 +36,17 @@
3636
<data name="Create Contact" xml:space="preserve">
3737
<value>Create Contact</value>
3838
</data>
39-
<data name="name is required!" xml:space="preserve">
40-
<value>name is required!</value>
39+
<data name="name is required." xml:space="preserve">
40+
<value>name is required.</value>
4141
</data>
42-
<data name="email is required!" xml:space="preserve">
43-
<value>email is required!</value>
42+
<data name="email is required." xml:space="preserve">
43+
<value>email is required.</value>
4444
</data>
45-
<data name="phone number is required!" xml:space="preserve">
46-
<value>phone number is required!</value>
45+
<data name="phone number is required." xml:space="preserve">
46+
<value>phone number is required.</value>
4747
</data>
48-
<data name="country is required!" xml:space="preserve">
49-
<value>country is required!</value>
48+
<data name="country is required." xml:space="preserve">
49+
<value>country is required.</value>
5050
</data>
5151
<data name="Id" xml:space="preserve">
5252
<value>Id</value>
@@ -66,4 +66,19 @@
6666
<data name="Country" xml:space="preserve">
6767
<value>Country</value>
6868
</data>
69+
<data name="Enter contact name" xml:space="preserve">
70+
<value>Enter contact name</value>
71+
</data>
72+
<data name="Enter description" xml:space="preserve">
73+
<value>Enter description</value>
74+
</data>
75+
<data name="Enter email address" xml:space="preserve">
76+
<value>Enter email address</value>
77+
</data>
78+
<data name="Enter phone number" xml:space="preserve">
79+
<value>Enter phone number</value>
80+
</data>
81+
<data name="Enter country" xml:space="preserve">
82+
<value>Enter country</value>
83+
</data>
6984
</root>

0 commit comments

Comments
 (0)