LanguageText aynı olan Keyler unique hale getirildi

This commit is contained in:
Sedat ÖZTÜRK 2026-08-14 17:03:34 +03:00
parent f372c17249
commit c1a74bc245
270 changed files with 6855 additions and 9612 deletions

View file

@ -833,21 +833,21 @@ public class ListFormWorkflowAppService : PlatformAppService, IListFormWorkflowA
{ {
"Start" => new[] "Start" => new[]
{ {
localizer["ListForms.ListForm.Workflow.WorkflowStarted"].Value, localizer["App.ListFormWorkflow.WorkflowStarted"].Value,
localizer["ListForms.ListForm.Workflow.Step", node.Title].Value, localizer["App.ListFormWorkflow.Step", node.Title].Value,
localizer["ListForms.ListForm.Workflow.PerformedBy", userName].Value localizer["App.ListFormWorkflow.PerformedBy", userName].Value
}.Concat(FormatNextToastNode(next)), }.Concat(FormatNextToastNode(next)),
"Inform" => new[] "Inform" => new[]
{ {
localizer["ListForms.ListForm.Workflow.InformReached"].Value, localizer["App.ListFormWorkflow.InformReached"].Value,
localizer["ListForms.ListForm.Workflow.Step", node.Title].Value, localizer["App.ListFormWorkflow.Step", node.Title].Value,
localizer["ListForms.ListForm.Workflow.InformUser", FormatToastUser(node.Approver)].Value localizer["App.ListFormWorkflow.InformUser", FormatToastUser(node.Approver)].Value
}.Concat(FormatNextToastNode(next)), }.Concat(FormatNextToastNode(next)),
"End" => new[] "End" => new[]
{ {
localizer["ListForms.ListForm.Workflow.WorkflowCompleted"].Value, localizer["App.ListFormWorkflow.WorkflowCompleted"].Value,
localizer["ListForms.ListForm.Workflow.Step", node.Title].Value, localizer["App.ListFormWorkflow.Step", node.Title].Value,
localizer["ListForms.ListForm.Workflow.PerformedBy", userName].Value localizer["App.ListFormWorkflow.PerformedBy", userName].Value
}, },
_ => null _ => null
}; };
@ -889,29 +889,29 @@ public class ListFormWorkflowAppService : PlatformAppService, IListFormWorkflowA
{ {
"Approval" => "Approval" =>
[ [
localizer["ListForms.ListForm.Workflow.NextStep.Approval"].Value, localizer["App.WorkflowNextStep.Approval"].Value,
localizer["ListForms.ListForm.Workflow.NextStepName", node.Title].Value, localizer["App.ListFormWorkflow.NextStepName", node.Title].Value,
localizer["ListForms.ListForm.Workflow.ApproverUser", FormatToastUser(node.Approver)].Value localizer["App.ListFormWorkflow.ApproverUser", FormatToastUser(node.Approver)].Value
], ],
"Inform" => "Inform" =>
[ [
localizer["ListForms.ListForm.Workflow.NextStep.Inform"].Value, localizer["App.WorkflowNextStep.Inform"].Value,
localizer["ListForms.ListForm.Workflow.NextStepName", node.Title].Value, localizer["App.ListFormWorkflow.NextStepName", node.Title].Value,
localizer["ListForms.ListForm.Workflow.InformUser", FormatToastUser(node.Approver)].Value localizer["App.ListFormWorkflow.InformUser", FormatToastUser(node.Approver)].Value
], ],
"End" => "End" =>
[ [
localizer["ListForms.ListForm.Workflow.NextStep.End"].Value, localizer["App.WorkflowNextStep.End"].Value,
localizer["ListForms.ListForm.Workflow.NextStepName", node.Title].Value localizer["App.ListFormWorkflow.NextStepName", node.Title].Value
], ],
_ => [localizer["ListForms.ListForm.Workflow.NextStep", node.Title].Value] _ => [localizer["App.ListFormWorkflow.NextStep", node.Title].Value]
}; };
} }
private string FormatToastUser(string userName) private string FormatToastUser(string userName)
{ {
return userName.IsNullOrWhiteSpace() return userName.IsNullOrWhiteSpace()
? localizer["ListForms.ListForm.Workflow.UndefinedUser"].Value ? localizer["App.ListFormWorkflow.UndefinedUser"].Value
: FormatWorkflowApprovers(userName); : FormatWorkflowApprovers(userName);
} }

View file

@ -656,7 +656,7 @@ public class PublicAppService : PlatformAppService
</head> </head>
<body bgcolor=""#f3f4f6"" style=""margin:0;padding:0;background-color:#f3f4f6;font-family:Arial,Helvetica,sans-serif;color:#111827;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;""> <body bgcolor=""#f3f4f6"" style=""margin:0;padding:0;background-color:#f3f4f6;font-family:Arial,Helvetica,sans-serif;color:#111827;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;"">
<div style=""display:none;font-size:1px;color:#f3f4f6;line-height:1px;max-height:0;max-width:0;opacity:0;overflow:hidden;""> <div style=""display:none;font-size:1px;color:#f3f4f6;line-height:1px;max-height:0;max-width:0;opacity:0;overflow:hidden;"">
{Html(Translate("Public.order.success.title"))} #{order.Id} {Html(Translate("App.OrderSuccess.SuccessTitle"))} #{order.Id}
</div> </div>
<table role=""presentation"" width=""100%"" cellpadding=""0"" cellspacing=""0"" border=""0"" bgcolor=""#f3f4f6"" style=""width:100%;background-color:#f3f4f6;border-collapse:collapse;mso-table-lspace:0pt;mso-table-rspace:0pt;""> <table role=""presentation"" width=""100%"" cellpadding=""0"" cellspacing=""0"" border=""0"" bgcolor=""#f3f4f6"" style=""width:100%;background-color:#f3f4f6;border-collapse:collapse;mso-table-lspace:0pt;mso-table-rspace:0pt;"">
<tr> <tr>
@ -679,10 +679,10 @@ public class PublicAppService : PlatformAppService
<td style=""vertical-align:middle;""> <td style=""vertical-align:middle;"">
<table role=""presentation"" cellpadding=""0"" cellspacing=""0"" border=""0"" style=""border-collapse:collapse;""> <table role=""presentation"" cellpadding=""0"" cellspacing=""0"" border=""0"" style=""border-collapse:collapse;"">
<tr> <tr>
<td style=""font-size:22px;line-height:28px;font-weight:800;color:#111827;"">{Html(Translate("Public.order.success.title"))}</td> <td style=""font-size:22px;line-height:28px;font-weight:800;color:#111827;"">{Html(Translate("App.OrderSuccess.SuccessTitle"))}</td>
</tr> </tr>
<tr> <tr>
<td style=""padding-top:6px;color:#4b5563;font-size:14px;line-height:20px;"">{Html(Translate("Public.order.success.number"))} <strong style=""color:#2563eb;"">#{order.Id}</strong></td> <td style=""padding-top:6px;color:#4b5563;font-size:14px;line-height:20px;"">{Html(Translate("App.OrderSuccess.Number"))} <strong style=""color:#2563eb;"">#{order.Id}</strong></td>
</tr> </tr>
</table> </table>
</td> </td>
@ -785,15 +785,15 @@ public class PublicAppService : PlatformAppService
<td style=""width:42%;vertical-align:top;""> <td style=""width:42%;vertical-align:top;"">
<table role=""presentation"" width=""100%"" cellpadding=""0"" cellspacing=""0"" border=""0"" style=""width:100%;border-collapse:collapse;color:#374151;font-size:14px;mso-table-lspace:0pt;mso-table-rspace:0pt;""> <table role=""presentation"" width=""100%"" cellpadding=""0"" cellspacing=""0"" border=""0"" style=""width:100%;border-collapse:collapse;color:#374151;font-size:14px;mso-table-lspace:0pt;mso-table-rspace:0pt;"">
<tr> <tr>
<td style=""padding:8px 0;text-align:left;line-height:20px;"">{Html(Translate("Public.payment.summary.subtotal"))}</td> <td style=""padding:8px 0;text-align:left;line-height:20px;"">{Html(Translate("App.Listform.ListformField.Subtotal"))}</td>
<td align=""right"" style=""padding:8px 0;text-align:right;font-weight:700;color:#111827;white-space:nowrap;line-height:20px;"">{FormatPrice(order.Subtotal)}</td> <td align=""right"" style=""padding:8px 0;text-align:right;font-weight:700;color:#111827;white-space:nowrap;line-height:20px;"">{FormatPrice(order.Subtotal)}</td>
</tr> </tr>
<tr> <tr>
<td style=""padding:8px 0;text-align:left;line-height:20px;"">{Html(Translate("Public.products.kdv"))}</td> <td style=""padding:8px 0;text-align:left;line-height:20px;"">{Html(Translate("App.PublicProducts.Kdv"))}</td>
<td align=""right"" style=""padding:8px 0;text-align:right;font-weight:700;color:#111827;white-space:nowrap;line-height:20px;"">{FormatPrice(order.VatTotal)}</td> <td align=""right"" style=""padding:8px 0;text-align:right;font-weight:700;color:#111827;white-space:nowrap;line-height:20px;"">{FormatPrice(order.VatTotal)}</td>
</tr> </tr>
<tr> <tr>
<td style=""padding:8px 0;text-align:left;line-height:20px;"">{Html(Translate("Public.payment.installments.commission"))}</td> <td style=""padding:8px 0;text-align:left;line-height:20px;"">{Html(Translate("App.Listform.ListformField.Commission"))}</td>
<td align=""right"" style=""padding:8px 0;text-align:right;font-weight:700;color:#111827;white-space:nowrap;line-height:20px;"">{FormatPrice(order.Commission)}</td> <td align=""right"" style=""padding:8px 0;text-align:right;font-weight:700;color:#111827;white-space:nowrap;line-height:20px;"">{FormatPrice(order.Commission)}</td>
</tr> </tr>
<tr> <tr>

View file

@ -11,7 +11,7 @@
{ {
"code": "App.SiteManagement.General.NewMemberNotificationEmails", "code": "App.SiteManagement.General.NewMemberNotificationEmails",
"nameKey": "App.SiteManagement.General.NewMemberNotificationEmails", "nameKey": "App.SiteManagement.General.NewMemberNotificationEmails",
"descriptionKey": "App.SiteManagement.General.NewMemberNotificationEmails.Description", "descriptionKey": "App.GeneralNewMemberNotificationEmails.NewMemberNotificationEmailsDescription",
"defaultValue": "system@sozsoft.com", "defaultValue": "system@sozsoft.com",
"isVisibleToClients": false, "isVisibleToClients": false,
"providers": "T|G|D", "providers": "T|G|D",
@ -27,7 +27,7 @@
{ {
"code": "App.SiteManagement.General.TimedLoginEmails", "code": "App.SiteManagement.General.TimedLoginEmails",
"nameKey": "App.SiteManagement.General.TimedLoginEmails", "nameKey": "App.SiteManagement.General.TimedLoginEmails",
"descriptionKey": "App.SiteManagement.General.TimedLoginEmails.Description", "descriptionKey": "App.GeneralTimedLoginEmails.TimedLoginEmailsDescription",
"defaultValue": "system@sozsoft.com", "defaultValue": "system@sozsoft.com",
"isVisibleToClients": false, "isVisibleToClients": false,
"providers": "T|G|D", "providers": "T|G|D",
@ -43,7 +43,7 @@
{ {
"code": "App.SiteManagement.General.NewTenantNotificationEmails", "code": "App.SiteManagement.General.NewTenantNotificationEmails",
"nameKey": "App.SiteManagement.General.NewTenantNotificationEmails", "nameKey": "App.SiteManagement.General.NewTenantNotificationEmails",
"descriptionKey": "App.SiteManagement.General.NewTenantNotificationEmails.Description", "descriptionKey": "App.GeneralNewTenantNotificationEmails.NewTenantNotificationEmailsDescription",
"defaultValue": "destek@sozsoft.com", "defaultValue": "destek@sozsoft.com",
"isVisibleToClients": false, "isVisibleToClients": false,
"providers": "T|G|D", "providers": "T|G|D",
@ -59,7 +59,7 @@
{ {
"code": "App.SiteManagement.Theme.Style", "code": "App.SiteManagement.Theme.Style",
"nameKey": "App.SiteManagement.Theme.Style", "nameKey": "App.SiteManagement.Theme.Style",
"descriptionKey": "App.SiteManagement.Theme.Style.Description", "descriptionKey": "App.ThemeStyle.StyleDescription",
"defaultValue": "dx.material.blue.dark.compact", "defaultValue": "dx.material.blue.dark.compact",
"isVisibleToClients": true, "isVisibleToClients": true,
"providers": "U|G|D", "providers": "U|G|D",
@ -305,7 +305,7 @@
{ {
"code": "App.Sender.Sms.PostaGuvercini.Url", "code": "App.Sender.Sms.PostaGuvercini.Url",
"nameKey": "App.Sender.Sms.PostaGuvercini.Url", "nameKey": "App.Sender.Sms.PostaGuvercini.Url",
"descriptionKey": "App.Sender.Url.Description", "descriptionKey": "App.SenderUrl.UrlDescription",
"defaultValue": "https://www.postaguvercini.com/api_http", "defaultValue": "https://www.postaguvercini.com/api_http",
"isVisibleToClients": false, "isVisibleToClients": false,
"providers": "T|G|D", "providers": "T|G|D",
@ -321,7 +321,7 @@
{ {
"code": "App.Sender.Sms.PostaGuvercini.Username", "code": "App.Sender.Sms.PostaGuvercini.Username",
"nameKey": "App.Sender.Sms.PostaGuvercini.Username", "nameKey": "App.Sender.Sms.PostaGuvercini.Username",
"descriptionKey": "App.Sender.Sms.PostaGuvercini.Username.Description", "descriptionKey": "App.PostaGuverciniUsername.UsernameDescription",
"defaultValue": "2AIlj4QlCrvlbDDBS/712A==", "defaultValue": "2AIlj4QlCrvlbDDBS/712A==",
"isVisibleToClients": false, "isVisibleToClients": false,
"providers": "T|G|D", "providers": "T|G|D",
@ -337,7 +337,7 @@
{ {
"code": "App.Sender.Sms.PostaGuvercini.Password", "code": "App.Sender.Sms.PostaGuvercini.Password",
"nameKey": "App.Sender.Sms.PostaGuvercini.Password", "nameKey": "App.Sender.Sms.PostaGuvercini.Password",
"descriptionKey": "App.Sender.Sms.PostaGuvercini.Password.Description", "descriptionKey": "App.PostaGuverciniPassword.PasswordDescription",
"defaultValue": "oTuwyZM9sxfJI+jDH5wJAw==", "defaultValue": "oTuwyZM9sxfJI+jDH5wJAw==",
"isVisibleToClients": false, "isVisibleToClients": false,
"providers": "T|G|D", "providers": "T|G|D",
@ -353,7 +353,7 @@
{ {
"code": "App.Sender.WhatsApp.Url", "code": "App.Sender.WhatsApp.Url",
"nameKey": "App.Sender.WhatsApp.Url", "nameKey": "App.Sender.WhatsApp.Url",
"descriptionKey": "App.Sender.Url.Description", "descriptionKey": "App.SenderUrl.UrlDescription",
"defaultValue": "https://graph.facebook.com/v21.0", "defaultValue": "https://graph.facebook.com/v21.0",
"isVisibleToClients": false, "isVisibleToClients": false,
"providers": "T|G|D", "providers": "T|G|D",
@ -369,7 +369,7 @@
{ {
"code": "App.Sender.WhatsApp.PhoneNumberId", "code": "App.Sender.WhatsApp.PhoneNumberId",
"nameKey": "App.Sender.WhatsApp.PhoneNumberId", "nameKey": "App.Sender.WhatsApp.PhoneNumberId",
"descriptionKey": "App.Sender.WhatsApp.PhoneNumberId.Description", "descriptionKey": "App.WhatsAppPhoneNumberId.PhoneNumberIdDescription",
"defaultValue": "442035112335974", "defaultValue": "442035112335974",
"isVisibleToClients": false, "isVisibleToClients": false,
"providers": "T|G|D", "providers": "T|G|D",
@ -385,7 +385,7 @@
{ {
"code": "App.Sender.WhatsApp.Token", "code": "App.Sender.WhatsApp.Token",
"nameKey": "App.Sender.WhatsApp.Token", "nameKey": "App.Sender.WhatsApp.Token",
"descriptionKey": "App.Sender.WhatsApp.Token.Description", "descriptionKey": "App.WhatsAppToken.TokenDescription",
"defaultValue": "EAANoftqZAJ64BO5oPwXPqniUtNGF70u8TKvQVzGZBaYQh5UY8fYrgQkcXP9UbQUqT9PWRah1L7TzcBIiWQMacT8AkmZB33AP1begLoywIZCsQSdBSUz21GQaCowfVosYgBoXSyqH8irSBPQDLIjxxVxrC2n76SD9X6zPXeHgOqIPY92DqJXplstWrlhtZCAZDZD", "defaultValue": "EAANoftqZAJ64BO5oPwXPqniUtNGF70u8TKvQVzGZBaYQh5UY8fYrgQkcXP9UbQUqT9PWRah1L7TzcBIiWQMacT8AkmZB33AP1begLoywIZCsQSdBSUz21GQaCowfVosYgBoXSyqH8irSBPQDLIjxxVxrC2n76SD9X6zPXeHgOqIPY92DqJXplstWrlhtZCAZDZD",
"isVisibleToClients": false, "isVisibleToClients": false,
"providers": "T|G|D", "providers": "T|G|D",
@ -401,7 +401,7 @@
{ {
"code": "App.Sender.WhatsApp.TemplateName", "code": "App.Sender.WhatsApp.TemplateName",
"nameKey": "App.Sender.WhatsApp.TemplateName", "nameKey": "App.Sender.WhatsApp.TemplateName",
"descriptionKey": "App.Sender.WhatsApp.TemplateName.Description", "descriptionKey": "App.WhatsAppTemplateName.TemplateNameDescription",
"defaultValue": "Erp_platform_notification", "defaultValue": "Erp_platform_notification",
"isVisibleToClients": false, "isVisibleToClients": false,
"providers": "T|G|D", "providers": "T|G|D",
@ -417,7 +417,7 @@
{ {
"code": "App.Sender.Rocket.Url", "code": "App.Sender.Rocket.Url",
"nameKey": "App.Sender.Rocket.Url", "nameKey": "App.Sender.Rocket.Url",
"descriptionKey": "App.Sender.Url.Description", "descriptionKey": "App.SenderUrl.UrlDescription",
"defaultValue": "https://chat.sozsoft.com/api/v1", "defaultValue": "https://chat.sozsoft.com/api/v1",
"isVisibleToClients": false, "isVisibleToClients": false,
"providers": "G|D", "providers": "G|D",
@ -433,7 +433,7 @@
{ {
"code": "App.Sender.Rocket.UserId", "code": "App.Sender.Rocket.UserId",
"nameKey": "App.Sender.Rocket.UserId", "nameKey": "App.Sender.Rocket.UserId",
"descriptionKey": "App.Sender.Rocket.UserId.Description", "descriptionKey": "App.RocketUserId.UserIdDescription",
"defaultValue": "LfpzPjzag4QJXm84N", "defaultValue": "LfpzPjzag4QJXm84N",
"isVisibleToClients": false, "isVisibleToClients": false,
"providers": "G|D", "providers": "G|D",
@ -449,7 +449,7 @@
{ {
"code": "App.Sender.Rocket.Token", "code": "App.Sender.Rocket.Token",
"nameKey": "App.Sender.Rocket.Token", "nameKey": "App.Sender.Rocket.Token",
"descriptionKey": "App.Sender.Rocket.Token.Description", "descriptionKey": "App.RocketToken.TokenDescription",
"defaultValue": "jvqALawvXn0Q7c6FfHJV3h58DCHDfQLgFF5y7oIc7oc", "defaultValue": "jvqALawvXn0Q7c6FfHJV3h58DCHDfQLgFF5y7oIc7oc",
"isVisibleToClients": false, "isVisibleToClients": false,
"providers": "G|D", "providers": "G|D",

View file

@ -285,7 +285,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
EditorType2 = EditorTypes.dxSelectBox, EditorType2 = EditorTypes.dxSelectBox,
ColSpan = 1, ColSpan = 1,
EditorOptions = EditorOptionValues.ShowClearButton, EditorOptions = EditorOptionValues.ShowClearButton,
CaptionName = "App.Listform.ListformField.ParentName", CaptionName = "App.Listform.ListformField.ParentId",
Width = 0, Width = 0,
ListOrderNo = 3, ListOrderNo = 3,
Visible = true, Visible = true,
@ -403,7 +403,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
ValueExpr = "key", ValueExpr = "key",
LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] { LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] {
new () { Key=1, Name="App.StaticLookup.Tenant" }, new () { Key=1, Name="App.StaticLookup.Tenant" },
new () { Key=2, Name="App.StaticLookup.Host" }, new () { Key=2, Name="Abp.Mailing.Smtp.Host" },
new () { Key=3, Name="App.StaticLookup.Both" }, new () { Key=3, Name="App.StaticLookup.Both" },
}), }),
}), }),
@ -793,7 +793,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
EditOrderNo = 2, EditOrderNo = 2,
EditorType2 = EditorTypes.dxCheckBox, EditorType2 = EditorTypes.dxCheckBox,
ColSpan = 1, ColSpan = 1,
CaptionName = "App.Listform.ListformField.IsDefault", CaptionName = "Abp.Mailing.Default",
Width = 0, Width = 0,
ListOrderNo = 2, ListOrderNo = 2,
Visible = true, Visible = true,
@ -874,8 +874,8 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
UpdateServiceAddress = "list-form-dynamic-api/user-update", UpdateServiceAddress = "list-form-dynamic-api/user-update",
CommandColumnJson = JsonSerializer.Serialize(new CommandColumnDto[] { CommandColumnJson = JsonSerializer.Serialize(new CommandColumnDto[] {
new() { new() {
Hint = "App.Platform.Detail", Hint = "Detail",
Text ="App.Platform.Detail", Text ="Detail",
UrlTarget="_blank", UrlTarget="_blank",
AuthName=PlatformConsts.IdentityPermissions.Users.Update, AuthName=PlatformConsts.IdentityPermissions.Users.Update,
Url="/admin/users/detail/@Id", Url="/admin/users/detail/@Id",
@ -998,7 +998,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
EditOrderNo = 2, EditOrderNo = 2,
EditorType2 = EditorTypes.dxTextBox, EditorType2 = EditorTypes.dxTextBox,
ColSpan = 1, ColSpan = 1,
CaptionName = "Abp.Account.EmailAddress", CaptionName = "App.Listform.ListformField.Email",
Width = 0, Width = 0,
ListOrderNo = 2, ListOrderNo = 2,
Visible = true, Visible = true,
@ -1152,7 +1152,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
EditorType2 = EditorTypes.dxSelectBox, EditorType2 = EditorTypes.dxSelectBox,
ColSpan = 1, ColSpan = 1,
EditorOptions = EditorOptionValues.ShowClearButton, EditorOptions = EditorOptionValues.ShowClearButton,
CaptionName = "App.Listform.ListformField.DepartmentId", CaptionName = "App.Listform.ListformField.Department",
Width = 0, Width = 0,
ListOrderNo = 8, ListOrderNo = 8,
LookupJson = JsonSerializer.Serialize(new LookupDto { LookupJson = JsonSerializer.Serialize(new LookupDto {
@ -1342,8 +1342,8 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
PagerOptionJson = DefaultPagerOptionJson, PagerOptionJson = DefaultPagerOptionJson,
CommandColumnJson = JsonSerializer.Serialize(new CommandColumnDto[] { CommandColumnJson = JsonSerializer.Serialize(new CommandColumnDto[] {
new CommandColumnDto() { new CommandColumnDto() {
Hint = "ListForms.ListFormEdit.TabDetails", Hint = "Detail",
Text = "ListForms.ListFormEdit.TabDetails", Text = "Detail",
AuthName = listFormName, AuthName = listFormName,
DialogName = "AuditLogDetail", DialogName = "AuditLogDetail",
DialogParameters = JsonSerializer.Serialize(new { id = "@Id" }), DialogParameters = JsonSerializer.Serialize(new { id = "@Id" }),
@ -1408,7 +1408,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En, CultureName = LanguageCodes.En,
SourceDbType = DbType.String, SourceDbType = DbType.String,
FieldName = "Url", FieldName = "Url",
CaptionName = "App.Listform.ListformField.Url", CaptionName = "App.Sender.Rocket.Url",
Width = 0, Width = 0,
ListOrderNo = 4, ListOrderNo = 4,
Visible = true, Visible = true,
@ -1424,7 +1424,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En, CultureName = LanguageCodes.En,
SourceDbType = DbType.String, SourceDbType = DbType.String,
FieldName = "UserName", FieldName = "UserName",
CaptionName = "App.Listform.ListformField.UserName", CaptionName = "Abp.Mailing.Smtp.UserName",
Width = 0, Width = 0,
ListOrderNo = 5, ListOrderNo = 5,
Visible = true, Visible = true,
@ -1782,7 +1782,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
EditOrderNo = 3, EditOrderNo = 3,
EditorType2 = EditorTypes.dxSelectBox, EditorType2 = EditorTypes.dxSelectBox,
ColSpan = 1, ColSpan = 1,
CaptionName = "App.Listform.ListformField.CategoryId", CaptionName = "App.Listform.ListformField.Category",
Width = 0, Width = 0,
ListOrderNo = 3, ListOrderNo = 3,
Visible = true, Visible = true,
@ -1814,8 +1814,8 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
DisplayExpr = "name", DisplayExpr = "name",
ValueExpr = "key", ValueExpr = "key",
LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] { LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] {
new () { Key= "active", Name= "App.StaticLookup.Active" }, new () { Key= "active", Name= "App.Listform.ListformField.IsActive" },
new () { Key= "passive", Name= "App.StaticLookup.Passive" }, new () { Key= "passive", Name= "App.Platform.Passive" },
}), }),
}), }),
ValidationRuleJson = DefaultValidationRuleRequiredJson, ValidationRuleJson = DefaultValidationRuleRequiredJson,
@ -2339,7 +2339,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
DisplayExpr = "name", DisplayExpr = "name",
ValueExpr = "key", ValueExpr = "key",
LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] { LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] {
new () { Key="User", Name="App.StaticLookup.User" }, new () { Key="User", Name="App.Platform.User" },
new () { Key="Role", Name="App.StaticLookup.Role" }, new () { Key="Role", Name="App.StaticLookup.Role" },
new () { Key="Global", Name="App.StaticLookup.Global" }, new () { Key="Global", Name="App.StaticLookup.Global" },
}), }),
@ -2523,7 +2523,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En, CultureName = LanguageCodes.En,
SourceDbType = DbType.Guid, SourceDbType = DbType.Guid,
FieldName = "UserId", FieldName = "UserId",
CaptionName = "App.Listform.ListformField.UserName", CaptionName = "Abp.Mailing.Smtp.UserName",
Width = 0, Width = 0,
ListOrderNo = 5, ListOrderNo = 5,
Visible = true, Visible = true,
@ -2563,7 +2563,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
CultureName = LanguageCodes.En, CultureName = LanguageCodes.En,
SourceDbType = DbType.String, SourceDbType = DbType.String,
FieldName = "IpAddresses", FieldName = "IpAddresses",
CaptionName = "App.Listform.ListformField.IpAddress", CaptionName = "App.Listform.ListformField.IP",
Width = 0, Width = 0,
ListOrderNo = 7, ListOrderNo = 7,
Visible = true, Visible = true,
@ -2843,7 +2843,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
EditorType2 = EditorTypes.dxSelectBox, EditorType2 = EditorTypes.dxSelectBox,
ColSpan = 1, ColSpan = 1,
EditorOptions = EditorOptionValues.ShowClearButton, EditorOptions = EditorOptionValues.ShowClearButton,
CaptionName = "App.Listform.ListformField.DepartmentId", CaptionName = "App.Listform.ListformField.Department",
Width = 0, Width = 0,
ListOrderNo = 4, ListOrderNo = 4,
Visible = true, Visible = true,
@ -3046,9 +3046,9 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
DisplayExpr = "name", DisplayExpr = "name",
ValueExpr = "key", ValueExpr = "key",
LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] { LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] {
new () { Key= "general", Name= "App.StaticLookup.General" }, new () { Key= "general", Name= "Abp.Account.General" },
new () { Key= "event", Name= "App.StaticLookup.Event" }, new () { Key= "event", Name= "App.StaticLookup.Event" },
new () { Key= "urgent", Name= "App.StaticLookup.Urgent" }, new () { Key= "urgent", Name= "App.Listform.ListformField.IsUrgent" },
new () { Key= "announcement", Name= "App.StaticLookup.Announcement" }, new () { Key= "announcement", Name= "App.StaticLookup.Announcement" },
}), }),
}), }),
@ -3067,7 +3067,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
EditorType2 = EditorTypes.dxSelectBox, EditorType2 = EditorTypes.dxSelectBox,
ColSpan = 1, ColSpan = 1,
EditorOptions = EditorOptionValues.ShowClearButton, EditorOptions = EditorOptionValues.ShowClearButton,
CaptionName = "App.Listform.ListformField.UserId", CaptionName = "Abp.Mailing.Smtp.UserName",
Width = 0, Width = 0,
ListOrderNo = 6, ListOrderNo = 6,
Visible = true, Visible = true,
@ -3239,7 +3239,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
EditOrderNo = 1, EditOrderNo = 1,
EditorType2 = EditorTypes.dxSelectBox, EditorType2 = EditorTypes.dxSelectBox,
ColSpan = 1, ColSpan = 1,
CaptionName = "App.Listform.ListformField.UserId", CaptionName = "Abp.Mailing.Smtp.UserName",
Width = 0, Width = 0,
ListOrderNo = 2, ListOrderNo = 2,
Visible = true, Visible = true,
@ -3347,7 +3347,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
EditOrderNo = 1, EditOrderNo = 1,
EditorType2 = EditorTypes.dxSelectBox, EditorType2 = EditorTypes.dxSelectBox,
ColSpan = 1, ColSpan = 1,
CaptionName = "App.Listform.ListformField.UserId", CaptionName = "Abp.Mailing.Smtp.UserName",
Width = 0, Width = 0,
ListOrderNo = 2, ListOrderNo = 2,
Visible = true, Visible = true,
@ -3576,8 +3576,8 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
DisplayExpr = "name", DisplayExpr = "name",
ValueExpr = "key", ValueExpr = "key",
LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] { LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] {
new () { Key= "active", Name= "App.StaticLookup.Active" }, new () { Key= "active", Name= "App.Listform.ListformField.IsActive" },
new () { Key= "passive", Name= "App.StaticLookup.Passive" }, new () { Key= "passive", Name= "App.Platform.Passive" },
}), }),
}), }),
ValidationRuleJson = DefaultValidationRuleRequiredJson, ValidationRuleJson = DefaultValidationRuleRequiredJson,
@ -3757,7 +3757,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] { LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] {
new () { Key= "rating", Name= "App.StaticLookup.Rating" }, new () { Key= "rating", Name= "App.StaticLookup.Rating" },
new () { Key= "multiple-choice", Name= "App.StaticLookup.MultipleChoice" }, new () { Key= "multiple-choice", Name= "App.StaticLookup.MultipleChoice" },
new () { Key= "text", Name= "App.StaticLookup.Text" }, new () { Key= "text", Name= "App.Listform.ListformField.Text" },
new () { Key= "textarea", Name= "App.StaticLookup.Textarea" }, new () { Key= "textarea", Name= "App.StaticLookup.Textarea" },
new () { Key= "yes-no", Name= "App.StaticLookup.YesNo" }, new () { Key= "yes-no", Name= "App.StaticLookup.YesNo" },
}), }),
@ -3776,7 +3776,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
EditOrderNo = 4, EditOrderNo = 4,
EditorType2 = EditorTypes.dxCheckBox, EditorType2 = EditorTypes.dxCheckBox,
ColSpan = 1, ColSpan = 1,
CaptionName = "App.Listform.ListformField.IsRequired", CaptionName = "App.Listform.ListformField.Required",
Width = 0, Width = 0,
ListOrderNo = 5, ListOrderNo = 5,
Visible = true, Visible = true,
@ -4022,7 +4022,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
EditorType2 = EditorTypes.dxSelectBox, EditorType2 = EditorTypes.dxSelectBox,
ColSpan = 1, ColSpan = 1,
EditorOptions = EditorOptionValues.ShowClearButton, EditorOptions = EditorOptionValues.ShowClearButton,
CaptionName = "App.Listform.ListformField.UserId", CaptionName = "Abp.Mailing.Smtp.UserName",
Width = 0, Width = 0,
ListOrderNo = 2, ListOrderNo = 2,
Visible = true, Visible = true,
@ -4321,7 +4321,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
EditorType2 = EditorTypes.dxSelectBox, EditorType2 = EditorTypes.dxSelectBox,
ColSpan = 1, ColSpan = 1,
EditorOptions = EditorOptionValues.ShowClearButton, EditorOptions = EditorOptionValues.ShowClearButton,
CaptionName = "App.Listform.ListformField.UserId", CaptionName = "Abp.Mailing.Smtp.UserName",
Width = 0, Width = 0,
ListOrderNo = 2, ListOrderNo = 2,
Visible = true, Visible = true,
@ -4604,7 +4604,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
EditOrderNo = 1, EditOrderNo = 1,
EditorType2 = EditorTypes.dxSelectBox, EditorType2 = EditorTypes.dxSelectBox,
ColSpan = 1, ColSpan = 1,
CaptionName = "App.Listform.ListformField.UserId", CaptionName = "Abp.Mailing.Smtp.UserName",
Width = 0, Width = 0,
ListOrderNo = 2, ListOrderNo = 2,
Visible = true, Visible = true,
@ -4932,7 +4932,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
EditorType2 = EditorTypes.dxSelectBox, EditorType2 = EditorTypes.dxSelectBox,
ColSpan = 1, ColSpan = 1,
EditorOptions = EditorOptionValues.ShowClearButton, EditorOptions = EditorOptionValues.ShowClearButton,
CaptionName = "App.Listform.ListformField.CategoryId", CaptionName = "App.Listform.ListformField.Category",
Width = 0, Width = 0,
ListOrderNo = 2, ListOrderNo = 2,
Visible = true, Visible = true,
@ -4955,7 +4955,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
EditorType2 = EditorTypes.dxSelectBox, EditorType2 = EditorTypes.dxSelectBox,
ColSpan = 1, ColSpan = 1,
EditorOptions = EditorOptionValues.ShowClearButton, EditorOptions = EditorOptionValues.ShowClearButton,
CaptionName = "App.Listform.ListformField.TypeId", CaptionName = "App.Listform.ListformField.Type",
Width = 0, Width = 0,
ListOrderNo = 3, ListOrderNo = 3,
Visible = true, Visible = true,
@ -5065,7 +5065,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
EditorType2 = EditorTypes.dxSelectBox, EditorType2 = EditorTypes.dxSelectBox,
ColSpan = 1, ColSpan = 1,
EditorOptions = EditorOptionValues.ShowClearButton, EditorOptions = EditorOptionValues.ShowClearButton,
CaptionName = "App.Listform.ListformField.UserId", CaptionName = "Abp.Mailing.Smtp.UserName",
Width = 0, Width = 0,
ListOrderNo = 8, ListOrderNo = 8,
Visible = true, Visible = true,
@ -5248,7 +5248,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
EditOrderNo = 1, EditOrderNo = 1,
EditorType2 = EditorTypes.dxSelectBox, EditorType2 = EditorTypes.dxSelectBox,
ColSpan = 1, ColSpan = 1,
CaptionName = "App.Listform.ListformField.UserId", CaptionName = "Abp.Mailing.Smtp.UserName",
Width = 0, Width = 0,
ListOrderNo = 2, ListOrderNo = 2,
Visible = true, Visible = true,
@ -5356,7 +5356,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
EditOrderNo = 1, EditOrderNo = 1,
EditorType2 = EditorTypes.dxSelectBox, EditorType2 = EditorTypes.dxSelectBox,
ColSpan = 1, ColSpan = 1,
CaptionName = "App.Listform.ListformField.UserId", CaptionName = "Abp.Mailing.Smtp.UserName",
Width = 0, Width = 0,
ListOrderNo = 2, ListOrderNo = 2,
Visible = true, Visible = true,
@ -6035,7 +6035,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
EditOrderNo = 2, EditOrderNo = 2,
EditorType2 = EditorTypes.dxTextBox, EditorType2 = EditorTypes.dxTextBox,
ColSpan = 1, ColSpan = 1,
CaptionName = "App.Listform.ListformField.UserName", CaptionName = "Abp.Mailing.Smtp.UserName",
Width = 0, Width = 0,
ListOrderNo = 2, ListOrderNo = 2,
Visible = true, Visible = true,
@ -6321,7 +6321,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
EditOrderNo = 1, EditOrderNo = 1,
EditorType2 = EditorTypes.dxTextBox, EditorType2 = EditorTypes.dxTextBox,
ColSpan = 1, ColSpan = 1,
CaptionName = "App.Listform.ListformField.UserName", CaptionName = "Abp.Mailing.Smtp.UserName",
Width = 0, Width = 0,
ListOrderNo = 1, ListOrderNo = 1,
Visible = true, Visible = true,

View file

@ -1000,7 +1000,7 @@ public class ListFormSeeder_Saas : IDataSeedContributor, ITransientDependency
EditOrderNo = 5, EditOrderNo = 5,
EditorType2 = EditorTypes.dxTextBox, EditorType2 = EditorTypes.dxTextBox,
ColSpan = 1, ColSpan = 1,
CaptionName = "Abp.Account.EmailAddress", CaptionName = "App.Listform.ListformField.Email",
Width = 0, Width = 0,
ListOrderNo = 13, ListOrderNo = 13,
Visible = true, Visible = true,
@ -1273,7 +1273,7 @@ public class ListFormSeeder_Saas : IDataSeedContributor, ITransientDependency
EditOrderNo = 4, EditOrderNo = 4,
EditorType2 = EditorTypes.dxTextBox, EditorType2 = EditorTypes.dxTextBox,
ColSpan = 1, ColSpan = 1,
CaptionName = "App.Listform.ListformField.Url", CaptionName = "App.Sender.Rocket.Url",
Width = 0, Width = 0,
ListOrderNo = 5, ListOrderNo = 5,
Visible = true, Visible = true,
@ -3357,7 +3357,7 @@ public class ListFormSeeder_Saas : IDataSeedContributor, ITransientDependency
EditOrderNo = 3, EditOrderNo = 3,
EditorType2 = EditorTypes.dxCheckBox, EditorType2 = EditorTypes.dxCheckBox,
ColSpan = 1, ColSpan = 1,
CaptionName = "App.Listform.ListformField.IsDefault", CaptionName = "Abp.Mailing.Default",
Width = 0, Width = 0,
ListOrderNo = 4, ListOrderNo = 4,
Visible = true, Visible = true,
@ -3782,11 +3782,11 @@ public class ListFormSeeder_Saas : IDataSeedContributor, ITransientDependency
DisplayExpr = "name", DisplayExpr = "name",
ValueExpr = "key", ValueExpr = "key",
LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] { LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] {
new() { Key="U", Name="App.StaticLookup.User" }, new() { Key="U", Name="App.Platform.User" },
new() { Key="T", Name="App.StaticLookup.Tenant"}, new() { Key="T", Name="App.StaticLookup.Tenant"},
new() { Key="G", Name="App.StaticLookup.Global"}, new() { Key="G", Name="App.StaticLookup.Global"},
new() { Key="C", Name="App.StaticLookup.Configuration"}, new() { Key="C", Name="App.StaticLookup.Configuration"},
new() { Key="D", Name="App.StaticLookup.Default"}, new() { Key="D", Name="Abp.Mailing.Default"},
}), }),
}), }),
ColumnCustomizationJson = DefaultColumnCustomizationJson, ColumnCustomizationJson = DefaultColumnCustomizationJson,
@ -3838,9 +3838,9 @@ public class ListFormSeeder_Saas : IDataSeedContributor, ITransientDependency
DisplayExpr = "name", DisplayExpr = "name",
ValueExpr = "key", ValueExpr = "key",
LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] { LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] {
new() { Key="Bool", Name="App.StaticLookup.Bool" }, new() { Key="Bool", Name="App.StaticLookup.Boolean" },
new() { Key="Number", Name="App.StaticLookup.Number"}, new() { Key="Number", Name="App.StaticLookup.Number"},
new() { Key="Text", Name="App.StaticLookup.Text"}, new() { Key="Text", Name="App.Listform.ListformField.Text"},
new() { Key="Memo", Name="App.StaticLookup.Memo"}, new() { Key="Memo", Name="App.StaticLookup.Memo"},
new() { Key="List", Name="App.StaticLookup.List"}, new() { Key="List", Name="App.StaticLookup.List"},
}) })
@ -4147,8 +4147,8 @@ public class ListFormSeeder_Saas : IDataSeedContributor, ITransientDependency
CommandColumnJson = JsonSerializer.Serialize(new CommandColumnDto[] { CommandColumnJson = JsonSerializer.Serialize(new CommandColumnDto[] {
new() { new() {
ButtonPosition= UiCommandButtonPositionTypeEnum.Toolbar, ButtonPosition= UiCommandButtonPositionTypeEnum.Toolbar,
Hint = "ListForms.ListForm.ClearRedisCache", Hint = "App.ListForm.ClearRedisCache",
Text = "ListForms.ListForm.ClearRedisCache", Text = "App.ListForm.ClearRedisCache",
AuthName = listFormName, AuthName = listFormName,
OnClick = "UiEvalService.ApiClearRedisCache();", OnClick = "UiEvalService.ApiClearRedisCache();",
IsVisible = true, IsVisible = true,
@ -4485,8 +4485,8 @@ public class ListFormSeeder_Saas : IDataSeedContributor, ITransientDependency
}), }),
CommandColumnJson = JsonSerializer.Serialize(new CommandColumnDto[] { CommandColumnJson = JsonSerializer.Serialize(new CommandColumnDto[] {
new() { new() {
Hint = "App.Platform.Manage", Hint = "App.Platform.Manage2",
Text ="App.Platform.Manage", Text ="App.Platform.Manage2",
UrlTarget = "_blank", UrlTarget = "_blank",
AuthName = listFormName + ".Update", AuthName = listFormName + ".Update",
Url = "/admin/listform/edit/@ListFormCode", Url = "/admin/listform/edit/@ListFormCode",
@ -4630,7 +4630,7 @@ public class ListFormSeeder_Saas : IDataSeedContributor, ITransientDependency
LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] { LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] {
new() { Key = ListFormTypeEnum.Form, Name = "App.StaticLookup.Form" }, new() { Key = ListFormTypeEnum.Form, Name = "App.StaticLookup.Form" },
new() { Key = ListFormTypeEnum.List, Name = "App.StaticLookup.List" }, new() { Key = ListFormTypeEnum.List, Name = "App.StaticLookup.List" },
new() { Key = ListFormTypeEnum.Chart, Name = "App.StaticLookup.Chart" }, new() { Key = ListFormTypeEnum.Chart, Name = "App.Platform.Chart" },
}), }),
}), }),
ValidationRuleJson = DefaultValidationRuleRequiredJson, ValidationRuleJson = DefaultValidationRuleRequiredJson,
@ -4761,8 +4761,8 @@ public class ListFormSeeder_Saas : IDataSeedContributor, ITransientDependency
new() { Key=DbType.Binary, Name="App.StaticLookup.Binary" }, new() { Key=DbType.Binary, Name="App.StaticLookup.Binary" },
new() { Key=DbType.Byte, Name="App.StaticLookup.Byte" }, new() { Key=DbType.Byte, Name="App.StaticLookup.Byte" },
new() { Key=DbType.Boolean, Name="App.StaticLookup.Boolean" }, new() { Key=DbType.Boolean, Name="App.StaticLookup.Boolean" },
new() { Key=DbType.Currency, Name="App.StaticLookup.Currency" }, new() { Key=DbType.Currency, Name="App.Listform.ListformField.Currency" },
new() { Key=DbType.Date, Name="App.StaticLookup.Date" }, new() { Key=DbType.Date, Name="App.Listform.ListformField.Date" },
new() { Key=DbType.DateTime, Name="App.StaticLookup.DateTime" }, new() { Key=DbType.DateTime, Name="App.StaticLookup.DateTime" },
new() { Key=DbType.Decimal, Name="App.StaticLookup.Decimal" }, new() { Key=DbType.Decimal, Name="App.StaticLookup.Decimal" },
new() { Key=DbType.Double, Name="App.StaticLookup.Double" }, new() { Key=DbType.Double, Name="App.StaticLookup.Double" },
@ -4832,7 +4832,7 @@ public class ListFormSeeder_Saas : IDataSeedContributor, ITransientDependency
DisplayExpr = "name", DisplayExpr = "name",
ValueExpr = "key", ValueExpr = "key",
LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] { LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] {
new() { Key=GridOptions.SortModeNone, Name="App.StaticLookup.SortNone" }, new() { Key=GridOptions.SortModeNone, Name="App.StaticLookup.None" },
new() { Key=GridOptions.SortModeSingle, Name="App.StaticLookup.SortSingle" }, new() { Key=GridOptions.SortModeSingle, Name="App.StaticLookup.SortSingle" },
new() { Key=GridOptions.SortModeMultiple, Name="App.StaticLookup.SortMultiple" }, new() { Key=GridOptions.SortModeMultiple, Name="App.StaticLookup.SortMultiple" },
}), }),
@ -5260,9 +5260,9 @@ public class ListFormSeeder_Saas : IDataSeedContributor, ITransientDependency
ValueExpr = "key", ValueExpr = "key",
LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] { LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] {
new () { Key="All", Name="App.StaticLookup.All" }, new () { Key="All", Name="App.StaticLookup.All" },
new () { Key="User", Name="App.StaticLookup.User" }, new () { Key="User", Name="App.Platform.User" },
new () { Key="Role", Name="App.StaticLookup.Role" }, new () { Key="Role", Name="App.StaticLookup.Role" },
new () { Key="OrganizationUnit", Name="App.StaticLookup.OrganizationUnit" }, new () { Key="OrganizationUnit", Name="App.Listform.ListformField.IsOrganizationUnit" },
new () { Key="Custom", Name="App.StaticLookup.Custom" }, new () { Key="Custom", Name="App.StaticLookup.Custom" },
}), }),
}), }),
@ -5316,9 +5316,9 @@ public class ListFormSeeder_Saas : IDataSeedContributor, ITransientDependency
DisplayExpr = "name", DisplayExpr = "name",
ValueExpr = "key", ValueExpr = "key",
LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] { LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] {
new () { Key="Sms", Name="App.StaticLookup.Sms" }, new () { Key="Sms", Name="App.Sender.Sms" },
new () { Key="Mail", Name="App.StaticLookup.Mail" }, new () { Key="Mail", Name="App.StaticLookup.Mail" },
new () { Key="WhatsApp", Name="App.StaticLookup.WhatsApp" }, new () { Key="WhatsApp", Name="App.Sender.WhatsApp" },
new () { Key="Rocket", Name="App.StaticLookup.Rocket" }, new () { Key="Rocket", Name="App.StaticLookup.Rocket" },
new () { Key="UiActivity", Name="App.StaticLookup.UiActivity" }, new () { Key="UiActivity", Name="App.StaticLookup.UiActivity" },
new () { Key="UiToast", Name="App.StaticLookup.UiToast" }, new () { Key="UiToast", Name="App.StaticLookup.UiToast" },
@ -5533,13 +5533,13 @@ public class ListFormSeeder_Saas : IDataSeedContributor, ITransientDependency
DisplayExpr = "name", DisplayExpr = "name",
ValueExpr = "key", ValueExpr = "key",
LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] { LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] {
new () { Key="Sms", Name="App.StaticLookup.Sms" }, new () { Key="Sms", Name="App.Sender.Sms" },
new () { Key="Mail", Name="App.StaticLookup.Mail" }, new () { Key="Mail", Name="App.StaticLookup.Mail" },
new () { Key="Rocket", Name="App.StaticLookup.Rocket" }, new () { Key="Rocket", Name="App.StaticLookup.Rocket" },
new () { Key="Desktop", Name="App.StaticLookup.Desktop" }, new () { Key="Desktop", Name="App.StaticLookup.Desktop" },
new () { Key="UiActivity", Name="App.StaticLookup.UiActivity" }, new () { Key="UiActivity", Name="App.StaticLookup.UiActivity" },
new () { Key="UiToast", Name="App.StaticLookup.UiToast" }, new () { Key="UiToast", Name="App.StaticLookup.UiToast" },
new () { Key="WhatsApp", Name="App.StaticLookup.WhatsApp" }, new () { Key="WhatsApp", Name="App.Sender.WhatsApp" },
}), }),
}), }),
ColumnCustomizationJson = DefaultColumnCustomizationJson, ColumnCustomizationJson = DefaultColumnCustomizationJson,
@ -6278,7 +6278,7 @@ public class ListFormSeeder_Saas : IDataSeedContributor, ITransientDependency
DisplayExpr = "name", DisplayExpr = "name",
ValueExpr = "key", ValueExpr = "key",
LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] { LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] {
new () { Key="public",Name="App.StaticLookup.Public" }, new () { Key="public",Name="App.Listform.ListformField.IsPublic" },
new () { Key="protected",Name="App.StaticLookup.Protected" }, new () { Key="protected",Name="App.StaticLookup.Protected" },
new () { Key="authenticated",Name="App.StaticLookup.Authenticated" }, new () { Key="authenticated",Name="App.StaticLookup.Authenticated" },
}), }),
@ -6888,7 +6888,7 @@ public class ListFormSeeder_Saas : IDataSeedContributor, ITransientDependency
EditOrderNo = 2, EditOrderNo = 2,
EditorType2 = EditorTypes.dxTextBox, EditorType2 = EditorTypes.dxTextBox,
ColSpan = 1, ColSpan = 1,
CaptionName = "App.Listform.ListformField.Url", CaptionName = "App.Sender.Rocket.Url",
Width = 0, Width = 0,
ListOrderNo = 4, ListOrderNo = 4,
Visible = true, Visible = true,
@ -7178,9 +7178,9 @@ public class ListFormSeeder_Saas : IDataSeedContributor, ITransientDependency
DisplayExpr = "name", DisplayExpr = "name",
ValueExpr = "key", ValueExpr = "key",
LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] { LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] {
new () { Key="Public.products.categories.Üyelik",Name="Public.products.categories.Üyelik" }, new () { Key="App.ProductsCategories.Uyelik",Name="App.ProductsCategories.Uyelik" },
new () { Key="Public.products.categories.Lisans",Name="Public.products.categories.Lisans" }, new () { Key="App.ProductsCategories.Lisans",Name="App.ProductsCategories.Lisans" },
new () { Key="Public.products.categories.Ek Hizmetler",Name="Public.products.categories.Ek Hizmetler" }, new () { Key="App.ProductsCategories.EkHizmetler",Name="App.ProductsCategories.EkHizmetler" },
}), }),
}), }),
ValidationRuleJson = DefaultValidationRuleRequiredJson, ValidationRuleJson = DefaultValidationRuleRequiredJson,
@ -9226,7 +9226,7 @@ public class ListFormSeeder_Saas : IDataSeedContributor, ITransientDependency
EditorType2 = EditorTypes.dxSelectBox, EditorType2 = EditorTypes.dxSelectBox,
ColSpan = 1, ColSpan = 1,
EditorOptions = EditorOptionValues.ShowClearButton, EditorOptions = EditorOptionValues.ShowClearButton,
CaptionName = "App.Listform.ListformField.CategoryId", CaptionName = "App.Listform.ListformField.Category",
Width = 0, Width = 0,
ListOrderNo = 7, ListOrderNo = 7,
Visible = true, Visible = true,
@ -9544,7 +9544,7 @@ public class ListFormSeeder_Saas : IDataSeedContributor, ITransientDependency
EditOrderNo = 3, EditOrderNo = 3,
EditorType2 = EditorTypes.dxTextBox, EditorType2 = EditorTypes.dxTextBox,
ColSpan = 1, ColSpan = 1,
CaptionName = "Abp.Account.EmailAddress", CaptionName = "App.Listform.ListformField.Email",
Width = 0, Width = 0,
ListOrderNo = 4, ListOrderNo = 4,
Visible = true, Visible = true,
@ -9779,7 +9779,7 @@ public class ListFormSeeder_Saas : IDataSeedContributor, ITransientDependency
EditOrderNo = 2, EditOrderNo = 2,
EditorType2 = EditorTypes.dxTextBox, EditorType2 = EditorTypes.dxTextBox,
ColSpan = 1, ColSpan = 1,
CaptionName = "App.Listform.ListformField.UserName", CaptionName = "Abp.Mailing.Smtp.UserName",
Width = 0, Width = 0,
ListOrderNo = 2, ListOrderNo = 2,
Visible = true, Visible = true,

View file

@ -441,12 +441,12 @@
"authority": ["App.Contact"] "authority": ["App.Contact"]
}, },
{ {
"key": "admin.videoroom.dashboard", "key": "admin.videoroom",
"path": "/admin/videoroom/dashboard", "path": "/admin/videoroom/dashboard",
"componentType": "normal", "componentType": "normal",
"componentPath": "@/views/admin/videoroom/Dashboard", "componentPath": "@/views/admin/videoroom/Dashboard",
"routeType": "protected", "routeType": "protected",
"authority": ["App.Videoroom.Dashboard"] "authority": ["App.Videoroom"]
}, },
{ {
"key": "admin.videoroom.list", "key": "admin.videoroom.list",
@ -457,12 +457,12 @@
"authority": ["App.Videoroom.List"] "authority": ["App.Videoroom.List"]
}, },
{ {
"key": "admin.videoroom.roomdetail", "key": "admin.videoroom.detail",
"path": "/admin/videoroom/room/:id", "path": "/admin/videoroom/room/:id",
"componentType": "normal", "componentType": "normal",
"componentPath": "@/views/admin/videoroom/RoomDetail", "componentPath": "@/views/admin/videoroom/RoomDetail",
"routeType": "protected", "routeType": "protected",
"authority": ["App.Videoroom.RoomDetail"] "authority": ["App.Videoroom.Detail"]
} }
], ],
"MenuGroups": [ "MenuGroups": [
@ -488,7 +488,7 @@
{ {
"ParentCode": "App.Saas", "ParentCode": "App.Saas",
"Code": "App.Saas.Definitions", "Code": "App.Saas.Definitions",
"DisplayName": "App.Definitions", "DisplayName": "App.Platform.Definitions",
"Order": 1, "Order": 1,
"Url": null, "Url": null,
"Icon": "FcFilingCabinet", "Icon": "FcFilingCabinet",
@ -1030,7 +1030,7 @@
{ {
"ParentCode": "App.Administration", "ParentCode": "App.Administration",
"Code": "App.Administration.Definitions", "Code": "App.Administration.Definitions",
"DisplayName": "App.Definitions", "DisplayName": "App.Platform.Definitions",
"Order": 1, "Order": 1,
"Url": null, "Url": null,
"Icon": "FcFilingCabinet", "Icon": "FcFilingCabinet",
@ -1190,7 +1190,7 @@
{ {
"ParentCode": "App.Administration", "ParentCode": "App.Administration",
"Code": "App.Administration.Restrictions", "Code": "App.Administration.Restrictions",
"DisplayName": "App.Restrictions", "DisplayName": "App.Platform.Restrictions",
"Order": 7, "Order": 7,
"Url": null, "Url": null,
"Icon": "FaLock", "Icon": "FaLock",
@ -1339,12 +1339,12 @@
}, },
{ {
"ParentCode": "App.Administration", "ParentCode": "App.Administration",
"Code": "App.Videoroom.Dashboard", "Code": "App.Videoroom",
"DisplayName": "App.Videoroom.Dashboard", "DisplayName": "App.Videoroom",
"Order": 10, "Order": 10,
"Url": "/admin/videoroom/dashboard", "Url": "/admin/videoroom/dashboard",
"Icon": "FcVideoCall", "Icon": "FcVideoCall",
"RequiredPermissionName": "App.Videoroom.Dashboard", "RequiredPermissionName": "App.Videoroom",
"IsDisabled": false "IsDisabled": false
}, },
{ {

View file

@ -565,7 +565,7 @@ public static class PlatformConsts
public static class AppErrorCodes public static class AppErrorCodes
{ {
public const string NoAuth = "Error:0001"; public const string NoAuth = "Error:0001";
public const string EntityNotFound = "App.NoResults"; public const string EntityNotFound = "App.Platform.NoResults2";
public const string ParameterNotValid = "Error:0003"; public const string ParameterNotValid = "Error:0003";
public const string SimilarInformationNotCopied = "Error:0004"; public const string SimilarInformationNotCopied = "Error:0004";
public const string InternalError = "Error:0005"; public const string InternalError = "Error:0005";

View file

@ -27,12 +27,12 @@ public static class WizardConsts
public static string PermExport(string code) => $"{WizardKey(code)}.Export"; public static string PermExport(string code) => $"{WizardKey(code)}.Export";
public static string PermImport(string code) => $"{WizardKey(code)}.Import"; public static string PermImport(string code) => $"{WizardKey(code)}.Import";
public static string PermNote(string code) => $"{WizardKey(code)}.Note"; public static string PermNote(string code) => $"{WizardKey(code)}.Note";
public static string LangKeyCreate => "Create"; public static string LangKeyCreate => "App.Platform.Create";
public static string LangKeyUpdate => "Update"; public static string LangKeyUpdate => "App.Platform.Update";
public static string LangKeyDelete => "Delete"; public static string LangKeyDelete => "App.Platform.Delete";
public static string LangKeyExport => "Export"; public static string LangKeyExport => "App.Platform.Export";
public static string LangKeyImport => "Import"; public static string LangKeyImport => "App.Platform.Import";
public static string LangKeyNote => "Note"; public static string LangKeyNote => "App.Platform.Note";
public static string MenuUrl(string code) => $"/admin/list/{code}"; public static string MenuUrl(string code) => $"/admin/list/{code}";
public static string MenuIcon => "FcList"; public static string MenuIcon => "FcList";

File diff suppressed because one or more lines are too long

View file

@ -31,8 +31,8 @@ public interface IPlatformSignInManager
public class PlatformSignInManager : AbpSignInManager, IPlatformSignInManager public class PlatformSignInManager : AbpSignInManager, IPlatformSignInManager
{ {
private const string UserLicenseProductName = "Public.products.userLicense"; private const string UserLicenseProductName = "App.PublicProducts.UserLicense";
private const string BranchLicenseProductName = "Public.products.branchHosting"; private const string BranchLicenseProductName = "App.PublicProducts.BranchHosting";
private const string ApprovedOrderStatus = "Approved"; private const string ApprovedOrderStatus = "Approved";
private readonly IClock clock; private readonly IClock clock;

View file

@ -357,12 +357,12 @@ internal static class DynamicReportImageHelper
if (!string.IsNullOrWhiteSpace(filterText)) if (!string.IsNullOrWhiteSpace(filterText))
{ {
parts.Add(localizer["ListForms.ListFormField.Filter"] + ": " + filterText); parts.Add(localizer["App.ListFormField.Filter"] + ": " + filterText);
} }
if (!string.IsNullOrWhiteSpace(sortText)) if (!string.IsNullOrWhiteSpace(sortText))
{ {
parts.Add(localizer["ListForms.ListFormField.Sorting"] + ": " + sortText); parts.Add(localizer["App.ListFormField.Sorting"] + ": " + sortText);
} }
return string.Join(" | ", parts); return string.Join(" | ", parts);
@ -911,8 +911,8 @@ internal static class DynamicReportImageHelper
var fieldName = parts[0].Trim('"'); var fieldName = parts[0].Trim('"');
var direction = parts.Length > 1 ? parts[1] : "asc"; var direction = parts.Length > 1 ? parts[1] : "asc";
var directionText = string.Equals(direction, "desc", StringComparison.OrdinalIgnoreCase) var directionText = string.Equals(direction, "desc", StringComparison.OrdinalIgnoreCase)
? localizer["ListForms.ListFormField.Sorting_Descending"] ? localizer["App.ListFormField.SortingDescending"]
: localizer["ListForms.ListFormField.Sorting_Ascending"]; : localizer["App.ListFormField.SortingAscending"];
return $"{GetFieldCaption(fieldName, fieldCaptions)} {directionText}"; return $"{GetFieldCaption(fieldName, fieldCaptions)} {directionText}";
}) })

View file

@ -433,7 +433,7 @@ const StyleModal = ({
}} }}
/> />
<Button icon={<FaPlus />} size="sm" variant="default" onClick={addCustomClass}> <Button icon={<FaPlus />} size="sm" variant="default" onClick={addCustomClass}>
{translate('::ListForms.Wizard.Add')} {translate('::App.Platform.Add')}
</Button> </Button>
</div> </div>
)} )}
@ -475,10 +475,10 @@ const StyleModal = ({
</span> </span>
<div className="flex gap-2"> <div className="flex gap-2">
<Button size="sm" variant="default" onClick={() => onChange('')}> <Button size="sm" variant="default" onClick={() => onChange('')}>
{translate('::App.DeveloperKit.CrudEndpoints.Clear')} {translate('::App.Platform.Clear')}
</Button> </Button>
<Button size="sm" variant="solid" onClick={onClose}> <Button size="sm" variant="solid" onClick={onClose}>
{translate('::OK')} {translate('::App.Platform.OK')}
</Button> </Button>
</div> </div>
</div> </div>

View file

@ -5,7 +5,7 @@ export const CUSTOM_COMPONENTS: ComponentDefinition[] = [
name: 'Alert', name: 'Alert',
icon: 'AlertCircle', icon: 'AlertCircle',
category: 'feedback', category: 'feedback',
description: 'App.CodeLayout.Component.Alert.Description', description: 'App.ComponentAlert.AlertDescription',
properties: [ properties: [
{ {
name: 'children', name: 'children',
@ -62,7 +62,7 @@ export const CUSTOM_COMPONENTS: ComponentDefinition[] = [
name: 'Avatar', name: 'Avatar',
icon: 'User', icon: 'User',
category: 'media', category: 'media',
description: 'App.CodeLayout.Component.Avatar.Description', description: 'App.ComponentAvatar.AvatarDescription',
properties: [ properties: [
{ {
name: 'alt', name: 'alt',
@ -108,7 +108,7 @@ export const CUSTOM_COMPONENTS: ComponentDefinition[] = [
name: 'Badge', name: 'Badge',
icon: 'Tag', icon: 'Tag',
category: 'feedback', category: 'feedback',
description: 'App.CodeLayout.Component.Badge.Description', description: 'App.ComponentBadge.BadgeDescription',
properties: [ properties: [
{ {
name: 'children', name: 'children',
@ -138,7 +138,7 @@ export const CUSTOM_COMPONENTS: ComponentDefinition[] = [
name: 'Button', name: 'Button',
icon: 'MousePointer', icon: 'MousePointer',
category: 'basic', category: 'basic',
description: 'App.CodeLayout.Component.Button.Description', description: 'App.ComponentButton.ButtonDescription',
properties: [ properties: [
{ {
name: 'children', name: 'children',
@ -192,7 +192,7 @@ export const CUSTOM_COMPONENTS: ComponentDefinition[] = [
name: 'Card', name: 'Card',
icon: 'Square', icon: 'Square',
category: 'layout', category: 'layout',
description: 'App.CodeLayout.Component.Card.Description', description: 'App.ComponentCard.CardDescription',
properties: [ properties: [
{ {
name: 'children', name: 'children',
@ -250,7 +250,7 @@ export const CUSTOM_COMPONENTS: ComponentDefinition[] = [
name: 'Checkbox', name: 'Checkbox',
icon: 'Check', icon: 'Check',
category: 'form', category: 'form',
description: 'App.CodeLayout.Component.Checkbox.Description', description: 'App.ComponentCheckbox.CheckboxDescription',
properties: [ properties: [
{ {
name: 'children', name: 'children',
@ -298,7 +298,7 @@ export const CUSTOM_COMPONENTS: ComponentDefinition[] = [
name: 'DatePicker', name: 'DatePicker',
icon: 'Calendar', icon: 'Calendar',
category: 'form', category: 'form',
description: 'App.CodeLayout.Component.DatePicker.Description', description: 'App.ComponentDatePicker.DatePickerDescription',
properties: [ properties: [
{ {
name: 'closePickerOnChange', name: 'closePickerOnChange',
@ -510,7 +510,7 @@ export const CUSTOM_COMPONENTS: ComponentDefinition[] = [
name: 'Drawer', name: 'Drawer',
icon: 'Sidebar', icon: 'Sidebar',
category: 'interactive', category: 'interactive',
description: 'App.CodeLayout.Component.Drawer.Description', description: 'App.ComponentDrawer.DrawerDescription',
properties: [ properties: [
{ {
name: 'children', name: 'children',
@ -583,7 +583,7 @@ export const CUSTOM_COMPONENTS: ComponentDefinition[] = [
name: 'Dropdown', name: 'Dropdown',
icon: 'MoreVertical', icon: 'MoreVertical',
category: 'interactive', category: 'interactive',
description: 'App.CodeLayout.Component.Dropdown.Description', description: 'App.ComponentDropdown.DropdownDescription',
properties: [ properties: [
{ {
name: 'title', name: 'title',
@ -644,7 +644,7 @@ export const CUSTOM_COMPONENTS: ComponentDefinition[] = [
name: 'Input', name: 'Input',
icon: 'Edit', icon: 'Edit',
category: 'form', category: 'form',
description: 'App.CodeLayout.Component.Input.Description', description: 'App.ComponentInput.InputDescription',
properties: [ properties: [
{ {
name: 'disabled', name: 'disabled',
@ -768,7 +768,7 @@ export const CUSTOM_COMPONENTS: ComponentDefinition[] = [
name: 'Menu', name: 'Menu',
icon: 'Menu', icon: 'Menu',
category: 'navigation', category: 'navigation',
description: 'App.CodeLayout.Component.Menu.Description', description: 'App.ComponentMenu.MenuDescription',
properties: [ properties: [
{ name: 'children', type: 'string', value: '', category: 'properties' }, { name: 'children', type: 'string', value: '', category: 'properties' },
{ {
@ -828,7 +828,7 @@ export const CUSTOM_COMPONENTS: ComponentDefinition[] = [
name: 'Notification', name: 'Notification',
icon: 'Bell', icon: 'Bell',
category: 'feedback', category: 'feedback',
description: 'App.CodeLayout.Component.Notification.Description', description: 'App.ComponentNotification.NotificationDescription',
properties: [ properties: [
{ {
name: 'children', name: 'children',
@ -873,7 +873,7 @@ export const CUSTOM_COMPONENTS: ComponentDefinition[] = [
name: 'Pagination', name: 'Pagination',
icon: 'ChevronRight', icon: 'ChevronRight',
category: 'navigation', category: 'navigation',
description: 'App.CodeLayout.Component.Pagination.Description', description: 'App.ComponentPagination.PaginationDescription',
properties: [ properties: [
{ name: 'currentPage', type: 'number', value: 1, category: 'properties' }, { name: 'currentPage', type: 'number', value: 1, category: 'properties' },
{ {
@ -893,7 +893,7 @@ export const CUSTOM_COMPONENTS: ComponentDefinition[] = [
name: 'Progress', name: 'Progress',
icon: 'Activity', icon: 'Activity',
category: 'feedback', category: 'feedback',
description: 'App.CodeLayout.Component.Progress.Description', description: 'App.ComponentProgress.ProgressDescription',
properties: [ properties: [
{ name: 'customInfo', type: 'string', value: '', category: 'properties' }, { name: 'customInfo', type: 'string', value: '', category: 'properties' },
{ name: 'color', type: 'string', value: '', category: 'styling' }, { name: 'color', type: 'string', value: '', category: 'styling' },
@ -1002,7 +1002,7 @@ export const CUSTOM_COMPONENTS: ComponentDefinition[] = [
name: 'Segment', name: 'Segment',
icon: 'ToggleLeft', icon: 'ToggleLeft',
category: 'form', category: 'form',
description: 'App.CodeLayout.Component.Segment.Description', description: 'App.ComponentSegment.SegmentDescription',
properties: [ properties: [
{ name: 'children', type: 'string', value: '', category: 'properties' }, { name: 'children', type: 'string', value: '', category: 'properties' },
{ {
@ -1045,7 +1045,7 @@ export const CUSTOM_COMPONENTS: ComponentDefinition[] = [
name: 'Select', name: 'Select',
icon: 'ChevronDown', icon: 'ChevronDown',
category: 'form', category: 'form',
description: 'App.CodeLayout.Component.Select.Description', description: 'App.ComponentSelect.SelectDescription',
properties: [ properties: [
{ name: 'children', type: 'string', value: '', category: 'properties' }, { name: 'children', type: 'string', value: '', category: 'properties' },
{ {
@ -1100,7 +1100,7 @@ export const CUSTOM_COMPONENTS: ComponentDefinition[] = [
name: 'Skeleton', name: 'Skeleton',
icon: 'Square', icon: 'Square',
category: 'feedback', category: 'feedback',
description: 'App.CodeLayout.Component.Skeleton.Description', description: 'App.ComponentSkeleton.SkeletonDescription',
properties: [ properties: [
{ {
name: 'animated', name: 'animated',
@ -1125,7 +1125,7 @@ export const CUSTOM_COMPONENTS: ComponentDefinition[] = [
name: 'Spinner', name: 'Spinner',
icon: 'Loader', icon: 'Loader',
category: 'feedback', category: 'feedback',
description: 'App.CodeLayout.Component.Spinner.Description', description: 'App.ComponentSpinner.SpinnerDescription',
properties: [ properties: [
{ name: 'color', type: 'string', value: '#3b82f6', category: 'styling' }, { name: 'color', type: 'string', value: '#3b82f6', category: 'styling' },
{ {
@ -1154,7 +1154,7 @@ export const CUSTOM_COMPONENTS: ComponentDefinition[] = [
name: 'Steps', name: 'Steps',
icon: 'GitBranch', icon: 'GitBranch',
category: 'navigation', category: 'navigation',
description: 'App.CodeLayout.Component.Steps.Description', description: 'App.ComponentSteps.StepsDescription',
properties: [ properties: [
{ name: 'children', type: 'string', value: '', category: 'properties' }, { name: 'children', type: 'string', value: '', category: 'properties' },
{ name: 'current', type: 'number', value: 0, category: 'properties' }, { name: 'current', type: 'number', value: 0, category: 'properties' },
@ -1178,20 +1178,20 @@ export const CUSTOM_COMPONENTS: ComponentDefinition[] = [
value: [ value: [
{ {
title: 'Giriş', title: 'Giriş',
description: 'App.CodeLayout.Component.Array.Description', description: 'App.ComponentArray.ArrayDescription',
icon: '', icon: '',
}, },
{ {
title: 'Sipariş', title: 'Sipariş',
description: 'App.CodeLayout.Component.Array.Description2', description: 'App.ComponentArray.ArrayDescription2',
icon: '', icon: '',
}, },
{ {
title: 'İnceleme', title: 'İnceleme',
description: 'App.CodeLayout.Component.Array.Description3', description: 'App.ComponentArray.ArrayDescription3',
icon: '', icon: '',
}, },
{ title: 'Onay', description: 'App.CodeLayout.Component.Array.Description4', icon: '' }, { title: 'Onay', description: 'App.ComponentArray.ArrayDescription4', icon: '' },
], ],
category: 'properties', category: 'properties',
}, },
@ -1203,7 +1203,7 @@ export const CUSTOM_COMPONENTS: ComponentDefinition[] = [
name: 'Switcher', name: 'Switcher',
icon: 'ToggleLeft', icon: 'ToggleLeft',
category: 'form', category: 'form',
description: 'App.CodeLayout.Component.Switcher.Description', description: 'App.ComponentSwitcher.SwitcherDescription',
properties: [ properties: [
{ {
name: 'checked', name: 'checked',
@ -1362,7 +1362,7 @@ export const CUSTOM_COMPONENTS: ComponentDefinition[] = [
name: 'Tag', name: 'Tag',
icon: 'Hash', icon: 'Hash',
category: 'feedback', category: 'feedback',
description: 'App.CodeLayout.Component.Tag.Description', description: 'App.ComponentTag.TagDescription',
properties: [ properties: [
{ {
name: 'children', name: 'children',
@ -1383,7 +1383,7 @@ export const CUSTOM_COMPONENTS: ComponentDefinition[] = [
name: 'TimeInput', name: 'TimeInput',
icon: 'Clock', icon: 'Clock',
category: 'form', category: 'form',
description: 'App.CodeLayout.Component.TimeInput.Description', description: 'App.ComponentTimeInput.TimeInputDescription',
properties: [ properties: [
{ name: 'amLabel', type: 'string', value: 'AM', category: 'properties' }, { name: 'amLabel', type: 'string', value: 'AM', category: 'properties' },
{ {
@ -1468,7 +1468,7 @@ export const CUSTOM_COMPONENTS: ComponentDefinition[] = [
name: 'Tooltip', name: 'Tooltip',
icon: 'MessageCircle', icon: 'MessageCircle',
category: 'interactive', category: 'interactive',
description: 'App.CodeLayout.Component.Tooltip.Description', description: 'App.ComponentTooltip.TooltipDescription',
properties: [ properties: [
{ {
name: 'children', name: 'children',
@ -1511,7 +1511,7 @@ export const CUSTOM_COMPONENTS: ComponentDefinition[] = [
name: 'Upload', name: 'Upload',
icon: 'Upload', icon: 'Upload',
category: 'form', category: 'form',
description: 'App.CodeLayout.Component.Upload.Description', description: 'App.ComponentUpload.UploadDescription',
properties: [ properties: [
{ {
name: 'children', name: 'children',
@ -1560,7 +1560,7 @@ export const CUSTOM_COMPONENTS: ComponentDefinition[] = [
name: 'Grid', name: 'Grid',
icon: 'Grid3x3', icon: 'Grid3x3',
category: 'layout', category: 'layout',
description: 'App.CodeLayout.Component.Grid.Description', description: 'App.ComponentGrid.GridDescription',
properties: [ properties: [
{ name: 'children', type: 'string', value: '', category: 'properties' }, { name: 'children', type: 'string', value: '', category: 'properties' },
{ {
@ -1707,7 +1707,7 @@ export const HTML_ELEMENTS: ComponentDefinition[] = [
name: 'div', name: 'div',
icon: 'Square', icon: 'Square',
category: 'basic', category: 'basic',
description: 'App.CodeLayout.Component.Div.Description', description: 'App.ComponentDiv.DivDescription',
properties: [ properties: [
{ {
name: 'children', name: 'children',
@ -1763,7 +1763,7 @@ export const HTML_ELEMENTS: ComponentDefinition[] = [
name: 'input', name: 'input',
icon: 'Input', icon: 'Input',
category: 'form', category: 'form',
description: 'App.CodeLayout.Component.Input.Description2', description: 'App.ComponentInput.InputDescription2',
properties: [ properties: [
{ {
name: 'type', name: 'type',
@ -1808,7 +1808,7 @@ export const HTML_ELEMENTS: ComponentDefinition[] = [
name: 'button', name: 'button',
icon: 'MousePointerClick', icon: 'MousePointerClick',
category: 'form', category: 'form',
description: 'App.CodeLayout.Component.Button.Description2', description: 'App.ComponentButton.ButtonDescription2',
properties: [ properties: [
{ {
name: 'children', name: 'children',
@ -1856,7 +1856,7 @@ export const HTML_ELEMENTS: ComponentDefinition[] = [
name: 'textarea', name: 'textarea',
icon: 'AlignLeft', icon: 'AlignLeft',
category: 'form', category: 'form',
description: 'App.CodeLayout.Component.Textarea.Description', description: 'App.ComponentTextarea.TextareaDescription',
properties: [ properties: [
{ {
name: 'value', name: 'value',
@ -1914,7 +1914,7 @@ export const HTML_ELEMENTS: ComponentDefinition[] = [
name: 'select', name: 'select',
icon: 'ListTree', icon: 'ListTree',
category: 'form', category: 'form',
description: 'App.CodeLayout.Component.Select.Description2', description: 'App.ComponentSelect.SelectDescription2',
properties: [ properties: [
{ {
name: 'value', name: 'value',
@ -1960,7 +1960,7 @@ export const HTML_ELEMENTS: ComponentDefinition[] = [
name: 'checkbox', name: 'checkbox',
icon: 'CheckSquare', icon: 'CheckSquare',
category: 'form', category: 'form',
description: 'App.CodeLayout.Component.Checkbox.Description2', description: 'App.ComponentCheckbox.CheckboxDescription2',
properties: [ properties: [
{ {
name: 'checked', name: 'checked',
@ -1990,7 +1990,7 @@ export const HTML_ELEMENTS: ComponentDefinition[] = [
name: 'p', name: 'p',
icon: 'Text', icon: 'Text',
category: 'basic', category: 'basic',
description: 'App.CodeLayout.Component.P.Description', description: 'App.ComponentP.PDescription',
properties: [ properties: [
{ {
name: 'children', name: 'children',
@ -2024,7 +2024,7 @@ export const HTML_ELEMENTS: ComponentDefinition[] = [
name: 'span', name: 'span',
icon: 'Type', icon: 'Type',
category: 'basic', category: 'basic',
description: 'App.CodeLayout.Component.Span.Description', description: 'App.ComponentSpan.SpanDescription',
properties: [ properties: [
{ {
name: 'children', name: 'children',
@ -2058,7 +2058,7 @@ export const HTML_ELEMENTS: ComponentDefinition[] = [
name: 'h1', name: 'h1',
icon: 'Heading1', icon: 'Heading1',
category: 'basic', category: 'basic',
description: 'App.CodeLayout.Component.H1.Description', description: 'App.ComponentH1.H1Description',
properties: [ properties: [
{ {
name: 'children', name: 'children',
@ -2093,7 +2093,7 @@ export const HTML_ELEMENTS: ComponentDefinition[] = [
name: 'h2', name: 'h2',
icon: 'Heading2', icon: 'Heading2',
category: 'basic', category: 'basic',
description: 'App.CodeLayout.Component.H2.Description', description: 'App.ComponentH2.H2Description',
properties: [ properties: [
{ {
name: 'children', name: 'children',
@ -2128,7 +2128,7 @@ export const HTML_ELEMENTS: ComponentDefinition[] = [
name: 'h3', name: 'h3',
icon: 'Heading3', icon: 'Heading3',
category: 'basic', category: 'basic',
description: 'App.CodeLayout.Component.H3.Description', description: 'App.ComponentH3.H3Description',
properties: [ properties: [
{ {
name: 'children', name: 'children',
@ -2162,7 +2162,7 @@ export const HTML_ELEMENTS: ComponentDefinition[] = [
name: 'h4', name: 'h4',
icon: 'Heading4', icon: 'Heading4',
category: 'basic', category: 'basic',
description: 'App.CodeLayout.Component.H4.Description', description: 'App.ComponentH4.H4Description',
properties: [ properties: [
{ {
name: 'children', name: 'children',
@ -2190,7 +2190,7 @@ export const HTML_ELEMENTS: ComponentDefinition[] = [
name: 'h5', name: 'h5',
icon: 'Heading5', icon: 'Heading5',
category: 'basic', category: 'basic',
description: 'App.CodeLayout.Component.H5.Description', description: 'App.ComponentH5.H5Description',
properties: [ properties: [
{ {
name: 'children', name: 'children',
@ -2218,7 +2218,7 @@ export const HTML_ELEMENTS: ComponentDefinition[] = [
name: 'img', name: 'img',
icon: 'Image', icon: 'Image',
category: 'media', category: 'media',
description: 'App.CodeLayout.Component.Img.Description', description: 'App.ComponentImg.ImgDescription',
properties: [ properties: [
{ {
name: 'src', name: 'src',

View file

@ -44,7 +44,7 @@ const StatusBadge: React.FC<StatusBadgeProps> = ({ status, size = 'md', showIcon
return { return {
color: 'bg-yellow-100 text-yellow-800', color: 'bg-yellow-100 text-yellow-800',
icon: <FaExclamationTriangle size={14} />, icon: <FaExclamationTriangle size={14} />,
text: 'App.Platform.Priority.Low', text: 'App.ListFormTodoBoard.PriorityLow',
} }
case 'normal': case 'normal':
return { return {

View file

@ -23,7 +23,7 @@ const ComponentPreview: React.FC<ComponentPreviewProps> = ({ componentName, clas
if (!componentName) { if (!componentName) {
return ( return (
<div className="text-sm text-gray-500 dark:text-gray-400"> <div className="text-sm text-gray-500 dark:text-gray-400">
{translate('::App.DeveloperKit.ComponentPreview.NoComponentName')} {translate('::App.DeveloperKitComponentPreview.NoComponentName')}
</div> </div>
) )
} }

View file

@ -34,7 +34,7 @@ export const FileUploadArea: React.FC<FileUploadAreaProps> = ({
const fileExtension = '.' + file.name.split('.').pop()?.toLowerCase() const fileExtension = '.' + file.name.split('.').pop()?.toLowerCase()
if (!acceptedFormats.includes(fileExtension)) { if (!acceptedFormats.includes(fileExtension)) {
setError( setError(
translate('::App.Listforms.ImportManager.FileTypeError') + `${acceptedFormats.join(', ')}`, translate('::App.ListFormImportManager.FileTypeError') + `${acceptedFormats.join(', ')}`,
) )
return false return false
} }
@ -124,14 +124,14 @@ export const FileUploadArea: React.FC<FileUploadAreaProps> = ({
/> />
<div className="text-lg font-medium text-gray-700 dark:text-gray-200 mb-2"> <div className="text-lg font-medium text-gray-700 dark:text-gray-200 mb-2">
{dragActive {dragActive
? translate('::App.Listforms.ImportManager.DropHere') ? translate('::App.ListFormImportManager.DropHere')
: translate('::App.Listforms.ImportManager.UploadYourFile')} : translate('::App.ListFormImportManager.UploadYourFile')}
</div> </div>
<p className="text-gray-500 dark:text-gray-400 mb-4"> <p className="text-gray-500 dark:text-gray-400 mb-4">
{translate('::App.Listforms.ImportManager.DragOrClick')} {translate('::App.ListFormImportManager.DragOrClick')}
</p> </p>
<div className="text-sm text-gray-400 dark:text-gray-500"> <div className="text-sm text-gray-400 dark:text-gray-500">
{translate('::App.Listforms.ImportManager.SupportedFormats')}{' '} {translate('::App.ListFormImportManager.SupportedFormats')}{' '}
{acceptedFormats.join(', ')} Max size: {maxSize}MB {acceptedFormats.join(', ')} Max size: {maxSize}MB
</div> </div>
</div> </div>
@ -155,7 +155,7 @@ export const FileUploadArea: React.FC<FileUploadAreaProps> = ({
icon={<FaTimes className="w-4 h-4" />} icon={<FaTimes className="w-4 h-4" />}
variant="plain" variant="plain"
size="xs" size="xs"
title={translate('::Clear')} title={translate('::App.Platform.Clear')}
/> />
</div> </div>
</div> </div>
@ -179,8 +179,8 @@ export const FileUploadArea: React.FC<FileUploadAreaProps> = ({
size="sm" size="sm"
> >
{loading {loading
? translate('::App.Uploading') ? translate('::App.Platform.Uploading')
: translate('::App.Listforms.ImportManager.UploadFile')} : translate('::App.Platform.UploadFile')}
</Button> </Button>
)} )}
</div> </div>

View file

@ -211,21 +211,21 @@ export const ImportDashboard: React.FC<ImportDashboardProps> = ({ gridDto }) =>
const getSessionStatusLabel = (status: string) => { const getSessionStatusLabel = (status: string) => {
switch (status) { switch (status) {
case 'uploading': case 'uploading':
return translate('::App.Uploading') return translate('::App.Platform.Uploading')
case 'validating': case 'validating':
return translate('::App.Listforms.ImportManager.Validating') return translate('::App.ListFormImportManager.Validating')
case 'processing': case 'processing':
return translate('::App.Listforms.ImportManager.Processing') return translate('::App.ListFormStatus.Processing')
case 'uploaded': case 'uploaded':
return translate('::App.Listforms.ImportManager.Uploaded') return translate('::App.ListFormImportManager.Uploaded')
case 'failed': case 'failed':
return translate('::App.Listforms.ImportManager.Failed') return translate('::App.Platform.Failed')
case 'executed': case 'executed':
return translate('::App.Listforms.ImportManager.Executed') return translate('::App.ListFormImportManager.Executed')
case 'executed_with_errors': case 'executed_with_errors':
return translate('::App.Listforms.ImportManager.ExecutedWithErrors') return translate('::App.ListFormImportManager.ExecutedWithErrors')
case 'execute_failed': case 'execute_failed':
return translate('::App.Listforms.ImportManager.ExecuteFailed') return translate('::App.ListFormImportManager.ExecuteFailed')
default: default:
return status.charAt(0).toUpperCase() + status.slice(1) return status.charAt(0).toUpperCase() + status.slice(1)
} }
@ -234,15 +234,15 @@ export const ImportDashboard: React.FC<ImportDashboardProps> = ({ gridDto }) =>
const getSessionGuidance = (status: string) => { const getSessionGuidance = (status: string) => {
switch (status) { switch (status) {
case 'uploaded': case 'uploaded':
return translate('::App.Listforms.ImportManager.UploadedDescription') return translate('::App.ListFormImportManager.UploadedDescription')
case 'executed': case 'executed':
return translate('::App.Listforms.ImportManager.ExecutedDescription') return translate('::App.ListFormImportManager.ExecutedDescription')
case 'executed_with_errors': case 'executed_with_errors':
return translate('::App.Listforms.ImportManager.ExecutedWithErrorsDescription') return translate('::App.ListFormImportManager.ExecutedWithErrorsDescription')
case 'execute_failed': case 'execute_failed':
return translate('::App.Listforms.ImportManager.ExecuteFailedDescription') return translate('::App.ListFormImportManager.ExecuteFailedDescription')
case 'failed': case 'failed':
return translate('::App.Listforms.ImportManager.FailedDescription') return translate('::App.ListFormImportManager.FailedDescription')
default: default:
return null return null
} }
@ -364,7 +364,7 @@ export const ImportDashboard: React.FC<ImportDashboardProps> = ({ gridDto }) =>
<div className="px-3 py-3 border-b border-gray-200 dark:border-gray-700 flex items-center justify-between"> <div className="px-3 py-3 border-b border-gray-200 dark:border-gray-700 flex items-center justify-between">
<h3 className="text-xl font-semibold text-gray-800 dark:text-gray-100 flex items-center"> <h3 className="text-xl font-semibold text-gray-800 dark:text-gray-100 flex items-center">
<FaDownload className="w-4 h-4 mr-2" /> <FaDownload className="w-4 h-4 mr-2" />
{translate('::App.Listforms.ImportManager.TemplateColumns')} ( {translate('::App.ListFormImportManager.TemplateColumns')} (
{editableColumns.length}) {editableColumns.length})
</h3> </h3>
@ -377,7 +377,7 @@ export const ImportDashboard: React.FC<ImportDashboardProps> = ({ gridDto }) =>
variant="twoTone" variant="twoTone"
size="xs" size="xs"
> >
{translate('::App.Listforms.ImportManager.ExcelTemplate')} {translate('::App.ListFormImportManager.ExcelTemplate')}
</Button> </Button>
<Button <Button
@ -387,7 +387,7 @@ export const ImportDashboard: React.FC<ImportDashboardProps> = ({ gridDto }) =>
variant="twoTone" variant="twoTone"
size="xs" size="xs"
> >
{translate('::App.Listforms.ImportManager.CsvTemplate')} {translate('::App.ListFormImportManager.CsvTemplate')}
</Button> </Button>
</div> </div>
</div> </div>
@ -400,10 +400,10 @@ export const ImportDashboard: React.FC<ImportDashboardProps> = ({ gridDto }) =>
{translate('::App.Listform.ListformField.Column')} {translate('::App.Listform.ListformField.Column')}
</th> </th>
<th className="px-4 py-2 text-left text-xs font-medium text-gray-500 dark:text-gray-400 uppercase"> <th className="px-4 py-2 text-left text-xs font-medium text-gray-500 dark:text-gray-400 uppercase">
{translate('::ListForms.ListFormEdit.Type')} {translate('::App.Platform.PlatformType')}
</th> </th>
<th className="px-4 py-2 text-left text-xs font-medium text-gray-500 dark:text-gray-400 uppercase"> <th className="px-4 py-2 text-left text-xs font-medium text-gray-500 dark:text-gray-400 uppercase">
{translate('::App.Required')} {translate('::App.Listform.ListformField.Required')}
</th> </th>
<th className="px-4 py-2 text-left text-xs font-medium text-gray-500 dark:text-gray-400 uppercase"> <th className="px-4 py-2 text-left text-xs font-medium text-gray-500 dark:text-gray-400 uppercase">
{translate('::Abp.Mailing.Default')} {translate('::Abp.Mailing.Default')}
@ -439,11 +439,11 @@ export const ImportDashboard: React.FC<ImportDashboardProps> = ({ gridDto }) =>
(rule: any) => rule.type === 'required', (rule: any) => rule.type === 'required',
) ? ( ) ? (
<span className="text-red-500 dark:text-red-300 font-medium"> <span className="text-red-500 dark:text-red-300 font-medium">
{translate('::App.Listforms.ImportManager.Yes')} {translate('::App.Platform.Yes')}
</span> </span>
) : ( ) : (
<span className="text-gray-400 dark:text-gray-500"> <span className="text-gray-400 dark:text-gray-500">
{translate('::App.Listforms.ImportManager.No')} {translate('::App.Platform.No')}
</span> </span>
)} )}
</td> </td>
@ -462,7 +462,7 @@ export const ImportDashboard: React.FC<ImportDashboardProps> = ({ gridDto }) =>
<div className="flex items-center justify-center py-4"> <div className="flex items-center justify-center py-4">
<div className="animate-spin rounded-full h-6 w-6 border-b-2 border-blue-500"></div> <div className="animate-spin rounded-full h-6 w-6 border-b-2 border-blue-500"></div>
<span className="ml-2 text-gray-600 dark:text-gray-400"> <span className="ml-2 text-gray-600 dark:text-gray-400">
{translate('::App.Listforms.ImportManager.GeneratingTemplate')} {translate('::App.ListFormImportManager.GeneratingTemplate')}
</span> </span>
</div> </div>
)} )}
@ -474,7 +474,7 @@ export const ImportDashboard: React.FC<ImportDashboardProps> = ({ gridDto }) =>
<div className="bg-white dark:bg-gray-900 rounded-xl shadow-sm border border-gray-200 dark:border-gray-700 p-4 h-full"> <div className="bg-white dark:bg-gray-900 rounded-xl shadow-sm border border-gray-200 dark:border-gray-700 p-4 h-full">
<h2 className="text-xl font-semibold text-gray-800 dark:text-gray-100 mb-4 flex items-center"> <h2 className="text-xl font-semibold text-gray-800 dark:text-gray-100 mb-4 flex items-center">
<FaUpload className="w-5 h-5 mr-2 text-green-500" /> <FaUpload className="w-5 h-5 mr-2 text-green-500" />
{translate('::App.Listforms.ImportManager.UploadData')} {translate('::App.ListFormImportManager.UploadData')}
</h2> </h2>
<FileUploadArea <FileUploadArea
onFileUpload={handleFileUpload} onFileUpload={handleFileUpload}
@ -513,9 +513,9 @@ export const ImportDashboard: React.FC<ImportDashboardProps> = ({ gridDto }) =>
<div className="text-center text-gray-500 dark:text-gray-400"> <div className="text-center text-gray-500 dark:text-gray-400">
<FaEye className="w-16 h-16 mx-auto mb-4 text-gray-300 dark:text-gray-600" /> <FaEye className="w-16 h-16 mx-auto mb-4 text-gray-300 dark:text-gray-600" />
<div className="text-xl font-medium mb-2"> <div className="text-xl font-medium mb-2">
{translate('::App.Listforms.ImportManager.NoDataToPreview')} {translate('::App.ListFormImportManager.NoDataToPreview')}
</div> </div>
<div>{translate('::App.Listforms.ImportManager.UploadFileToPreview')}</div> <div>{translate('::App.ListFormImportManager.UploadFileToPreview')}</div>
</div> </div>
</div> </div>
)} )}
@ -548,7 +548,7 @@ export const ImportDashboard: React.FC<ImportDashboardProps> = ({ gridDto }) =>
</div> </div>
{currentSession?.id === session.id && ( {currentSession?.id === session.id && (
<span className="inline-flex items-center px-2 py-1 rounded-full text-xs font-medium bg-blue-100 text-blue-800 dark:bg-gray-800 dark:text-blue-300"> <span className="inline-flex items-center px-2 py-1 rounded-full text-xs font-medium bg-blue-100 text-blue-800 dark:bg-gray-800 dark:text-blue-300">
{translate('::App.Status.Active')} {translate('::App.Listform.ListformField.IsActive')}
</span> </span>
)} )}
</div> </div>
@ -557,7 +557,7 @@ export const ImportDashboard: React.FC<ImportDashboardProps> = ({ gridDto }) =>
<div className="flex items-center space-x-4"> <div className="flex items-center space-x-4">
<div className="text-right"> <div className="text-right">
<div className="text-sm font-medium text-gray-800 dark:text-gray-100"> <div className="text-sm font-medium text-gray-800 dark:text-gray-100">
{session.totalRows} {translate('::App.Listforms.ImportManager.TotalRows')} {session.totalRows} {translate('::App.ListFormImportManager.TotalRows')}
</div> </div>
</div> </div>
@ -576,7 +576,7 @@ export const ImportDashboard: React.FC<ImportDashboardProps> = ({ gridDto }) =>
variant={expandedSessions.has(session.id) ? 'twoTone' : 'plain'} variant={expandedSessions.has(session.id) ? 'twoTone' : 'plain'}
color="red-600" color="red-600"
size="xs" size="xs"
title={translate('::App.Listforms.ImportManager.ViewExecutionDetails')} title={translate('::App.ListFormImportManager.ViewExecutionDetails')}
/> />
<Button <Button
onClick={async () => { onClick={async () => {
@ -605,7 +605,7 @@ export const ImportDashboard: React.FC<ImportDashboardProps> = ({ gridDto }) =>
icon={<FaSync className="w-4 h-4" />} icon={<FaSync className="w-4 h-4" />}
variant="twoTone" variant="twoTone"
size="xs" size="xs"
title={translate('::App.Listforms.ImportManager.RefreshExecutionDetails')} title={translate('::App.ListFormImportManager.RefreshExecutionDetails')}
/> />
<Button <Button
onClick={async () => { onClick={async () => {
@ -622,8 +622,8 @@ export const ImportDashboard: React.FC<ImportDashboardProps> = ({ gridDto }) =>
size="xs" size="xs"
title={ title={
currentSession?.id === session.id currentSession?.id === session.id
? translate('::App.Listforms.ImportManager.CannotDeleteActiveSession') ? translate('::App.ListFormImportManager.CannotDeleteActiveSession')
: translate('::App.Listforms.ImportManager.DeleteImportSession') : translate('::App.ListFormImportManager.DeleteImportSession')
} }
/> />
</div> </div>
@ -666,7 +666,7 @@ export const ImportDashboard: React.FC<ImportDashboardProps> = ({ gridDto }) =>
<div className="flex items-center space-x-2 text-gray-500 dark:text-gray-400 py-2"> <div className="flex items-center space-x-2 text-gray-500 dark:text-gray-400 py-2">
<FaSync className="w-4 h-4 animate-spin" /> <FaSync className="w-4 h-4 animate-spin" />
<span className="text-sm"> <span className="text-sm">
{translate('::App.Listforms.ImportManager.LoadingExecutionDetails')} {translate('::App.ListFormImportManager.LoadingExecutionDetails')}
</span> </span>
</div> </div>
) : sessionExecutes[session.id] && ) : sessionExecutes[session.id] &&
@ -689,7 +689,7 @@ export const ImportDashboard: React.FC<ImportDashboardProps> = ({ gridDto }) =>
{execute.execRows} {execute.execRows}
</div> </div>
<div className="text-gray-500 dark:text-gray-400"> <div className="text-gray-500 dark:text-gray-400">
{translate('::App.Listforms.ImportManager.Executed')} {translate('::App.ListFormImportManager.Executed')}
</div> </div>
</div> </div>
<div className="text-center"> <div className="text-center">
@ -697,7 +697,7 @@ export const ImportDashboard: React.FC<ImportDashboardProps> = ({ gridDto }) =>
{execute.validRows} {execute.validRows}
</div> </div>
<div className="text-gray-500 dark:text-gray-400"> <div className="text-gray-500 dark:text-gray-400">
{translate('::App.Listforms.ImportManager.Valid')} {translate('::App.ListFormImportManager.Valid')}
</div> </div>
</div> </div>
<div className="text-center"> <div className="text-center">
@ -705,7 +705,7 @@ export const ImportDashboard: React.FC<ImportDashboardProps> = ({ gridDto }) =>
{execute.errorRows} {execute.errorRows}
</div> </div>
<div className="text-gray-500 dark:text-gray-400"> <div className="text-gray-500 dark:text-gray-400">
{translate('::App.Listforms.ImportManager.Errors')} {translate('::App.Platform.Error')}
</div> </div>
</div> </div>
</div> </div>
@ -741,7 +741,7 @@ export const ImportDashboard: React.FC<ImportDashboardProps> = ({ gridDto }) =>
size="xs" size="xs"
> >
<span> <span>
{translate('::App.Listforms.ImportManager.ErrorDetails', { {translate('::App.ListFormImportManager.ErrorDetails', {
count: execute.errorRows, count: execute.errorRows,
})}{' '} })}{' '}
{translate( {translate(
@ -785,7 +785,7 @@ export const ImportDashboard: React.FC<ImportDashboardProps> = ({ gridDto }) =>
) : ( ) : (
<p className="px-3 py-2 text-orange-600 dark:text-orange-300"> <p className="px-3 py-2 text-orange-600 dark:text-orange-300">
{translate( {translate(
'::App.Listforms.ImportManager.NoErrorDetail', '::App.ListFormImportManager.NoErrorDetail',
)} )}
</p> </p>
)} )}
@ -798,7 +798,7 @@ export const ImportDashboard: React.FC<ImportDashboardProps> = ({ gridDto }) =>
</div> </div>
) : ( ) : (
<div className="text-sm text-gray-500 dark:text-gray-400 py-2"> <div className="text-sm text-gray-500 dark:text-gray-400 py-2">
{translate('::App.Listforms.ImportManager.NoExecutionRecords')} {translate('::App.ListFormImportManager.NoExecutionRecords')}
</div> </div>
)} )}
</div> </div>
@ -811,9 +811,9 @@ export const ImportDashboard: React.FC<ImportDashboardProps> = ({ gridDto }) =>
<div className="p-12 text-center text-gray-500 dark:text-gray-400"> <div className="p-12 text-center text-gray-500 dark:text-gray-400">
<FaClock className="w-12 h-12 mx-auto mb-4 text-gray-300 dark:text-gray-600" /> <FaClock className="w-12 h-12 mx-auto mb-4 text-gray-300 dark:text-gray-600" />
<div className="text-lg font-medium mb-2"> <div className="text-lg font-medium mb-2">
{translate('::App.Listforms.ImportManager.NoImportHistory')} {translate('::App.ListFormImportManager.NoImportHistory')}
</div> </div>
<div>{translate('::App.Listforms.ImportManager.ImportHistoryHint')}</div> <div>{translate('::App.ListFormImportManager.ImportHistoryHint')}</div>
</div> </div>
)} )}
</div> </div>

View file

@ -154,7 +154,7 @@ export const ImportPreview: React.FC<ImportPreviewProps> = ({
<div className="flex items-center order-1 lg:order-none"> <div className="flex items-center order-1 lg:order-none">
<FaEye className="w-5 h-5 mr-2 text-blue-500" /> <FaEye className="w-5 h-5 mr-2 text-blue-500" />
<h3 className="text-xl font-semibold text-gray-800 dark:text-gray-100"> <h3 className="text-xl font-semibold text-gray-800 dark:text-gray-100">
{translate('::App.Listforms.ImportManager.ImportPreviewTitle')} {translate('::App.ListFormImportManager.ImportPreviewTitle')}
</h3> </h3>
</div> </div>
@ -164,7 +164,7 @@ export const ImportPreview: React.FC<ImportPreviewProps> = ({
<div className="text-center px-3 py-1 bg-blue-50 dark:bg-gray-800 rounded-full border border-blue-200 dark:border-gray-700 font-bold text-blue-600 dark:text-blue-300"> <div className="text-center px-3 py-1 bg-blue-50 dark:bg-gray-800 rounded-full border border-blue-200 dark:border-gray-700 font-bold text-blue-600 dark:text-blue-300">
{previewData?.rows?.length || session.totalRows || 0}{' '} {previewData?.rows?.length || session.totalRows || 0}{' '}
<span className="text-xs text-blue-700 dark:text-blue-300"> <span className="text-xs text-blue-700 dark:text-blue-300">
{translate('::App.Listforms.ImportManager.TotalRows')} {translate('::App.ListFormImportManager.TotalRows')}
</span> </span>
</div> </div>
</div> </div>
@ -187,7 +187,7 @@ export const ImportPreview: React.FC<ImportPreviewProps> = ({
{previewData && previewData.headers && previewData.headers.length > 0 ? ( {previewData && previewData.headers && previewData.headers.length > 0 ? (
<div className="p-3 border-b border-gray-200 dark:border-gray-700"> <div className="p-3 border-b border-gray-200 dark:border-gray-700">
<h4 className="font-semibold text-gray-800 dark:text-gray-100 mb-4"> <h4 className="font-semibold text-gray-800 dark:text-gray-100 mb-4">
{translate('::App.Listforms.ImportManager.DataPreviewTitle')} {translate('::App.ListFormImportManager.DataPreviewTitle')}
</h4> </h4>
<div className="overflow-auto border border-gray-200 dark:border-gray-700 rounded-lg max-h-90"> <div className="overflow-auto border border-gray-200 dark:border-gray-700 rounded-lg max-h-90">
@ -247,10 +247,10 @@ export const ImportPreview: React.FC<ImportPreviewProps> = ({
<div className="text-center py-8"> <div className="text-center py-8">
<FaExclamationTriangle className="w-12 h-12 mx-auto mb-4 text-yellow-500" /> <FaExclamationTriangle className="w-12 h-12 mx-auto mb-4 text-yellow-500" />
<h4 className="font-semibold text-gray-800 dark:text-gray-100 mb-2"> <h4 className="font-semibold text-gray-800 dark:text-gray-100 mb-2">
{translate('::App.Listforms.ImportManager.NoDataFoundTitle')} {translate('::App.ListFormImportManager.NoDataFoundTitle')}
</h4> </h4>
<p className="text-gray-600 dark:text-gray-400"> <p className="text-gray-600 dark:text-gray-400">
{translate('::App.Listforms.ImportManager.NoDataFoundDescription')} {translate('::App.ListFormImportManager.NoDataFoundDescription')}
</p> </p>
</div> </div>
</div> </div>
@ -259,10 +259,10 @@ export const ImportPreview: React.FC<ImportPreviewProps> = ({
<div className="text-center py-8"> <div className="text-center py-8">
<div className="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-500 mx-auto mb-4"></div> <div className="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-500 mx-auto mb-4"></div>
<h4 className="font-semibold text-gray-800 dark:text-gray-100 mb-2"> <h4 className="font-semibold text-gray-800 dark:text-gray-100 mb-2">
{translate('::App.Listforms.ImportManager.LoadingPreviewTitle')} {translate('::App.ListFormImportManager.LoadingPreviewTitle')}
</h4> </h4>
<p className="text-gray-600 dark:text-gray-400"> <p className="text-gray-600 dark:text-gray-400">
{translate('::App.Listforms.ImportManager.LoadingPreviewDescription')} {translate('::App.ListFormImportManager.LoadingPreviewDescription')}
</p> </p>
</div> </div>
</div> </div>
@ -276,7 +276,7 @@ export const ImportPreview: React.FC<ImportPreviewProps> = ({
<div className="flex items-center space-x-2 text-green-700 dark:text-green-300"> <div className="flex items-center space-x-2 text-green-700 dark:text-green-300">
<FaCheckCircle className="w-5 h-5" /> <FaCheckCircle className="w-5 h-5" />
<span className="font-medium"> <span className="font-medium">
{translate('::App.Listforms.ImportManager.ImportProgress.Status.Uploaded')}{' '} {translate('::App.ImportProgressStatus.Uploaded')}{' '}
{lastExecutionResult.successCount} of {lastExecutionResult.selectedCount} rows were {lastExecutionResult.successCount} of {lastExecutionResult.selectedCount} rows were
imported. imported.
</span> </span>
@ -290,7 +290,7 @@ export const ImportPreview: React.FC<ImportPreviewProps> = ({
<div className="flex items-center space-x-2 text-orange-600 dark:text-orange-300"> <div className="flex items-center space-x-2 text-orange-600 dark:text-orange-300">
<FaExclamationTriangle className="w-5 h-5" /> <FaExclamationTriangle className="w-5 h-5" />
<span className="font-medium"> <span className="font-medium">
{translate('::App.Listforms.ImportManager.SelectRowsWarning')} {translate('::App.ListFormImportManager.SelectRowsWarning')}
</span> </span>
</div> </div>
)} )}
@ -299,7 +299,7 @@ export const ImportPreview: React.FC<ImportPreviewProps> = ({
<div className="flex items-center space-x-2 text-blue-600 dark:text-blue-300"> <div className="flex items-center space-x-2 text-blue-600 dark:text-blue-300">
<FaCheckCircle className="w-5 h-5" /> <FaCheckCircle className="w-5 h-5" />
<span className="font-medium"> <span className="font-medium">
{selectedRows.length} {translate('::App.Listforms.ImportManager.RowsSelected')} {selectedRows.length} {translate('::App.ListFormImportManager.RowsSelected')}
</span> </span>
</div> </div>
)} )}
@ -308,7 +308,7 @@ export const ImportPreview: React.FC<ImportPreviewProps> = ({
<div className="flex items-center space-x-2 text-red-600 dark:text-red-300"> <div className="flex items-center space-x-2 text-red-600 dark:text-red-300">
<FaExclamationTriangle className="w-5 h-5" /> <FaExclamationTriangle className="w-5 h-5" />
<span className="font-medium"> <span className="font-medium">
{translate('::App.Listforms.ImportManager.NoRowsAvailable')} {translate('::App.ListFormImportManager.NoRowsAvailable')}
</span> </span>
</div> </div>
)} )}
@ -320,7 +320,7 @@ export const ImportPreview: React.FC<ImportPreviewProps> = ({
variant="default" variant="default"
size="sm" size="sm"
> >
{translate('::Cancel')} {translate('::App.Platform.Cancel')}
</Button> </Button>
<Button <Button
@ -332,8 +332,8 @@ export const ImportPreview: React.FC<ImportPreviewProps> = ({
size="sm" size="sm"
> >
{loading {loading
? translate('::App.Listforms.Status.Processing') ? translate('::App.ListFormStatus.Processing')
: translate('::App.Listforms.ImportManager.Button.ExecuteImport')} : translate('::App.ImportManagerButton.ExecuteImport')}
</Button> </Button>
</div> </div>
</div> </div>

View file

@ -30,17 +30,17 @@ export const ImportProgress: React.FC<ImportProgressProps> = ({ session }) => {
const getStatusMessage = () => { const getStatusMessage = () => {
switch (session.status) { switch (session.status) {
case 'uploading': case 'uploading':
return translate('::App.Listforms.ImportManager.ImportProgress.Status.Uploading') return translate('::App.ImportProgressStatus.Uploading')
case 'validating': case 'validating':
return translate('::App.Listforms.ImportManager.ImportProgress.Status.Validating') return translate('::App.ImportProgressStatus.Validating')
case 'processing': case 'processing':
return translate('::App.Listforms.Status.Processing') return translate('::App.ListFormStatus.Processing')
case 'uploaded': case 'uploaded':
return translate('::App.Listforms.ImportManager.ImportProgress.Status.Uploaded') return translate('::App.ImportProgressStatus.Uploaded')
case 'failed': case 'failed':
return translate('::App.Listforms.ImportManager.ImportProgress.Status.Failed') return translate('::App.ImportProgressStatus.Failed')
default: default:
return translate('::App.Listforms.Status.Processing') return translate('::App.ListFormStatus.Processing')
} }
} }
@ -70,14 +70,14 @@ export const ImportProgress: React.FC<ImportProgressProps> = ({ session }) => {
{getStatusMessage()} {getStatusMessage()}
</h3> </h3>
<p className="text-gray-600 dark:text-gray-400"> <p className="text-gray-600 dark:text-gray-400">
{translate('::App.Listforms.Status.Processing')} {session.blobName} {translate('::App.ListFormStatus.Processing')} {session.blobName}
</p> </p>
</div> </div>
{/* Progress Bar */} {/* Progress Bar */}
<div className="w-full max-w-md mx-auto"> <div className="w-full max-w-md mx-auto">
<div className="flex justify-between text-sm text-gray-600 dark:text-gray-400 mb-2"> <div className="flex justify-between text-sm text-gray-600 dark:text-gray-400 mb-2">
<span>{translate('::App.Listforms.ImportManager.ImportProgress.ProgressLabel')}</span> <span>{translate('::App.Listform.ListformField.Progress')}</span>
<span>{Math.round(getProgressPercentage())}%</span> <span>{Math.round(getProgressPercentage())}%</span>
</div> </div>
<div className="w-full bg-gray-200 dark:bg-gray-700 rounded-full h-2"> <div className="w-full bg-gray-200 dark:bg-gray-700 rounded-full h-2">

View file

@ -34,10 +34,10 @@ const Cover = ({ children, content, ...rest }: CoverProps) => {
<Avatar className="border-2 border-white" shape="circle" src="/img/others/cto.png" /> <Avatar className="border-2 border-white" shape="circle" src="/img/others/cto.png" />
<div className="text-white"> <div className="text-white">
<div className="font-semibold text-base">Sedat ÖZTÜRK</div> <div className="font-semibold text-base">Sedat ÖZTÜRK</div>
<span className="opacity-80">{translate('::LoginPanel.Profil')}</span> <span className="opacity-80">{translate('::App.Listform.ListformField.Founder')}</span>
</div> </div>
</div> </div>
<p className="text-lg text-white opacity-80">{translate('::LoginPanel.Message')}</p> <p className="text-lg text-white opacity-80">{translate('::App.LoginPanel.Message')}</p>
</div> </div>
<span className="text-white"> <span className="text-white">
Copyright &copy; {`${new Date().getFullYear()}`}{' '} Copyright &copy; {`${new Date().getFullYear()}`}{' '}

View file

@ -31,11 +31,11 @@ const Side = ({ children, content, ...rest }: SideProps) => {
<Avatar className="border-2 border-white" shape="circle" src="/img/others/cto.png" /> <Avatar className="border-2 border-white" shape="circle" src="/img/others/cto.png" />
<div className="text-white"> <div className="text-white">
<div className="font-semibold text-base">Sedat ÖZTÜRK</div> <div className="font-semibold text-base">Sedat ÖZTÜRK</div>
<span className="opacity-80">{ translate('::LoginPanel.Profil')}</span> <span className="opacity-80">{ translate('::App.Listform.ListformField.Founder')}</span>
</div> </div>
</div> </div>
<p className="text-lg text-white opacity-80"> <p className="text-lg text-white opacity-80">
{ translate('::LoginPanel.Message')} { translate('::App.LoginPanel.Message')}
</p> </p>
</div> </div>
<span className="text-white"> <span className="text-white">

View file

@ -85,13 +85,13 @@ const PublicLayout = () => {
}, },
{ {
resourceKey: 'Public.nav.products', resourceKey: 'Public.nav.products',
name: translate('::App.Orders'), name: translate('::App.Platform.Orders'),
path: ROUTES_ENUM.public.products, path: ROUTES_ENUM.public.products,
icon: LuPackage, icon: LuPackage,
}, },
{ {
resourceKey: 'Public.nav.blog', resourceKey: 'Public.nav.blog',
name: translate('::App.BlogManagement'), name: translate('::App.Platform.BlogManagement'),
path: ROUTES_ENUM.public.blog, path: ROUTES_ENUM.public.blog,
icon: LuBookOpen, icon: LuBookOpen,
}, },
@ -102,13 +102,13 @@ const PublicLayout = () => {
icon: LuPhone, icon: LuPhone,
}, },
{ {
resourceKey: 'Public.nav.giris', resourceKey: 'App.PublicNav.Giris',
name: translate('::Public.nav.giris'), name: translate('::App.PublicNav.Giris'),
path: ROUTES_ENUM.authenticated.login, path: ROUTES_ENUM.authenticated.login,
}, },
] ]
const isLoginLink = (resourceKey?: string) => resourceKey === 'Public.nav.giris' const isLoginLink = (resourceKey?: string) => resourceKey === 'App.PublicNav.Giris'
const demoButton = (className = '', onClick?: () => void) => ( const demoButton = (className = '', onClick?: () => void) => (
<Button <Button
@ -391,7 +391,7 @@ const PublicLayout = () => {
<div> <div>
<Logo mode={isDarkMode ? 'dark' : 'light'} /> <Logo mode={isDarkMode ? 'dark' : 'light'} />
<p className="mt-4 text-gray-400 text-sm"> <p className="mt-4 text-gray-400 text-sm">
{translate('::Public.footer.companyInfo')} {translate('::App.PublicFooter.CompanyInfo')}
</p> </p>
<div className="flex space-x-4 mt-6"> <div className="flex space-x-4 mt-6">
<a <a
@ -432,7 +432,7 @@ const PublicLayout = () => {
{/* Quick Links */} {/* Quick Links */}
<div> <div>
<h3 className="text-lg font-bold mb-4 text-white"> <h3 className="text-lg font-bold mb-4 text-white">
{translate('::Public.footer.quickLinksTitle')} {translate('::App.PublicFooter.QuickLinksTitle')}
</h3> </h3>
<ul className="space-y-2"> <ul className="space-y-2">
<li> <li>
@ -448,7 +448,7 @@ const PublicLayout = () => {
to={ROUTES_ENUM.public.products} to={ROUTES_ENUM.public.products}
className="text-gray-400 hover:text-white transition-colors" className="text-gray-400 hover:text-white transition-colors"
> >
{translate('::App.Orders')} {translate('::App.Platform.Orders')}
</Link> </Link>
</li> </li>
<li> <li>
@ -472,7 +472,7 @@ const PublicLayout = () => {
to={ROUTES_ENUM.public.blog} to={ROUTES_ENUM.public.blog}
className="text-gray-400 hover:text-white transition-colors" className="text-gray-400 hover:text-white transition-colors"
> >
{translate('::App.BlogManagement')} {translate('::App.Platform.BlogManagement')}
</Link> </Link>
</li> </li>
<li> <li>
@ -489,7 +489,7 @@ const PublicLayout = () => {
{/* Services */} {/* Services */}
<div> <div>
<h3 className="text-lg font-bold mb-4 text-white"> <h3 className="text-lg font-bold mb-4 text-white">
{translate('::Public.services.title')} {translate('::App.PublicServices.ServicesTitle')}
</h3> </h3>
<ul className="space-y-2"> <ul className="space-y-2">
<li> <li>
@ -497,7 +497,7 @@ const PublicLayout = () => {
to={ROUTES_ENUM.public.services} to={ROUTES_ENUM.public.services}
className="text-gray-400 hover:text-white transition-colors" className="text-gray-400 hover:text-white transition-colors"
> >
{translate('::Public.services.software.title')} {translate('::App.ServicesSoftware.SoftwareTitle')}
</Link> </Link>
</li> </li>
<li> <li>
@ -505,7 +505,7 @@ const PublicLayout = () => {
to={ROUTES_ENUM.public.services} to={ROUTES_ENUM.public.services}
className="text-gray-400 hover:text-white transition-colors" className="text-gray-400 hover:text-white transition-colors"
> >
{translate('::Public.services.web.title')} {translate('::App.BlogCategories.Webdev')}
</Link> </Link>
</li> </li>
<li> <li>
@ -513,7 +513,7 @@ const PublicLayout = () => {
to={ROUTES_ENUM.public.services} to={ROUTES_ENUM.public.services}
className="text-gray-400 hover:text-white transition-colors" className="text-gray-400 hover:text-white transition-colors"
> >
{translate('::Public.services.mobile.title')} {translate('::App.ServicesMobile.MobileTitle')}
</Link> </Link>
</li> </li>
<li> <li>
@ -521,7 +521,7 @@ const PublicLayout = () => {
to={ROUTES_ENUM.public.services} to={ROUTES_ENUM.public.services}
className="text-gray-400 hover:text-white transition-colors" className="text-gray-400 hover:text-white transition-colors"
> >
{translate('::Public.services.database.title')} {translate('::App.ServicesDatabase.DatabaseTitle')}
</Link> </Link>
</li> </li>
<li> <li>
@ -529,7 +529,7 @@ const PublicLayout = () => {
to={ROUTES_ENUM.public.services} to={ROUTES_ENUM.public.services}
className="text-gray-400 hover:text-white transition-colors" className="text-gray-400 hover:text-white transition-colors"
> >
{translate('::Public.services.integration.title')} {translate('::App.ServicesIntegration.IntegrationTitle')}
</Link> </Link>
</li> </li>
<li> <li>
@ -537,7 +537,7 @@ const PublicLayout = () => {
to={ROUTES_ENUM.public.services} to={ROUTES_ENUM.public.services}
className="text-gray-400 hover:text-white transition-colors" className="text-gray-400 hover:text-white transition-colors"
> >
{translate('::Public.services.consulting.title')} {translate('::App.ServicesConsulting.ConsultingTitle')}
</Link> </Link>
</li> </li>
</ul> </ul>
@ -555,7 +555,7 @@ const PublicLayout = () => {
strokeWidth={1.75} strokeWidth={1.75}
className="text-gray-400 mt-1 flex-shrink-0" className="text-gray-400 mt-1 flex-shrink-0"
/> />
<span className="text-gray-400">{translate('::Public.footer.address')}</span> <span className="text-gray-400">{translate('::App.PublicFooter.Address')}</span>
</li> </li>
<li className="flex items-center space-x-3"> <li className="flex items-center space-x-3">
<LuPhone <LuPhone
@ -590,7 +590,7 @@ const PublicLayout = () => {
<div className="border-t border-gray-800 mt-12 pt-8"> <div className="border-t border-gray-800 mt-12 pt-8">
<div className="flex flex-col md:flex-row justify-between items-center"> <div className="flex flex-col md:flex-row justify-between items-center">
<p className="text-gray-400 text-sm"> <p className="text-gray-400 text-sm">
&copy; {currentYear} Sözsoft Platform. {translate('::Public.footer.copyright')} &copy; {currentYear} Sözsoft Platform. {translate('::App.PublicFooter.Copyright')}
</p> </p>
<div className="mt-4 md:mt-0"> <div className="mt-4 md:mt-0">
<ul className="flex space-x-6 text-sm"> <ul className="flex space-x-6 text-sm">
@ -599,7 +599,7 @@ const PublicLayout = () => {
to={ROUTES_ENUM.public.about} to={ROUTES_ENUM.public.about}
className="text-gray-400 hover:text-white transition-colors" className="text-gray-400 hover:text-white transition-colors"
> >
{translate('::Public.footer.privacyPolicy')} {translate('::App.PublicFooter.PrivacyPolicy')}
</Link> </Link>
</li> </li>
<li> <li>
@ -607,7 +607,7 @@ const PublicLayout = () => {
to={ROUTES_ENUM.public.about} to={ROUTES_ENUM.public.about}
className="text-gray-400 hover:text-white transition-colors" className="text-gray-400 hover:text-white transition-colors"
> >
{translate('::Public.footer.termsOfUse')} {translate('::App.PublicFooter.TermsOfUse')}
</Link> </Link>
</li> </li>
</ul> </ul>

View file

@ -35,7 +35,7 @@ export const Basket: React.FC<BasketProps> = ({
const { translate } = useLocalization() const { translate } = useLocalization()
const handleClearBasket = () => { const handleClearBasket = () => {
if (window.confirm(translate('::Public.basket.clearConfirm'))) { if (window.confirm(translate('::App.PublicBasket.ClearConfirm'))) {
clearBasket() clearBasket()
} }
} }
@ -58,7 +58,7 @@ export const Basket: React.FC<BasketProps> = ({
<div className="flex flex-col h-full"> <div className="flex flex-col h-full">
<div className="flex items-center justify-between p-6 border-b border-gray-200 dark:border-gray-700"> <div className="flex items-center justify-between p-6 border-b border-gray-200 dark:border-gray-700">
<h2 className="text-base font-semibold text-gray-900 dark:text-gray-100"> <h2 className="text-base font-semibold text-gray-900 dark:text-gray-100">
{translate('::Public.basket.title')} {translate('::App.PublicBasket.BasketTitle')}
</h2> </h2>
<div className="flex items-center space-x-2"> <div className="flex items-center space-x-2">
{basketData.items.length > 0 && ( {basketData.items.length > 0 && (
@ -68,7 +68,7 @@ export const Basket: React.FC<BasketProps> = ({
variant="twoTone" variant="twoTone"
color="red-600" color="red-600"
size="xs" size="xs"
title={translate('::Public.basket.clear')} title={translate('::App.PublicBasket.Clear')}
/> />
)} )}
<Button <Button
@ -84,8 +84,8 @@ export const Basket: React.FC<BasketProps> = ({
{basketData.items.length === 0 ? ( {basketData.items.length === 0 ? (
<div className="flex flex-col items-center justify-center h-full text-gray-500 dark:text-gray-400"> <div className="flex flex-col items-center justify-center h-full text-gray-500 dark:text-gray-400">
<FaShoppingBag className="w-16 h-16 mb-4" /> <FaShoppingBag className="w-16 h-16 mb-4" />
<p className="text-lg font-medium">{translate('::Public.basket.empty.title')}</p> <p className="text-lg font-medium">{translate('::App.BasketEmpty.EmptyTitle')}</p>
<p className="text-sm">{translate('::Public.basket.empty.subtitle')}</p> <p className="text-sm">{translate('::App.BasketEmpty.Subtitle')}</p>
</div> </div>
) : ( ) : (
<div className="space-y-4"> <div className="space-y-4">
@ -116,16 +116,16 @@ export const Basket: React.FC<BasketProps> = ({
</span> </span>
)} )}
{item.billingCycle === 'monthly' {item.billingCycle === 'monthly'
? translate('::Public.products.billingcycle.monthly') ? translate('::App.StaticLookup.Monthly')
: item.billingCycle === 'yearly' : item.billingCycle === 'yearly'
? translate('::Public.products.billingcycle.yearly') ? translate('::App.StaticLookup.Yearly')
: translate('::Public.products.billingcycle.monthly')} : translate('::App.StaticLookup.Monthly')}
{basketData.globalPeriod > 1 && item.product.isQuantityBased && ( {basketData.globalPeriod > 1 && item.product.isQuantityBased && (
<span className="text-xs text-gray-500 dark:text-gray-400"> <span className="text-xs text-gray-500 dark:text-gray-400">
({basketData.globalPeriod}{' '} ({basketData.globalPeriod}{' '}
{item.billingCycle === 'monthly' {item.billingCycle === 'monthly'
? translate('::Public.products.billingcycle.month') ? translate('::App.Platform.Months')
: translate('::Public.products.billingcycle.year')} : translate('::App.Platform.Years')}
) )
</span> </span>
)} )}
@ -169,7 +169,7 @@ export const Basket: React.FC<BasketProps> = ({
<span>{formatPrice(basketData.subtotal)}</span> <span>{formatPrice(basketData.subtotal)}</span>
</div> </div>
<div className="flex justify-between text-sm text-gray-600 dark:text-gray-300"> <div className="flex justify-between text-sm text-gray-600 dark:text-gray-300">
<span>{translate('::Public.products.kdv')}</span> <span>{translate('::App.PublicProducts.Kdv')}</span>
<span>{formatPrice(basketData.vatTotal)}</span> <span>{formatPrice(basketData.vatTotal)}</span>
</div> </div>
<div className="flex justify-between items-center pt-2 border-t border-gray-200 dark:border-gray-700"> <div className="flex justify-between items-center pt-2 border-t border-gray-200 dark:border-gray-700">
@ -183,7 +183,7 @@ export const Basket: React.FC<BasketProps> = ({
</div> </div>
<Button onClick={onCheckout} block variant="solid" size="md"> <Button onClick={onCheckout} block variant="solid" size="md">
{translate('::Public.basket.checkout')} {translate('::App.PublicBasket.Checkout')}
</Button> </Button>
</div> </div>
)} )}

View file

@ -42,7 +42,7 @@ export const BillingControls: React.FC<BillingControlsProps> = ({
<div className="flex items-center space-x-2 rounded-lg"> <div className="flex items-center space-x-2 rounded-lg">
<FaCalendar className="w-5 h-5 text-gray-600 dark:text-gray-300" /> <FaCalendar className="w-5 h-5 text-gray-600 dark:text-gray-300" />
<span className="font-medium text-gray-900 dark:text-gray-100"> <span className="font-medium text-gray-900 dark:text-gray-100">
{translate('::Public.products.billingcycle')} {translate('::App.PublicProducts.Billingcycle')}
</span> </span>
</div> </div>
@ -53,9 +53,9 @@ export const BillingControls: React.FC<BillingControlsProps> = ({
variant={globalBillingCycle === 'monthly' ? 'solid' : 'default'} variant={globalBillingCycle === 'monthly' ? 'solid' : 'default'}
size="xs" size="xs"
className={globalBillingCycle === 'monthly' ? 'shadow-md' : ''} className={globalBillingCycle === 'monthly' ? 'shadow-md' : ''}
title={hasBasketItems ? translate('::Public.basket.billingCycleLocked') : undefined} title={hasBasketItems ? translate('::App.PublicBasket.BillingCycleLocked') : undefined}
> >
{translate('::Public.products.billingcycle.monthly')} {translate('::App.StaticLookup.Monthly')}
</Button> </Button>
<Button <Button
onClick={() => !hasBasketItems && setGlobalBillingCycle('yearly')} onClick={() => !hasBasketItems && setGlobalBillingCycle('yearly')}
@ -63,9 +63,9 @@ export const BillingControls: React.FC<BillingControlsProps> = ({
variant={globalBillingCycle === 'yearly' ? 'solid' : 'default'} variant={globalBillingCycle === 'yearly' ? 'solid' : 'default'}
size="xs" size="xs"
className={globalBillingCycle === 'yearly' ? 'shadow-md' : ''} className={globalBillingCycle === 'yearly' ? 'shadow-md' : ''}
title={hasBasketItems ? translate('::Public.basket.billingCycleLocked') : undefined} title={hasBasketItems ? translate('::App.PublicBasket.BillingCycleLocked') : undefined}
> >
{translate('::Public.products.billingcycle.yearly')} {translate('::App.StaticLookup.Yearly')}
</Button> </Button>
</div> </div>
</div> </div>
@ -75,7 +75,7 @@ export const BillingControls: React.FC<BillingControlsProps> = ({
<div className="flex items-center space-x-2"> <div className="flex items-center space-x-2">
<FaClock className="w-5 h-5 text-gray-600 dark:text-gray-300" /> <FaClock className="w-5 h-5 text-gray-600 dark:text-gray-300" />
<span className="font-medium text-gray-900 dark:text-gray-100"> <span className="font-medium text-gray-900 dark:text-gray-100">
{translate('::Public.products.period')} {translate('::App.Listform.ListformField.Period')}
</span> </span>
</div> </div>
@ -86,7 +86,7 @@ export const BillingControls: React.FC<BillingControlsProps> = ({
icon={<FaMinus className="w-4 h-4" />} icon={<FaMinus className="w-4 h-4" />}
variant="default" variant="default"
size="xs" size="xs"
title={hasBasketItems ? translate('::Public.basket.periodLocked') : undefined} title={hasBasketItems ? translate('::App.PublicBasket.PeriodLocked') : undefined}
/> />
<div className="flex items-center space-x-2 bg-gray-50 px-2 py-1 rounded-lg dark:bg-gray-800"> <div className="flex items-center space-x-2 bg-gray-50 px-2 py-1 rounded-lg dark:bg-gray-800">
@ -95,8 +95,8 @@ export const BillingControls: React.FC<BillingControlsProps> = ({
</span> </span>
<span className="text-xs text-gray-600 dark:text-white"> <span className="text-xs text-gray-600 dark:text-white">
{globalBillingCycle === 'monthly' {globalBillingCycle === 'monthly'
? translate('::Public.products.billingcycle.month') ? translate('::App.Platform.Months')
: translate('::Public.products.billingcycle.year')} : translate('::App.Platform.Years')}
</span> </span>
</div> </div>
@ -106,7 +106,7 @@ export const BillingControls: React.FC<BillingControlsProps> = ({
icon={<FaPlus className="w-4 h-4" />} icon={<FaPlus className="w-4 h-4" />}
variant="default" variant="default"
size="xs" size="xs"
title={hasBasketItems ? translate('::Public.basket.periodLocked') : undefined} title={hasBasketItems ? translate('::App.PublicBasket.PeriodLocked') : undefined}
/> />
</div> </div>
</div> </div>
@ -119,7 +119,7 @@ export const BillingControls: React.FC<BillingControlsProps> = ({
size="xs" size="xs"
className="relative shadow-md" className="relative shadow-md"
> >
<span className="font-medium text-sm">{translate('::Public.nav.basket')}</span> <span className="font-medium text-sm">{translate('::App.PublicNav.Basket')}</span>
{basketItemsCount > 0 && ( {basketItemsCount > 0 && (
<span className="absolute -top-2 -right-2 bg-red-500 text-white text-xs rounded-full w-5 h-5 flex items-center justify-center font-bold"> <span className="absolute -top-2 -right-2 bg-red-500 text-white text-xs rounded-full w-5 h-5 flex items-center justify-center font-bold">

View file

@ -42,9 +42,9 @@ export const OrderSuccess: React.FC<OrderSuccessProps> = ({ orderId, order }) =>
const billingCycleLabel = const billingCycleLabel =
order?.billingCycle === 'monthly' order?.billingCycle === 'monthly'
? translate('::Public.products.billingcycle.monthly') ? translate('::App.StaticLookup.Monthly')
: order?.billingCycle === 'yearly' : order?.billingCycle === 'yearly'
? translate('::Public.products.billingcycle.yearly') ? translate('::App.StaticLookup.Yearly')
: '-' : '-'
const getItemPrice = (item: BasketItem) => const getItemPrice = (item: BasketItem) =>
@ -70,10 +70,10 @@ export const OrderSuccess: React.FC<OrderSuccessProps> = ({ orderId, order }) =>
<FaCheckCircle className="h-10 w-10 text-green-500" /> <FaCheckCircle className="h-10 w-10 text-green-500" />
<div> <div>
<h2 className="text-xl font-bold text-gray-900 dark:text-gray-100"> <h2 className="text-xl font-bold text-gray-900 dark:text-gray-100">
{translate('::Public.order.success.title')} {translate('::App.OrderSuccess.SuccessTitle')}
</h2> </h2>
<p className="text-sm text-gray-600 dark:text-gray-300"> <p className="text-sm text-gray-600 dark:text-gray-300">
{translate('::Public.order.success.number')}{' '} {translate('::App.OrderSuccess.Number')}{' '}
<span className="font-semibold text-blue-600">#{orderId}</span> <span className="font-semibold text-blue-600">#{orderId}</span>
</p> </p>
</div> </div>
@ -152,7 +152,7 @@ export const OrderSuccess: React.FC<OrderSuccessProps> = ({ orderId, order }) =>
<div className="col-span-1 text-right">Period</div> <div className="col-span-1 text-right">Period</div>
<div className="col-span-1 text-right">Qty</div> <div className="col-span-1 text-right">Qty</div>
<div className="col-span-1 text-right">Cycle</div> <div className="col-span-1 text-right">Cycle</div>
<div className="col-span-2 text-right">{translate('::Public.products.kdv')}</div> <div className="col-span-2 text-right">{translate('::App.PublicProducts.Kdv')}</div>
<div className="col-span-2 text-right">Amount</div> <div className="col-span-2 text-right">Amount</div>
</div> </div>
{order.items.map((item, index) => ( {order.items.map((item, index) => (
@ -169,8 +169,8 @@ export const OrderSuccess: React.FC<OrderSuccessProps> = ({ orderId, order }) =>
<div className="col-span-1 text-right"> <div className="col-span-1 text-right">
{translate( {translate(
item.billingCycle === 'monthly' item.billingCycle === 'monthly'
? '::Public.order.monthly' ? '::App.StaticLookup.Monthly'
: '::Public.order.yearly', : '::App.StaticLookup.Yearly',
)} )}
</div> </div>
<div className="col-span-2 text-right"> <div className="col-span-2 text-right">
@ -186,18 +186,18 @@ export const OrderSuccess: React.FC<OrderSuccessProps> = ({ orderId, order }) =>
<div className="mt-6 flex justify-end"> <div className="mt-6 flex justify-end">
<div className="w-full max-w-sm space-y-2 text-sm text-gray-700 dark:text-gray-300"> <div className="w-full max-w-sm space-y-2 text-sm text-gray-700 dark:text-gray-300">
<div className="flex justify-between"> <div className="flex justify-between">
<span>{translate('::Public.payment.summary.subtotal')}</span> <span>{translate('::App.Listform.ListformField.Subtotal')}</span>
<span>{formatPrice(order.subtotal)}</span> <span>{formatPrice(order.subtotal)}</span>
</div> </div>
<div className="flex justify-between"> <div className="flex justify-between">
<span> <span>
{translate('::Public.products.kdv')} {translate('::App.PublicProducts.Kdv')}
{vatRateLabel} {vatRateLabel}
</span> </span>
<span>{formatPrice(order.vatTotal)}</span> <span>{formatPrice(order.vatTotal)}</span>
</div> </div>
<div className="flex justify-between"> <div className="flex justify-between">
<span>{translate('::Public.payment.installments.commission')}</span> <span>{translate('::App.Listform.ListformField.Commission')}</span>
<span>{formatPrice(order.commission)}</span> <span>{formatPrice(order.commission)}</span>
</div> </div>
<div className="flex justify-between border-t border-gray-200 pt-3 text-lg font-bold text-gray-900 dark:border-gray-700 dark:text-gray-100"> <div className="flex justify-between border-t border-gray-200 pt-3 text-lg font-bold text-gray-900 dark:border-gray-700 dark:text-gray-100">
@ -216,7 +216,7 @@ export const OrderSuccess: React.FC<OrderSuccessProps> = ({ orderId, order }) =>
variant="default" variant="default"
size="sm" size="sm"
> >
{translate('::Public.notFound.button')} {translate('::App.Platform.Button')}
</Button> </Button>
</div> </div>
</div> </div>

View file

@ -142,15 +142,15 @@ export const PaymentForm: React.FC<PaymentFormProps> = ({ onBack, onComplete, ba
const billingCycleLabel = const billingCycleLabel =
billingCycle === 'monthly' billingCycle === 'monthly'
? translate('::Public.products.billingcycle.monthly') ? translate('::App.StaticLookup.Monthly')
: billingCycle === 'yearly' : billingCycle === 'yearly'
? translate('::Public.products.billingcycle.yearly') ? translate('::App.StaticLookup.Yearly')
: '-' : '-'
return ( return (
<div className="mx-auto px-4 lg:px-8 mt-5"> <div className="mx-auto px-4 lg:px-8 mt-5">
{loading ? ( {loading ? (
<div className="text-center py-12 text-gray-500">{translate('::App.Loading')}</div> <div className="text-center py-12 text-gray-500">{translate('::App.Platform.LoadingWithThreeDot')}</div>
) : ( ) : (
<form onSubmit={handleSubmit} className="flex flex-col lg:flex-row gap-6"> <form onSubmit={handleSubmit} className="flex flex-col lg:flex-row gap-6">
{/* 3 Sütun: Ödeme Yöntemi | Taksit Seçenekleri | Sipariş Özeti */} {/* 3 Sütun: Ödeme Yöntemi | Taksit Seçenekleri | Sipariş Özeti */}
@ -199,7 +199,7 @@ export const PaymentForm: React.FC<PaymentFormProps> = ({ onBack, onComplete, ba
<div className="bg-white rounded-xl shadow border p-6 dark:border-gray-700 dark:bg-gray-900 dark:shadow-gray-950/40"> <div className="bg-white rounded-xl shadow border p-6 dark:border-gray-700 dark:bg-gray-900 dark:shadow-gray-950/40">
<h2 className="text-lg font-semibold mb-4 flex items-center"> <h2 className="text-lg font-semibold mb-4 flex items-center">
<FaLock className="w-5 h-5 text-green-600 mr-2" />{' '} <FaLock className="w-5 h-5 text-green-600 mr-2" />{' '}
{translate('::Public.payment.method.title')} {translate('::App.Listform.ListformField.PaymentMethodId')}
</h2> </h2>
<div className="space-y-3"> <div className="space-y-3">
{paymentMethods.map((method) => ( {paymentMethods.map((method) => (
@ -236,8 +236,8 @@ export const PaymentForm: React.FC<PaymentFormProps> = ({ onBack, onComplete, ba
</div> </div>
<div className="text-sm text-gray-600 dark:text-gray-400"> <div className="text-sm text-gray-600 dark:text-gray-400">
{method.name === defaultPaymentMethod {method.name === defaultPaymentMethod
? translate('::Public.payment.method.installmentsAvailable') ? translate('::App.PaymentMethod.InstallmentsAvailable')
: translate('::Public.payment.method.noCommission')} : translate('::App.PaymentMethod.NoCommission')}
</div> </div>
</div> </div>
<span <span
@ -278,15 +278,15 @@ export const PaymentForm: React.FC<PaymentFormProps> = ({ onBack, onComplete, ba
/> />
<div className="font-semibold text-base mb-1">{option.name}</div> <div className="font-semibold text-base mb-1">{option.name}</div>
<div className="text-gray-500 mb-1"> <div className="text-gray-500 mb-1">
{translate('::Public.payment.installments.commission')}{' '} {translate('::App.Listform.ListformField.Commission')}{' '}
<span className="font-semibold"> <span className="font-semibold">
%{(option.commission * 100).toFixed(1)} %{(option.commission * 100).toFixed(1)}
</span> </span>
</div> </div>
<div className="font-bold mb-1"> <div className="font-bold mb-1">
{option.installment > 1 {option.installment > 1
? `${option.installment} ${translate('::Public.payment.installments.monthly')}` ? `${option.installment} ${translate('::App.PaymentInstallments.Monthly')}`
: translate('::Public.payment.installments.single')} : translate('::App.PaymentInstallments.Single')}
</div> </div>
<div className="font-extrabold text-lg text-gray-900 dark:text-gray-100 mt-1"> <div className="font-extrabold text-lg text-gray-900 dark:text-gray-100 mt-1">
{formatPrice( {formatPrice(
@ -307,7 +307,7 @@ export const PaymentForm: React.FC<PaymentFormProps> = ({ onBack, onComplete, ba
{selectedPaymentMethod === defaultPaymentMethod && ( {selectedPaymentMethod === defaultPaymentMethod && (
<div className="bg-white rounded-xl shadow border p-6 dark:border-gray-700 dark:bg-gray-900 dark:shadow-gray-950/40 space-y-3"> <div className="bg-white rounded-xl shadow border p-6 dark:border-gray-700 dark:bg-gray-900 dark:shadow-gray-950/40 space-y-3">
<h3 className="text-md font-medium text-gray-800 dark:text-gray-100 mb-3"> <h3 className="text-md font-medium text-gray-800 dark:text-gray-100 mb-3">
{translate('::Public.payment.card.title')} {translate('::App.PaymentCard.CardTitle')}
</h3> </h3>
<input <input
type="text" type="text"
@ -315,7 +315,7 @@ export const PaymentForm: React.FC<PaymentFormProps> = ({ onBack, onComplete, ba
value={paymentData.cardName} value={paymentData.cardName}
onChange={(e) => handleInputChange('cardName', e.target.value)} onChange={(e) => handleInputChange('cardName', e.target.value)}
className="w-full px-4 py-2 border border-gray-300 rounded-lg bg-white text-gray-900 placeholder-gray-500 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-100 dark:placeholder-gray-400" className="w-full px-4 py-2 border border-gray-300 rounded-lg bg-white text-gray-900 placeholder-gray-500 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-100 dark:placeholder-gray-400"
placeholder={translate('::Public.payment.card.name')} placeholder={translate('::App.PaymentCard.CardName')}
/> />
<input <input
type="text" type="text"
@ -323,7 +323,7 @@ export const PaymentForm: React.FC<PaymentFormProps> = ({ onBack, onComplete, ba
value={paymentData.cardNumber} value={paymentData.cardNumber}
onChange={(e) => handleInputChange('cardNumber', e.target.value)} onChange={(e) => handleInputChange('cardNumber', e.target.value)}
className="w-full px-4 py-2 border border-gray-300 rounded-lg bg-white text-gray-900 placeholder-gray-500 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-100 dark:placeholder-gray-400" className="w-full px-4 py-2 border border-gray-300 rounded-lg bg-white text-gray-900 placeholder-gray-500 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-100 dark:placeholder-gray-400"
placeholder={translate('::Public.payment.card.number')} placeholder={translate('::App.Listform.ListformField.CardNumber')}
maxLength={19} maxLength={19}
/> />
<div className="grid grid-cols-2 gap-3"> <div className="grid grid-cols-2 gap-3">
@ -352,7 +352,7 @@ export const PaymentForm: React.FC<PaymentFormProps> = ({ onBack, onComplete, ba
{/* Sipariş Özeti ve Butonlar */} {/* Sipariş Özeti ve Butonlar */}
<div className="bg-white rounded-xl shadow border p-6 dark:border-gray-700 dark:bg-gray-900 dark:shadow-gray-950/40"> <div className="bg-white rounded-xl shadow border p-6 dark:border-gray-700 dark:bg-gray-900 dark:shadow-gray-950/40">
<h3 className="text-lg font-semibold text-gray-900 dark:text-gray-100 mb-4"> <h3 className="text-lg font-semibold text-gray-900 dark:text-gray-100 mb-4">
{translate('::Public.payment.summary.title')} {translate('::App.PaymentSummary.SummaryTitle')}
</h3> </h3>
<div className="space-y-4 mb-4"> <div className="space-y-4 mb-4">
@ -386,25 +386,25 @@ export const PaymentForm: React.FC<PaymentFormProps> = ({ onBack, onComplete, ba
<div className="space-y-1 text-sm border-t border-gray-200 dark:border-gray-700 pt-4 text-gray-600 dark:text-gray-300"> <div className="space-y-1 text-sm border-t border-gray-200 dark:border-gray-700 pt-4 text-gray-600 dark:text-gray-300">
<div className="flex justify-between"> <div className="flex justify-between">
<span>{translate('::Public.payment.summary.subtotal')}</span> <span>{translate('::App.Listform.ListformField.Subtotal')}</span>
<span>{formatPrice(basketData.subtotal)}</span> <span>{formatPrice(basketData.subtotal)}</span>
</div> </div>
<div className="flex justify-between"> <div className="flex justify-between">
<span> <span>
{translate('::Public.products.kdv')} {translate('::App.PublicProducts.Kdv')}
{vatRateLabel} {vatRateLabel}
</span> </span>
<span>{formatPrice(basketData.vatTotal)}</span> <span>{formatPrice(basketData.vatTotal)}</span>
</div> </div>
<div className="flex justify-between"> <div className="flex justify-between">
<span>{translate('::Public.payment.installments.commission')}</span> <span>{translate('::App.Listform.ListformField.Commission')}</span>
<span>{formatPrice(commission)}</span> <span>{formatPrice(commission)}</span>
</div> </div>
{selectedPaymentMethod === defaultPaymentMethod && {selectedPaymentMethod === defaultPaymentMethod &&
selectedInstallment?.installment && selectedInstallment?.installment &&
selectedInstallment.installment > 1 && ( selectedInstallment.installment > 1 && (
<div className="flex justify-between text-blue-600"> <div className="flex justify-between text-blue-600">
<span>{translate('::Public.payment.summary.monthlyInstallment')}: </span> <span>{translate('::App.PaymentSummary.MonthlyInstallment')}: </span>
<span> <span>
{formatPrice(finalTotal / selectedInstallment.installment)} x{' '} {formatPrice(finalTotal / selectedInstallment.installment)} x{' '}
{selectedInstallment.installment} {selectedInstallment.installment}
@ -426,7 +426,7 @@ export const PaymentForm: React.FC<PaymentFormProps> = ({ onBack, onComplete, ba
variant="default" variant="default"
size="sm" size="sm"
> >
{translate('::Back')} {translate('::App.Platform.Back')}
</Button> </Button>
<Button <Button
type="submit" type="submit"
@ -435,8 +435,8 @@ export const PaymentForm: React.FC<PaymentFormProps> = ({ onBack, onComplete, ba
size="sm" size="sm"
> >
{selectedPaymentMethod === 'bank-transfer' {selectedPaymentMethod === 'bank-transfer'
? translate('::Public.payment.buttons.completeOrder') ? translate('::App.PaymentButtons.CompleteOrder')
: translate('::Public.payment.buttons.pay')} : translate('::App.PaymentButtons.Pay')}
</Button> </Button>
</div> </div>
</div> </div>

View file

@ -67,10 +67,10 @@ export const ProductCard: React.FC<ProductCardProps> = ({
switch (product.unit) { switch (product.unit) {
case 'monthly': case 'monthly':
return globalBillingCycle === 'monthly' return globalBillingCycle === 'monthly'
? translate('::Public.Products.MonthPeriod') ? translate('::App.PublicProducts.MonthPeriod')
: translate('::Public.Products.YearPeriod') : translate('::App.PublicProducts.YearPeriod')
case 'yearly': case 'yearly':
return translate('::Public.Products.YearPeriod') return translate('::App.PublicProducts.YearPeriod')
default: default:
return '' return ''
} }
@ -79,8 +79,8 @@ export const ProductCard: React.FC<ProductCardProps> = ({
const getPeriodText = () => { const getPeriodText = () => {
const periodText = const periodText =
globalBillingCycle === 'monthly' globalBillingCycle === 'monthly'
? translate('::Public.products.billingcycle.month') ? translate('::App.Platform.Months')
: translate('::Public.products.billingcycle.year') : translate('::App.Platform.Years')
return globalPeriod > 1 ? ` (${globalPeriod} ${periodText})` : '' return globalPeriod > 1 ? ` (${globalPeriod} ${periodText})` : ''
} }
@ -127,7 +127,7 @@ export const ProductCard: React.FC<ProductCardProps> = ({
{product.isQuantityBased && ( {product.isQuantityBased && (
<div className="flex items-center space-x-3"> <div className="flex items-center space-x-3">
<span className="text-sm font-medium text-gray-700 dark:text-gray-300"> <span className="text-sm font-medium text-gray-700 dark:text-gray-300">
{translate('::Public.products.quantity')} {translate('::App.PublicProducts.Quantity')}
</span> </span>
<div className="flex items-center space-x-2"> <div className="flex items-center space-x-2">
<Button <Button
@ -149,7 +149,7 @@ export const ProductCard: React.FC<ProductCardProps> = ({
{globalBillingCycle === 'yearly' && product.monthlyPrice && product.yearlyPrice && ( {globalBillingCycle === 'yearly' && product.monthlyPrice && product.yearlyPrice && (
<div className="text-sm text-emerald-600 font-medium"> <div className="text-sm text-emerald-600 font-medium">
{translate('::Public.products.savings.yearly', { {translate('::App.ProductsSavings.Yearly', {
percent: Math.round((1 - product.yearlyPrice / (product.monthlyPrice * 12)) * 100), percent: Math.round((1 - product.yearlyPrice / (product.monthlyPrice * 12)) * 100),
})} })}
</div> </div>
@ -166,7 +166,7 @@ export const ProductCard: React.FC<ProductCardProps> = ({
</span> </span>
</div> </div>
<div className="mt-1 text-xs text-gray-500 dark:text-gray-400"> <div className="mt-1 text-xs text-gray-500 dark:text-gray-400">
{translate('::Public.products.kdv')} (%{(getVatRate() * 100).toFixed(0)}):{' '} {translate('::App.PublicProducts.Kdv')} (%{(getVatRate() * 100).toFixed(0)}):{' '}
{formatPrice(getVatAmount())} {formatPrice(getVatAmount())}
</div> </div>
{globalPeriod > 1 && ( {globalPeriod > 1 && (
@ -180,7 +180,7 @@ export const ProductCard: React.FC<ProductCardProps> = ({
)} )}
{globalPeriod <= 1 && ( {globalPeriod <= 1 && (
<div className="text-lg font-semibold text-blue-600 mt-1"> <div className="text-lg font-semibold text-blue-600 mt-1">
{translate('::Public.products.kdvdahil')} {formatPrice(getTotalPriceWithVat())} {translate('::App.PublicProducts.Kdvdahil')} {formatPrice(getTotalPriceWithVat())}
</div> </div>
)} )}
</div> </div>
@ -199,8 +199,8 @@ export const ProductCard: React.FC<ProductCardProps> = ({
className={!isDisabled ? 'hover:scale-[1.02] active:scale-[0.98]' : ''} className={!isDisabled ? 'hover:scale-[1.02] active:scale-[0.98]' : ''}
> >
{isDisabled {isDisabled
? translate('::Public.products.inBasket') ? translate('::App.PublicProducts.InBasket')
: translate('::Public.products.addToBasket')} : translate('::App.PublicProducts.AddToBasket')}
</Button> </Button>
) )
})()} })()}

View file

@ -92,7 +92,7 @@ export const ProductCatalog: React.FC<ProductCatalogProps> = ({
<div className="flex items-center space-x-2 mb-4"> <div className="flex items-center space-x-2 mb-4">
<FaFilter className="w-5 h-5 text-gray-600 dark:text-gray-300" /> <FaFilter className="w-5 h-5 text-gray-600 dark:text-gray-300" />
<h3 className="font-semibold text-gray-900 dark:text-gray-100"> <h3 className="font-semibold text-gray-900 dark:text-gray-100">
{translate('::Public.products.categories')} {translate('::App.Platform.Category')}
</h3> </h3>
</div> </div>
<div className="space-y-2"> <div className="space-y-2">
@ -108,7 +108,7 @@ export const ProductCatalog: React.FC<ProductCatalogProps> = ({
<span className="flex w-full items-center justify-between gap-3"> <span className="flex w-full items-center justify-between gap-3">
<span className="min-w-0 truncate"> <span className="min-w-0 truncate">
{category === 'all' {category === 'all'
? translate('::Public.products.categories.all') ? translate('::App.ProductsCategories.All')
: translate('::' + category)} : translate('::' + category)}
</span> </span>
<span <span
@ -130,14 +130,14 @@ export const ProductCatalog: React.FC<ProductCatalogProps> = ({
<div className="flex items-center space-x-2 mb-3"> <div className="flex items-center space-x-2 mb-3">
<FaSearch className="w-5 h-5 text-gray-600 dark:text-gray-300" /> <FaSearch className="w-5 h-5 text-gray-600 dark:text-gray-300" />
<h3 className="font-semibold text-gray-900 dark:text-gray-100"> <h3 className="font-semibold text-gray-900 dark:text-gray-100">
{translate('::ListForms.ListFormEdit.TabSearch')} {translate('::App.Platform.Search3')}
</h3> </h3>
</div> </div>
<div className="relative"> <div className="relative">
<FaSearch className="absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400 w-4 h-4" /> <FaSearch className="absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400 w-4 h-4" />
<input <input
type="text" type="text"
placeholder={translate('::Public.products.search.placeholder')} placeholder={translate('::App.ProductsSearch.SearchPlaceholder')}
value={searchQuery} value={searchQuery}
onChange={(e) => onSearchChange(e.target.value)} onChange={(e) => onSearchChange(e.target.value)}
className="w-full pl-10 pr-4 py-3 border border-gray-300 rounded-lg bg-white text-gray-900 placeholder-gray-500 focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-all dark:border-gray-700 dark:bg-gray-800 dark:text-gray-100 dark:placeholder-gray-400" className="w-full pl-10 pr-4 py-3 border border-gray-300 rounded-lg bg-white text-gray-900 placeholder-gray-500 focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-all dark:border-gray-700 dark:bg-gray-800 dark:text-gray-100 dark:placeholder-gray-400"
@ -174,9 +174,9 @@ export const ProductCatalog: React.FC<ProductCatalogProps> = ({
<FaFilter className="w-12 h-12 mx-auto" /> <FaFilter className="w-12 h-12 mx-auto" />
</div> </div>
<h2 className="text-2xl font-bold text-gray-900 mb-2 dark:text-gray-100"> <h2 className="text-2xl font-bold text-gray-900 mb-2 dark:text-gray-100">
{translate('::App.NoResults')} {translate('::App.Platform.NoResults2')}
</h2> </h2>
<p className="text-gray-600 dark:text-gray-300">{translate('::Public.products.empty.description')}</p> <p className="text-gray-600 dark:text-gray-300">{translate('::App.ProductsEmpty.EmptyDescription')}</p>
</div> </div>
)} )}
</> </>

View file

@ -556,7 +556,7 @@ export const TenantForm: React.FC<TenantFormProps> = ({ onSubmit }) => {
<div className="mb-6"> <div className="mb-6">
<h2 className="text-lg font-semibold mb-4 flex items-center"> <h2 className="text-lg font-semibold mb-4 flex items-center">
<FaUser className="w-5 h-5 text-green-600 mr-2" />{' '} <FaUser className="w-5 h-5 text-green-600 mr-2" />{' '}
{translate('::Public.payment.customerInfo')} {translate('::App.PublicPayment.CustomerInfo')}
</h2> </h2>
</div> </div>
@ -575,10 +575,10 @@ export const TenantForm: React.FC<TenantFormProps> = ({ onSubmit }) => {
<FaCheckCircle className="absolute right-4 top-4 h-5 w-5 text-blue-600 dark:text-sky-300" /> <FaCheckCircle className="absolute right-4 top-4 h-5 w-5 text-blue-600 dark:text-sky-300" />
)} )}
<div className="font-semibold text-gray-900 dark:text-gray-100 mb-2"> <div className="font-semibold text-gray-900 dark:text-gray-100 mb-2">
{translate('::Public.products.tenantForm.existing.title')} {translate('::App.Listform.ListformField.IsExisting')}
</div> </div>
<div className="text-sm text-gray-700 dark:text-gray-300"> <div className="text-sm text-gray-700 dark:text-gray-300">
{translate('::Public.products.tenantForm.existing.desc')} {translate('::App.TenantFormExisting.ExistingDesc')}
</div> </div>
</Button> </Button>
@ -595,10 +595,10 @@ export const TenantForm: React.FC<TenantFormProps> = ({ onSubmit }) => {
<FaCheckCircle className="absolute right-4 top-4 h-5 w-5 text-blue-600 dark:text-sky-300" /> <FaCheckCircle className="absolute right-4 top-4 h-5 w-5 text-blue-600 dark:text-sky-300" />
)} )}
<div className="font-semibold text-gray-900 dark:text-gray-100 mb-2"> <div className="font-semibold text-gray-900 dark:text-gray-100 mb-2">
{translate('::Public.products.tenantForm.new.title')} {translate('::App.TenantFormNew.NewTitle')}
</div> </div>
<div className="text-sm text-gray-700 dark:text-gray-300"> <div className="text-sm text-gray-700 dark:text-gray-300">
{translate('::Public.products.tenantForm.new.desc')} {translate('::App.TenantFormNew.NewDesc')}
</div> </div>
</Button> </Button>
</div> </div>
@ -611,7 +611,7 @@ export const TenantForm: React.FC<TenantFormProps> = ({ onSubmit }) => {
{isExisting ? ( {isExisting ? (
<div> <div>
<label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2"> <label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">
{translate('::Public.payment.customer.code')} {translate('::App.Platform.Organization')}
</label> </label>
<div className="relative flex flex-col sm:flex-row sm:items-stretch gap-3"> <div className="relative flex flex-col sm:flex-row sm:items-stretch gap-3">
<div className="relative w-full"> <div className="relative w-full">
@ -643,7 +643,7 @@ export const TenantForm: React.FC<TenantFormProps> = ({ onSubmit }) => {
> >
{isLoadingTenant {isLoadingTenant
? translate('::App.Tenant.Searching') ? translate('::App.Tenant.Searching')
: translate('::Public.products.tenantForm.searchOrg')} : translate('::App.ProductsTenantForm.SearchOrg')}
</Button> </Button>
</div> </div>
@ -664,21 +664,21 @@ export const TenantForm: React.FC<TenantFormProps> = ({ onSubmit }) => {
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<FaBuilding className="w-4 h-4 text-gray-500" /> <FaBuilding className="w-4 h-4 text-gray-500" />
<span className="font-medium"> <span className="font-medium">
{translate('::Public.payment.customer.company')} {translate('::App.Platform.Company')}
</span> </span>
<span>{formData.organizationName}</span> <span>{formData.organizationName}</span>
</div> </div>
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<FaUser className="w-4 h-4 text-gray-500" /> <FaUser className="w-4 h-4 text-gray-500" />
<span className="font-medium">{translate('::LoginPanel.Profil')}</span> <span className="font-medium">{translate('::App.Listform.ListformField.Founder')}</span>
<span>{formData.founder}</span> <span>{formData.founder}</span>
</div> </div>
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<FaEnvelope className="w-4 h-4 text-gray-500" /> <FaEnvelope className="w-4 h-4 text-gray-500" />
<span className="font-medium"> <span className="font-medium">
{translate('::Abp.Account.EmailAddress')}: {translate('::App.Listform.ListformField.Email')}:
</span> </span>
<span>{formData.email}</span> <span>{formData.email}</span>
</div> </div>
@ -694,7 +694,7 @@ export const TenantForm: React.FC<TenantFormProps> = ({ onSubmit }) => {
<div className="flex items-start gap-2"> <div className="flex items-start gap-2">
<FaMapPin className="w-4 h-4 text-gray-500 mt-0.5" /> <FaMapPin className="w-4 h-4 text-gray-500 mt-0.5" />
<div> <div>
<span className="font-medium">{translate('::App.Address')}:</span> <span className="font-medium">{translate('::App.Listform.ListformField.Address')}:</span>
<div>{formData.address1}</div> <div>{formData.address1}</div>
</div> </div>
</div> </div>
@ -702,21 +702,21 @@ export const TenantForm: React.FC<TenantFormProps> = ({ onSubmit }) => {
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<FaGlobe className="w-4 h-4 text-gray-500" /> <FaGlobe className="w-4 h-4 text-gray-500" />
<span className="font-medium"> <span className="font-medium">
{translate('::Public.payment.customer.country')}: {translate('::App.Listform.ListformField.Country')}:
</span> </span>
<span>{formData.country}</span> <span>{formData.country}</span>
</div> </div>
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<FaGlobe className="w-4 h-4 text-gray-500" /> <FaGlobe className="w-4 h-4 text-gray-500" />
<span className="font-medium">{translate('::Public.common.city')}:</span> <span className="font-medium">{translate('::App.Listform.ListformField.City')}:</span>
<span>{formData.city}</span> <span>{formData.city}</span>
</div> </div>
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<FaMap className="w-4 h-4 text-gray-500" /> <FaMap className="w-4 h-4 text-gray-500" />
<span className="font-medium"> <span className="font-medium">
{translate('::Public.payment.customer.district')}: {translate('::App.Listform.ListformField.District')}:
</span> </span>
<span>{formData.district}</span> <span>{formData.district}</span>
</div> </div>
@ -732,7 +732,7 @@ export const TenantForm: React.FC<TenantFormProps> = ({ onSubmit }) => {
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<FaMapPin className="w-4 h-4 text-gray-500" /> <FaMapPin className="w-4 h-4 text-gray-500" />
<span className="font-medium"> <span className="font-medium">
{translate('::Public.payment.customer.postalCode')}: {translate('::App.Listform.ListformField.PostalCode')}:
</span> </span>
<span>{formData.postalCode}</span> <span>{formData.postalCode}</span>
</div> </div>
@ -740,7 +740,7 @@ export const TenantForm: React.FC<TenantFormProps> = ({ onSubmit }) => {
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<FaMoneyBillWave className="w-4 h-4 text-gray-500" /> <FaMoneyBillWave className="w-4 h-4 text-gray-500" />
<span className="font-medium"> <span className="font-medium">
{translate('::Public.contact.taxOffice')}: {translate('::App.PublicContact.TaxOffice')}:
</span> </span>
<span>{formData.taxOffice}</span> <span>{formData.taxOffice}</span>
</div> </div>
@ -748,7 +748,7 @@ export const TenantForm: React.FC<TenantFormProps> = ({ onSubmit }) => {
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<FaDollarSign className="w-4 h-4 text-gray-500" /> <FaDollarSign className="w-4 h-4 text-gray-500" />
<span className="font-medium"> <span className="font-medium">
{translate('::Public.contact.taxNumber')}: {translate('::App.PublicContact.TaxNumber')}:
</span> </span>
<span>{formData.vknTckn}</span> <span>{formData.vknTckn}</span>
</div> </div>
@ -757,7 +757,7 @@ export const TenantForm: React.FC<TenantFormProps> = ({ onSubmit }) => {
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<FaUserPlus className="w-4 h-4 text-gray-500" /> <FaUserPlus className="w-4 h-4 text-gray-500" />
<span className="font-medium"> <span className="font-medium">
{translate('::Public.payment.customer.reference')}: {translate('::App.StaticLookup.Reference')}:
</span> </span>
<span>{formData.reference}</span> <span>{formData.reference}</span>
</div> </div>
@ -769,7 +769,7 @@ export const TenantForm: React.FC<TenantFormProps> = ({ onSubmit }) => {
<div className="space-y-4"> <div className="space-y-4">
<div> <div>
<label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2"> <label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">
{translate('::Public.products.tenantForm.orgName')} {translate('::App.Platform.Company')}
</label> </label>
<div className="relative"> <div className="relative">
<FaBuilding className="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 w-5 h-5" /> <FaBuilding className="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 w-5 h-5" />
@ -787,7 +787,7 @@ export const TenantForm: React.FC<TenantFormProps> = ({ onSubmit }) => {
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4"> <div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
<div> <div>
<label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2"> <label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">
{translate('::LoginPanel.Profil')} {translate('::App.Listform.ListformField.Founder')}
</label> </label>
<div className="relative"> <div className="relative">
<FaUser className="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 w-5 h-5" /> <FaUser className="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 w-5 h-5" />
@ -803,7 +803,7 @@ export const TenantForm: React.FC<TenantFormProps> = ({ onSubmit }) => {
</div> </div>
<div> <div>
<label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2"> <label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">
{translate('::Public.payment.customer.country')} {translate('::App.Listform.ListformField.Country')}
</label> </label>
<div className="relative"> <div className="relative">
<Select<LocationOption<CountryDto>> <Select<LocationOption<CountryDto>>
@ -824,7 +824,7 @@ export const TenantForm: React.FC<TenantFormProps> = ({ onSubmit }) => {
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4"> <div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
<div> <div>
<label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2"> <label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">
{translate('::Public.common.city')} {translate('::App.Listform.ListformField.City')}
</label> </label>
<div className="relative"> <div className="relative">
<Select<LocationOption<CityDto>> <Select<LocationOption<CityDto>>
@ -845,7 +845,7 @@ export const TenantForm: React.FC<TenantFormProps> = ({ onSubmit }) => {
</div> </div>
<div> <div>
<label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2"> <label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">
{translate('::Public.payment.customer.district')} {translate('::App.Listform.ListformField.District')}
</label> </label>
<div className="relative"> <div className="relative">
<Select<LocationOption<DistrictDto>> <Select<LocationOption<DistrictDto>>
@ -897,7 +897,7 @@ export const TenantForm: React.FC<TenantFormProps> = ({ onSubmit }) => {
<div> <div>
<label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2"> <label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">
{translate('::Public.payment.customer.postalCode')} {translate('::App.Listform.ListformField.PostalCode')}
</label> </label>
<div className="relative"> <div className="relative">
<FaMapPin className="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 w-5 h-5" /> <FaMapPin className="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 w-5 h-5" />
@ -915,7 +915,7 @@ export const TenantForm: React.FC<TenantFormProps> = ({ onSubmit }) => {
<div> <div>
<label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2"> <label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">
{translate('::App.Address')} {translate('::App.Listform.ListformField.Address')}
</label> </label>
<div className="relative"> <div className="relative">
<FaMapPin className="absolute left-3 top-3 text-gray-400 w-5 h-5" /> <FaMapPin className="absolute left-3 top-3 text-gray-400 w-5 h-5" />
@ -978,7 +978,7 @@ export const TenantForm: React.FC<TenantFormProps> = ({ onSubmit }) => {
</div> </div>
<div> <div>
<label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2"> <label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">
{translate('::Abp.Account.EmailAddress')} {translate('::App.Listform.ListformField.Email')}
</label> </label>
<div className="relative"> <div className="relative">
<FaEnvelope className="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 w-5 h-5" /> <FaEnvelope className="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 w-5 h-5" />
@ -1024,14 +1024,14 @@ export const TenantForm: React.FC<TenantFormProps> = ({ onSubmit }) => {
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4"> <div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
<div> <div>
<label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2"> <label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">
{translate('::Public.payment.customer.website')} {translate('::App.Listform.ListformField.Website')}
</label> </label>
<div className="relative"> <div className="relative">
<FaSitemap className="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 w-5 h-5" /> <FaSitemap className="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 w-5 h-5" />
<input <input
type="text" type="text"
required required
placeholder={translate('::Public.payment.customer.website')} placeholder={translate('::App.Listform.ListformField.Website')}
value={formData.website || ''} value={formData.website || ''}
onChange={(e) => { onChange={(e) => {
handleInputChange('website', e.target.value) handleInputChange('website', e.target.value)
@ -1067,13 +1067,13 @@ export const TenantForm: React.FC<TenantFormProps> = ({ onSubmit }) => {
</div> </div>
<div> <div>
<label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2"> <label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">
{translate('::Public.payment.customer.reference')} {translate('::App.StaticLookup.Reference')}
</label> </label>
<div className="relative"> <div className="relative">
<FaUserPlus className="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 w-5 h-5" /> <FaUserPlus className="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 w-5 h-5" />
<input <input
type="text" type="text"
placeholder={translate('::Public.payment.customer.reference')} placeholder={translate('::App.StaticLookup.Reference')}
value={formData.reference || ''} value={formData.reference || ''}
onChange={(e) => handleInputChange('reference', e.target.value)} onChange={(e) => handleInputChange('reference', e.target.value)}
className="w-full pl-10 pr-4 py-2 border border-gray-300 rounded-lg bg-white text-gray-900 placeholder-gray-500 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-100 dark:placeholder-gray-400 focus:ring-2 focus:ring-blue-500 focus:border-transparent" className="w-full pl-10 pr-4 py-2 border border-gray-300 rounded-lg bg-white text-gray-900 placeholder-gray-500 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-100 dark:placeholder-gray-400 focus:ring-2 focus:ring-blue-500 focus:border-transparent"
@ -1085,7 +1085,7 @@ export const TenantForm: React.FC<TenantFormProps> = ({ onSubmit }) => {
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4"> <div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
<div> <div>
<label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2"> <label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">
{translate('::Public.contact.taxOffice')} {translate('::App.PublicContact.TaxOffice')}
</label> </label>
<div className="relative"> <div className="relative">
<FaBuilding className="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 w-5 h-5" /> <FaBuilding className="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 w-5 h-5" />
@ -1101,7 +1101,7 @@ export const TenantForm: React.FC<TenantFormProps> = ({ onSubmit }) => {
</div> </div>
<div> <div>
<label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2"> <label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">
{translate('::Public.contact.taxNumber')} {translate('::App.PublicContact.TaxNumber')}
</label> </label>
<div className="relative"> <div className="relative">
<FaDollarSign className="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 w-5 h-5" /> <FaDollarSign className="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 w-5 h-5" />
@ -1129,7 +1129,7 @@ export const TenantForm: React.FC<TenantFormProps> = ({ onSubmit }) => {
variant="default" variant="default"
size="sm" size="sm"
> >
{translate('::Back')} {translate('::App.Platform.Back')}
</Button> </Button>
<Button <Button
type="submit" type="submit"

View file

@ -74,8 +74,8 @@ function ScriptBuilderDialog({
cancelLabel, cancelLabel,
}: ScriptBuilderDialogProps) { }: ScriptBuilderDialogProps) {
const { translate } = useLocalization() const { translate } = useLocalization()
const saveText = saveLabel ?? translate('::Save') const saveText = saveLabel ?? translate('::App.Platform.Save')
const cancelText = cancelLabel ?? translate('::Cancel') const cancelText = cancelLabel ?? translate('::App.Platform.Cancel')
const [rules, setRules] = useState<ScriptRule[]>([]) const [rules, setRules] = useState<ScriptRule[]>([])
const [code, setCode] = useState('') const [code, setCode] = useState('')
// Sihirbaz bir butona basılarak açılır; varsayılan her zaman kod editörüdür. // Sihirbaz bir butona basılarak açılır; varsayılan her zaman kod editörüdür.
@ -405,8 +405,8 @@ function ScriptBuilderDialog({
updateRule(rule.id, { join: event.target.value as ScriptRule['join'] }) updateRule(rule.id, { join: event.target.value as ScriptRule['join'] })
} }
> >
<option value="and">{translate('::App.ScriptBuilder.And')}</option> <option value="and">{translate('::App.Platform.And')}</option>
<option value="or">{translate('::App.ScriptBuilder.Or')}</option> <option value="or">{translate('::App.Platform.Or')}</option>
</select> </select>
</label> </label>
) : ( ) : (
@ -440,7 +440,7 @@ function ScriptBuilderDialog({
{operator?.needsSource && dialect.conditionKinds.length > 1 && ( {operator?.needsSource && dialect.conditionKinds.length > 1 && (
<label className="col-span-12 min-w-0 md:col-span-2"> <label className="col-span-12 min-w-0 md:col-span-2">
<span className="mb-1 block text-xs text-gray-500"> <span className="mb-1 block text-xs text-gray-500">
{translate('::App.ScriptBuilder.Source')} {translate('::App.Listform.ListformField.SourceId')}
</span> </span>
<select <select
className={controlClass} className={controlClass}
@ -461,7 +461,7 @@ function ScriptBuilderDialog({
{operator?.needsSource && ( {operator?.needsSource && (
<label className="col-span-12 min-w-0 md:col-span-3"> <label className="col-span-12 min-w-0 md:col-span-3">
<span className="mb-1 block text-xs text-gray-500"> <span className="mb-1 block text-xs text-gray-500">
{translate('::App.ScriptBuilder.Field')} {translate('::App.Platform.Field')}
</span> </span>
{renderOptionInput( {renderOptionInput(
kind?.optionSource, kind?.optionSource,
@ -475,7 +475,7 @@ function ScriptBuilderDialog({
{operator?.needsValue && ( {operator?.needsValue && (
<label className="col-span-12 min-w-0 md:col-span-2"> <label className="col-span-12 min-w-0 md:col-span-2">
<span className="mb-1 block text-xs text-gray-500"> <span className="mb-1 block text-xs text-gray-500">
{translate('::App.ScriptBuilder.Value')} {translate('::App.Listform.ListformField.Value')}
</span> </span>
<input <input
className={controlClass} className={controlClass}
@ -537,7 +537,7 @@ function ScriptBuilderDialog({
{conditions.length > 1 && ( {conditions.length > 1 && (
<span className="shrink-0 rounded-full bg-violet-100 px-2 py-[1px] text-[11px] text-violet-700 dark:bg-violet-900 dark:text-violet-200"> <span className="shrink-0 rounded-full bg-violet-100 px-2 py-[1px] text-[11px] text-violet-700 dark:bg-violet-900 dark:text-violet-200">
{translate('::App.ScriptBuilder.ConditionCount', { count: conditions.length })} ·{' '} {translate('::App.ScriptBuilder.ConditionCount', { count: conditions.length })} ·{' '}
{translate(rule.join === 'or' ? '::App.ScriptBuilder.Or' : '::App.ScriptBuilder.And')} {translate(rule.join === 'or' ? '::App.Platform.Or' : '::App.Platform.And')}
</span> </span>
)} )}
{triggerInfo && trigger !== dialect.triggers?.[0]?.value && ( {triggerInfo && trigger !== dialect.triggers?.[0]?.value && (
@ -766,7 +766,7 @@ function ScriptBuilderDialog({
</Button> </Button>
)} )}
<Button size="sm" type="button" icon={<FaCopy />} onClick={copyScript}> <Button size="sm" type="button" icon={<FaCopy />} onClick={copyScript}>
{translate(copied ? '::App.Platform.Copied' : '::App.SqlQueryManager.Copy')} {translate(copied ? '::App.Platform.Copied' : '::App.Platform.Copy')}
</Button> </Button>
<div className="flex overflow-hidden rounded-md border border-gray-200 dark:border-gray-700"> <div className="flex overflow-hidden rounded-md border border-gray-200 dark:border-gray-700">
<button <button
@ -877,7 +877,7 @@ function ScriptBuilderDialog({
key={recipe.id} key={recipe.id}
size="sm" size="sm"
type="button" type="button"
title={`${recipe.summary}\n\n${translate('::App.ScriptBuilder.Example')}: ${recipe.example}`} title={`${recipe.summary}\n\n${translate('::App.Platform.Example')}: ${recipe.example}`}
onClick={() => addRule(recipe.id)} onClick={() => addRule(recipe.id)}
> >
{recipe.label} {recipe.label}
@ -911,7 +911,7 @@ function ScriptBuilderDialog({
? translate('::App.ScriptBuilder.LineCount', { ? translate('::App.ScriptBuilder.LineCount', {
count: generatedScript.split('\n').length - 1, count: generatedScript.split('\n').length - 1,
}) })
: translate('::ListForms.EditorOptions.Empty')} : translate('::App.Platform.Empty')}
</span> </span>
</div> </div>
<div className="min-h-0 flex-1 overflow-hidden rounded-lg border border-gray-200 dark:border-gray-700"> <div className="min-h-0 flex-1 overflow-hidden rounded-lg border border-gray-200 dark:border-gray-700">

View file

@ -163,36 +163,36 @@ export const DEFAULT_SCRIPT_OPERATORS: ScriptOperator[] = [
{ value: 'always', label: 'Her zaman' }, { value: 'always', label: 'Her zaman' },
{ {
value: 'equals', value: 'equals',
label: 'App.ScriptBuilder.Operator.Equals', label: 'App.ScriptBuilderOperator.Equals',
needsValue: true, needsValue: true,
needsSource: true, needsSource: true,
}, },
{ {
value: 'notEquals', value: 'notEquals',
label: 'App.ScriptBuilder.Operator.NotEquals', label: 'App.ScriptBuilderOperator.NotEquals',
needsValue: true, needsValue: true,
needsSource: true, needsSource: true,
}, },
{ {
value: 'contains', value: 'contains',
label: 'App.ScriptBuilder.Operator.Contains', label: 'App.ScriptBuilderOperator.Contains',
needsValue: true, needsValue: true,
needsSource: true, needsSource: true,
}, },
{ value: 'empty', label: 'App.ScriptBuilder.Operator.Empty', needsSource: true }, { value: 'empty', label: 'App.ScriptBuilderOperator.Empty', needsSource: true },
{ value: 'notEmpty', label: 'Doluysa', needsSource: true }, { value: 'notEmpty', label: 'Doluysa', needsSource: true },
{ {
value: 'greaterThan', value: 'greaterThan',
label: 'App.ScriptBuilder.Operator.GreaterThan', label: 'App.ScriptBuilderOperator.GreaterThan',
needsValue: true, needsValue: true,
needsSource: true, needsSource: true,
}, },
{ {
value: 'lessThan', value: 'lessThan',
label: 'App.ScriptBuilder.Operator.LessThan', label: 'App.ScriptBuilderOperator.LessThan',
needsValue: true, needsValue: true,
needsSource: true, needsSource: true,
}, },
{ value: 'isTrue', label: 'App.ScriptBuilder.Operator.IsTrue', needsSource: true }, { value: 'isTrue', label: 'App.ScriptBuilderOperator.IsTrue', needsSource: true },
{ value: 'isFalse', label: 'App.ScriptBuilder.Operator.IsFalse', needsSource: true }, { value: 'isFalse', label: 'App.ScriptBuilderOperator.IsFalse', needsSource: true },
] ]

View file

@ -29,7 +29,7 @@ const DbMigrateButton = ({ hideLabelOnMobile = false, className }: DbMigrateButt
return null return null
} }
const label = translate('::ListForms.ListForm.DbMigrate') const label = translate('::App.ListForm.DbMigrate')
return ( return (
<> <>
@ -39,7 +39,7 @@ const DbMigrateButton = ({ hideLabelOnMobile = false, className }: DbMigrateButt
icon={<FcAcceptDatabase />} icon={<FcAcceptDatabase />}
className={className} className={className}
onClick={() => setIsConfirmOpen(true)} onClick={() => setIsConfirmOpen(true)}
title={translate('::App.DbMigrate.StartMessage')} title={translate('::App.Platform.StartMessage')}
> >
{hideLabelOnMobile ? <span className="hidden sm:inline">{label}</span> : label} {hideLabelOnMobile ? <span className="hidden sm:inline">{label}</span> : label}
</Button> </Button>
@ -48,7 +48,7 @@ const DbMigrateButton = ({ hideLabelOnMobile = false, className }: DbMigrateButt
isOpen={isConfirmOpen} isOpen={isConfirmOpen}
type="info" type="info"
title={label} title={label}
cancelText={translate('::Cancel')} cancelText={translate('::App.Platform.Cancel')}
confirmText={translate('::App.Platform.Execute')} confirmText={translate('::App.Platform.Execute')}
onCancel={() => setIsConfirmOpen(false)} onCancel={() => setIsConfirmOpen(false)}
onClose={() => setIsConfirmOpen(false)} onClose={() => setIsConfirmOpen(false)}

View file

@ -126,11 +126,11 @@ const TenantSelector = () => {
return ( return (
<> <>
<label className="form-label mb-2" style={tenantStyle}> <label className="form-label mb-2" style={tenantStyle}>
{translate('::Organization')} {translate('::App.Platform.Organization')}
</label> </label>
<div className="mb-4"> <div className="mb-4">
<Input <Input
placeholder={translate('::Organization')} placeholder={translate('::App.Platform.Organization')}
value={tenantName ?? ''} value={tenantName ?? ''}
onChange={(event) => handleTenantNameChange(event.target.value)} onChange={(event) => handleTenantNameChange(event.target.value)}
onBlur={handleTenantNameBlur} onBlur={handleTenantNameBlur}

View file

@ -281,7 +281,7 @@ const MessengerWidgetContent = ({ className }: { className?: string }) => {
if (tooLarge) { if (tooLarge) {
toast.push( toast.push(
<Notification <Notification
title={translate('::MessengerWidget.FileSizeLimitExceeded')} title={translate('::App.MessengerWidget.FileSizeLimitExceeded')}
type="warning" type="warning"
/>, />,
{ {
@ -299,7 +299,7 @@ const MessengerWidgetContent = ({ className }: { className?: string }) => {
setAttachments((prev) => [...prev, ...uploaded]) setAttachments((prev) => [...prev, ...uploaded])
} catch { } catch {
toast.push( toast.push(
<Notification title={translate('::MessengerWidget.FileUploadFailed')} type="danger" />, <Notification title={translate('::App.MessengerWidget.FileUploadFailed')} type="danger" />,
{ placement: 'bottom-end' }, { placement: 'bottom-end' },
) )
} finally { } finally {
@ -314,7 +314,7 @@ const MessengerWidgetContent = ({ className }: { className?: string }) => {
if (!canSendToSelectedContacts) { if (!canSendToSelectedContacts) {
toast.push( toast.push(
<Notification <Notification
title={translate('::MessengerWidget.OnlyOnlineUsersCanReceiveMessages')} title={translate('::App.MessengerWidget.OnlyOnlineUsersCanReceiveMessages')}
type="warning" type="warning"
/>, />,
{ {
@ -339,21 +339,21 @@ const MessengerWidgetContent = ({ className }: { className?: string }) => {
}, 0) }, 0)
} catch { } catch {
toast.push( toast.push(
<Notification title={translate('::MessengerWidget.MessageSendFailed')} type="danger" />, <Notification title={translate('::App.MessengerWidget.MessageSendFailed')} type="danger" />,
{ placement: 'bottom-end' }, { placement: 'bottom-end' },
) )
} }
} }
const deleteMessage = async (messageId: string) => { const deleteMessage = async (messageId: string) => {
if (!window.confirm(translate('::MessengerWidget.DeleteMessageConfirmation'))) return if (!window.confirm(translate('::App.MessengerWidget.DeleteMessageConfirmation'))) return
try { try {
const response = await deleteMessengerMessage(messageId) const response = await deleteMessengerMessage(messageId)
setMessages((prev) => prev.filter((item) => item.id !== response.data.messageId)) setMessages((prev) => prev.filter((item) => item.id !== response.data.messageId))
} catch { } catch {
toast.push( toast.push(
<Notification title={translate('::MessengerWidget.MessageDeleteFailed')} type="danger" />, <Notification title={translate('::App.MessengerWidget.MessageDeleteFailed')} type="danger" />,
{ placement: 'bottom-end' }, { placement: 'bottom-end' },
) )
} }
@ -377,7 +377,7 @@ const MessengerWidgetContent = ({ className }: { className?: string }) => {
<> <>
<Button <Button
type="button" type="button"
aria-label={translate('::MessengerWidget.Minimize')} aria-label={translate('::App.MessengerWidget.Minimize')}
variant="plain" variant="plain"
shape="none" shape="none"
className="fixed inset-0 z-50 !h-auto cursor-default bg-slate-950/25 !px-0 backdrop-blur-[1px] hover:!bg-slate-950/25 active:!bg-slate-950/25 dark:bg-black/55 dark:hover:!bg-black/55 dark:active:!bg-black/55" className="fixed inset-0 z-50 !h-auto cursor-default bg-slate-950/25 !px-0 backdrop-blur-[1px] hover:!bg-slate-950/25 active:!bg-slate-950/25 dark:bg-black/55 dark:hover:!bg-black/55 dark:active:!bg-black/55"
@ -405,15 +405,15 @@ const MessengerWidgetContent = ({ className }: { className?: string }) => {
<div className="truncate text-sm font-semibold text-gray-900 dark:text-gray-100"> <div className="truncate text-sm font-semibold text-gray-900 dark:text-gray-100">
{auth.user.name || {auth.user.name ||
auth.user.userName || auth.user.userName ||
translate('::MessengerWidget.Title')} translate('::App.MessengerWidget.Title')}
</div> </div>
<div className="flex items-center gap-1 text-xs text-gray-500 dark:text-gray-300"> <div className="flex items-center gap-1 text-xs text-gray-500 dark:text-gray-300">
<span <span
className={`h-2 w-2 rounded-full ${connected ? 'bg-emerald-500' : 'bg-gray-400'}`} className={`h-2 w-2 rounded-full ${connected ? 'bg-emerald-500' : 'bg-gray-400'}`}
/> />
{connected {connected
? translate('::MessengerWidget.Connected') ? translate('::App.MessengerWidget.Connected')
: translate('::MessengerWidget.Connecting')} : translate('::App.MessengerWidget.Connecting')}
</div> </div>
</div> </div>
</div> </div>
@ -434,7 +434,7 @@ const MessengerWidgetContent = ({ className }: { className?: string }) => {
size="sm" size="sm"
value={filter} value={filter}
prefix={<FaSearch />} prefix={<FaSearch />}
placeholder={translate('::MessengerWidget.SearchPerson')} placeholder={translate('::App.MessengerWidget.SearchPerson')}
onChange={(event) => setFilter(event.target.value)} onChange={(event) => setFilter(event.target.value)}
/> />
</div> </div>
@ -443,12 +443,12 @@ const MessengerWidgetContent = ({ className }: { className?: string }) => {
variant={multiSelect ? 'twoTone' : 'default'} variant={multiSelect ? 'twoTone' : 'default'}
icon={<FaUsers />} icon={<FaUsers />}
className="flex-1 shrink-0" className="flex-1 shrink-0"
aria-label={translate('::MessengerWidget.MultiSelect')} aria-label={translate('::App.MessengerWidget.MultiSelect')}
onClick={toggleMultiSelect} onClick={toggleMultiSelect}
title={ title={
multiSelect multiSelect
? translate('::MessengerWidget.MultiSelectEnabled') ? translate('::App.MessengerWidget.MultiSelectEnabled')
: translate('::MessengerWidget.MultiSelect') : translate('::App.MessengerWidget.MultiSelect')
} }
/> />
</div> </div>
@ -491,8 +491,8 @@ const MessengerWidgetContent = ({ className }: { className?: string }) => {
}`} }`}
/> />
{contact.isOnline {contact.isOnline
? translate('::MessengerWidget.Online') ? translate('::App.MessengerWidget.Online')
: translate('::MessengerWidget.Offline')} : translate('::App.MessengerWidget.Offline')}
</span> </span>
</span> </span>
{contactUnread > 0 && ( {contactUnread > 0 && (
@ -547,19 +547,19 @@ const MessengerWidgetContent = ({ className }: { className?: string }) => {
{selectedContacts.length === 1 {selectedContacts.length === 1
? selectedContacts[0].fullName ? selectedContacts[0].fullName
: selectedContacts.length > 1 : selectedContacts.length > 1
? `${selectedContacts.length} ${translate('::MessengerWidget.PeopleSelected')}` ? `${selectedContacts.length} ${translate('::App.MessengerWidget.PeopleSelected')}`
: translate('::MessengerWidget.Chat')} : translate('::App.Platform.SohbetAnswer')}
</div> </div>
<div className="truncate text-xs text-gray-500 dark:text-gray-300"> <div className="truncate text-xs text-gray-500 dark:text-gray-300">
{selectedContacts.length === 1 {selectedContacts.length === 1
? `${selectedContacts[0].isOnline ? translate('::MessengerWidget.Online') : translate('::MessengerWidget.Offline')} - ${ ? `${selectedContacts[0].isOnline ? translate('::App.MessengerWidget.Online') : translate('::App.MessengerWidget.Offline')} - ${
selectedContacts[0].email || selectedContacts[0].userName selectedContacts[0].email || selectedContacts[0].userName
}` }`
: selectedContacts.length > 1 : selectedContacts.length > 1
? canSendToSelectedContacts ? canSendToSelectedContacts
? translate('::MessengerWidget.GroupMessage') ? translate('::App.MessengerWidget.GroupMessage')
: translate('::MessengerWidget.OfflineUserSelected') : translate('::App.MessengerWidget.OfflineUserSelected')
: translate('::MessengerWidget.SelectPersonToSendMessage')} : translate('::App.MessengerWidget.SelectPersonToSendMessage')}
</div> </div>
</div> </div>
</div> </div>
@ -577,7 +577,7 @@ const MessengerWidgetContent = ({ className }: { className?: string }) => {
<div className="flex-1 overflow-y-auto bg-white/55 px-4 py-3 backdrop-blur-xl dark:bg-gray-900/55"> <div className="flex-1 overflow-y-auto bg-white/55 px-4 py-3 backdrop-blur-xl dark:bg-gray-900/55">
{visibleMessages.length === 0 && ( {visibleMessages.length === 0 && (
<div className="flex h-full items-center justify-center text-sm text-gray-400"> <div className="flex h-full items-center justify-center text-sm text-gray-400">
{translate('::MessengerWidget.NoMessagesYet')} {translate('::App.MessengerWidget.NoMessagesYet')}
</div> </div>
)} )}
@ -613,7 +613,7 @@ const MessengerWidgetContent = ({ className }: { className?: string }) => {
{own {own
? auth.user.name || ? auth.user.name ||
auth.user.userName || auth.user.userName ||
translate('::MessengerWidget.Me') translate('::App.MessengerWidget.Me')
: message.senderName} : message.senderName}
</span> </span>
</div> </div>
@ -655,7 +655,7 @@ const MessengerWidgetContent = ({ className }: { className?: string }) => {
{own && deletable && ( {own && deletable && (
<Button <Button
type="button" type="button"
title={translate('::MessengerWidget.DeleteMessage')} title={translate('::App.MessengerWidget.DeleteMessage')}
size="xs" size="xs"
variant="plain" variant="plain"
shape="circle" shape="circle"
@ -718,7 +718,7 @@ const MessengerWidgetContent = ({ className }: { className?: string }) => {
className="hidden" className="hidden"
onChange={(event) => handleFiles(event.target.files)} onChange={(event) => handleFiles(event.target.files)}
/> />
<Tooltip title={translate('::MessengerWidget.AddFile')}> <Tooltip title={translate('::App.MessengerWidget.AddFile')}>
<Button <Button
type="button" type="button"
size="sm" size="sm"
@ -730,7 +730,7 @@ const MessengerWidgetContent = ({ className }: { className?: string }) => {
onClick={() => fileInputRef.current?.click()} onClick={() => fileInputRef.current?.click()}
/> />
</Tooltip> </Tooltip>
<Tooltip title={translate('::MessengerWidget.Emoji')}> <Tooltip title={translate('::App.MessengerWidget.Emoji')}>
<Button <Button
type="button" type="button"
size="sm" size="sm"
@ -745,8 +745,8 @@ const MessengerWidgetContent = ({ className }: { className?: string }) => {
value={text} value={text}
placeholder={ placeholder={
canSendToSelectedContacts canSendToSelectedContacts
? translate('::MessengerWidget.WriteMessage') ? translate('::App.MessengerWidget.WriteMessage')
: translate('::MessengerWidget.OfflineUsersCannotReceiveMessages') : translate('::App.MessengerWidget.OfflineUsersCannotReceiveMessages')
} }
rows={1} rows={1}
disabled={!canSendToSelectedContacts} disabled={!canSendToSelectedContacts}
@ -779,14 +779,14 @@ const MessengerWidgetContent = ({ className }: { className?: string }) => {
</> </>
)} )}
<Tooltip title={translate('::MessengerWidget.Title')}> <Tooltip title={translate('::App.MessengerWidget.Title')}>
<div <div
className={classNames( className={classNames(
className, className,
textTheme, textTheme,
'pointer-events-auto relative !mx-0 text-2xl transition-colors duration-300 ease-in-out hover:bg-black hover:bg-opacity-5 dark:hover:bg-black dark:hover:bg-opacity-40', 'pointer-events-auto relative !mx-0 text-2xl transition-colors duration-300 ease-in-out hover:bg-black hover:bg-opacity-5 dark:hover:bg-black dark:hover:bg-opacity-40',
)} )}
aria-label={translate('::MessengerWidget.Title')} aria-label={translate('::App.MessengerWidget.Title')}
role="button" role="button"
tabIndex={0} tabIndex={0}
onClick={() => (open ? closeWidget() : setOpen(true))} onClick={() => (open ? closeWidget() : setOpen(true))}

View file

@ -343,7 +343,7 @@ const _Notification = ({ className }: { className?: string }) => {
> >
<Dropdown.Item variant="header"> <Dropdown.Item variant="header">
<div className="border-b border-gray-200 dark:border-gray-600 px-4 py-2 flex items-center justify-between"> <div className="border-b border-gray-200 dark:border-gray-600 px-4 py-2 flex items-center justify-between">
<h6>{translate('::Abp.Identity.ActivityLogs.Notifications')}</h6> <h6>{translate('::App.Notifications')}</h6>
<Tooltip title={translate('::Abp.Identity.ActivityLogs.MarkAllRead')}> <Tooltip title={translate('::Abp.Identity.ActivityLogs.MarkAllRead')}>
<Button <Button
variant="plain" variant="plain"

View file

@ -174,7 +174,7 @@ const _Search = ({ className }: { className?: string }) => {
return ( return (
<PermissionCheck permissions={[GLOBAL_SEARCH]}> <PermissionCheck permissions={[GLOBAL_SEARCH]}>
<Tooltip title={translate('::App.Search')}> <Tooltip title={translate('::App.Platform.Search2')}>
<div className={classNames(className, 'text-2xl')} onClick={handleSearchOpen}> <div className={classNames(className, 'text-2xl')} onClick={handleSearchOpen}>
<FcSearch /> <FcSearch />
</div> </div>
@ -193,7 +193,7 @@ const _Search = ({ className }: { className?: string }) => {
<input <input
ref={inputRef} ref={inputRef}
className="ring-0 outline-none block w-full p-4 text-base bg-transparent text-gray-900 dark:text-gray-100" className="ring-0 outline-none block w-full p-4 text-base bg-transparent text-gray-900 dark:text-gray-100"
placeholder={translate('::App.Search')} placeholder={translate('::App.Platform.Search2')}
onKeyDown={(e) => e.key === 'Enter' && handleSearch()} onKeyDown={(e) => e.key === 'Enter' && handleSearch()}
/> />
</div> </div>
@ -202,7 +202,7 @@ const _Search = ({ className }: { className?: string }) => {
<div> <div>
<div className="flex items-center justify-between p-4 border-b border-gray-200 dark:border-gray-600"> <div className="flex items-center justify-between p-4 border-b border-gray-200 dark:border-gray-600">
<div className="flex items-center space-x-2"> <div className="flex items-center space-x-2">
<span className="text-sm">{translate('::App.SearchIn')}</span> <span className="text-sm">{translate('::App.Platform.SearchIn')}</span>
<Checkbox.Group <Checkbox.Group
value={currentSystems} value={currentSystems}
onChange={(value) => setCurrentSystems(value as string[])} onChange={(value) => setCurrentSystems(value as string[])}
@ -238,7 +238,7 @@ const _Search = ({ className }: { className?: string }) => {
))} ))}
{searchResult.length === 0 && noResult && ( {searchResult.length === 0 && noResult && (
<div className="my-10 text-center text-lg"> <div className="my-10 text-center text-lg">
<span>{translate('::App.NoResults')}</span> <span>{translate('::App.Platform.NoResults2')}</span>
<div className="heading-text">'{inputRef.current?.value}'</div> <div className="heading-text">'{inputRef.current?.value}'</div>
</div> </div>
)} )}

View file

@ -36,7 +36,7 @@ const _SidePanel = (props: SidePanelProps) => {
return ( return (
<> <>
<Tooltip title={translate('::SidePanel.Title')}> <Tooltip title={translate('::App.StaticLookup.Configuration')}>
<div className={classNames('text-2xl', className)} onClick={openPanel} {...rest}> <div className={classNames('text-2xl', className)} onClick={openPanel} {...rest}>
<FcEngineering /> <FcEngineering />
</div> </div>
@ -44,7 +44,7 @@ const _SidePanel = (props: SidePanelProps) => {
<Drawer <Drawer
title={ title={
<div className="flex items-center justify-between gap-x-2"> <div className="flex items-center justify-between gap-x-2">
<h4>{translate('::SidePanel.Title')}</h4> <h4>{translate('::App.StaticLookup.Configuration')}</h4>
<CopyButton /> <CopyButton />
</div> </div>
} }

View file

@ -39,7 +39,7 @@ const CopyButton = () => {
variant="plain" variant="plain"
size="sm" size="sm"
onClick={handleCopy} onClick={handleCopy}
title={translate('::SidePanel.SaveConfig')} title={translate('::App.SidePanel.SaveConfig')}
icon={<FaSave />} icon={<FaSave />}
/> />
) )

View file

@ -102,7 +102,7 @@ const LayoutSwitcher = () => {
/> />
</SegmentItemOption> </SegmentItemOption>
<div className={classNames(active && textTheme, 'mt-2 font-semibold')}> <div className={classNames(active && textTheme, 'mt-2 font-semibold')}>
{translate('::SidePanel.Layout.' + layout.label)} {translate('::App.SidePanelLayout.' + layout.label.replace(/\s+/g, ''))}
</div> </div>
</div> </div>
) )

View file

@ -24,11 +24,11 @@ const ThemeConfigurator = ({ callBackClose }: ThemeConfiguratorProps) => {
<div className="flex flex-col h-full justify-between"> <div className="flex flex-col h-full justify-between">
<div className="flex flex-col gap-y-3 mb-2 ml-1"> <div className="flex flex-col gap-y-3 mb-2 ml-1">
<div> <div>
<h6 className="mb-3">{translate('::SidePanel.Layout')}</h6> <h6 className="mb-3">{translate('::App.SidePanel.Layout')}</h6>
<LayoutSwitcher /> <LayoutSwitcher />
</div> </div>
<div> <div>
<h6 className="mb-3">{translate('::SidePanel.NavMode')}</h6> <h6 className="mb-3">{translate('::App.SidePanel.NavMode')}</h6>
<NavModeSwitcher /> <NavModeSwitcher />
</div> </div>
<div> <div>
@ -36,20 +36,20 @@ const ThemeConfigurator = ({ callBackClose }: ThemeConfiguratorProps) => {
<StyleSwitcher onStyleChange={handleStyleChange} /> <StyleSwitcher onStyleChange={handleStyleChange} />
</div> </div>
<div> <div>
<h6 className="mb-3">{translate('::SidePanel.Themed')}</h6> <h6 className="mb-3">{translate('::App.SiteManagement.Theme')}</h6>
<ThemeSwitcher /> <ThemeSwitcher />
</div> </div>
<div className="flex items-center justify-between"> <div className="flex items-center justify-between">
<div> <div>
<h6>{translate('::SidePanel.Mode')}</h6> <h6>{translate('::App.Platform.Mode')}</h6>
<span>{translate('::SidePanel.Mode.Description')}</span> <span>{translate('::App.SidePanelMode.ModeDescription')}</span>
</div> </div>
<ModeSwitcher key={modeKey} /> <ModeSwitcher key={modeKey} />
</div> </div>
<div className="flex items-center justify-between"> <div className="flex items-center justify-between">
<div> <div>
<h6>{translate('::SidePanel.Direction')}</h6> <h6>{translate('::App.SidePanel.Direction')}</h6>
<span>{translate('::SidePanel.Direction.Description')}</span> <span>{translate('::App.SidePanelDirection.DirectionDescription')}</span>
</div> </div>
<DirectionSwitcher callBackClose={callBackClose} /> <DirectionSwitcher callBackClose={callBackClose} />
</div> </div>

View file

@ -48,7 +48,7 @@ const UserDropdownBase = ({ className }: CommonProps) => {
icon: <FcNfcSign />, icon: <FcNfcSign />,
}, },
{ {
label: translate('::SidePanel.Title'), label: translate('::App.StaticLookup.Configuration'),
path: ROUTES_ENUM.protected.admin.activityLog, path: ROUTES_ENUM.protected.admin.activityLog,
icon: <FcEngineering />, icon: <FcEngineering />,
}, },
@ -93,7 +93,7 @@ const UserDropdownBase = ({ className }: CommonProps) => {
</Dropdown.Item> </Dropdown.Item>
<Dropdown.Item variant="divider" /> <Dropdown.Item variant="divider" />
{dropdownItemList.map((item) => { {dropdownItemList.map((item) => {
const isSidePanel = item.label === translate('::SidePanel.Title') const isSidePanel = item.label === translate('::App.StaticLookup.Configuration')
return ( return (
<Dropdown.Item <Dropdown.Item
key={item.label} key={item.label}
@ -137,8 +137,8 @@ const UserDropdownBase = ({ className }: CommonProps) => {
</span> </span>
<span> <span>
{isCheckingUpdate {isCheckingUpdate
? translate('::App.CheckUpdate') ? translate('::App.Platform.CheckUpdate')
: translate('::App.CheckForUpdates')} : translate('::App.Platform.CheckForUpdates')}
</span> </span>
</span> </span>
</Dropdown.Item> </Dropdown.Item>
@ -151,7 +151,7 @@ const UserDropdownBase = ({ className }: CommonProps) => {
<span className="text-xl opacity-50"> <span className="text-xl opacity-50">
<FcNews /> <FcNews />
</span> </span>
<span>{translate('::App.ChangeLog')}</span> <span>{translate('::App.Platform.ChangeLog')}</span>
</Link> </Link>
</Dropdown.Item> </Dropdown.Item>

View file

@ -302,7 +302,7 @@ const AutoComplete = forwardRef<HTMLInputElement, AutoCompleteProps>((props, ref
className="autocomplete-clear" className="autocomplete-clear"
onClick={handleClear} onClick={handleClear}
tabIndex={-1} tabIndex={-1}
aria-label={translate('::App.DeveloperKit.CrudEndpoints.Clear')} aria-label={translate('::App.Platform.Clear')}
> >
<svg <svg
width={12} width={12}
@ -324,7 +324,7 @@ const AutoComplete = forwardRef<HTMLInputElement, AutoCompleteProps>((props, ref
<ul ref={listRef} id={listboxId} role="listbox" className="autocomplete-dropdown"> <ul ref={listRef} id={listboxId} role="listbox" className="autocomplete-dropdown">
{loading ? ( {loading ? (
<li className="autocomplete-option autocomplete-option-info"> <li className="autocomplete-option autocomplete-option-info">
{loadingText ?? translate('::App.Loading')} {loadingText ?? translate('::App.Platform.LoadingWithThreeDot')}
</li> </li>
) : filteredOptions.length === 0 ? ( ) : filteredOptions.length === 0 ? (
<li className="autocomplete-option autocomplete-option-info"> <li className="autocomplete-option autocomplete-option-info">

View file

@ -300,7 +300,7 @@ const ImageViewerOverlay = ({
className="image-viewer-overlay" className="image-viewer-overlay"
role="dialog" role="dialog"
aria-modal aria-modal
aria-label={current.alt ?? translate('::App.ImageViewer.Title')} aria-label={current.alt ?? translate('::App.ImageViewer.ImageViewerTitle')}
> >
{/* Toolbar */} {/* Toolbar */}
{showToolbar && ( {showToolbar && (
@ -318,7 +318,7 @@ const ImageViewerOverlay = ({
<button type="button" onClick={zoomIn} title={translate('::App.Platform.ZoomIn')}> <button type="button" onClick={zoomIn} title={translate('::App.Platform.ZoomIn')}>
<IconZoomIn /> <IconZoomIn />
</button> </button>
<button type="button" onClick={resetTransform} title={translate('::Reset')}> <button type="button" onClick={resetTransform} title={translate('::App.Platform.Reset')}>
<IconReset /> <IconReset />
</button> </button>
<button <button
@ -335,7 +335,7 @@ const ImageViewerOverlay = ({
> >
<IconRotateCW /> <IconRotateCW />
</button> </button>
<button type="button" onClick={handleDownload} title={translate('::Download')}> <button type="button" onClick={handleDownload} title={translate('::App.Listform.ListformField.Download')}>
<IconDownload /> <IconDownload />
</button> </button>
<button <button
@ -379,7 +379,7 @@ const ImageViewerOverlay = ({
type="button" type="button"
className="image-viewer-nav image-viewer-nav-prev" className="image-viewer-nav image-viewer-nav-prev"
onClick={goPrev} onClick={goPrev}
aria-label={translate('::App.VisualDesigner.Canvas.Previous')} aria-label={translate('::App.Platform.Previous')}
> >
<IconPrev /> <IconPrev />
</button> </button>
@ -389,7 +389,7 @@ const ImageViewerOverlay = ({
type="button" type="button"
className="image-viewer-nav image-viewer-nav-next" className="image-viewer-nav image-viewer-nav-next"
onClick={goNext} onClick={goNext}
aria-label={translate('::App.VisualDesigner.Canvas.Next')} aria-label={translate('::App.Platform.Next2')}
> >
<IconNext /> <IconNext />
</button> </button>

View file

@ -212,7 +212,7 @@ const Rate = forwardRef<HTMLDivElement, RateProps>((props, ref) => {
onKeyDown={handleKeyDown} onKeyDown={handleKeyDown}
tabIndex={disabled || readOnly ? undefined : 0} tabIndex={disabled || readOnly ? undefined : 0}
role="radiogroup" role="radiogroup"
aria-label={translate('::App.Rate.Label')} aria-label={translate('::App.Rate.RateLabel')}
{...rest} {...rest}
> >
{Array.from({ length: count }, (_, i) => renderStar(i))} {Array.from({ length: count }, (_, i) => renderStar(i))}

View file

@ -147,7 +147,7 @@ const Upload = forwardRef<HTMLDivElement, UploadProps>((props, ref) => {
if (!draggable && !children) { if (!draggable && !children) {
return ( return (
<Button size="sm" variant="solid" disabled={disabled} onClick={(e) => e.preventDefault()}> <Button size="sm" variant="solid" disabled={disabled} onClick={(e) => e.preventDefault()}>
{translate('::FileManager.Upload')} {translate('::App.Platform.Upload')}
</Button> </Button>
) )
} }

View file

@ -674,11 +674,11 @@ const PlatformPlaceholder = ({ node }: { node: DesignerNode }) => {
</div> </div>
<div className="mt-1 text-xs text-slate-500"> <div className="mt-1 text-xs text-slate-500">
{String( {String(
node.props.listFormCode || translate('::App.VisualDesigner.Canvas.SelectListFormCode'), node.props.listFormCode || translate('::App.VisualDesignerCanvas.SelectListFormCode'),
)} )}
</div> </div>
<div className="mt-3 text-[11px] uppercase tracking-wider text-sky-700 dark:text-sky-300"> <div className="mt-3 text-[11px] uppercase tracking-wider text-sky-700 dark:text-sky-300">
{translate('::App.VisualDesigner.Canvas.PlatformView')} {translate('::App.VisualDesignerCanvas.PlatformView')}
</div> </div>
</div> </div>
</div> </div>
@ -715,7 +715,7 @@ const GridColumnHeaders = ({ columns }: { columns: string[] }) => {
</div> </div>
) : ( ) : (
<div className="px-3 py-2 text-center text-xs text-slate-400"> <div className="px-3 py-2 text-center text-xs text-slate-400">
{translate('::App.VisualDesigner.Canvas.SelectColumnsFromData')} {translate('::App.VisualDesignerCanvas.SelectColumnsFromData')}
</div> </div>
)} )}
</div> </div>
@ -753,7 +753,7 @@ const GridDataTablePreview = ({
if (!columns.length) { if (!columns.length) {
return ( return (
<div className="rounded-lg border border-dashed border-slate-300 bg-slate-50 p-4 text-center text-xs text-slate-500 [grid-column:1/-1] dark:border-slate-700 dark:bg-slate-900 dark:text-slate-400"> <div className="rounded-lg border border-dashed border-slate-300 bg-slate-50 p-4 text-center text-xs text-slate-500 [grid-column:1/-1] dark:border-slate-700 dark:bg-slate-900 dark:text-slate-400">
{translate('::App.VisualDesigner.Canvas.SelectAtLeastOneColumn')} {translate('::App.VisualDesignerCanvas.SelectAtLeastOneColumn')}
</div> </div>
) )
} }
@ -885,7 +885,7 @@ const SqlDataSourceView = ({
const canDelete = Boolean(getSqlDataSourceEndpointId(node, 'deleteEndpoint')) const canDelete = Boolean(getSqlDataSourceEndpointId(node, 'deleteEndpoint'))
// Save follows the explicit mode, exactly like the generated runtime does. // Save follows the explicit mode, exactly like the generated runtime does.
const canSave = mode === 'new' ? canInsert : canUpdate const canSave = mode === 'new' ? canInsert : canUpdate
const designTimeTitle = translate('::App.VisualDesigner.Canvas.DesignTimeNoCall') const designTimeTitle = translate('::App.VisualDesignerCanvas.DesignTimeNoCall')
const toolbarButton = ( const toolbarButton = (
label: string, label: string,
@ -928,19 +928,19 @@ const SqlDataSourceView = ({
</span> </span>
<span> <span>
{selectId {selectId
? translate('::App.VisualDesigner.Canvas.RecordCount', { count: rows.length }) ? translate('::App.Platform.RecordCount', { count: rows.length })
: translate('::App.VisualDesigner.Canvas.NoSelectEndpoint')} : translate('::App.VisualDesignerCanvas.NoSelectEndpoint')}
</span> </span>
<span className="rounded bg-sky-600 px-1.5 py-0.5 font-semibold text-white"> <span className="rounded bg-sky-600 px-1.5 py-0.5 font-semibold text-white">
{translate( {translate(
mode === 'new' mode === 'new'
? '::App.VisualDesigner.Canvas.NewRecord' ? '::App.VisualDesignerCanvas.NewRecord'
: '::App.VisualDesigner.Canvas.Editing', : '::App.Platform.Editing',
)} )}
</span> </span>
{rows.length > 1 && ( {rows.length > 1 && (
<label className="flex items-center gap-1"> <label className="flex items-center gap-1">
{translate('::App.VisualDesigner.Canvas.Row')} {translate('::App.Platform.Row')}
<select <select
className="rounded border border-sky-300 bg-white px-1 py-0.5 text-[10px] dark:border-sky-800 dark:bg-slate-900" className="rounded border border-sky-300 bg-white px-1 py-0.5 text-[10px] dark:border-sky-800 dark:bg-slate-900"
value={rowIndex} value={rowIndex}
@ -961,7 +961,7 @@ const SqlDataSourceView = ({
{/* The drop zone belongs with the content, above the command toolbar. */} {/* The drop zone belongs with the content, above the command toolbar. */}
{interactive && !node.children.length && ( {interactive && !node.children.length && (
<div className="rounded border border-dashed border-slate-300 px-3 py-4 text-center text-xs text-slate-400 dark:border-slate-700"> <div className="rounded border border-dashed border-slate-300 px-3 py-4 text-center text-xs text-slate-400 dark:border-slate-700">
{translate('::App.VisualDesigner.Canvas.DropAndBind')} {translate('::App.VisualDesignerCanvas.DropAndBind')}
</div> </div>
)} )}
{node.props.showToolbar !== false && ( {node.props.showToolbar !== false && (
@ -970,20 +970,20 @@ const SqlDataSourceView = ({
{rows.length > 1 && ( {rows.length > 1 && (
<> <>
{toolbarButton( {toolbarButton(
translate('::App.VisualDesigner.Canvas.Previous'), translate('::App.Platform.Previous'),
rowIndex > 0, rowIndex > 0,
'plain', 'plain',
translate('::App.VisualDesigner.Canvas.AtFirstRecord'), translate('::App.VisualDesignerCanvas.AtFirstRecord'),
() => goToRow(Math.max(0, rowIndex - 1)), () => goToRow(Math.max(0, rowIndex - 1)),
)} )}
<span className="text-xs text-slate-500"> <span className="text-xs text-slate-500">
{rows.length ? `${rowIndex + 1} / ${rows.length}` : '0 / 0'} {rows.length ? `${rowIndex + 1} / ${rows.length}` : '0 / 0'}
</span> </span>
{toolbarButton( {toolbarButton(
translate('::App.VisualDesigner.Canvas.Next'), translate('::App.Platform.Next2'),
rowIndex < rows.length - 1, rowIndex < rows.length - 1,
'plain', 'plain',
translate('::App.VisualDesigner.Canvas.AtLastRecord'), translate('::App.VisualDesignerCanvas.AtLastRecord'),
() => goToRow(Math.min(rows.length - 1, rowIndex + 1)), () => goToRow(Math.min(rows.length - 1, rowIndex + 1)),
)} )}
<span className="mx-1 h-5 w-px bg-slate-300 dark:bg-slate-700" /> <span className="mx-1 h-5 w-px bg-slate-300 dark:bg-slate-700" />
@ -991,23 +991,23 @@ const SqlDataSourceView = ({
)} )}
{/* New and Reload only touch local state, so they work at design time. */} {/* New and Reload only touch local state, so they work at design time. */}
{toolbarButton( {toolbarButton(
translate('::App.VisualDesigner.Canvas.New'), translate('::App.Platform.New'),
canInsert, canInsert,
'plain', 'plain',
translate('::App.VisualDesigner.Canvas.SelectInsertEndpoint'), translate('::App.VisualDesignerCanvas.SelectInsertEndpoint'),
() => { () => {
setDraft({}) setDraft({})
setMode('new') setMode('new')
}, },
)} )}
{toolbarButton( {toolbarButton(
translate('::Save'), translate('::App.Platform.Save'),
canSave, canSave,
'primary', 'primary',
translate( translate(
mode === 'new' mode === 'new'
? '::App.VisualDesigner.Canvas.SelectInsertEndpoint' ? '::App.VisualDesignerCanvas.SelectInsertEndpoint'
: '::App.VisualDesigner.Canvas.SelectUpdateEndpoint', : '::App.VisualDesignerCanvas.SelectUpdateEndpoint',
), ),
)} )}
{toolbarButton( {toolbarButton(
@ -1015,14 +1015,14 @@ const SqlDataSourceView = ({
canDelete && hasKey && mode === 'edit', canDelete && hasKey && mode === 'edit',
'danger', 'danger',
canDelete canDelete
? translate('::App.VisualDesigner.Canvas.KeyFieldRequired', { field: keyField }) ? translate('::App.VisualDesignerCanvas.KeyFieldRequired', { field: keyField })
: translate('::App.VisualDesigner.Canvas.SelectDeleteEndpoint'), : translate('::App.VisualDesignerCanvas.SelectDeleteEndpoint'),
)} )}
{toolbarButton( {toolbarButton(
translate('::App.Platform.Refresh'), translate('::App.Platform.Refresh'),
Boolean(selectId), Boolean(selectId),
'plain', 'plain',
translate('::App.VisualDesigner.Canvas.SelectSelectEndpoint'), translate('::App.VisualDesignerCanvas.SelectSelectEndpoint'),
() => goToRow(rowIndex), () => goToRow(rowIndex),
)} )}
</div> </div>
@ -1389,7 +1389,7 @@ const NodeView = ({
const insideDraggedSubtree = React.useContext(DesignerDraggedSubtreeContext) || isDragSource const insideDraggedSubtree = React.useContext(DesignerDraggedSubtreeContext) || isDragSource
const canDropInside = acceptsDroppedChildren && !insideDraggedSubtree const canDropInside = acceptsDroppedChildren && !insideDraggedSubtree
const canDropBeside = !insideDraggedSubtree const canDropBeside = !insideDraggedSubtree
const dragLabel = drag?.label || drag?.name || translate('::App.VisualDesigner.Canvas.Component') const dragLabel = drag?.label || drag?.name || translate('::App.VisualDesignerCanvas.Component')
/** /**
* Taşımayı başlatan ortak kod. Hem düğüm gövdesi hem de tutamak bunu kullanır: * Taşımayı başlatan ortak kod. Hem düğüm gövdesi hem de tutamak bunu kullanır:
* Input/Select/Textarea gibi canlı önizleme kontrolleri Chrome'da üst öğenin * Input/Select/Textarea gibi canlı önizleme kontrolleri Chrome'da üst öğenin
@ -1601,7 +1601,7 @@ const NodeView = ({
))} ))}
{interactive && !tabNodes.length && !option.content && ( {interactive && !tabNodes.length && !option.content && (
<div className="flex min-h-12 items-center justify-center rounded border border-dashed border-slate-300 px-2 text-center text-[10px] text-slate-400 dark:border-slate-700"> <div className="flex min-h-12 items-center justify-center rounded border border-dashed border-slate-300 px-2 text-center text-[10px] text-slate-400 dark:border-slate-700">
{translate('::App.VisualDesigner.Canvas.DropComponentInTab')} {translate('::App.VisualDesignerCanvas.DropComponentInTab')}
</div> </div>
)} )}
</div> </div>
@ -1696,7 +1696,7 @@ const NodeView = ({
))} ))}
{interactive && !cellNodes.length && ( {interactive && !cellNodes.length && (
<div className="flex min-h-12 items-center justify-center rounded border border-dashed border-slate-300 px-2 text-center text-[10px] text-slate-400 dark:border-slate-700"> <div className="flex min-h-12 items-center justify-center rounded border border-dashed border-slate-300 px-2 text-center text-[10px] text-slate-400 dark:border-slate-700">
{translate('::App.VisualDesigner.Canvas.DropComponent')} {translate('::App.VisualDesignerCanvas.DropComponent')}
</div> </div>
)} )}
</div> </div>
@ -1755,7 +1755,7 @@ const NodeView = ({
key={`grid_loading_${node.id}`} key={`grid_loading_${node.id}`}
className="rounded-lg border border-slate-200 bg-slate-50 p-4 text-center text-xs text-slate-500 [grid-column:1/-1] dark:border-slate-700 dark:bg-slate-900 dark:text-slate-400" className="rounded-lg border border-slate-200 bg-slate-50 p-4 text-center text-xs text-slate-500 [grid-column:1/-1] dark:border-slate-700 dark:bg-slate-900 dark:text-slate-400"
> >
{translate('::App.VisualDesigner.Canvas.LoadingData')} {translate('::App.VisualDesignerCanvas.LoadingData')}
</div>, </div>,
] ]
: node.type === 'Grid' && : node.type === 'Grid' &&
@ -1817,8 +1817,8 @@ const NodeView = ({
{...containerDropZoneProps} {...containerDropZoneProps}
> >
{containerDropZone.over {containerDropZone.over
? translate('::App.VisualDesigner.Canvas.WillDropHere', { label: dragLabel }) ? translate('::App.VisualDesignerCanvas.WillDropHere', { label: dragLabel })
: translate('::App.VisualDesigner.Canvas.DropComponentHere')} : translate('::App.VisualDesignerCanvas.DropComponentHere')}
</div>, </div>,
] ]
: renderedChildren : renderedChildren
@ -1923,7 +1923,7 @@ const NodeView = ({
{/* Sürükleme sürerken bırakılamayan hedef açıkça söylenir. */} {/* Sürükleme sürerken bırakılamayan hedef açıkça söylenir. */}
{dragging && insideDraggedSubtree && !isDragSource && ( {dragging && insideDraggedSubtree && !isDragSource && (
<span className="pointer-events-none absolute right-1 top-1 z-30 rounded bg-slate-500 px-1.5 py-[1px] text-[10px] font-semibold text-white shadow"> <span className="pointer-events-none absolute right-1 top-1 z-30 rounded bg-slate-500 px-1.5 py-[1px] text-[10px] font-semibold text-white shadow">
{translate('::App.VisualDesigner.Canvas.CannotMoveHere')} {translate('::App.VisualDesignerCanvas.CannotMoveHere')}
</span> </span>
)} )}
{interactive && ( {interactive && (
@ -1938,7 +1938,7 @@ const NodeView = ({
<span <span
draggable draggable
className="flex cursor-grab items-center gap-1 px-2 text-[10px] font-semibold active:cursor-grabbing" className="flex cursor-grab items-center gap-1 px-2 text-[10px] font-semibold active:cursor-grabbing"
title={translate('::App.VisualDesigner.Canvas.DragToMove', { title={translate('::App.VisualDesignerCanvas.DragToMove', {
name: node.ref || node.type, name: node.ref || node.type,
})} })}
onDragStart={startNodeDrag} onDragStart={startNodeDrag}
@ -1950,7 +1950,7 @@ const NodeView = ({
className="p-1.5 enabled:hover:bg-sky-700 disabled:cursor-not-allowed disabled:opacity-40" className="p-1.5 enabled:hover:bg-sky-700 disabled:cursor-not-allowed disabled:opacity-40"
disabled={!canMoveUp} disabled={!canMoveUp}
title={translate( title={translate(
canMoveUp ? '::App.Platform.MoveUp' : '::App.VisualDesigner.Canvas.AlreadyAtTop', canMoveUp ? '::App.Platform.MoveUp' : '::App.VisualDesignerCanvas.AlreadyAtTop',
)} )}
type="button" type="button"
onClick={(event) => { onClick={(event) => {
@ -1966,7 +1966,7 @@ const NodeView = ({
title={translate( title={translate(
canMoveDown canMoveDown
? '::App.Platform.MoveDown' ? '::App.Platform.MoveDown'
: '::App.VisualDesigner.Canvas.AlreadyAtBottom', : '::App.VisualDesignerCanvas.AlreadyAtBottom',
)} )}
type="button" type="button"
onClick={(event) => { onClick={(event) => {
@ -1978,7 +1978,7 @@ const NodeView = ({
</button> </button>
<button <button
className="p-1.5 hover:bg-sky-700" className="p-1.5 hover:bg-sky-700"
title={translate('::App.VisualDesigner.Canvas.Duplicate')} title={translate('::App.Platform.Duplicate')}
type="button" type="button"
onClick={(event) => { onClick={(event) => {
event.stopPropagation() event.stopPropagation()
@ -2035,7 +2035,7 @@ const NodeView = ({
className="m-2 rounded border border-dashed border-slate-300 px-3 py-4 text-center text-xs text-slate-400" className="m-2 rounded border border-dashed border-slate-300 px-3 py-4 text-center text-xs text-slate-400"
{...containerDropZoneProps} {...containerDropZoneProps}
> >
{translate('::App.VisualDesigner.Canvas.DropComponentHere')} {translate('::App.VisualDesignerCanvas.DropComponentHere')}
</div> </div>
)} )}
<span className="hidden">{index}</span> <span className="hidden">{index}</span>
@ -2148,7 +2148,7 @@ const VisualCanvas = ({
<div className="pointer-events-none sticky top-0 z-40 mb-3 flex items-center justify-center"> <div className="pointer-events-none sticky top-0 z-40 mb-3 flex items-center justify-center">
<span className="rounded-full bg-slate-900/90 px-3 py-1 text-[11px] font-medium text-white shadow-lg"> <span className="rounded-full bg-slate-900/90 px-3 py-1 text-[11px] font-medium text-white shadow-lg">
<b>{drag.label || drag.name}</b>{' '} <b>{drag.label || drag.name}</b>{' '}
{translate('::App.VisualDesigner.Canvas.DraggingHint')} {translate('::App.VisualDesignerCanvas.DraggingHint')}
</span> </span>
</div> </div>
)} )}
@ -2187,7 +2187,7 @@ const VisualCanvas = ({
}`} }`}
{...rootDropZone.props} {...rootDropZone.props}
> >
{translate('::App.VisualDesigner.Canvas.DropAtPageEnd')} {translate('::App.VisualDesignerCanvas.DropAtPageEnd')}
</div> </div>
)} )}
</div> </div>
@ -2207,22 +2207,22 @@ const VisualCanvas = ({
+ +
</div> </div>
<h3 className="font-semibold text-slate-700 dark:text-slate-200"> <h3 className="font-semibold text-slate-700 dark:text-slate-200">
{translate('::App.VisualDesigner.Canvas.ChoosePageLayout')} {translate('::App.VisualDesignerCanvas.ChoosePageLayout')}
</h3> </h3>
<p className="mt-1 text-sm text-slate-500"> <p className="mt-1 text-sm text-slate-500">
{translate('::App.VisualDesigner.Canvas.ChoosePageLayoutHint')} {translate('::App.VisualDesignerCanvas.ChoosePageLayoutHint')}
</p> </p>
{interactive && ( {interactive && (
<div className="mt-5 grid grid-cols-2 gap-2 sm:grid-cols-4"> <div className="mt-5 grid grid-cols-2 gap-2 sm:grid-cols-4">
{[ {[
['PageContainer', translate('::App.VisualDesigner.Layout.PageContainer'), '□'], ['PageContainer', translate('::App.VisualDesignerLayout.PageContainer'), '□'],
['TwoColumns', translate('::App.VisualDesigner.Layout.TwoColumns'), '▥'], ['TwoColumns', translate('::App.VisualDesignerLayout.TwoColumns'), '▥'],
[ [
'SidebarContent', 'SidebarContent',
translate('::App.VisualDesigner.Layout.SidebarContent'), translate('::App.VisualDesignerLayout.SidebarContent'),
'◧', '◧',
], ],
['HeaderContent', translate('::App.VisualDesigner.Layout.HeaderContent'), '⊟'], ['HeaderContent', translate('::App.VisualDesignerLayout.HeaderContent'), '⊟'],
].map(([name, label, icon]) => ( ].map(([name, label, icon]) => (
<button <button
key={name} key={name}

View file

@ -187,93 +187,93 @@ export interface DesignerScriptRecipe {
} }
export const DESIGNER_SCRIPT_RECIPE_GROUPS = [ export const DESIGNER_SCRIPT_RECIPE_GROUPS = [
'App.VisualDesigner.Catalog.Group.ComponentAccess', 'App.CatalogGroup.ComponentAccess',
'App.VisualDesigner.Catalog.Group.ApiCalls', 'App.CatalogGroup.ApiCalls',
'App.VisualDesigner.Catalog.Group.SqlDataSource', 'App.CatalogGroup.SqlDataSource',
'App.VisualDesigner.Catalog.Group.EventAndPage', 'App.CatalogGroup.EventAndPage',
] as const ] as const
export const DESIGNER_SCRIPT_RECIPES: DesignerScriptRecipe[] = [ export const DESIGNER_SCRIPT_RECIPES: DesignerScriptRecipe[] = [
{ {
group: 'App.VisualDesigner.Catalog.Group.ComponentAccess', group: 'App.CatalogGroup.ComponentAccess',
title: 'App.VisualDesigner.Catalog.ComponentAccess.Title', title: 'App.CatalogComponentAccess.ComponentAccessTitle',
description: 'App.VisualDesigner.Catalog.ComponentAccess.Description', description: 'App.CatalogComponentAccess.ComponentAccessDescription',
code: `refs.{{ref}}.setValue('Merhaba') code: `refs.{{ref}}.setValue('Merhaba')
const value = refs.{{ref}}.getValue() const value = refs.{{ref}}.getValue()
console.log(value)`, console.log(value)`,
}, },
{ {
group: 'App.VisualDesigner.Catalog.Group.ComponentAccess', group: 'App.CatalogGroup.ComponentAccess',
title: 'App.VisualDesigner.Catalog.ComponentAccess.Title2', title: 'App.CatalogComponentAccess.ComponentAccessTitle2',
description: 'App.VisualDesigner.Catalog.ComponentAccess.Description2', description: 'App.CatalogComponentAccess.ComponentAccessDescription2',
code: `refs.{{ref}}.setEnabled(false) code: `refs.{{ref}}.setEnabled(false)
console.log(refs.{{ref}}.isEnabled())`, console.log(refs.{{ref}}.isEnabled())`,
}, },
{ {
group: 'App.VisualDesigner.Catalog.Group.ComponentAccess', group: 'App.CatalogGroup.ComponentAccess',
title: 'App.VisualDesigner.Catalog.ComponentAccess.Title3', title: 'App.CatalogComponentAccess.ComponentAccessTitle3',
description: 'App.VisualDesigner.Catalog.ComponentAccess.Description3', description: 'App.CatalogComponentAccess.ComponentAccessDescription3',
code: `refs.{{ref}}.setVisible(false) code: `refs.{{ref}}.setVisible(false)
// veya: refs.{{ref}}.hide() / refs.{{ref}}.show()`, // veya: refs.{{ref}}.hide() / refs.{{ref}}.show()`,
}, },
{ {
group: 'App.VisualDesigner.Catalog.Group.ComponentAccess', group: 'App.CatalogGroup.ComponentAccess',
title: 'Salt okunur yapma', title: 'Salt okunur yapma',
description: 'App.VisualDesigner.Catalog.ComponentAccess.Description4', description: 'App.CatalogComponentAccess.ComponentAccessDescription4',
code: `refs.{{ref}}.setReadOnly(true)`, code: `refs.{{ref}}.setReadOnly(true)`,
}, },
{ {
group: 'App.VisualDesigner.Catalog.Group.ComponentAccess', group: 'App.CatalogGroup.ComponentAccess',
title: 'App.VisualDesigner.Catalog.ComponentAccess.Title4', title: 'App.CatalogComponentAccess.ComponentAccessTitle4',
description: 'App.VisualDesigner.Catalog.ComponentAccess.Description5', description: 'App.CatalogComponentAccess.ComponentAccessDescription5',
code: `refs.{{ref}}.setText('Kaydediliyor…')`, code: `refs.{{ref}}.setText('Kaydediliyor…')`,
}, },
{ {
group: 'App.VisualDesigner.Catalog.Group.ComponentAccess', group: 'App.CatalogGroup.ComponentAccess',
title: 'Serbest property atama', title: 'Serbest property atama',
description: 'App.VisualDesigner.Catalog.ComponentAccess.Description6', description: 'App.CatalogComponentAccess.ComponentAccessDescription6',
code: `refs.{{ref}}.setProps({ placeholder: 'Ara…', className: 'border-red-500' }) code: `refs.{{ref}}.setProps({ placeholder: 'Ara…', className: 'border-red-500' })
refs.{{ref}}.setProp('size', 'sm')`, refs.{{ref}}.setProp('size', 'sm')`,
}, },
{ {
group: 'App.VisualDesigner.Catalog.Group.ComponentAccess', group: 'App.CatalogGroup.ComponentAccess',
title: 'App.VisualDesigner.Catalog.ComponentAccess.Title5', title: 'App.CatalogComponentAccess.ComponentAccessTitle5',
description: 'App.VisualDesigner.Catalog.ComponentAccess.Description7', description: 'App.CatalogComponentAccess.ComponentAccessDescription7',
code: `refs.{{ref}}.reset()`, code: `refs.{{ref}}.reset()`,
}, },
{ {
group: 'App.VisualDesigner.Catalog.Group.ApiCalls', group: 'App.CatalogGroup.ApiCalls',
title: 'App.VisualDesigner.Catalog.ApiCalls.Title', title: 'App.CatalogApiCalls.ApiCallsTitle',
description: 'App.VisualDesigner.Catalog.ApiCalls.Description', description: 'App.CatalogApiCalls.ApiCallsDescription',
code: `const rows = await api.get('{{url}}') code: `const rows = await api.get('{{url}}')
console.log(rows)`, console.log(rows)`,
}, },
{ {
group: 'App.VisualDesigner.Catalog.Group.ApiCalls', group: 'App.CatalogGroup.ApiCalls',
title: 'App.VisualDesigner.Catalog.ApiCalls.Title2', title: 'App.CatalogApiCalls.ApiCallsTitle2',
description: 'App.VisualDesigner.Catalog.ApiCalls.Description2', description: 'App.CatalogApiCalls.ApiCallsDescription2',
code: `const rows = await api.get('{{url}}', { maxResultCount: 10 }) code: `const rows = await api.get('{{url}}', { maxResultCount: 10 })
console.log(rows)`, console.log(rows)`,
}, },
{ {
group: 'App.VisualDesigner.Catalog.Group.ApiCalls', group: 'App.CatalogGroup.ApiCalls',
title: 'App.VisualDesigner.Catalog.ApiCalls.Title3', title: 'App.CatalogApiCalls.ApiCallsTitle3',
description: 'App.VisualDesigner.Catalog.ApiCalls.Description3', description: 'App.CatalogApiCalls.ApiCallsDescription3',
code: `const created = await api.post('{{url}}', { code: `const created = await api.post('{{url}}', {
name: refs.{{ref}}.getValue(), name: refs.{{ref}}.getValue(),
}) })
console.log(created)`, console.log(created)`,
}, },
{ {
group: 'App.VisualDesigner.Catalog.Group.ApiCalls', group: 'App.CatalogGroup.ApiCalls',
title: 'App.VisualDesigner.Catalog.ApiCalls.Title4', title: 'App.CatalogApiCalls.ApiCallsTitle4',
description: 'App.VisualDesigner.Catalog.ApiCalls.Description4', description: 'App.CatalogApiCalls.ApiCallsDescription4',
code: `await api.put('{{url}}/5', { name: 'Yeni ad' }) code: `await api.put('{{url}}/5', { name: 'Yeni ad' })
await api.delete('{{url}}/5')`, await api.delete('{{url}}/5')`,
}, },
{ {
group: 'App.VisualDesigner.Catalog.Group.ApiCalls', group: 'App.CatalogGroup.ApiCalls',
title: 'App.VisualDesigner.Catalog.ApiCalls.Title5', title: 'App.CatalogApiCalls.ApiCallsTitle5',
description: 'notify tipleri: success, info, warning, danger.', description: 'notify tipleri: success, info, warning, danger.',
code: `try { code: `try {
await api.post('{{url}}', { name: refs.{{ref}}.getValue() }) await api.post('{{url}}', { name: refs.{{ref}}.getValue() })
@ -283,9 +283,9 @@ await api.delete('{{url}}/5')`,
}`, }`,
}, },
{ {
group: 'App.VisualDesigner.Catalog.Group.ApiCalls', group: 'App.CatalogGroup.ApiCalls',
title: 'App.VisualDesigner.Catalog.ApiCalls.Title6', title: 'App.CatalogApiCalls.ApiCallsTitle6',
description: 'App.VisualDesigner.Catalog.ApiCalls.Description5', description: 'App.CatalogApiCalls.ApiCallsDescription5',
code: `refs.{{ref}}.setEnabled(false) code: `refs.{{ref}}.setEnabled(false)
refs.{{ref}}.setText('Gönderiliyor…') refs.{{ref}}.setText('Gönderiliyor…')
try { try {
@ -299,9 +299,9 @@ try {
}`, }`,
}, },
{ {
group: 'App.VisualDesigner.Catalog.Group.ApiCalls', group: 'App.CatalogGroup.ApiCalls',
title: 'Serbest istek', title: 'Serbest istek',
description: 'App.VisualDesigner.Catalog.ApiCalls.Description6', description: 'App.CatalogApiCalls.ApiCallsDescription6',
code: `const result = await api.request({ code: `const result = await api.request({
url: '{{url}}', url: '{{url}}',
method: 'GET', method: 'GET',
@ -310,25 +310,25 @@ try {
console.log(result)`, console.log(result)`,
}, },
{ {
group: 'App.VisualDesigner.Catalog.Group.ComponentAccess', group: 'App.CatalogGroup.ComponentAccess',
title: 'App.VisualDesigner.Catalog.ComponentAccess.Title6', title: 'App.CatalogComponentAccess.ComponentAccessTitle6',
description: 'App.VisualDesigner.Catalog.SelectHiddenColumns.Description', description: 'App.CatalogSelectHiddenColumns.SelectHiddenColumnsDescription',
code: `// onChange içinde: seçilen kaydın diğer sütunları code: `// onChange içinde: seçilen kaydın diğer sütunları
const fiyat = refs.{{ref}}.getColumn('unitPrice') const fiyat = refs.{{ref}}.getColumn('unitPrice')
const stok = refs.{{ref}}.getColumn('stockQuantity') const stok = refs.{{ref}}.getColumn('stockQuantity')
refs.{{sql}}.setFields({ UnitPrice: fiyat, Stock: stok })`, refs.{{sql}}.setFields({ UnitPrice: fiyat, Stock: stok })`,
}, },
{ {
group: 'App.VisualDesigner.Catalog.Group.ComponentAccess', group: 'App.CatalogGroup.ComponentAccess',
title: 'App.VisualDesigner.Catalog.ComponentAccess.Title7', title: 'App.CatalogComponentAccess.ComponentAccessTitle7',
description: 'App.VisualDesigner.Catalog.ComponentAccess.Description8', description: 'App.CatalogComponentAccess.ComponentAccessDescription8',
code: `const secilen = refs.{{ref}}.getSelectedOption() code: `const secilen = refs.{{ref}}.getSelectedOption()
console.log(secilen, refs.{{ref}}.getLabel())`, console.log(secilen, refs.{{ref}}.getLabel())`,
}, },
{ {
group: 'SqlDataSource', group: 'SqlDataSource',
title: 'App.VisualDesigner.Catalog.SqlDataSource.Title', title: 'App.CatalogSqlDataSource.SqlDataSourceTitle',
description: 'App.VisualDesigner.Catalog.SqlDataSource.Description', description: 'App.CatalogSqlDataSource.SqlDataSourceDescription',
code: `await refs.{{sql}}.save() code: `await refs.{{sql}}.save()
// await refs.{{sql}}.remove() // await refs.{{sql}}.remove()
// await refs.{{sql}}.reload() // await refs.{{sql}}.reload()
@ -336,23 +336,23 @@ console.log(secilen, refs.{{ref}}.getLabel())`,
}, },
{ {
group: 'SqlDataSource', group: 'SqlDataSource',
title: 'App.VisualDesigner.Catalog.SqlDataSource.Title2', title: 'App.CatalogSqlDataSource.SqlDataSourceTitle2',
description: 'App.VisualDesigner.Catalog.SqlDataSource.Description2', description: 'App.CatalogSqlDataSource.SqlDataSourceDescription2',
code: `const record = refs.{{sql}}.getRecord() code: `const record = refs.{{sql}}.getRecord()
console.log(record) console.log(record)
refs.{{sql}}.setField('name', 'Yeni ad')`, refs.{{sql}}.setField('name', 'Yeni ad')`,
}, },
{ {
group: 'SqlDataSource', group: 'SqlDataSource',
title: 'App.VisualDesigner.Catalog.SqlDataSource.Title3', title: 'App.CatalogSqlDataSource.SqlDataSourceTitle3',
description: 'App.VisualDesigner.Catalog.SqlDataSource.Description3', description: 'App.CatalogSqlDataSource.SqlDataSourceDescription3',
code: `const rows = refs.{{sql}}.getRows() code: `const rows = refs.{{sql}}.getRows()
refs.{{sql}}.goToRow(rows.length - 1)`, refs.{{sql}}.goToRow(rows.length - 1)`,
}, },
{ {
group: 'SqlDataSource', group: 'SqlDataSource',
title: 'App.VisualDesigner.Catalog.SqlDataSource.Title4', title: 'App.CatalogSqlDataSource.SqlDataSourceTitle4',
description: 'App.VisualDesigner.Catalog.SqlDataSource.Description4', description: 'App.CatalogSqlDataSource.SqlDataSourceDescription4',
code: `const record = refs.{{sql}}.getRecord() code: `const record = refs.{{sql}}.getRecord()
if (!record.name) { if (!record.name) {
notify('Ad alanı zorunludur', 'warning') notify('Ad alanı zorunludur', 'warning')
@ -362,35 +362,35 @@ await refs.{{sql}}.save()`,
}, },
{ {
group: 'SqlDataSource', group: 'SqlDataSource',
title: 'App.VisualDesigner.Catalog.SqlDataSource.Title5', title: 'App.CatalogSqlDataSource.SqlDataSourceTitle5',
description: 'App.VisualDesigner.Catalog.SqlDataSource.Description5', description: 'App.CatalogSqlDataSource.SqlDataSourceDescription5',
code: `console.log(refs.{{sql}}.getMode(), refs.{{sql}}.isBusy(), refs.{{sql}}.getError())`, code: `console.log(refs.{{sql}}.getMode(), refs.{{sql}}.isBusy(), refs.{{sql}}.getError())`,
}, },
{ {
group: 'App.VisualDesigner.Catalog.Group.EventAndPage', group: 'App.CatalogGroup.EventAndPage',
title: 'Event verisi', title: 'Event verisi',
description: 'App.VisualDesigner.Catalog.EventAndPage.Description', description: 'App.CatalogEventAndPage.EventAndPageDescription',
code: `// Input: event.target.value · Checkbox: event.checked code: `// Input: event.target.value · Checkbox: event.checked
// Select/Dropdown/Menu: seçilen değer · Button: tıklama eventi // Select/Dropdown/Menu: seçilen değer · Button: tıklama eventi
console.log(event)`, console.log(event)`,
}, },
{ {
group: 'App.VisualDesigner.Catalog.Group.EventAndPage', group: 'App.CatalogGroup.EventAndPage',
title: 'Komponentin kendi bilgileri', title: 'Komponentin kendi bilgileri',
description: 'App.VisualDesigner.Catalog.EventAndPage.Description2', description: 'App.CatalogEventAndPage.EventAndPageDescription2',
code: `console.log(component.type, component.ref) code: `console.log(component.type, component.ref)
console.log(props)`, console.log(props)`,
}, },
{ {
group: 'App.VisualDesigner.Catalog.Group.EventAndPage', group: 'App.CatalogGroup.EventAndPage',
title: 'App.VisualDesigner.Catalog.EventAndPage.Title', title: 'App.CatalogEventAndPage.EventAndPageTitle',
description: 'App.VisualDesigner.Catalog.EventAndPage.Description3', description: 'App.CatalogEventAndPage.EventAndPageDescription3',
code: `window.location.href = '/app/orders'`, code: `window.location.href = '/app/orders'`,
}, },
{ {
group: 'App.VisualDesigner.Catalog.Group.EventAndPage', group: 'App.CatalogGroup.EventAndPage',
title: 'URL parametresi okuma', title: 'URL parametresi okuma',
description: 'App.VisualDesigner.Catalog.EventAndPage.Description4', description: 'App.CatalogEventAndPage.EventAndPageDescription4',
code: `const id = new URLSearchParams(window.location.search).get('id') code: `const id = new URLSearchParams(window.location.search).get('id')
console.log(id)`, console.log(id)`,
}, },
@ -404,7 +404,7 @@ const COLLECTION_ITEMS_PROPERTY = {
type: 'array' as const, type: 'array' as const,
value: [], value: [],
category: 'properties' as const, category: 'properties' as const,
description: 'App.VisualDesigner.Catalog.Items.Description', description: 'App.CatalogItems.ItemsDescription',
tsType: 'unknown[]', tsType: 'unknown[]',
options: undefined, options: undefined,
required: false, required: false,
@ -414,7 +414,7 @@ const GRID_COMPACT_PROPERTY = {
type: 'boolean' as const, type: 'boolean' as const,
value: false, value: false,
category: 'properties' as const, category: 'properties' as const,
description: 'App.VisualDesigner.Catalog.Compact.Description', description: 'App.CatalogCompact.CompactDescription',
tsType: 'boolean', tsType: 'boolean',
options: undefined, options: undefined,
required: false, required: false,
@ -425,7 +425,7 @@ const GRID_TABLE_BEHAVIOR_PROPERTIES = [
type: 'boolean' as const, type: 'boolean' as const,
value: true, value: true,
category: 'properties' as const, category: 'properties' as const,
description: 'App.VisualDesigner.Catalog.Hoverable.Description', description: 'App.CatalogHoverable.HoverableDescription',
tsType: 'boolean', tsType: 'boolean',
options: undefined, options: undefined,
required: false, required: false,
@ -435,7 +435,7 @@ const GRID_TABLE_BEHAVIOR_PROPERTIES = [
type: 'boolean' as const, type: 'boolean' as const,
value: true, value: true,
category: 'properties' as const, category: 'properties' as const,
description: 'App.VisualDesigner.Catalog.Overflow.Description', description: 'App.CatalogOverflow.OverflowDescription',
tsType: 'boolean', tsType: 'boolean',
options: undefined, options: undefined,
required: false, required: false,
@ -445,7 +445,7 @@ const GRID_TABLE_BEHAVIOR_PROPERTIES = [
type: 'boolean' as const, type: 'boolean' as const,
value: false, value: false,
category: 'properties' as const, category: 'properties' as const,
description: 'App.VisualDesigner.Catalog.BorderlessRow.Description', description: 'App.CatalogBorderlessRow.BorderlessRowDescription',
tsType: 'boolean', tsType: 'boolean',
options: undefined, options: undefined,
required: false, required: false,
@ -457,7 +457,7 @@ const TABLE_DIMENSION_PROPERTIES = [
type: 'number' as const, type: 'number' as const,
value: 2, value: 2,
category: 'properties' as const, category: 'properties' as const,
description: 'App.VisualDesigner.Catalog.RowCount.Description', description: 'App.CatalogRowCount.RowCountDescription',
tsType: 'number', tsType: 'number',
options: undefined, options: undefined,
required: false, required: false,
@ -467,7 +467,7 @@ const TABLE_DIMENSION_PROPERTIES = [
type: 'number' as const, type: 'number' as const,
value: 3, value: 3,
category: 'properties' as const, category: 'properties' as const,
description: 'App.VisualDesigner.Catalog.ColumnCount.Description', description: 'App.CatalogColumnCount.ColumnCountDescription',
tsType: 'number', tsType: 'number',
options: undefined, options: undefined,
required: false, required: false,
@ -477,11 +477,11 @@ const SELECT_OPTIONS_PROPERTY = {
name: 'options', name: 'options',
type: 'array' as const, type: 'array' as const,
value: [ value: [
{ label: 'App.VisualDesigner.Catalog.Options.Label', value: '1' }, { label: 'App.CatalogOptions.OptionsLabel', value: '1' },
{ label: 'App.VisualDesigner.Catalog.Options.Label2', value: '2' }, { label: 'App.CatalogOptions.OptionsLabel2', value: '2' },
], ],
category: 'properties' as const, category: 'properties' as const,
description: 'App.VisualDesigner.Catalog.Options.Description', description: 'App.CatalogOptions.OptionsDescription',
tsType: 'Array<{ label: string; value: unknown }>', tsType: 'Array<{ label: string; value: unknown }>',
options: undefined, options: undefined,
required: false, required: false,
@ -489,7 +489,7 @@ const SELECT_OPTIONS_PROPERTY = {
const MENU_ITEMS_PROPERTY = { const MENU_ITEMS_PROPERTY = {
...SELECT_OPTIONS_PROPERTY, ...SELECT_OPTIONS_PROPERTY,
name: 'items', name: 'items',
description: 'App.VisualDesigner.Catalog.Items.Description2', description: 'App.CatalogItems.ItemsDescription2',
} }
const TABS_ITEMS_PROPERTY = { const TABS_ITEMS_PROPERTY = {
...SELECT_OPTIONS_PROPERTY, ...SELECT_OPTIONS_PROPERTY,
@ -498,7 +498,7 @@ const TABS_ITEMS_PROPERTY = {
{ label: 'Sekme 1', value: '1', content: 'Sekme 1 içeriği' }, { label: 'Sekme 1', value: '1', content: 'Sekme 1 içeriği' },
{ label: 'Sekme 2', value: '2', content: 'Sekme 2 içeriği' }, { label: 'Sekme 2', value: '2', content: 'Sekme 2 içeriği' },
], ],
description: 'App.VisualDesigner.Catalog.Tabs.Description', description: 'App.CatalogTabs.TabsDescription',
tsType: 'Array<{ label: string; value: unknown; content?: string }>', tsType: 'Array<{ label: string; value: unknown; content?: string }>',
} }
@ -721,22 +721,22 @@ const platformDefinition = (
}) })
export const PLATFORM_COMPONENTS: DesignerComponentDefinition[] = [ export const PLATFORM_COMPONENTS: DesignerComponentDefinition[] = [
platformDefinition('ListView', 'List', 'App.VisualDesigner.Catalog.ListView.Description'), platformDefinition('ListView', 'List', 'App.CatalogListView.ListViewDescription'),
platformDefinition('DataGridView', 'Grid', 'App.VisualDesigner.Catalog.DataGridView.Description'), platformDefinition('DataGridView', 'Grid', 'App.CatalogDataGridView.DataGridViewDescription'),
platformDefinition('TreeView', 'Tree', 'App.VisualDesigner.Catalog.TreeView.Description'), platformDefinition('TreeView', 'Tree', 'App.CatalogTreeView.TreeViewDescription'),
platformDefinition('GanttView', 'GanttView', 'App.VisualDesigner.Catalog.GanttView.Description'), platformDefinition('GanttView', 'GanttView', 'App.CatalogGanttView.GanttViewDescription'),
platformDefinition('TodoBoard', 'TodoBoard', 'App.VisualDesigner.Catalog.TodoBoard.Description'), platformDefinition('TodoBoard', 'TodoBoard', 'App.CatalogTodoBoard.TodoBoardDescription'),
platformDefinition('CardView', 'CardView', 'App.VisualDesigner.Catalog.CardView.Description'), platformDefinition('CardView', 'CardView', 'App.CatalogCardView.CardViewDescription'),
platformDefinition( platformDefinition(
'SchedulerView', 'SchedulerView',
'SchedulerView', 'SchedulerView',
'App.VisualDesigner.Catalog.SchedulerView.Description', 'App.CatalogSchedulerView.SchedulerViewDescription',
), ),
platformDefinition('PivotView', 'Pivot', 'App.VisualDesigner.Catalog.PivotView.Description'), platformDefinition('PivotView', 'Pivot', 'App.CatalogPivotView.PivotViewDescription'),
platformDefinition( platformDefinition(
'ChartView', 'ChartView',
'Chart', 'Chart',
'App.VisualDesigner.Catalog.ChartView.Description', 'App.CatalogChartView.ChartViewDescription',
'420px', '420px',
), ),
] ]
@ -753,7 +753,7 @@ export const SQL_DATA_SOURCE_DEFINITION: DesignerComponentDefinition = {
category: 'data', category: 'data',
kind: 'layout', kind: 'layout',
toolboxGroup: 'data', toolboxGroup: 'data',
description: 'App.VisualDesigner.Catalog.SqlDataSource.Description', description: 'App.CatalogSqlDataSource.SqlDataSourceDescription',
acceptsChildren: true, acceptsChildren: true,
properties: [ properties: [
{ {
@ -761,42 +761,42 @@ export const SQL_DATA_SOURCE_DEFINITION: DesignerComponentDefinition = {
type: 'string', type: 'string',
value: '', value: '',
category: 'properties', category: 'properties',
description: 'App.VisualDesigner.Catalog.String.Description', description: 'App.CatalogString.StringDescription',
}, },
{ {
name: 'insertEndpoint', name: 'insertEndpoint',
type: 'string', type: 'string',
value: '', value: '',
category: 'properties', category: 'properties',
description: 'App.VisualDesigner.Catalog.String.Description2', description: 'App.CatalogString.StringDescription2',
}, },
{ {
name: 'updateEndpoint', name: 'updateEndpoint',
type: 'string', type: 'string',
value: '', value: '',
category: 'properties', category: 'properties',
description: 'App.VisualDesigner.Catalog.String.Description3', description: 'App.CatalogString.StringDescription3',
}, },
{ {
name: 'deleteEndpoint', name: 'deleteEndpoint',
type: 'string', type: 'string',
value: '', value: '',
category: 'properties', category: 'properties',
description: 'App.VisualDesigner.Catalog.String.Description4', description: 'App.CatalogString.StringDescription4',
}, },
{ {
name: 'keyFieldName', name: 'keyFieldName',
type: 'string', type: 'string',
value: 'id', value: 'id',
category: 'properties', category: 'properties',
description: 'App.VisualDesigner.Catalog.String.Description5', description: 'App.CatalogString.StringDescription5',
}, },
{ {
name: 'collectionPath', name: 'collectionPath',
type: 'string', type: 'string',
value: '', value: '',
category: 'properties', category: 'properties',
description: 'App.VisualDesigner.Catalog.String.Description6', description: 'App.CatalogString.StringDescription6',
}, },
{ {
name: 'keySource', name: 'keySource',
@ -804,35 +804,35 @@ export const SQL_DATA_SOURCE_DEFINITION: DesignerComponentDefinition = {
value: 'query', value: 'query',
options: ['query', 'route'], options: ['query', 'route'],
category: 'properties', category: 'properties',
description: 'App.VisualDesigner.Catalog.Select.Description', description: 'App.CatalogSelect.SelectDescription',
}, },
{ {
name: 'keyParamName', name: 'keyParamName',
type: 'string', type: 'string',
value: '', value: '',
category: 'properties', category: 'properties',
description: 'App.VisualDesigner.Catalog.String.Description7', description: 'App.CatalogString.StringDescription7',
}, },
{ {
name: 'previewKeyValue', name: 'previewKeyValue',
type: 'string', type: 'string',
value: '', value: '',
category: 'properties', category: 'properties',
description: 'App.VisualDesigner.Catalog.PreviewKeyValue.Description', description: 'App.CatalogPreviewKeyValue.PreviewKeyValueDescription',
}, },
{ {
name: 'autoLoad', name: 'autoLoad',
type: 'boolean', type: 'boolean',
value: true, value: true,
category: 'properties', category: 'properties',
description: 'App.VisualDesigner.Catalog.Boolean.Description', description: 'App.CatalogBoolean.BooleanDescription',
}, },
{ {
name: 'showToolbar', name: 'showToolbar',
type: 'boolean', type: 'boolean',
value: true, value: true,
category: 'properties', category: 'properties',
description: 'App.VisualDesigner.Catalog.Boolean.Description2', description: 'App.CatalogBoolean.BooleanDescription2',
}, },
{ {
name: 'gap', name: 'gap',
@ -862,7 +862,7 @@ export const DESIGNER_EXTRAS: DesignerComponentDefinition[] = [
category: 'layout', category: 'layout',
kind: 'layout', kind: 'layout',
toolboxGroup: 'layout', toolboxGroup: 'layout',
description: 'App.VisualDesigner.Catalog.PageContainer.Description', description: 'App.CatalogPageContainer.PageContainerDescription',
acceptsChildren: true, acceptsChildren: true,
properties: [ properties: [
{ name: 'maxWidth', type: 'string', value: '1280px', category: 'styling' }, { name: 'maxWidth', type: 'string', value: '1280px', category: 'styling' },
@ -878,7 +878,7 @@ export const DESIGNER_EXTRAS: DesignerComponentDefinition[] = [
category: 'layout', category: 'layout',
kind: 'layout', kind: 'layout',
toolboxGroup: 'layout', toolboxGroup: 'layout',
description: 'App.VisualDesigner.Catalog.TwoColumns.Description', description: 'App.CatalogTwoColumns.TwoColumnsDescription',
acceptsChildren: true, acceptsChildren: true,
properties: [ properties: [
{ name: 'gap', type: 'number', value: 16, category: 'styling' }, { name: 'gap', type: 'number', value: 16, category: 'styling' },
@ -892,7 +892,7 @@ export const DESIGNER_EXTRAS: DesignerComponentDefinition[] = [
category: 'layout', category: 'layout',
kind: 'layout', kind: 'layout',
toolboxGroup: 'layout', toolboxGroup: 'layout',
description: 'App.VisualDesigner.Catalog.SidebarContent.Description', description: 'App.CatalogSidebarContent.SidebarContentDescription',
acceptsChildren: true, acceptsChildren: true,
properties: [ properties: [
{ name: 'sidebarWidth', type: 'string', value: '280px', category: 'styling' }, { name: 'sidebarWidth', type: 'string', value: '280px', category: 'styling' },
@ -907,7 +907,7 @@ export const DESIGNER_EXTRAS: DesignerComponentDefinition[] = [
category: 'layout', category: 'layout',
kind: 'layout', kind: 'layout',
toolboxGroup: 'layout', toolboxGroup: 'layout',
description: 'App.VisualDesigner.Catalog.HeaderContent.Description', description: 'App.CatalogHeaderContent.HeaderContentDescription',
acceptsChildren: true, acceptsChildren: true,
properties: [ properties: [
{ name: 'gap', type: 'number', value: 16, category: 'styling' }, { name: 'gap', type: 'number', value: 16, category: 'styling' },
@ -921,7 +921,7 @@ export const DESIGNER_EXTRAS: DesignerComponentDefinition[] = [
category: 'layout', category: 'layout',
kind: 'layout', kind: 'layout',
toolboxGroup: 'layout', toolboxGroup: 'layout',
description: 'App.VisualDesigner.Catalog.FlexRow.Description', description: 'App.CatalogFlexRow.FlexRowDescription',
acceptsChildren: true, acceptsChildren: true,
properties: [ properties: [
{ name: 'gap', type: 'number', value: 16, category: 'styling' }, { name: 'gap', type: 'number', value: 16, category: 'styling' },
@ -943,7 +943,7 @@ export const DESIGNER_EXTRAS: DesignerComponentDefinition[] = [
category: 'layout', category: 'layout',
kind: 'layout', kind: 'layout',
toolboxGroup: 'ui', toolboxGroup: 'ui',
description: 'App.VisualDesigner.Catalog.Spacer.Description', description: 'App.CatalogSpacer.SpacerDescription',
properties: [{ name: 'height', type: 'number', value: 24, category: 'styling' }], properties: [{ name: 'height', type: 'number', value: 24, category: 'styling' }],
hooks: [], hooks: [],
}, },
@ -988,7 +988,7 @@ export const getDesignerCatalog = (customNames: string[] = []): DesignerComponen
category: 'custom', category: 'custom',
kind: 'custom', kind: 'custom',
toolboxGroup: 'custom', toolboxGroup: 'custom',
description: 'App.VisualDesigner.Catalog.Spacer.Description2', description: 'App.CatalogSpacer.SpacerDescription2',
acceptsChildren: true, acceptsChildren: true,
properties: [{ name: 'className', type: 'string', value: '', category: 'styling' }], properties: [{ name: 'className', type: 'string', value: '', category: 'styling' }],
hooks: [], hooks: [],

View file

@ -76,57 +76,57 @@ const snippets = (sqlRef: string): ScriptSnippet[] => {
const sql = sqlRef || 'sqlDataSource1' const sql = sqlRef || 'sqlDataSource1'
return [ return [
{ {
label: 'App.VisualDesigner.Snippet.CalcOnFieldChange.Label', label: 'App.SnippetCalcOnFieldChange.CalcOnFieldChangeLabel',
group: 'App.VisualDesigner.Snippet.Group.Record', group: 'App.SnippetGroup.Record',
description: 'App.VisualDesigner.Snippet.CalcOnFieldChange.Description', description: 'App.SnippetCalcOnFieldChange.CalcOnFieldChangeDescription',
code: `if (['\${1:Quantity}', '\${2:UnitPrice}'].includes(event.field)) {\n const total = Number(event.record.\${1:Quantity} || 0) * Number(event.record.\${2:UnitPrice} || 0)\n refs.${sql}.setField('\${3:TotalAmount}', Math.round(total * 100) / 100)\n}`, code: `if (['\${1:Quantity}', '\${2:UnitPrice}'].includes(event.field)) {\n const total = Number(event.record.\${1:Quantity} || 0) * Number(event.record.\${2:UnitPrice} || 0)\n refs.${sql}.setField('\${3:TotalAmount}', Math.round(total * 100) / 100)\n}`,
}, },
{ {
label: 'App.VisualDesigner.Snippet.ValidateBeforeSave.Label', label: 'App.SnippetValidateBeforeSave.ValidateBeforeSaveLabel',
group: 'App.VisualDesigner.Snippet.Group.Flow', group: 'App.SnippetGroup.Flow',
description: 'App.VisualDesigner.Snippet.ValidateBeforeSave.Description', description: 'App.SnippetValidateBeforeSave.ValidateBeforeSaveDescription',
code: `const eksik = ['\${1:Name}', '\${2:Code}'].filter((column) => !event.record[column])\nif (eksik.length) {\n notify('Zorunlu alanlar: ' + eksik.join(', '), 'warning')\n return false\n}`, code: `const eksik = ['\${1:Name}', '\${2:Code}'].filter((column) => !event.record[column])\nif (eksik.length) {\n notify('Zorunlu alanlar: ' + eksik.join(', '), 'warning')\n return false\n}`,
}, },
{ {
label: 'App.VisualDesigner.Snippet.MultiCondition.Label', label: 'App.SnippetMultiCondition.MultiConditionLabel',
group: 'App.VisualDesigner.Snippet.Group.Flow', group: 'App.SnippetGroup.Flow',
description: 'App.VisualDesigner.Snippet.MultiCondition.Description', description: 'App.SnippetMultiCondition.MultiConditionDescription2',
code: `if (refs.${sql}.getMode() === 'new' || Number(refs.${sql}.getField('\${1:Total}') || 0) > \${2:1000}) {\n \${3:notify('Kontrol edin')}\n}`, code: `if (refs.${sql}.getMode() === 'new' || Number(refs.${sql}.getField('\${1:Total}') || 0) > \${2:1000}) {\n \${3:notify('Kontrol edin')}\n}`,
}, },
{ {
label: 'App.VisualDesigner.Snippet.BulkSet.Label', label: 'App.SnippetBulkSet.BulkSetLabel',
group: 'App.VisualDesigner.Snippet.Group.Record', group: 'App.SnippetGroup.Record',
description: 'App.VisualDesigner.Snippet.BulkSet.Description', description: 'App.SnippetBulkSet.BulkSetDescription2',
code: `refs.${sql}.setFields({ \${1:Status}: '\${2:Taslak}', \${3:Currency}: '\${4:TRY}' })`, code: `refs.${sql}.setFields({ \${1:Status}: '\${2:Taslak}', \${3:Currency}: '\${4:TRY}' })`,
}, },
{ {
label: 'App.VisualDesigner.Snippet.Visibility.Label', label: 'App.SnippetVisibility.VisibilityLabel',
group: 'App.VisualDesigner.Snippet.Group.Component', group: 'App.VisualDesignerWord.Component',
description: 'App.VisualDesigner.Snippet.Visibility.Description', description: 'App.SnippetVisibility.VisibilityDescription',
code: `refs.\${1:card1}.setVisible(refs.${sql}.getMode() === '\${2:edit}')`, code: `refs.\${1:card1}.setVisible(refs.${sql}.getMode() === '\${2:edit}')`,
}, },
{ {
label: 'App.VisualDesigner.Snippet.ApiCall.Label', label: 'App.SnippetApiCall.ApiCallLabel',
group: 'App.VisualDesigner.Snippet.Group.Integration', group: 'App.SnippetGroup.Integration',
description: 'App.VisualDesigner.Snippet.ApiCall.Description', description: 'App.SnippetApiCall.ApiCallDescription2',
code: `try {\n const sonuc = await api.get('\${1:/api/app/customer/1}')\n refs.${sql}.setField('\${2:Title}', sonuc?.\${3:name})\n} catch (error) {\n notify(api.errorMessage(error), 'danger')\n}`, code: `try {\n const sonuc = await api.get('\${1:/api/app/customer/1}')\n refs.${sql}.setField('\${2:Title}', sonuc?.\${3:name})\n} catch (error) {\n notify(api.errorMessage(error), 'danger')\n}`,
}, },
{ {
label: 'App.VisualDesigner.Snippet.IterateRows.Label', label: 'App.SnippetIterateRows.IterateRowsLabel',
group: 'App.VisualDesigner.Snippet.Group.Record', group: 'App.SnippetGroup.Record',
description: 'App.VisualDesigner.Snippet.IterateRows.Description', description: 'App.SnippetIterateRows.IterateRowsDescription',
code: `refs.${sql}.getRows().forEach((row, index) => {\n \${1:console.log(index, row)}\n})`, code: `refs.${sql}.getRows().forEach((row, index) => {\n \${1:console.log(index, row)}\n})`,
}, },
{ {
label: 'App.VisualDesigner.Snippet.SaveIfChanged.Label', label: 'App.SnippetSaveIfChanged.SaveIfChangedLabel',
group: 'App.VisualDesigner.Snippet.Group.Record', group: 'App.SnippetGroup.Record',
description: 'App.VisualDesigner.Snippet.SaveIfChanged.Description', description: 'App.SnippetSaveIfChanged.SaveIfChangedDescription',
code: `if (refs.${sql}.hasChanges()) await refs.${sql}.save()`, code: `if (refs.${sql}.hasChanges()) await refs.${sql}.save()`,
}, },
{ {
label: 'App.VisualDesigner.Snippet.InspectEvent.Label', label: 'App.SnippetInspectEvent.InspectEventLabel',
group: 'App.VisualDesigner.Snippet.Group.Flow', group: 'App.SnippetGroup.Flow',
description: 'App.VisualDesigner.Snippet.InspectEvent.Description', description: 'App.SnippetInspectEvent.InspectEventDescription',
code: `console.log('\${1:event}', JSON.parse(JSON.stringify(event ?? null)))`, code: `console.log('\${1:event}', JSON.parse(JSON.stringify(event ?? null)))`,
}, },
] ]
@ -212,22 +212,22 @@ export const createDesignerScriptDialect = (
conditionKinds: [ conditionKinds: [
{ {
value: 'record', value: 'record',
label: t('::App.VisualDesigner.ConditionKind.RecordColumn'), label: t('::App.VisualDesignerConditionKind.RecordColumn'),
optionSource: RECORD_SOURCE, optionSource: RECORD_SOURCE,
}, },
{ {
value: 'ref', value: 'ref',
label: t('::App.VisualDesigner.ConditionKind.ComponentValue'), label: t('::App.VisualDesignerConditionKind.ComponentValue'),
optionSource: REF_SOURCE, optionSource: REF_SOURCE,
}, },
{ {
value: 'event', value: 'event',
label: t('::App.VisualDesigner.ConditionKind.EventData'), label: t('::App.VisualDesignerConditionKind.EventData'),
optionSource: EVENT_SOURCE, optionSource: EVENT_SOURCE,
}, },
{ {
value: 'expression', value: 'expression',
label: t('::App.VisualDesigner.ConditionKind.FreeExpression'), label: t('::App.VisualDesignerConditionKind.FreeExpression'),
placeholder: `refs.${context.sqlRef}.getMode()`, placeholder: `refs.${context.sqlRef}.getMode()`,
}, },
], ],
@ -266,7 +266,7 @@ export const createDesignerScriptDialect = (
if (!recipe) return '' if (!recipe) return ''
const action = recipe.describe(asDesignerRule(rule), t) const action = recipe.describe(asDesignerRule(rule), t)
if (recipe.conditionIsArgument) return action if (recipe.conditionIsArgument) return action
const always = t('::App.VisualDesigner.Describe.Always') const always = t('::App.Platform.Always')
const conditions = [rule.condition, ...(rule.conditions ?? [])] const conditions = [rule.condition, ...(rule.conditions ?? [])]
.map((condition) => .map((condition) =>
describeDesignerCondition(condition as unknown as DesignerRuleCondition, t), describeDesignerCondition(condition as unknown as DesignerRuleCondition, t),
@ -274,8 +274,8 @@ export const createDesignerScriptDialect = (
.filter((text) => text !== always) .filter((text) => text !== always)
const joiner = const joiner =
rule.join === 'or' rule.join === 'or'
? ` ${t('::App.VisualDesigner.Word.Or')} ` ? ` ${t('::App.Platform.Or')} `
: ` ${t('::App.VisualDesigner.Word.And')} ` : ` ${t('::App.Platform.And')} `
const prefix = conditions.length ? conditions.join(joiner) : always const prefix = conditions.length ? conditions.join(joiner) : always
return `${prefix}${action}` return `${prefix}${action}`
}, },

View file

@ -253,15 +253,15 @@ export type TranslateFn = (key: string, params?: Record<string, string | number>
const conditionSourceLabel = (condition: DesignerRuleCondition, t: TranslateFn) => { const conditionSourceLabel = (condition: DesignerRuleCondition, t: TranslateFn) => {
switch (condition.kind) { switch (condition.kind) {
case 'ref': case 'ref':
return t('::App.VisualDesigner.Describe.RefValue', { return t('::App.VisualDesignerDescribe.RefValue', {
ref: label(condition.source, t('::App.VisualDesigner.Word.Component')), ref: label(condition.source, t('::App.VisualDesignerWord.Component')),
}) })
case 'event': case 'event':
return `event.${label(condition.source, t('::App.VisualDesigner.Word.Field'))}` return `event.${label(condition.source, t('::App.Platform.Field'))}`
case 'expression': case 'expression':
return label(condition.source, t('::App.VisualDesigner.Word.Expression')) return label(condition.source, t('::App.Platform.Expression'))
default: default:
return label(condition.source, t('::App.VisualDesigner.Word.Column')) return label(condition.source, t('::App.Listform.ListformField.Column'))
} }
} }
@ -269,28 +269,28 @@ export const describeDesignerCondition = (
condition: DesignerRuleCondition, condition: DesignerRuleCondition,
t: TranslateFn, t: TranslateFn,
): string => { ): string => {
if (condition.operator === 'always') return t('::App.VisualDesigner.Describe.Always') if (condition.operator === 'always') return t('::App.Platform.Always')
const source = conditionSourceLabel(condition, t) const source = conditionSourceLabel(condition, t)
const value = label(condition.value, t('::App.VisualDesigner.Word.Value')) const value = label(condition.value, t('::App.Listform.ListformField.Value'))
switch (condition.operator) { switch (condition.operator) {
case 'empty': case 'empty':
return t('::App.VisualDesigner.Describe.Empty', { source }) return t('::App.Platform.Empty2', { source })
case 'notEmpty': case 'notEmpty':
return t('::App.VisualDesigner.Describe.NotEmpty', { source }) return t('::App.Platform.NotEmpty', { source })
case 'isTrue': case 'isTrue':
return t('::App.VisualDesigner.Describe.IsTrue', { source }) return t('::App.Platform.IsTrue', { source })
case 'isFalse': case 'isFalse':
return t('::App.VisualDesigner.Describe.IsFalse', { source }) return t('::App.Platform.IsFalse', { source })
case 'contains': case 'contains':
return t('::App.VisualDesigner.Describe.Contains', { source, value }) return t('::App.Platform.Contains', { source, value })
case 'greaterThan': case 'greaterThan':
return t('::App.VisualDesigner.Describe.GreaterThan', { source, value }) return t('::App.Platform.GreaterThan', { source, value })
case 'lessThan': case 'lessThan':
return t('::App.VisualDesigner.Describe.LessThan', { source, value }) return t('::App.Platform.LessThan', { source, value })
case 'notEquals': case 'notEquals':
return t('::App.VisualDesigner.Describe.NotEquals', { source, value }) return t('::App.Platform.NotEquals', { source, value })
default: default:
return t('::App.VisualDesigner.Describe.Equals', { source, value }) return t('::App.Platform.Equals', { source, value })
} }
} }
@ -347,9 +347,9 @@ export const designerRecipes: DesignerRecipe[] = [
build: ({ params }, context) => build: ({ params }, context) =>
`refs.${context.sqlRef}.setField(${q(params.target)}, ${valueExpression(params.value, params.mode)})`, `refs.${context.sqlRef}.setField(${q(params.target)}, ${valueExpression(params.value, params.mode)})`,
describe: ({ params }, t) => describe: ({ params }, t) =>
t('::App.VisualDesigner.Describe.SetField', { t('::App.VisualDesignerDescribe.SetField', {
target: label(params.target, t('::App.VisualDesigner.Word.Column')), target: label(params.target, t('::App.Listform.ListformField.Column')),
value: label(params.value, t('::App.VisualDesigner.Word.Value')), value: label(params.value, t('::App.Listform.ListformField.Value')),
}), }),
}, },
{ {
@ -381,10 +381,10 @@ export const designerRecipes: DesignerRecipe[] = [
)} * ${numberOfRecordField(context, params.right)} * ${factor}) / ${factor})` )} * ${numberOfRecordField(context, params.right)} * ${factor}) / ${factor})`
}, },
describe: ({ params }, t) => describe: ({ params }, t) =>
t('::App.VisualDesigner.Describe.Multiply', { t('::App.VisualDesignerDescribe.Multiply', {
left: label(params.left, t('::App.VisualDesigner.Word.Column')), left: label(params.left, t('::App.Listform.ListformField.Column')),
right: label(params.right, t('::App.VisualDesigner.Word.Column')), right: label(params.right, t('::App.Listform.ListformField.Column')),
target: label(params.target, t('::App.VisualDesigner.Word.Target')), target: label(params.target, t('::App.Listform.ListformField.Target')),
}), }),
}, },
{ {
@ -412,9 +412,9 @@ export const designerRecipes: DesignerRecipe[] = [
return `refs.${context.sqlRef}.setField(${q(params.target)}, Math.round((${total || '0'}) * ${factor}) / ${factor})` return `refs.${context.sqlRef}.setField(${q(params.target)}, Math.round((${total || '0'}) * ${factor}) / ${factor})`
}, },
describe: ({ params, fields }, t) => describe: ({ params, fields }, t) =>
t('::App.VisualDesigner.Describe.Sum', { t('::App.VisualDesignerDescribe.Sum', {
sources: (fields ?? []).join(' + ') || t('::App.VisualDesigner.Word.Columns'), sources: (fields ?? []).join(' + ') || t('::App.Platform.Columns'),
target: label(params.target, t('::App.VisualDesigner.Word.Target')), target: label(params.target, t('::App.Listform.ListformField.Target')),
}), }),
}, },
{ {
@ -438,9 +438,9 @@ export const designerRecipes: DesignerRecipe[] = [
build: ({ params }, context) => build: ({ params }, context) =>
`refs.${context.sqlRef}.setField(${q(params.target)}, ${params.expression || 'null'})`, `refs.${context.sqlRef}.setField(${q(params.target)}, ${params.expression || 'null'})`,
describe: ({ params }, t) => describe: ({ params }, t) =>
t('::App.VisualDesigner.Describe.Formula', { t('::App.VisualDesignerDescribe.Formula', {
expression: label(params.expression, t('::App.VisualDesigner.Word.Expression')), expression: label(params.expression, t('::App.Platform.Expression')),
target: label(params.target, t('::App.VisualDesigner.Word.Target')), target: label(params.target, t('::App.Listform.ListformField.Target')),
}), }),
}, },
{ {
@ -462,9 +462,9 @@ export const designerRecipes: DesignerRecipe[] = [
build: ({ params }, context) => build: ({ params }, context) =>
`refs.${context.sqlRef}.setField(${q(params.target)}, ${eventPathExpression(params.source)})`, `refs.${context.sqlRef}.setField(${q(params.target)}, ${eventPathExpression(params.source)})`,
describe: ({ params }, t) => describe: ({ params }, t) =>
t('::App.VisualDesigner.Describe.EventToField', { t('::App.VisualDesignerDescribe.EventToField', {
source: label(params.source, t('::App.VisualDesigner.Word.Field')), source: label(params.source, t('::App.Platform.Field')),
target: label(params.target, t('::App.VisualDesigner.Word.Target')), target: label(params.target, t('::App.Listform.ListformField.Target')),
}), }),
}, },
{ {
@ -480,8 +480,8 @@ export const designerRecipes: DesignerRecipe[] = [
build: ({ fields }, context) => build: ({ fields }, context) =>
`refs.${context.sqlRef}.clearFields(${(fields ?? []).map(q).join(', ')})`, `refs.${context.sqlRef}.clearFields(${(fields ?? []).map(q).join(', ')})`,
describe: ({ fields }, t) => describe: ({ fields }, t) =>
t('::App.VisualDesigner.Describe.ClearFields', { t('::App.Platform.Clear2', {
sources: (fields ?? []).join(', ') || t('::App.VisualDesigner.Word.Columns'), sources: (fields ?? []).join(', ') || t('::App.Platform.Columns'),
}), }),
}, },
{ {
@ -503,10 +503,10 @@ export const designerRecipes: DesignerRecipe[] = [
params.end, params.end,
)}) - new Date(${recordFieldExpression(context, params.start)})) / 86400000) + 1)`, )}) - new Date(${recordFieldExpression(context, params.start)})) / 86400000) + 1)`,
describe: ({ params }, t) => describe: ({ params }, t) =>
t('::App.VisualDesigner.Describe.DayDiff', { t('::App.VisualDesignerDescribe.DayDiff', {
start: label(params.start, t('::App.VisualDesigner.Word.Start')), start: label(params.start, t('::App.Platform.Start')),
end: label(params.end, t('::App.VisualDesigner.Word.End')), end: label(params.end, t('::App.Platform.End')),
target: label(params.target, t('::App.VisualDesigner.Word.Target')), target: label(params.target, t('::App.Listform.ListformField.Target')),
}), }),
}, },
{ {
@ -518,7 +518,7 @@ export const designerRecipes: DesignerRecipe[] = [
example: 'await refs.sqlDataSource1.save()', example: 'await refs.sqlDataSource1.save()',
params: [], params: [],
build: (_rule, context) => `await refs.${context.sqlRef}.save()`, build: (_rule, context) => `await refs.${context.sqlRef}.save()`,
describe: (_rule, t) => t('::App.VisualDesigner.Describe.Save'), describe: (_rule, t) => t('::App.VisualDesignerDescribe.Save'),
}, },
{ {
id: 'remove', id: 'remove',
@ -529,7 +529,7 @@ export const designerRecipes: DesignerRecipe[] = [
example: 'await refs.sqlDataSource1.remove()', example: 'await refs.sqlDataSource1.remove()',
params: [], params: [],
build: (_rule, context) => `await refs.${context.sqlRef}.remove()`, build: (_rule, context) => `await refs.${context.sqlRef}.remove()`,
describe: (_rule, t) => t('::App.VisualDesigner.Describe.Delete'), describe: (_rule, t) => t('::App.VisualDesignerDescribe.Delete'),
}, },
{ {
id: 'reload', id: 'reload',
@ -540,7 +540,7 @@ export const designerRecipes: DesignerRecipe[] = [
example: 'await refs.sqlDataSource1.reload()', example: 'await refs.sqlDataSource1.reload()',
params: [], params: [],
build: (_rule, context) => `await refs.${context.sqlRef}.reload()`, build: (_rule, context) => `await refs.${context.sqlRef}.reload()`,
describe: (_rule, t) => t('::App.VisualDesigner.Describe.Reload'), describe: (_rule, t) => t('::App.VisualDesignerDescribe.Reload'),
}, },
{ {
id: 'newRecord', id: 'newRecord',
@ -551,7 +551,7 @@ export const designerRecipes: DesignerRecipe[] = [
example: 'refs.sqlDataSource1.newRecord()', example: 'refs.sqlDataSource1.newRecord()',
params: [], params: [],
build: (_rule, context) => `refs.${context.sqlRef}.newRecord()`, build: (_rule, context) => `refs.${context.sqlRef}.newRecord()`,
describe: (_rule, t) => t('::App.VisualDesigner.Describe.NewRecord'), describe: (_rule, t) => t('::App.VisualDesignerDescribe.NewRecord'),
}, },
{ {
id: 'goToRow', id: 'goToRow',
@ -593,8 +593,8 @@ export const designerRecipes: DesignerRecipe[] = [
: `refs.${context.sqlRef}.${calls[params.target] || 'nextRow()'}` : `refs.${context.sqlRef}.${calls[params.target] || 'nextRow()'}`
}, },
describe: ({ params }, t) => describe: ({ params }, t) =>
t('::App.VisualDesigner.Describe.GoToRow', { t('::App.VisualDesignerDescribe.GoToRow', {
target: label(params.target, t('::App.VisualDesigner.Word.Next')), target: label(params.target, t('::App.Platform.Next2')),
}), }),
}, },
{ {
@ -620,10 +620,10 @@ export const designerRecipes: DesignerRecipe[] = [
params.column, params.column,
)}))`, )}))`,
describe: ({ params }, t) => describe: ({ params }, t) =>
t('::App.VisualDesigner.Describe.SelectColumnToField', { t('::App.VisualDesignerDescribe.SelectColumnToField', {
ref: label(params.ref, 'select'), ref: label(params.ref, 'select'),
column: label(params.column, t('::App.VisualDesigner.Word.Column')), column: label(params.column, t('::App.Listform.ListformField.Column')),
target: label(params.target, t('::App.VisualDesigner.Word.Target')), target: label(params.target, t('::App.Listform.ListformField.Target')),
}), }),
}, },
{ {
@ -645,10 +645,10 @@ export const designerRecipes: DesignerRecipe[] = [
build: ({ params }) => build: ({ params }) =>
`refs.${params.target}.setValue(refs.${params.ref}.getColumn(${q(params.column)}))`, `refs.${params.target}.setValue(refs.${params.ref}.getColumn(${q(params.column)}))`,
describe: ({ params }, t) => describe: ({ params }, t) =>
t('::App.VisualDesigner.Describe.SelectColumnToComponent', { t('::App.VisualDesignerDescribe.SelectColumnToComponent', {
ref: label(params.ref, 'select'), ref: label(params.ref, 'select'),
column: label(params.column, t('::App.VisualDesigner.Word.Column')), column: label(params.column, t('::App.Listform.ListformField.Column')),
target: label(params.target, t('::App.VisualDesigner.Word.Component')), target: label(params.target, t('::App.VisualDesignerWord.Component')),
}), }),
}, },
{ {
@ -665,9 +665,9 @@ export const designerRecipes: DesignerRecipe[] = [
build: ({ params }) => build: ({ params }) =>
`refs.${params.ref}.setValue(${valueExpression(params.value, params.mode)})`, `refs.${params.ref}.setValue(${valueExpression(params.value, params.mode)})`,
describe: ({ params }, t) => describe: ({ params }, t) =>
t('::App.VisualDesigner.Describe.SetComponentValue', { t('::App.VisualDesignerDescribe.SetComponentValue', {
ref: label(params.ref, t('::App.VisualDesigner.Word.Component')), ref: label(params.ref, t('::App.VisualDesignerWord.Component')),
value: label(params.value, t('::App.VisualDesigner.Word.Value')), value: label(params.value, t('::App.Listform.ListformField.Value')),
}), }),
}, },
{ {
@ -697,13 +697,13 @@ export const designerRecipes: DesignerRecipe[] = [
return `refs.${rule.params.ref}.setVisible(${flag})` return `refs.${rule.params.ref}.setVisible(${flag})`
}, },
describe: ({ params, condition }, t) => describe: ({ params, condition }, t) =>
t('::App.VisualDesigner.Describe.Visibility', { t('::App.VisualDesignerDescribe.Visibility', {
condition: describeDesignerCondition(condition, t), condition: describeDesignerCondition(condition, t),
ref: label(params.ref, t('::App.VisualDesigner.Word.Component')), ref: label(params.ref, t('::App.VisualDesignerWord.Component')),
mode: t( mode: t(
params.invert === 'true' params.invert === 'true'
? '::App.VisualDesigner.Word.Hidden' ? '::App.VisualDesignerWord.Hidden'
: '::App.VisualDesigner.Word.Visible', : '::App.VisualDesignerWord.Visible',
), ),
}), }),
}, },
@ -733,13 +733,13 @@ export const designerRecipes: DesignerRecipe[] = [
return `refs.${rule.params.ref}.setEnabled(${flag})` return `refs.${rule.params.ref}.setEnabled(${flag})`
}, },
describe: ({ params, condition }, t) => describe: ({ params, condition }, t) =>
t('::App.VisualDesigner.Describe.Enabled', { t('::App.VisualDesignerDescribe.Enabled', {
condition: describeDesignerCondition(condition, t), condition: describeDesignerCondition(condition, t),
ref: label(params.ref, t('::App.VisualDesigner.Word.Component')), ref: label(params.ref, t('::App.VisualDesignerWord.Component')),
mode: t( mode: t(
params.invert === 'true' params.invert === 'true'
? '::App.VisualDesigner.Word.Passive' ? '::App.Platform.Passive'
: '::App.VisualDesigner.Word.Active', : '::App.Listform.ListformField.IsActive',
), ),
}), }),
}, },
@ -769,13 +769,13 @@ export const designerRecipes: DesignerRecipe[] = [
return `refs.${rule.params.ref}.setReadOnly(${flag})` return `refs.${rule.params.ref}.setReadOnly(${flag})`
}, },
describe: ({ params, condition }, t) => describe: ({ params, condition }, t) =>
t('::App.VisualDesigner.Describe.ReadOnly', { t('::App.VisualDesignerDescribe.Enabled', {
condition: describeDesignerCondition(condition, t), condition: describeDesignerCondition(condition, t),
ref: label(params.ref, t('::App.VisualDesigner.Word.Component')), ref: label(params.ref, t('::App.VisualDesignerWord.Component')),
mode: t( mode: t(
params.invert === 'true' params.invert === 'true'
? '::App.VisualDesigner.Word.Editable' ? '::App.Platform.Editable'
: '::App.VisualDesigner.Word.ReadOnly', : '::App.Platform.ReadOnly',
), ),
}), }),
}, },
@ -815,8 +815,8 @@ export const designerRecipes: DesignerRecipe[] = [
build: ({ params }) => build: ({ params }) =>
`refs.${params.ref}.setProp(${q(params.property)}, ${valueExpression(params.value, params.mode)})`, `refs.${params.ref}.setProp(${q(params.property)}, ${valueExpression(params.value, params.mode)})`,
describe: ({ params }, t) => describe: ({ params }, t) =>
t('::App.VisualDesigner.Describe.SetProp', { t('::App.VisualDesignerDescribe.SetProp', {
ref: label(params.ref, t('::App.VisualDesigner.Word.Component')), ref: label(params.ref, t('::App.VisualDesignerWord.Component')),
property: label(params.property, 'prop'), property: label(params.property, 'prop'),
}), }),
}, },
@ -851,8 +851,8 @@ export const designerRecipes: DesignerRecipe[] = [
? `notify(${q(params.message)}, ${q(params.type)})` ? `notify(${q(params.message)}, ${q(params.type)})`
: `notify(${q(params.message)})`, : `notify(${q(params.message)})`,
describe: ({ params }, t) => describe: ({ params }, t) =>
t('::App.VisualDesigner.Describe.Notify', { t('::App.VisualDesignerDescribe.Notify', {
message: label(params.message, t('::App.VisualDesigner.Word.Message')), message: label(params.message, t('::App.Listform.ListformField.Message')),
}), }),
}, },
{ {
@ -883,8 +883,8 @@ export const designerRecipes: DesignerRecipe[] = [
build: ({ params }) => build: ({ params }) =>
`if (!window.confirm(${q(params.message)})) return${params.cancel === 'false' ? ' false' : ''}`, `if (!window.confirm(${q(params.message)})) return${params.cancel === 'false' ? ' false' : ''}`,
describe: ({ params }, t) => describe: ({ params }, t) =>
t('::App.VisualDesigner.Describe.Ask', { t('::App.VisualDesignerDescribe.Ask', {
message: label(params.message, t('::App.VisualDesigner.Word.Message')), message: label(params.message, t('::App.Listform.ListformField.Message')),
}), }),
}, },
{ {
@ -916,8 +916,8 @@ export const designerRecipes: DesignerRecipe[] = [
? `window.location.assign(${q(params.url)})` ? `window.location.assign(${q(params.url)})`
: `window.open(${q(params.url)}, "_blank")`, : `window.open(${q(params.url)}, "_blank")`,
describe: ({ params }, t) => describe: ({ params }, t) =>
t('::App.VisualDesigner.Describe.OpenUrl', { t('::App.Platform.OpenUrl2', {
url: label(params.url, t('::App.VisualDesigner.Word.Address')), url: label(params.url, t('::App.Listform.ListformField.Address')),
}), }),
}, },
{ {
@ -954,9 +954,9 @@ export const designerRecipes: DesignerRecipe[] = [
return `refs.${context.sqlRef}.setField(${q(params.target)}, ${value})` return `refs.${context.sqlRef}.setField(${q(params.target)}, ${value})`
}, },
describe: ({ params }, t) => describe: ({ params }, t) =>
t('::App.VisualDesigner.Describe.ApiToField', { t('::App.VisualDesignerDescribe.ApiToField', {
url: label(params.url, 'api'), url: label(params.url, 'api'),
target: label(params.target, t('::App.VisualDesigner.Word.Target')), target: label(params.target, t('::App.Listform.ListformField.Target')),
}), }),
}, },
{ {
@ -1004,9 +1004,9 @@ export const designerRecipes: DesignerRecipe[] = [
return `await api.${method}(${q(params.url)}, ${body})` return `await api.${method}(${q(params.url)}, ${body})`
}, },
describe: ({ params }, t) => describe: ({ params }, t) =>
t('::App.VisualDesigner.Describe.ApiCall', { t('::App.VisualDesignerDescribe.ApiCall', {
method: (params.method || 'post').toUpperCase(), method: (params.method || 'post').toUpperCase(),
url: label(params.url, t('::App.VisualDesigner.Word.Address')), url: label(params.url, t('::App.Listform.ListformField.Address')),
}), }),
}, },
{ {
@ -1019,7 +1019,7 @@ export const designerRecipes: DesignerRecipe[] = [
params: [], params: [],
build: () => 'return false', build: () => 'return false',
describe: ({ condition }, t) => describe: ({ condition }, t) =>
t('::App.VisualDesigner.Describe.Cancel', { t('::App.VisualDesignerDescribe.Cancel', {
condition: describeDesignerCondition(condition, t), condition: describeDesignerCondition(condition, t),
}), }),
}, },
@ -1032,7 +1032,7 @@ export const designerRecipes: DesignerRecipe[] = [
params: [], params: [],
build: () => 'return', build: () => 'return',
describe: ({ condition }, t) => describe: ({ condition }, t) =>
t('::App.VisualDesigner.Describe.Stop', { t('::App.VisualDesignerDescribe.Stop', {
condition: describeDesignerCondition(condition, t), condition: describeDesignerCondition(condition, t),
}), }),
}, },
@ -1060,7 +1060,7 @@ export const designerRecipes: DesignerRecipe[] = [
build: ({ params }) => build: ({ params }) =>
`console.log(${q(params.label || 'event')}, ${eventPathExpression(params.path)})`, `console.log(${q(params.label || 'event')}, ${eventPathExpression(params.path)})`,
describe: ({ params }, t) => describe: ({ params }, t) =>
t('::App.VisualDesigner.Describe.Log', { t('::App.VisualDesignerDescribe.Log', {
label: label(params.label, 'event'), label: label(params.label, 'event'),
}), }),
}, },
@ -1080,8 +1080,8 @@ export const designerRecipes: DesignerRecipe[] = [
], ],
build: ({ params }) => (params.code || '').trim().replace(/;$/, ''), build: ({ params }) => (params.code || '').trim().replace(/;$/, ''),
describe: ({ params }, t) => describe: ({ params }, t) =>
t('::App.VisualDesigner.Describe.Custom', { t('::App.Platform.Custom', {
code: label(params.code, t('::App.VisualDesigner.Word.Code')), code: label(params.code, t('::App.Platform.Code')),
}), }),
}, },
] ]

View file

@ -444,25 +444,25 @@ export const SQL_DATA_SOURCE_SLOTS: readonly SqlDataSourceSlot[] = [
property: 'selectEndpoint', property: 'selectEndpoint',
method: 'GET', method: 'GET',
label: 'Select (GET)', label: 'Select (GET)',
description: 'App.VisualDesigner.Event.X.Description', description: 'App.EventX.XDescription',
}, },
{ {
property: 'insertEndpoint', property: 'insertEndpoint',
method: 'POST', method: 'POST',
label: 'Insert (POST)', label: 'Insert (POST)',
description: 'App.VisualDesigner.Event.X.Description2', description: 'App.EventX.XDescription2',
}, },
{ {
property: 'updateEndpoint', property: 'updateEndpoint',
method: 'PUT', method: 'PUT',
label: 'Update (PUT)', label: 'Update (PUT)',
description: 'App.VisualDesigner.Event.X.Description3', description: 'App.EventX.XDescription3',
}, },
{ {
property: 'deleteEndpoint', property: 'deleteEndpoint',
method: 'DELETE', method: 'DELETE',
label: 'Delete (DELETE)', label: 'Delete (DELETE)',
description: 'App.VisualDesigner.Event.X.Description4', description: 'App.EventX.XDescription4',
}, },
] as const ] as const
@ -489,101 +489,101 @@ export interface SqlDataSourceEvent {
export const SQL_DATA_SOURCE_EVENTS: readonly SqlDataSourceEvent[] = [ export const SQL_DATA_SOURCE_EVENTS: readonly SqlDataSourceEvent[] = [
{ {
name: 'onLoad', name: 'onLoad',
label: 'App.VisualDesigner.Event.OnLoad.Label', label: 'App.EventOnLoad.OnLoadLabel',
description: 'App.VisualDesigner.Event.OnLoad.Description', description: 'App.EventOnLoad.OnLoadDescription',
payload: [ payload: [
{ key: 'rows', description: 'App.VisualDesigner.Event.Rows.Description' }, { key: 'rows', description: 'App.EventRows.RowsDescription' },
{ key: 'count', description: 'App.VisualDesigner.Event.Count.Description' }, { key: 'count', description: 'App.EventCount.CountDescription' },
{ key: 'record', description: 'App.VisualDesigner.Event.Record.Description' }, { key: 'record', description: 'App.EventRecord.RecordDescription' },
{ key: 'index', description: 'App.VisualDesigner.Event.Index.Description' }, { key: 'index', description: 'App.EventIndex.IndexDescription' },
], ],
}, },
{ {
name: 'onRecordChange', name: 'onRecordChange',
label: 'App.VisualDesigner.Event.OnRecordChange.Label', label: 'App.EventOnRecordChange.OnRecordChangeLabel',
description: 'App.VisualDesigner.Event.OnRecordChange.Description', description: 'App.EventOnRecordChange.OnRecordChangeDescription',
payload: [ payload: [
{ key: 'record', description: 'App.VisualDesigner.Event.Record.Description2' }, { key: 'record', description: 'App.EventRecord.RecordDescription2' },
{ key: 'index', description: 'App.VisualDesigner.Event.Index.Description2' }, { key: 'index', description: 'App.EventIndex.IndexDescription2' },
{ key: 'rows', description: 'App.VisualDesigner.Event.Rows.Description2' }, { key: 'rows', description: 'App.EventRows.RowsDescription2' },
{ key: 'count', description: 'App.VisualDesigner.Event.Count.Description' }, { key: 'count', description: 'App.EventCount.CountDescription' },
], ],
}, },
{ {
name: 'onFieldChange', name: 'onFieldChange',
label: 'App.VisualDesigner.Event.OnFieldChange.Label', label: 'App.EventOnFieldChange.OnFieldChangeLabel',
description: 'App.VisualDesigner.Event.OnFieldChange.Description', description: 'App.EventOnFieldChange.OnFieldChangeDescription',
payload: [ payload: [
{ key: 'field', description: 'App.VisualDesigner.Event.Field.Description' }, { key: 'field', description: 'App.EventField.FieldDescription' },
{ key: 'value', description: 'App.VisualDesigner.Event.Value.Description' }, { key: 'value', description: 'App.EventValue.ValueDescription' },
{ key: 'previous', description: 'App.VisualDesigner.Event.Previous.Description' }, { key: 'previous', description: 'App.EventPrevious.PreviousDescription' },
{ key: 'record', description: 'App.VisualDesigner.Event.Record.Description3' }, { key: 'record', description: 'App.EventRecord.RecordDescription3' },
], ],
}, },
{ {
name: 'onNewRecord', name: 'onNewRecord',
label: 'App.VisualDesigner.Event.OnNewRecord.Label', label: 'App.VisualDesignerCanvas.NewRecord',
description: 'App.VisualDesigner.Event.OnNewRecord.Description', description: 'App.EventOnNewRecord.OnNewRecordDescription',
payload: [{ key: 'record', description: 'App.VisualDesigner.Event.Record.Description4' }], payload: [{ key: 'record', description: 'App.EventRecord.RecordDescription4' }],
}, },
{ {
name: 'onModeChange', name: 'onModeChange',
label: 'App.VisualDesigner.Event.OnModeChange.Label', label: 'App.EventOnModeChange.OnModeChangeLabel',
description: 'App.VisualDesigner.Event.OnModeChange.Description', description: 'App.EventOnModeChange.OnModeChangeDescription',
payload: [ payload: [
{ key: 'mode', description: '"new" veya "edit"' }, { key: 'mode', description: '"new" veya "edit"' },
{ key: 'record', description: 'App.VisualDesigner.Event.Record.Description5' }, { key: 'record', description: 'App.EventRecord.RecordDescription5' },
], ],
}, },
{ {
name: 'onBeforeSave', name: 'onBeforeSave',
label: 'App.VisualDesigner.Event.OnBeforeSave.Label', label: 'App.EventOnBeforeSave.OnBeforeSaveLabel',
description: 'App.VisualDesigner.Event.OnBeforeSave.Description', description: 'App.EventOnBeforeSave.OnBeforeSaveDescription',
cancelable: true, cancelable: true,
payload: [ payload: [
{ key: 'record', description: 'App.VisualDesigner.Event.Record.Description6' }, { key: 'record', description: 'App.EventRecord.RecordDescription6' },
{ key: 'original', description: 'App.VisualDesigner.Event.Original.Description' }, { key: 'original', description: 'App.EventOriginal.OriginalDescription' },
{ key: 'payload', description: 'App.VisualDesigner.Event.Payload.Description' }, { key: 'payload', description: 'App.EventPayload.PayloadDescription' },
{ key: 'mode', description: '"new" veya "edit"' }, { key: 'mode', description: '"new" veya "edit"' },
{ key: 'isNew', description: 'App.VisualDesigner.Event.IsNew.Description' }, { key: 'isNew', description: 'App.EventIsNew.IsNewDescription' },
], ],
}, },
{ {
name: 'onAfterSave', name: 'onAfterSave',
label: 'App.VisualDesigner.Event.OnAfterSave.Label', label: 'App.EventOnAfterSave.OnAfterSaveLabel',
description: 'App.VisualDesigner.Event.OnAfterSave.Description', description: 'App.EventOnAfterSave.OnAfterSaveDescription',
payload: [ payload: [
{ key: 'record', description: 'App.VisualDesigner.Event.Record.Description7' }, { key: 'record', description: 'App.EventRecord.RecordDescription7' },
{ key: 'response', description: 'App.VisualDesigner.Event.Response.Description' }, { key: 'response', description: 'App.EventResponse.ResponseDescription' },
{ key: 'mode', description: 'App.VisualDesigner.Event.Mode.Description' }, { key: 'mode', description: 'App.EventMode.ModeDescription' },
{ key: 'isNew', description: 'App.VisualDesigner.Event.IsNew.Description2' }, { key: 'isNew', description: 'App.EventIsNew.IsNewDescription2' },
], ],
}, },
{ {
name: 'onBeforeDelete', name: 'onBeforeDelete',
label: 'App.VisualDesigner.Event.OnBeforeDelete.Label', label: 'App.EventOnBeforeDelete.OnBeforeDeleteLabel',
description: 'App.VisualDesigner.Event.OnBeforeDelete.Description', description: 'App.EventOnBeforeDelete.OnBeforeDeleteDescription',
cancelable: true, cancelable: true,
payload: [ payload: [
{ key: 'record', description: 'App.VisualDesigner.Event.Record.Description8' }, { key: 'record', description: 'App.EventRecord.RecordDescription8' },
{ key: 'key', description: 'App.VisualDesigner.Event.Key.Description' }, { key: 'key', description: 'App.EventKey.KeyDescription' },
], ],
}, },
{ {
name: 'onAfterDelete', name: 'onAfterDelete',
label: 'App.VisualDesigner.Event.OnAfterDelete.Label', label: 'App.EventOnAfterDelete.OnAfterDeleteLabel',
description: 'App.VisualDesigner.Event.OnAfterDelete.Description', description: 'App.EventOnAfterDelete.OnAfterDeleteDescription',
payload: [{ key: 'record', description: 'App.VisualDesigner.Event.Record.Description9' }], payload: [{ key: 'record', description: 'App.EventRecord.RecordDescription9' }],
}, },
{ {
name: 'onError', name: 'onError',
label: 'App.VisualDesigner.Event.OnError.Label', label: 'App.EventOnError.OnErrorLabel',
description: 'App.VisualDesigner.Event.OnError.Description', description: 'App.EventOnError.OnErrorDescription',
payload: [ payload: [
{ key: 'message', description: 'App.VisualDesigner.Event.Message.Description' }, { key: 'message', description: 'App.EventMessage.MessageDescription' },
{ key: 'action', description: '"reload" | "save" | "delete"' }, { key: 'action', description: '"reload" | "save" | "delete"' },
{ key: 'error', description: 'App.VisualDesigner.Event.Error.Description' }, { key: 'error', description: 'App.EventError.ErrorDescription' },
{ key: 'record', description: 'App.VisualDesigner.Event.Record.Description10' }, { key: 'record', description: 'App.EventRecord.RecordDescription10' },
], ],
}, },
] as const ] as const
@ -613,7 +613,7 @@ export const getSqlDataSourceKeyField = (node: DesignerNode) =>
*/ */
export const SQL_DATA_SOURCE_KEY_SOURCES = [ export const SQL_DATA_SOURCE_KEY_SOURCES = [
{ value: 'query', label: 'URL query string (?id=…)' }, { value: 'query', label: 'URL query string (?id=…)' },
{ value: 'route', label: 'App.VisualDesigner.Event.OnError.Label2' }, { value: 'route', label: 'App.EventOnError.OnErrorLabel2' },
] as const ] as const
export type SqlDataSourceKeySource = (typeof SQL_DATA_SOURCE_KEY_SOURCES)[number]['value'] export type SqlDataSourceKeySource = (typeof SQL_DATA_SOURCE_KEY_SOURCES)[number]['value']

View file

@ -74,8 +74,8 @@ export const ROUTES_ENUM = {
videoroom: { videoroom: {
dashboard: '/admin/videoroom/dashboard', dashboard: '/admin/videoroom/dashboard',
roomList: '/admin/videoroom/list', list: '/admin/videoroom/list',
roomDetail: '/admin/videoroom/room/:id', detail: '/admin/videoroom/room/:id',
planning: '/admin/videoroom/planning/:id', planning: '/admin/videoroom/planning/:id',
}, },

View file

@ -38,11 +38,11 @@ export abstract class UiEvalService {
} }
static ApiGenerateBackgroundWorkers = () => { static ApiGenerateBackgroundWorkers = () => {
UiEvalService.runWithToast(() => generateBackgroundWorkers(), '::App.BackgroundWorkers.Message') UiEvalService.runWithToast(() => generateBackgroundWorkers(), '::App.BackgroundWorkers.BackgroundWorkersMessage')
} }
static ApiClearRedisCache = () => { static ApiClearRedisCache = () => {
UiEvalService.runWithToast(() => clearRedisCache(), '::App.ClearRedisCache.Message') UiEvalService.runWithToast(() => clearRedisCache(), '::App.ClearRedisCache.ClearRedisCacheMessage')
} }
static ApiKickUser = (userId: string, gridRef?: any) => { static ApiKickUser = (userId: string, gridRef?: any) => {
@ -51,7 +51,7 @@ export abstract class UiEvalService {
if (gridRef?.current) { if (gridRef?.current) {
gridRef.current.instance().refresh() gridRef.current.instance().refresh()
} }
}, '::App.KickUser.Message') }, '::App.KickUser.KickUserMessage')
} }
/** /**
@ -61,7 +61,7 @@ export abstract class UiEvalService {
static ApiDbMigrate = () => { static ApiDbMigrate = () => {
toast.push( toast.push(
<Notification type="info" duration={3000}> <Notification type="info" duration={3000}>
{UiEvalService.translate('::App.DbMigrate.StartMessage')} {UiEvalService.translate('::App.Platform.StartMessage')}
</Notification>, </Notification>,
{ placement: 'bottom-end' }, { placement: 'bottom-end' },
) )

View file

@ -67,7 +67,7 @@ export class OrderService {
} catch (error) { } catch (error) {
console.error('Order creation error:', error) console.error('Order creation error:', error)
let errorMessage = 'Public.payment.createOrderError' let errorMessage = 'App.PublicPayment.CreateOrderError'
if (axios.isAxiosError(error)) { if (axios.isAxiosError(error)) {
if (error.response) { if (error.response) {

View file

@ -109,7 +109,7 @@ export class SignalRService {
this.isConnected = true this.isConnected = true
toast.push( toast.push(
<Notification <Notification
title={this.translate('::App.Videoroom.Signal.Reconnected')} title={this.translate('::App.VideoRoomSignal.Reconnected')}
type="success" type="success"
/>, />,
{ {
@ -127,7 +127,7 @@ export class SignalRService {
if (this.isKicked) { if (this.isKicked) {
toast.push( toast.push(
<Notification <Notification
title={this.translate('::App.Videoroom.Signal.Reconnecting')} title={this.translate('::App.VideoRoomSignal.Reconnecting')}
type="warning" type="warning"
/>, />,
{ placement: 'bottom-end' }, { placement: 'bottom-end' },
@ -150,7 +150,7 @@ export class SignalRService {
this.connection.on('Error', (message: string) => { this.connection.on('Error', (message: string) => {
toast.push( toast.push(
<Notification <Notification
title={this.translate('::App.Videoroom.Signal.Error', { message })} title={this.translate('::App.VideoRoomSignal.Error', { message })}
type="danger" type="danger"
/>, />,
{ {
@ -162,7 +162,7 @@ export class SignalRService {
this.connection.on('Warning', (message: string) => { this.connection.on('Warning', (message: string) => {
toast.push( toast.push(
<Notification <Notification
title={this.translate('::App.Videoroom.Signal.Warning', { message })} title={this.translate('::App.VideoRoomSignal.Warning', { message })}
type="warning" type="warning"
/>, />,
{ {
@ -181,7 +181,7 @@ export class SignalRService {
if (this.isKicked) { if (this.isKicked) {
toast.push( toast.push(
<Notification <Notification
title={this.translate('::App.Videoroom.Signal.KickedNoReconnect')} title={this.translate('::App.VideoRoomSignal.KickedNoReconnect')}
type="danger" type="danger"
/>, />,
) )
@ -194,7 +194,7 @@ export class SignalRService {
this.isKicked = true this.isKicked = true
toast.push( toast.push(
<Notification <Notification
title={this.translate('::App.Videoroom.Signal.Kicked', { message })} title={this.translate('::App.VideoRoomSignal.Kicked', { message })}
type="danger" type="danger"
/>, />,
{ {
@ -221,7 +221,7 @@ export class SignalRService {
} }
this.currentSessionId = undefined this.currentSessionId = undefined
window.location.href = ROUTES_ENUM.protected.admin.videoroom.roomList window.location.href = ROUTES_ENUM.protected.admin.videoroom.list
}) })
} }
@ -230,7 +230,7 @@ export class SignalRService {
const startPromise = this.connection.start() const startPromise = this.connection.start()
const timeout = new Promise((_, reject) => const timeout = new Promise((_, reject) =>
setTimeout( setTimeout(
() => reject(new Error(this.translate('::App.Videoroom.Signal.Timeout'))), () => reject(new Error(this.translate('::App.VideoRoomSignal.Timeout'))),
10000, 10000,
), ),
) )
@ -238,7 +238,7 @@ export class SignalRService {
await Promise.race([startPromise, timeout]) await Promise.race([startPromise, timeout])
this.isConnected = true this.isConnected = true
toast.push( toast.push(
<Notification title={this.translate('::App.Videoroom.Signal.Connected')} type="success" />, <Notification title={this.translate('::App.VideoRoomSignal.Connected')} type="success" />,
{ {
placement: 'bottom-end', placement: 'bottom-end',
}, },
@ -246,7 +246,7 @@ export class SignalRService {
} catch { } catch {
toast.push( toast.push(
<Notification <Notification
title={this.translate('::App.Videoroom.Signal.ServerUnreachable')} title={this.translate('::App.VideoRoomSignal.ServerUnreachable')}
type="danger" type="danger"
/>, />,
{ placement: 'bottom-end' }, { placement: 'bottom-end' },
@ -265,7 +265,7 @@ export class SignalRService {
if (!this.isConnected) { if (!this.isConnected) {
toast.push( toast.push(
<Notification <Notification
title={this.translate('::App.Videoroom.Signal.NoConnection')} title={this.translate('::App.VideoRoomSignal.NoConnection')}
type="warning" type="warning"
/>, />,
{ {
@ -280,7 +280,7 @@ export class SignalRService {
await this.connection.invoke('JoinClass', sessionId, userId, userName, isTeacher, isActive) await this.connection.invoke('JoinClass', sessionId, userId, userName, isTeacher, isActive)
} catch { } catch {
toast.push( toast.push(
<Notification title={this.translate('::App.Videoroom.Signal.JoinFailed')} type="danger" />, <Notification title={this.translate('::App.VideoRoomSignal.JoinFailed')} type="danger" />,
{ {
placement: 'bottom-end', placement: 'bottom-end',
}, },
@ -302,7 +302,7 @@ export class SignalRService {
} catch { } catch {
toast.push( toast.push(
<Notification <Notification
title={this.translate('::App.Videoroom.Signal.LeaveFailed')} title={this.translate('::App.VideoRoomSignal.LeaveFailed')}
type="warning" type="warning"
/>, />,
{ {
@ -349,7 +349,7 @@ export class SignalRService {
} catch { } catch {
toast.push( toast.push(
<Notification <Notification
title={this.translate('::App.Videoroom.PublicMessageFailed')} title={this.translate('::App.Platform.PublicMessageFailed')}
type="danger" type="danger"
/>, />,
{ {
@ -402,7 +402,7 @@ export class SignalRService {
} catch { } catch {
toast.push( toast.push(
<Notification <Notification
title={this.translate('::App.Videoroom.PrivateMessageFailed')} title={this.translate('::App.Platform.PrivateMessageFailed')}
type="danger" type="danger"
/>, />,
{ {
@ -447,7 +447,7 @@ export class SignalRService {
) )
} catch { } catch {
toast.push( toast.push(
<Notification title={this.translate('::App.Videoroom.AnnouncementFailed')} type="danger" />, <Notification title={this.translate('::App.Platform.AnnouncementFailed')} type="danger" />,
{ {
placement: 'bottom-end', placement: 'bottom-end',
}, },
@ -472,7 +472,7 @@ export class SignalRService {
await this.connection.invoke('MuteParticipant', sessionId, userId, isMuted, isTeacher) await this.connection.invoke('MuteParticipant', sessionId, userId, isMuted, isTeacher)
} catch { } catch {
toast.push( toast.push(
<Notification title={this.translate('::App.Videoroom.MuteFailed')} type="warning" />, <Notification title={this.translate('::App.Platform.MuteFailed')} type="warning" />,
{ {
placement: 'bottom-end', placement: 'bottom-end',
}, },
@ -493,7 +493,7 @@ export class SignalRService {
} catch { } catch {
toast.push( toast.push(
<Notification <Notification
title={this.translate('::App.Videoroom.Signal.RaiseHandFailed')} title={this.translate('::App.VideoRoomSignal.RaiseHandFailed')}
type="danger" type="danger"
/>, />,
{ {
@ -515,7 +515,7 @@ export class SignalRService {
await this.connection.invoke('KickParticipant', sessionId, participantId) await this.connection.invoke('KickParticipant', sessionId, participantId)
} catch { } catch {
toast.push( toast.push(
<Notification title={this.translate('::App.Videoroom.KickFailed')} type="danger" />, <Notification title={this.translate('::App.Platform.KickFailed')} type="danger" />,
{ {
placement: 'bottom-end', placement: 'bottom-end',
}, },
@ -536,7 +536,7 @@ export class SignalRService {
} catch { } catch {
toast.push( toast.push(
<Notification <Notification
title={this.translate('::App.Videoroom.Signal.HandRaiseApproveFailed')} title={this.translate('::App.VideoRoomSignal.HandRaiseApproveFailed')}
type="warning" type="warning"
/>, />,
{ {
@ -559,7 +559,7 @@ export class SignalRService {
} catch { } catch {
toast.push( toast.push(
<Notification <Notification
title={this.translate('::App.Videoroom.Signal.LowerHandFailed')} title={this.translate('::App.VideoRoomSignal.LowerHandFailed')}
type="warning" type="warning"
/>, />,
{ {
@ -645,7 +645,7 @@ export class SignalRService {
} catch { } catch {
toast.push( toast.push(
<Notification <Notification
title={this.translate('::App.Videoroom.Signal.DisconnectError')} title={this.translate('::App.VideoRoomSignal.DisconnectError')}
type="warning" type="warning"
/>, />,
{ {

View file

@ -58,7 +58,7 @@ export class WebRTCService {
} catch { } catch {
toast.push( toast.push(
<Notification <Notification
title={this.translate('::App.Videoroom.Rtc.MediaAccessFailed')} title={this.translate('::App.VideoRoomRtc.MediaAccessFailed')}
type="danger" type="danger"
/>, />,
{ placement: 'bottom-end' }, { placement: 'bottom-end' },
@ -101,7 +101,7 @@ export class WebRTCService {
if (retries < this.maxRetries) { if (retries < this.maxRetries) {
toast.push( toast.push(
<Notification <Notification
title={this.translate('::App.Videoroom.Rtc.RetryingConnection', { title={this.translate('::App.VideoRoomRtc.RetryingConnection', {
current: retries + 1, current: retries + 1,
total: this.maxRetries, total: this.maxRetries,
})} })}
@ -114,7 +114,7 @@ export class WebRTCService {
} else { } else {
toast.push( toast.push(
<Notification <Notification
title={this.translate('::App.Videoroom.Rtc.ConnectionFailed', { title={this.translate('::App.VideoRoomRtc.ConnectionFailed', {
total: this.maxRetries, total: this.maxRetries,
})} })}
type="danger" type="danger"
@ -133,7 +133,7 @@ export class WebRTCService {
} catch { } catch {
toast.push( toast.push(
<Notification <Notification
title={this.translate('::App.Videoroom.Rtc.IceCandidateFailed', { userId })} title={this.translate('::App.VideoRoomRtc.IceCandidateFailed', { userId })}
type="warning" type="warning"
/>, />,
{ placement: 'bottom-end' }, { placement: 'bottom-end' },
@ -165,7 +165,7 @@ export class WebRTCService {
return offer return offer
} catch { } catch {
toast.push( toast.push(
<Notification title={this.translate('::App.Videoroom.Rtc.OfferFailed')} type="danger" />, <Notification title={this.translate('::App.VideoRoomRtc.OfferFailed')} type="danger" />,
{ {
placement: 'bottom-end', placement: 'bottom-end',
}, },
@ -188,7 +188,7 @@ export class WebRTCService {
return answer return answer
} catch { } catch {
toast.push( toast.push(
<Notification title={this.translate('::App.Videoroom.Rtc.AnswerFailed')} type="danger" />, <Notification title={this.translate('::App.VideoRoomRtc.AnswerFailed')} type="danger" />,
{ {
placement: 'bottom-end', placement: 'bottom-end',
}, },
@ -219,7 +219,7 @@ export class WebRTCService {
} catch { } catch {
toast.push( toast.push(
<Notification <Notification
title={this.translate('::App.Videoroom.Rtc.IceCandidateFailed', { userId })} title={this.translate('::App.VideoRoomRtc.IceCandidateFailed', { userId })}
type="warning" type="warning"
/>, />,
{ placement: 'bottom-end' }, { placement: 'bottom-end' },
@ -260,7 +260,7 @@ export class WebRTCService {
} }
} catch { } catch {
toast.push( toast.push(
<Notification title={this.translate('::App.Videoroom.Rtc.CameraFailed')} type="danger" />, <Notification title={this.translate('::App.VideoRoomRtc.CameraFailed')} type="danger" />,
{ {
placement: 'bottom-end', placement: 'bottom-end',
}, },
@ -293,7 +293,7 @@ export class WebRTCService {
} catch { } catch {
toast.push( toast.push(
<Notification <Notification
title={this.translate('::App.Videoroom.Rtc.MicrophoneFailed')} title={this.translate('::App.VideoRoomRtc.MicrophoneFailed')}
type="danger" type="danger"
/>, />,
{ {
@ -318,7 +318,7 @@ export class WebRTCService {
} else { } else {
toast.push( toast.push(
<Notification <Notification
title={this.translate('::App.Videoroom.Rtc.ReconnectFailed')} title={this.translate('::App.VideoRoomRtc.ReconnectFailed')}
type="warning" type="warning"
/>, />,
{ {
@ -329,7 +329,7 @@ export class WebRTCService {
} catch { } catch {
toast.push( toast.push(
<Notification <Notification
title={this.translate('::App.Videoroom.Rtc.IceRestartFailed')} title={this.translate('::App.VideoRoomRtc.IceRestartFailed')}
type="danger" type="danger"
/>, />,
{ {

View file

@ -1,11 +1,11 @@
import { FiBell, FiCheck, FiGitBranch, FiPlay, FiSlash } from 'react-icons/fi' import { FiBell, FiCheck, FiGitBranch, FiPlay, FiSlash } from 'react-icons/fi'
export const kindOptions = [ export const kindOptions = [
{ value: 'Start', label: 'ListForms.Workflow.Kind.Start' }, { value: 'Start', label: 'App.VideoRoom.Start' },
{ value: 'Compare', label: 'ListForms.Workflow.Kind.Compare' }, { value: 'Compare', label: 'App.ScriptBuilder.Comparison' },
{ value: 'Approval', label: 'ListForms.Workflow.Kind.Approval' }, { value: 'Approval', label: 'App.WorkflowKind.Approval' },
{ value: 'Inform', label: 'ListForms.Workflow.Kind.Inform' }, { value: 'Inform', label: 'App.WorkflowKind.Inform' },
{ value: 'End', label: 'ListForms.Workflow.Kind.End' }, { value: 'End', label: 'App.WorkflowKind.End' },
] ]
export const operatorOptions = ['>', '>=', '<', '<=', '=', '!='].map((value) => ({ export const operatorOptions = ['>', '>=', '<', '<=', '=', '!='].map((value) => ({

View file

@ -244,12 +244,12 @@ function sideToward(from: WorkflowCriteriaDto, to: WorkflowCriteriaDto) {
/** Çıkış etiketleri lokalizasyon anahtarı olarak taşınır; ekranda `translate` ile çözülür. */ /** Çıkış etiketleri lokalizasyon anahtarı olarak taşınır; ekranda `translate` ile çözülür. */
export const OUTCOME_KEYS = { export const OUTCOME_KEYS = {
nextOnStart: 'ListForms.Workflow.Outcome.Next', nextOnStart: 'App.Platform.Next2',
nextOnTrue: 'ListForms.Workflow.Outcome.True', nextOnTrue: 'App.WorkflowOutcome.True',
nextOnFalse: 'ListForms.Workflow.Outcome.False', nextOnFalse: 'App.WorkflowOutcome.False',
nextOnApprove: 'ListForms.Workflow.Outcome.Approve', nextOnApprove: 'App.ListFormWorkflow.Approve',
nextOnReject: 'ListForms.Workflow.Outcome.Reject', nextOnReject: 'App.ListFormWorkflow.Reject',
compare: 'ListForms.Workflow.Outcome.CompareState', compare: 'App.WorkflowOutcome.CompareState',
} as const } as const
export function getNodeOutcomes(item: WorkflowCriteriaDto): WorkflowOutcome[] { export function getNodeOutcomes(item: WorkflowCriteriaDto): WorkflowOutcome[] {
@ -476,12 +476,12 @@ export function normalizeCriteria(item: WorkflowCriteriaForm): SaveCriteriaInput
export function defaultTitle(kind: string) { export function defaultTitle(kind: string) {
return ( return (
{ {
Start: 'ListForms.Workflow.Kind.Start', Start: 'App.VideoRoom.Start',
Compare: 'ListForms.Workflow.Kind.Compare', Compare: 'App.ScriptBuilder.Comparison',
Approval: 'ListForms.Workflow.Kind.Approval', Approval: 'App.WorkflowKind.Approval',
Inform: 'ListForms.Workflow.Kind.Inform', Inform: 'App.WorkflowKind.Inform',
End: 'ListForms.Workflow.Kind.End', End: 'App.WorkflowKind.End',
}[kind] ?? 'ListForms.Workflow.Kind.Step' }[kind] ?? 'App.WorkflowKind.Step'
) )
} }
@ -581,7 +581,7 @@ export function compareOutcomeRuleText(
`${condition.compareColumn} ${condition.compareOperator} ${formatCompactValue(condition.compareValue)}`, `${condition.compareColumn} ${condition.compareOperator} ${formatCompactValue(condition.compareValue)}`,
) )
.join(' ve ') .join(' ve ')
: 'ListForms.Workflow.NoRule' : 'App.ListFormWorkflow.NoRule'
} }
export function formatCompactValue(value: number | string | null | undefined) { export function formatCompactValue(value: number | string | null | undefined) {

View file

@ -21,11 +21,11 @@ const AccessDenied = () => {
<DoubleSidedImage <DoubleSidedImage
src="/img/others/img-2.png" src="/img/others/img-2.png"
darkModeSrc="/img/others/img-2-dark.png" darkModeSrc="/img/others/img-2-dark.png"
alt={translate('::AccessDenied')} alt={translate('::App.Platform.AccessDenied')}
/> />
<div className="mt-6 text-center"> <div className="mt-6 text-center">
<h3 className="mb-2">{translate('::AccessDenied')}</h3> <h3 className="mb-2">{translate('::App.Platform.AccessDenied')}</h3>
<p className="text-base">{translate('::AccessDeniedMessage')}</p> <p className="text-base">{translate('::App.Platform.AccessDeniedMessage')}</p>
</div> </div>
<Button <Button
size="sm" size="sm"

View file

@ -20,7 +20,7 @@ const NotFoundPage = () => {
</div> </div>
</div> </div>
<p className="flex items-center justify-center text-xl mb-6 text-gray-600"> <p className="flex items-center justify-center text-xl mb-6 text-gray-600">
{translate('::Public.notFound.message')} {translate('::App.Platform.NotFoundMessage')}
</p> </p>
<div className="flex items-center justify-center font-inter"> <div className="flex items-center justify-center font-inter">
<Button <Button
@ -30,7 +30,7 @@ const NotFoundPage = () => {
} }
className="bg-blue-500 rounded-xl shadow hover:bg-blue-600 transition" className="bg-blue-500 rounded-xl shadow hover:bg-blue-600 transition"
> >
{translate('::Public.notFound.button')} {translate('::App.Platform.Button')}
</Button> </Button>
</div> </div>
</div> </div>

View file

@ -758,12 +758,12 @@ const FileManager = () => {
const sortOptions = useMemo( const sortOptions = useMemo(
() => [ () => [
{ value: 'name-asc', label: translate('::FileManager.SortByNameAsc') }, { value: 'name-asc', label: translate('::App.FileManager.SortByNameAsc') },
{ value: 'name-desc', label: translate('::FileManager.SortByNameDesc') }, { value: 'name-desc', label: translate('::App.FileManager.SortByNameDesc') },
{ value: 'size-asc', label: translate('::FileManager.SortBySizeAsc') }, { value: 'size-asc', label: translate('::App.FileManager.SortBySizeAsc') },
{ value: 'size-desc', label: translate('::FileManager.SortBySizeDesc') }, { value: 'size-desc', label: translate('::App.FileManager.SortBySizeDesc') },
{ value: 'modified-desc', label: translate('::FileManager.SortByModifiedDesc') }, { value: 'modified-desc', label: translate('::App.FileManager.SortByModifiedDesc') },
{ value: 'modified-asc', label: translate('::FileManager.SortByModifiedAsc') }, { value: 'modified-asc', label: translate('::App.FileManager.SortByModifiedAsc') },
], ],
[translate], [translate],
) )
@ -822,8 +822,8 @@ const FileManager = () => {
className="flex-shrink-0" className="flex-shrink-0"
onClick={() => setUploadModalOpen(true)} onClick={() => setUploadModalOpen(true)}
> >
<span className="hidden sm:inline">{translate('::FileManager.UploadFiles')}</span> <span className="hidden sm:inline">{translate('::App.FileManager.UploadFiles')}</span>
<span className="sm:hidden">{translate('::FileManager.Upload')}</span> <span className="sm:hidden">{translate('::App.Platform.Upload')}</span>
</Button> </Button>
<Button <Button
variant="default" variant="default"
@ -832,8 +832,8 @@ const FileManager = () => {
className="flex-shrink-0" className="flex-shrink-0"
onClick={() => setCreateFolderModalOpen(true)} onClick={() => setCreateFolderModalOpen(true)}
> >
<span className="hidden sm:inline">{translate('::FileManager.CreateFolder')}</span> <span className="hidden sm:inline">{translate('::App.FileManager.CreateFolder')}</span>
<span className="sm:hidden">{translate('::FileManager.Create')}</span> <span className="sm:hidden">{translate('::App.Platform.Create')}</span>
</Button> </Button>
{/* Clipboard Operations */} {/* Clipboard Operations */}
@ -843,7 +843,7 @@ const FileManager = () => {
disabled={selectedItems.length === 0} disabled={selectedItems.length === 0}
size="sm" size="sm"
className="text-gray-600 hover:text-blue-600 disabled:opacity-50 flex-shrink-0" className="text-gray-600 hover:text-blue-600 disabled:opacity-50 flex-shrink-0"
title={translate('::FileManager.CopySelectedItems')} title={translate('::App.FileManager.CopySelectedItems')}
onClick={copySelectedItems} onClick={copySelectedItems}
/> />
<Button <Button
@ -852,7 +852,7 @@ const FileManager = () => {
disabled={selectedItems.length === 0} disabled={selectedItems.length === 0}
size="sm" size="sm"
className="text-gray-600 hover:text-orange-600 disabled:opacity-50 flex-shrink-0" className="text-gray-600 hover:text-orange-600 disabled:opacity-50 flex-shrink-0"
title={translate('::FileManager.CutSelectedItems')} title={translate('::App.FileManager.CutSelectedItems')}
onClick={cutSelectedItems} onClick={cutSelectedItems}
/> />
<Button <Button
@ -861,7 +861,7 @@ const FileManager = () => {
disabled={!hasClipboardData} disabled={!hasClipboardData}
size="sm" size="sm"
className="text-gray-600 hover:text-green-600 disabled:opacity-50 flex-shrink-0" className="text-gray-600 hover:text-green-600 disabled:opacity-50 flex-shrink-0"
title={translate('::FileManager.PasteSelectedItems')} title={translate('::App.FileManager.PasteSelectedItems')}
onClick={pasteItems} onClick={pasteItems}
/> />
<Button <Button
@ -870,7 +870,7 @@ const FileManager = () => {
size="sm" size="sm"
disabled={!singleSelectedItem} disabled={!singleSelectedItem}
className="text-gray-600 hover:text-blue-600 flex-shrink-0" className="text-gray-600 hover:text-blue-600 flex-shrink-0"
title={translate('::FileManager.RenameSelectedItem')} title={translate('::App.FileManager.RenameSelectedItem')}
onClick={handleRenameSelected} onClick={handleRenameSelected}
/> />
@ -880,7 +880,7 @@ const FileManager = () => {
size="sm" size="sm"
disabled={singleSelectedItem?.type !== 'file'} disabled={singleSelectedItem?.type !== 'file'}
className="text-gray-600 hover:text-green-600 flex-shrink-0" className="text-gray-600 hover:text-green-600 flex-shrink-0"
title={translate('::FileManager.DownloadSelectedFile')} title={translate('::App.FileManager.DownloadSelectedFile')}
onClick={handleDownloadSelected} onClick={handleDownloadSelected}
/> />
@ -890,10 +890,10 @@ const FileManager = () => {
size="sm" size="sm"
disabled={selectedItems.length === 0} disabled={selectedItems.length === 0}
className="text-gray-600 hover:text-red-600 flex-shrink-0" className="text-gray-600 hover:text-red-600 flex-shrink-0"
title={translate('::FileManager.DeleteSelectedItems')} title={translate('::App.FileManager.DeleteSelectedItems')}
onClick={deleteSelectedItems} onClick={deleteSelectedItems}
> >
<span>{translate('::Delete')}</span>{' '} <span>{translate('::App.Platform.Delete')}</span>{' '}
{selectedItems.length > 0 && `(${selectedItems.length})`} {selectedItems.length > 0 && `(${selectedItems.length})`}
</Button> </Button>
@ -911,13 +911,13 @@ const FileManager = () => {
> >
<span className="hidden lg:inline"> <span className="hidden lg:inline">
{allSelected {allSelected
? translate('::FileManager.DeselectAll') ? translate('::App.FileManager.DeselectAll')
: translate('::FileManager.SelectAll')} : translate('::App.Platform.SelectAll')}
</span> </span>
<span className="lg:hidden"> <span className="lg:hidden">
{allSelected {allSelected
? translate('::FileManager.Deselect') ? translate('::App.FileManager.Deselect')
: translate('::FileManager.Select')} : translate('::App.FileManager.Select')}
</span> </span>
</Button> </Button>
)} )}
@ -928,7 +928,7 @@ const FileManager = () => {
<div className="flex items-center w-full sm:w-auto"> <div className="flex items-center w-full sm:w-auto">
<Input <Input
size="sm" size="sm"
placeholder={translate('::FileManager.SearchFiles')} placeholder={translate('::App.Platform.Search')}
value={filters.searchTerm} value={filters.searchTerm}
prefix={<FaSearch className="text-gray-400" />} prefix={<FaSearch className="text-gray-400" />}
className="w-full sm:w-36 md:w-48" className="w-full sm:w-36 md:w-48"

View file

@ -105,27 +105,27 @@ const formatDate = (date?: string | Date): string => {
} }
const getFileTypeLabel = (item: FileItemType, translate: (key: string) => string): string => { const getFileTypeLabel = (item: FileItemType, translate: (key: string) => string): string => {
if (item.type === 'folder') return translate('::FileManager.Folder') if (item.type === 'folder') return translate('::App.FileManager.Folder')
const extension = item.extension?.toLowerCase() const extension = item.extension?.toLowerCase()
const mimeType = item.mimeType?.toLowerCase() const mimeType = item.mimeType?.toLowerCase()
if (mimeType?.startsWith('image/')) return translate('::FileManager.Picture') // 'Resim' if (mimeType?.startsWith('image/')) return translate('::App.FileManager.Picture') // 'Resim'
if (mimeType?.startsWith('video/')) return translate('::FileManager.Video') // 'Video' if (mimeType?.startsWith('video/')) return translate('::App.Platform.Video') // 'Video'
if (mimeType?.startsWith('audio/')) return translate('::FileManager.Sound') // 'Ses' if (mimeType?.startsWith('audio/')) return translate('::App.FileManager.Sound') // 'Ses'
if (mimeType?.includes('pdf')) return translate('::FileManager.PDF') // 'PDF' if (mimeType?.includes('pdf')) return translate('::App.FileManager.PDF') // 'PDF'
if (mimeType?.includes('word')) return translate('::FileManager.Word') // 'Word' if (mimeType?.includes('word')) return translate('::App.FileManager.Word') // 'Word'
if (mimeType?.includes('excel') || mimeType?.includes('spreadsheet')) if (mimeType?.includes('excel') || mimeType?.includes('spreadsheet'))
return translate('::FileManager.Excel') // 'Excel' return translate('::App.FileManager.Excel') // 'Excel'
if (mimeType?.includes('powerpoint') || mimeType?.includes('presentation')) if (mimeType?.includes('powerpoint') || mimeType?.includes('presentation'))
return translate('::FileManager.PowerPoint') // 'PowerPoint' return translate('::App.FileManager.PowerPoint') // 'PowerPoint'
if (['zip', 'rar', '7z', 'tar', 'gz'].includes(extension || '')) if (['zip', 'rar', '7z', 'tar', 'gz'].includes(extension || ''))
return translate('::FileManager.Archive') // 'Arşiv' return translate('::App.FileManager.Archive') // 'Arşiv'
if (['txt', 'md'].includes(extension || '')) return translate('::FileManager.Text') // 'Metin' if (['txt', 'md'].includes(extension || '')) return translate('::App.Listform.ListformField.Text') // 'Metin'
if (['xml', 'css', 'js', 'ts', 'html'].includes(extension || '')) if (['xml', 'css', 'js', 'ts', 'html'].includes(extension || ''))
return translate('::FileManager.Code') // 'Kod' return translate('::App.Platform.Code') // 'Kod'
return extension?.toUpperCase() || translate('::FileManager.File') return extension?.toUpperCase() || translate('::App.FileManager.File')
} }
// Defined at module level: nesting it inside FileItem would remount the <img> // Defined at module level: nesting it inside FileItem would remount the <img>
@ -259,7 +259,7 @@ const FileItem = forwardRef<HTMLDivElement, FileItemProps>((props, ref) => {
() => { () => {
toast.push( toast.push(
<Notification type="success" title={translate('::App.Platform.Success')}> <Notification type="success" title={translate('::App.Platform.Success')}>
{translate('::FileManager.UrlCopied')} {translate('::App.FileManager.UrlCopied')}
</Notification>, </Notification>,
{ placement: 'bottom-end' }, { placement: 'bottom-end' },
) )
@ -267,7 +267,7 @@ const FileItem = forwardRef<HTMLDivElement, FileItemProps>((props, ref) => {
() => { () => {
toast.push( toast.push(
<Notification type="danger" title={translate('::App.Platform.Error')}> <Notification type="danger" title={translate('::App.Platform.Error')}>
{translate('::FileManager.UrlCopyFailed')} {translate('::App.FileManager.UrlCopyFailed')}
</Notification>, </Notification>,
{ placement: 'bottom-end' }, { placement: 'bottom-end' },
) )
@ -315,7 +315,7 @@ const FileItem = forwardRef<HTMLDivElement, FileItemProps>((props, ref) => {
? [ ? [
{ {
key: 'delete', key: 'delete',
label: translate('::Delete'), label: translate('::App.Platform.Delete'),
icon: 'HiTrash', icon: 'HiTrash',
dangerous: true, dangerous: true,
onClick: () => onDelete(item), onClick: () => onDelete(item),
@ -446,7 +446,7 @@ const FileItem = forwardRef<HTMLDivElement, FileItemProps>((props, ref) => {
</span> </span>
) : item.type === 'folder' && typeof item.childCount === 'number' ? ( ) : item.type === 'folder' && typeof item.childCount === 'number' ? (
<span className="text-sm text-gray-500 dark:text-gray-400"> <span className="text-sm text-gray-500 dark:text-gray-400">
{translate('::FileManager.ItemCount', { count: item.childCount })} {translate('::App.FileManager.ItemCount', { count: item.childCount })}
</span> </span>
) : ( ) : (
<span className="text-sm text-gray-500 dark:text-gray-400">-</span> <span className="text-sm text-gray-500 dark:text-gray-400">-</span>
@ -545,7 +545,7 @@ const FileItem = forwardRef<HTMLDivElement, FileItemProps>((props, ref) => {
<p className="text-xs text-gray-500 dark:text-gray-400"> <p className="text-xs text-gray-500 dark:text-gray-400">
{typeof item.childCount === 'number' {typeof item.childCount === 'number'
? `${item.childCount} ${translate('::App.Listform.ListformField.Item')}` ? `${item.childCount} ${translate('::App.Listform.ListformField.Item')}`
: translate('::FileManager.Counting')} : translate('::App.FileManager.Counting')}
</p> </p>
)} )}
</div> </div>

View file

@ -48,7 +48,7 @@ export const CreateFolderModal = forwardRef<HTMLDivElement, CreateFolderModalPro
<div ref={ref}> <div ref={ref}>
<form className="py-6" onSubmit={handleSubmit}> <form className="py-6" onSubmit={handleSubmit}>
<FormItem <FormItem
label={translate('::FileManager.FolderName')} label={translate('::App.FileManager.FolderName')}
invalid={!!error} invalid={!!error}
errorMessage={error} errorMessage={error}
> >
@ -63,7 +63,7 @@ export const CreateFolderModal = forwardRef<HTMLDivElement, CreateFolderModalPro
<div className="flex justify-end space-x-2 pt-4 border-t"> <div className="flex justify-end space-x-2 pt-4 border-t">
<Button size="sm" variant="default" disabled={loading} onClick={handleClose}> <Button size="sm" variant="default" disabled={loading} onClick={handleClose}>
{translate('::Cancel')} {translate('::App.Platform.Cancel')}
</Button> </Button>
<Button <Button
size="sm" size="sm"
@ -72,7 +72,7 @@ export const CreateFolderModal = forwardRef<HTMLDivElement, CreateFolderModalPro
disabled={!folderName.trim()} disabled={!folderName.trim()}
onClick={handleSubmit} onClick={handleSubmit}
> >
{translate('::FileManager.CreateFolder')} {translate('::App.FileManager.CreateFolder')}
</Button> </Button>
</div> </div>
</div> </div>
@ -140,20 +140,20 @@ export const RenameItemModal = forwardRef<HTMLDivElement, RenameItemModalProps>(
<div ref={ref} className="max-w-md"> <div ref={ref} className="max-w-md">
<div className="flex items-center justify-between pb-4 border-b"> <div className="flex items-center justify-between pb-4 border-b">
<h3 className="text-lg font-semibold"> <h3 className="text-lg font-semibold">
{translate(`::FileManager.${item.type === 'folder' ? 'RenameFolder' : 'RenameFile'}`)} {translate(`::App.FileManager.${item.type === 'folder' ? 'RenameFolder' : 'RenameFile'}`)}
</h3> </h3>
</div> </div>
<form className="py-6" onSubmit={handleSubmit}> <form className="py-6" onSubmit={handleSubmit}>
<FormItem <FormItem
label={translate(`::FileManager.${item.type === 'folder' ? 'FolderName' : 'FileName'}`)} label={translate(`::App.FileManager.${item.type === 'folder' ? 'FolderName' : 'FileName'}`)}
invalid={!!error} invalid={!!error}
errorMessage={error} errorMessage={error}
> >
<Input <Input
autoFocus autoFocus
value={newName} value={newName}
placeholder={`Enter ${translate(`::FileManager.${item.type === 'folder' ? 'FolderName' : 'FileName'}`)}`} placeholder={`Enter ${translate(`::App.FileManager.${item.type === 'folder' ? 'FolderName' : 'FileName'}`)}`}
onChange={(e) => setNewName(e.target.value)} onChange={(e) => setNewName(e.target.value)}
/> />
</FormItem> </FormItem>
@ -161,7 +161,7 @@ export const RenameItemModal = forwardRef<HTMLDivElement, RenameItemModalProps>(
<div className="flex justify-end space-x-2 pt-4 border-t"> <div className="flex justify-end space-x-2 pt-4 border-t">
<Button size="sm" variant="default" disabled={loading} onClick={handleClose}> <Button size="sm" variant="default" disabled={loading} onClick={handleClose}>
{translate('::Cancel')} {translate('::App.Platform.Cancel')}
</Button> </Button>
<Button <Button
size="sm" size="sm"
@ -211,13 +211,13 @@ export const DeleteConfirmModal = forwardRef<HTMLDivElement, DeleteConfirmModalP
<div ref={ref}> <div ref={ref}>
<div className="flex items-center justify-between pb-4 border-b"> <div className="flex items-center justify-between pb-4 border-b">
<h3 className="text-lg font-semibold text-red-600"> <h3 className="text-lg font-semibold text-red-600">
{translate('::FileManager.DeleteConfirmationTitle')} {translate('::App.FileManager.DeleteConfirmationTitle')}
</h3> </h3>
</div> </div>
<div className="py-6"> <div className="py-6">
<p className="text-gray-900 dark:text-gray-100 mb-4"> <p className="text-gray-900 dark:text-gray-100 mb-4">
{translate('::FileManager.DeleteConfirmationMessage')} {translate('::App.FileManager.DeleteConfirmationMessage')}
</p> </p>
<div className="bg-gray-50 dark:bg-gray-700 rounded-lg p-2"> <div className="bg-gray-50 dark:bg-gray-700 rounded-lg p-2">
@ -244,10 +244,10 @@ export const DeleteConfirmModal = forwardRef<HTMLDivElement, DeleteConfirmModalP
<div className="flex justify-end space-x-2 pt-4 border-t"> <div className="flex justify-end space-x-2 pt-4 border-t">
<Button size="sm" variant="default" disabled={loading} onClick={onClose}> <Button size="sm" variant="default" disabled={loading} onClick={onClose}>
{translate('::Cancel')} {translate('::App.Platform.Cancel')}
</Button> </Button>
<Button size="sm" variant="solid" loading={loading} onClick={handleDelete}> <Button size="sm" variant="solid" loading={loading} onClick={handleDelete}>
{translate('::Delete')} {translate('::App.Platform.Delete')}
</Button> </Button>
</div> </div>
</div> </div>

View file

@ -766,7 +766,7 @@ function OrgChartTree({
return ( return (
<div className="flex flex-col items-center justify-center py-24 text-slate-400"> <div className="flex flex-col items-center justify-center py-24 text-slate-400">
<FaSitemap className="w-12 h-12 mb-4 opacity-30" /> <FaSitemap className="w-12 h-12 mb-4 opacity-30" />
<p className="text-sm">{translate('::App.NoDataFound')}</p> <p className="text-sm">{translate('::App.Platform.NoDataFound')}</p>
</div> </div>
) )
} }
@ -901,7 +901,7 @@ const OrgChart = () => {
}`} }`}
onClick={() => setMode('department')} onClick={() => setMode('department')}
> >
<span className="hidden sm:inline">{translate('::App.Hr.Department')}</span> <span className="hidden sm:inline">{translate('::App.Definitions.Department')}</span>
</Button> </Button>
<Button <Button
variant="plain" variant="plain"
@ -928,7 +928,7 @@ const OrgChart = () => {
onChange={(e) => setShowUsers(e.target.checked)} onChange={(e) => setShowUsers(e.target.checked)}
/> />
<span className="hidden sm:inline"> <span className="hidden sm:inline">
{translate('::App.Definitions.OrgChart.ShowUsers')} {translate('::App.DefinitionsOrgChart.ShowUsers')}
</span> </span>
</label> </label>
</div> </div>
@ -969,7 +969,7 @@ const OrgChart = () => {
shape="none" shape="none"
icon={<FaFileImage className="h-3.5 w-3.5 flex-shrink-0" />} icon={<FaFileImage className="h-3.5 w-3.5 flex-shrink-0" />}
className="!inline-flex !h-auto !items-center !justify-center gap-1.5 !rounded-lg bg-slate-100 !p-1.5 text-xs font-medium text-slate-600 transition-colors hover:!bg-slate-200 disabled:opacity-50 dark:bg-gray-800 dark:text-gray-300 dark:hover:!bg-gray-700 sm:!p-2 sm:text-sm" className="!inline-flex !h-auto !items-center !justify-center gap-1.5 !rounded-lg bg-slate-100 !p-1.5 text-xs font-medium text-slate-600 transition-colors hover:!bg-slate-200 disabled:opacity-50 dark:bg-gray-800 dark:text-gray-300 dark:hover:!bg-gray-700 sm:!p-2 sm:text-sm"
title={translate('::App.Definitions.OrgChart.ExportJpg')} title={translate('::App.DefinitionsOrgChart.ExportJpg')}
onClick={handleExportJpg} onClick={handleExportJpg}
> >
<span className="hidden sm:inline"> <span className="hidden sm:inline">

View file

@ -80,7 +80,7 @@ function ChartTabAnimation(props: FormEditProps) {
</FormItem> </FormItem>
<div className="mt-4"> <div className="mt-4">
<Button block size="sm" variant="solid" loading={isSubmitting} type="submit"> <Button block size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::Saving') : translate('::Save')} {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
</Button> </Button>
</div> </div>
</FormContainer> </FormContainer>

View file

@ -664,7 +664,7 @@ function ChartTabAnnotations(props: FormEditProps) {
</Tabs> </Tabs>
<div className="mt-4"> <div className="mt-4">
<Button block size="sm" variant="solid" loading={isSubmitting} type="submit"> <Button block size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::Saving') : translate('::Save')} {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
</Button> </Button>
</div> </div>
</FormContainer> </FormContainer>

View file

@ -544,7 +544,7 @@ function ChartTabAxis(props: FormEditProps) {
</Tabs> </Tabs>
<div className="mt-4"> <div className="mt-4">
<Button block size="sm" variant="solid" loading={isSubmitting} type="submit"> <Button block size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::Saving') : translate('::Save')} {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
</Button> </Button>
</div> </div>
</FormContainer> </FormContainer>

View file

@ -717,7 +717,7 @@ function ChartTabCommonSettings(props: FormEditProps) {
</Tabs> </Tabs>
<div className="mt-4"> <div className="mt-4">
<Button block size="sm" variant="solid" loading={isSubmitting} type="submit"> <Button block size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::Saving') : translate('::Save')} {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
</Button> </Button>
</div> </div>
</FormContainer> </FormContainer>

View file

@ -337,7 +337,7 @@ function ChartTabCrosshair(props: FormEditProps) {
</div> </div>
<div className="mt-4"> <div className="mt-4">
<Button block size="sm" variant="solid" loading={isSubmitting} type="submit"> <Button block size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::Saving') : translate('::Save')} {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
</Button> </Button>
</div> </div>
</FormContainer> </FormContainer>

View file

@ -66,7 +66,7 @@ function ChartTabExport(props: FormEditProps) {
<div className="mt-4"> <div className="mt-4">
<Button block size="sm" variant="solid" loading={isSubmitting} type="submit"> <Button block size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::Saving') : translate('::Save')} {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
</Button> </Button>
</div> </div>
</FormContainer> </FormContainer>

View file

@ -213,7 +213,7 @@ function ChartTabLegend(props: FormEditProps) {
</div> </div>
<div className="mt-4"> <div className="mt-4">
<Button block size="sm" variant="solid" loading={isSubmitting} type="submit"> <Button block size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::Saving') : translate('::Save')} {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
</Button> </Button>
</div> </div>
</FormContainer> </FormContainer>

View file

@ -157,7 +157,7 @@ function ChartTabPanes(props: FormEditProps) {
/> />
<div className="mt-4"> <div className="mt-4">
<Button block size="sm" variant="solid" loading={isSubmitting} type="submit"> <Button block size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::Saving') : translate('::Save')} {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
</Button> </Button>
</div> </div>
</FormContainer> </FormContainer>

View file

@ -528,7 +528,7 @@ function ChartTabSeries(props: FormEditProps & { listFormCode: string }) {
</Tabs> </Tabs>
<div className="mt-4"> <div className="mt-4">
<Button block size="sm" variant="solid" loading={isSubmitting} type="submit"> <Button block size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::Saving') : translate('::Save')} {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
</Button> </Button>
</div> </div>
</FormContainer> </FormContainer>

View file

@ -177,7 +177,7 @@ const ChartTabZoomAndPan = (props: FormEditProps) => {
</div> </div>
<div className="mt-4"> <div className="mt-4">
<Button block size="sm" variant="solid" loading={isSubmitting} type="submit"> <Button block size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::Saving') : translate('::Save')} {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
</Button> </Button>
</div> </div>
</FormContainer> </FormContainer>

View file

@ -74,10 +74,10 @@ function FormCustomization({
}} }}
/> />
</Th> </Th>
<Th>{translate('::ListForms.ListFormEdit.CustomizationType')}</Th> <Th>{translate('::App.ListFormEdit.CustomizationType')}</Th>
<Th>{translate('::ListForms.ListFormEdit.CustomizationName')}</Th> <Th>{translate('::App.ListFormEdit.CustomizationName')}</Th>
<Th>{translate('::ListForms.ListFormEdit.CustomizationRole')}</Th> <Th>{translate('::App.ListFormEdit.CustomizationRole')}</Th>
<Th>{translate('::ListForms.ListFormEdit.CustomizationUser')}</Th> <Th>{translate('::App.ListFormEdit.CustomizationUser')}</Th>
</Tr> </Tr>
</THead> </THead>
<TBody> <TBody>
@ -143,8 +143,8 @@ function FormCustomization({
validate={(values) => { validate={(values) => {
if (values.userId && values.roleId) { if (values.userId && values.roleId) {
return { return {
userId: translate('::ListForms.RoleOrUserOnly'), userId: translate('::App.ListForm.RoleOrUserOnly'),
roleId: translate('::ListForms.RoleOrUserOnly'), roleId: translate('::App.ListForm.RoleOrUserOnly'),
} }
} }
@ -166,8 +166,8 @@ function FormCustomization({
toast.push( toast.push(
<Notification type="success"> <Notification type="success">
{input.id {input.id
? translate('::ListForms.KayitGuncellendi') ? translate('::App.ListForm.KayitGuncellendi')
: translate('::ListForms.KayitEklendi')} : translate('::App.ListForm.KayitEklendi')}
</Notification>, </Notification>,
{ {
placement: 'bottom-end', placement: 'bottom-end',
@ -192,7 +192,7 @@ function FormCustomization({
<Form> <Form>
<FormContainer size="sm"> <FormContainer size="sm">
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.CustomizationType')} label={translate('::App.ListFormEdit.CustomizationType')}
invalid={errors.customizationType && touched.customizationType} invalid={errors.customizationType && touched.customizationType}
errorMessage={errors.customizationType} errorMessage={errors.customizationType}
> >
@ -200,7 +200,7 @@ function FormCustomization({
type="text" type="text"
autoComplete="off" autoComplete="off"
name="customizationType" name="customizationType"
placeholder={translate('::ListForms.ListFormEdit.CustomizationType')} placeholder={translate('::App.ListFormEdit.CustomizationType')}
> >
{({ field, form }: FieldProps<ListFormCustomizationTypeEnum>) => ( {({ field, form }: FieldProps<ListFormCustomizationTypeEnum>) => (
<Select <Select
@ -218,7 +218,7 @@ function FormCustomization({
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.CustomizationName')} label={translate('::App.ListFormEdit.CustomizationName')}
invalid={errors.filterName && touched.filterName} invalid={errors.filterName && touched.filterName}
errorMessage={errors.filterName} errorMessage={errors.filterName}
> >
@ -226,13 +226,13 @@ function FormCustomization({
type="text" type="text"
autoComplete="off" autoComplete="off"
name="filterName" name="filterName"
placeholder={translate('::ListForms.ListFormEdit.CustomizationName')} placeholder={translate('::App.ListFormEdit.CustomizationName')}
component={Input} component={Input}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.CustomizationRole')} label={translate('::App.ListFormEdit.CustomizationRole')}
invalid={errors.roleId && touched.roleId} invalid={errors.roleId && touched.roleId}
errorMessage={errors.roleId} errorMessage={errors.roleId}
> >
@ -240,7 +240,7 @@ function FormCustomization({
type="text" type="text"
autoComplete="off" autoComplete="off"
name="roleId" name="roleId"
placeholder={translate('::ListForms.ListFormEdit.CustomizationRole')} placeholder={translate('::App.ListFormEdit.CustomizationRole')}
> >
{({ field, form }: FieldProps<IdentityRoleDto>) => ( {({ field, form }: FieldProps<IdentityRoleDto>) => (
<Select <Select
@ -256,7 +256,7 @@ function FormCustomization({
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.CustomizationUser')} label={translate('::App.ListFormEdit.CustomizationUser')}
invalid={errors.userId && touched.userId} invalid={errors.userId && touched.userId}
errorMessage={errors.userId} errorMessage={errors.userId}
> >
@ -264,7 +264,7 @@ function FormCustomization({
type="text" type="text"
autoComplete="off" autoComplete="off"
name="userId" name="userId"
placeholder={translate('::ListForms.ListFormEdit.CustomizationUser')} placeholder={translate('::App.ListFormEdit.CustomizationUser')}
> >
{({ field, form }: FieldProps<IdentityUserDto>) => ( {({ field, form }: FieldProps<IdentityUserDto>) => (
<Select <Select
@ -280,7 +280,7 @@ function FormCustomization({
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.CustomizationData')} label={translate('::App.ListFormEdit.CustomizationData')}
invalid={errors.customizationData && touched.customizationData} invalid={errors.customizationData && touched.customizationData}
errorMessage={errors.customizationData} errorMessage={errors.customizationData}
> >
@ -295,7 +295,7 @@ function FormCustomization({
</FormItem> </FormItem>
<Button block size="sm" variant="solid" loading={isSubmitting} type="submit"> <Button block size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::Saving') : translate('::Save')} {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>
@ -312,7 +312,7 @@ function FormCustomization({
> >
<h5 className="mb-4">Delete</h5> <h5 className="mb-4">Delete</h5>
<p>{translate('::DeleteConfirmation')}</p> <p>{translate('::App.Platform.DeleteConfirmation')}</p>
<div className="text-right mt-6"> <div className="text-right mt-6">
<Button <Button
@ -333,7 +333,7 @@ function FormCustomization({
await deleteListFormCustomization(deleteRowId) await deleteListFormCustomization(deleteRowId)
toast.push( toast.push(
<Notification type="success" duration={2000}> <Notification type="success" duration={2000}>
{translate('::ListForms.KayitSilindi')} {translate('::App.Platform.RecordDeleted')}
</Notification>, </Notification>,
{ {
placement: 'bottom-end', placement: 'bottom-end',

View file

@ -208,7 +208,7 @@ const FormEdit = () => {
await getListFormValues(listFormCode) await getListFormValues(listFormCode)
toast.push( toast.push(
<Notification type="success" duration={2000}> <Notification type="success" duration={2000}>
{translate('::ListForms.FormBilgileriKaydedildi')} {translate('::App.Platform.FormBilgileriKaydedildi')}
</Notification>, </Notification>,
{ placement: 'bottom-end' }, { placement: 'bottom-end' },
) )
@ -240,7 +240,7 @@ const FormEdit = () => {
{listFormValues.isTenant && ( {listFormValues.isTenant && (
<Badge <Badge
className="font-semibold dark:bg-red-500 dark:text-white" className="font-semibold dark:bg-red-500 dark:text-white"
content={translate('::ListForms.ListFormEdit.MultiTenantWarning')} content={translate('::App.ListFormEdit.MultiTenantWarning')}
innerClass="p-1 bg-red-50 text-red-500" innerClass="p-1 bg-red-50 text-red-500"
></Badge> ></Badge>
)} )}
@ -248,129 +248,129 @@ const FormEdit = () => {
<Tabs defaultValue="details" variant="underline"> <Tabs defaultValue="details" variant="underline">
<TabList className="flex-wrap border-b mb-2 bg-slate-50 dark:bg-slate-800"> <TabList className="flex-wrap border-b mb-2 bg-slate-50 dark:bg-slate-800">
{visibleTabs.includes('details') && ( {visibleTabs.includes('details') && (
<TabNav value="details">{translate('::ListForms.ListFormEdit.TabDetails')}</TabNav> <TabNav value="details">{translate('::App.Platform.Detail')}</TabNav>
)} )}
{visibleTabs.includes('database') && ( {visibleTabs.includes('database') && (
<TabNav value="database">{translate('::ListForms.ListFormEdit.TabDatabase')}</TabNav> <TabNav value="database">{translate('::App.BlogCategories.Database')}</TabNav>
)} )}
{visibleTabs.includes('permissions') && ( {visibleTabs.includes('permissions') && (
<TabNav value="permissions">{translate('::Abp.Identity.Permissions')}</TabNav> <TabNav value="permissions">{translate('::Abp.Identity.Permissions')}</TabNav>
)} )}
{visibleTabs.includes('commands') && ( {visibleTabs.includes('commands') && (
<TabNav value="commands">{translate('::ListForms.ListFormEdit.TabCommands')}</TabNav> <TabNav value="commands">{translate('::App.ListFormEdit.TabCommands')}</TabNav>
)} )}
{visibleTabs.includes('columns') && ( {visibleTabs.includes('columns') && (
<TabNav value="columns">{translate('::ListForms.ListFormEdit.TabColumns')}</TabNav> <TabNav value="columns">{translate('::App.Platform.Columns')}</TabNav>
)} )}
{visibleTabs.includes('edit') && ( {visibleTabs.includes('edit') && (
<TabNav value="edit">{translate('::ListForms.ListFormEdit.Editing')}</TabNav> <TabNav value="edit">{translate('::App.Platform.Editing')}</TabNav>
)} )}
{visibleTabs.includes('sortingForm') && ( {visibleTabs.includes('sortingForm') && (
<TabNav value="sortingForm">{translate('::ListForms.ListFormEdit.TabSorting')}</TabNav> <TabNav value="sortingForm">{translate('::App.ListFormField.Sorting')}</TabNav>
)} )}
{visibleTabs.includes('filterRow') && ( {visibleTabs.includes('filterRow') && (
<TabNav value="filterRow">{translate('::ListForms.ListFormEdit.TabFiltering')}</TabNav> <TabNav value="filterRow">{translate('::App.ListFormEdit.TabFiltering')}</TabNav>
)} )}
{visibleTabs.includes('rowForm') && ( {visibleTabs.includes('rowForm') && (
<TabNav value="rowForm">{translate('::ListForms.ListFormEdit.TabRow')}</TabNav> <TabNav value="rowForm">{translate('::App.Platform.Row')}</TabNav>
)} )}
{visibleTabs.includes('search') && ( {visibleTabs.includes('search') && (
<TabNav value="search">{translate('::ListForms.ListFormEdit.TabSearch')}</TabNav> <TabNav value="search">{translate('::App.Platform.Search3')}</TabNav>
)} )}
{visibleTabs.includes('group') && ( {visibleTabs.includes('group') && (
<TabNav value="group">{translate('::ListForms.ListFormEdit.TabGrouping')}</TabNav> <TabNav value="group">{translate('::App.ListFormEdit.TabGrouping')}</TabNav>
)} )}
{visibleTabs.includes('select') && ( {visibleTabs.includes('select') && (
<TabNav value="select">{translate('::ListForms.ListFormEdit.TabSelection')}</TabNav> <TabNav value="select">{translate('::App.ListFormEdit.TabSelection')}</TabNav>
)} )}
{visibleTabs.includes('pager') && ( {visibleTabs.includes('pager') && (
<TabNav value="pager">{translate('::ListForms.ListFormEdit.TabPaging')}</TabNav> <TabNav value="pager">{translate('::App.ListFormEdit.TabPaging')}</TabNav>
)} )}
{visibleTabs.includes('state') && ( {visibleTabs.includes('state') && (
<TabNav value="state">{translate('::ListForms.ListFormEdit.TabState')}</TabNav> <TabNav value="state">{translate('::App.ListFormEdit.TabState')}</TabNav>
)} )}
{visibleTabs.includes('extrafilter') && ( {visibleTabs.includes('extrafilter') && (
<TabNav value="extrafilter"> <TabNav value="extrafilter">
{translate('::ListForms.ListFormEdit.ExtraFilters')} {translate('::App.ListFormEdit.ExtraFilters')}
</TabNav> </TabNav>
)} )}
{visibleTabs.includes('editForm') && ( {visibleTabs.includes('editForm') && (
<TabNav value="editForm">{translate('::ListForms.ListFormEdit.EditingForm')}</TabNav> <TabNav value="editForm">{translate('::App.StaticLookup.Form')}</TabNav>
)} )}
{visibleTabs.includes('fields') && ( {visibleTabs.includes('fields') && (
<TabNav value="fields">{translate('::ListForms.ListFormEdit.TabFields')}</TabNav> <TabNav value="fields">{translate('::App.ListFormWizard.ListFormFields')}</TabNav>
)} )}
{visibleTabs.includes('customization') && ( {visibleTabs.includes('customization') && (
<TabNav value="customization"> <TabNav value="customization">
{translate('::ListForms.ListFormEdit.TabCustomization')} {translate('::App.ListFormEdit.TabCustomization')}
</TabNav> </TabNav>
)} )}
{visibleTabs.includes('pivots') && ( {visibleTabs.includes('pivots') && (
<TabNav value="pivots">{translate('::ListForms.ListFormEdit.TabPivot')}</TabNav> <TabNav value="pivots">{translate('::App.Platform.TabPivot')}</TabNav>
)} )}
{visibleTabs.includes('tree') && ( {visibleTabs.includes('tree') && (
<TabNav value="tree">{translate('::ListForms.ListFormEdit.TabTree')}</TabNav> <TabNav value="tree">{translate('::App.Platform.TabTree')}</TabNav>
)} )}
{visibleTabs.includes('gantt') && ( {visibleTabs.includes('gantt') && (
<TabNav value="gantt">{translate('::ListForms.ListFormEdit.TabGantt')}</TabNav> <TabNav value="gantt">{translate('::App.Platform.TabGantt')}</TabNav>
)} )}
{visibleTabs.includes('scheduler') && ( {visibleTabs.includes('scheduler') && (
<TabNav value="scheduler">{translate('::ListForms.ListFormEdit.TabScheduler')}</TabNav> <TabNav value="scheduler">{translate('::App.Platform.TabScheduler')}</TabNav>
)} )}
{visibleTabs.includes('todo') && <TabNav value="todo">Todo</TabNav>} {visibleTabs.includes('todo') && <TabNav value="todo">Todo</TabNav>}
{visibleTabs.includes('subForms') && ( {visibleTabs.includes('subForms') && (
<TabNav value="subForms">{translate('::ListForms.ListFormEdit.SubForms')}</TabNav> <TabNav value="subForms">{translate('::App.ListFormEdit.SubForms')}</TabNav>
)} )}
{visibleTabs.includes('widget') && ( {visibleTabs.includes('widget') && (
<TabNav value="widget">{translate('::ListForms.ListFormEdit.TabWidgets')}</TabNav> <TabNav value="widget">{translate('::App.ListFormEdit.TabWidgets')}</TabNav>
)} )}
{visibleTabs.includes('workflow') && ( {visibleTabs.includes('workflow') && (
<TabNav value="workflow">{translate('::ListForms.ListFormEdit.TabWorkflow')}</TabNav> <TabNav value="workflow">{translate('::App.ListFormEdit.TabWorkflow')}</TabNav>
)} )}
{/* Chart Tabs */} {/* Chart Tabs */}
{visibleTabs.includes('commonSettings') && ( {visibleTabs.includes('commonSettings') && (
<TabNav value="commonSettings"> <TabNav value="commonSettings">
{translate('::ListForms.ListFormEdit.TabChartCommon')} {translate('::App.ListFormEdit.TabChartCommon')}
</TabNav> </TabNav>
)} )}
{visibleTabs.includes('axis') && ( {visibleTabs.includes('axis') && (
<TabNav value="axis">{translate('::ListForms.ListFormEdit.TabChartAxis')}</TabNav> <TabNav value="axis">{translate('::App.ListFormEdit.TabChartAxis')}</TabNav>
)} )}
{visibleTabs.includes('panes') && ( {visibleTabs.includes('panes') && (
<TabNav value="panes">{translate('::ListForms.ListFormEdit.TabChartPanes')}</TabNav> <TabNav value="panes">{translate('::App.ListFormEdit.TabChartPanes')}</TabNav>
)} )}
{visibleTabs.includes('series') && ( {visibleTabs.includes('series') && (
<TabNav value="series">{translate('::ListForms.ListFormEdit.TabChartSeries')}</TabNav> <TabNav value="series">{translate('::App.Platform.TabChartSeries')}</TabNav>
)} )}
{visibleTabs.includes('animationsOptions') && ( {visibleTabs.includes('animationsOptions') && (
<TabNav value="animationsOptions"> <TabNav value="animationsOptions">
{translate('::ListForms.ListFormEdit.TabChartAnimation')} {translate('::App.ListFormEdit.TabChartAnimation')}
</TabNav> </TabNav>
)} )}
{visibleTabs.includes('annotations') && ( {visibleTabs.includes('annotations') && (
<TabNav value="annotations"> <TabNav value="annotations">
{translate('::ListForms.ListFormEdit.TabChartAnnotations')} {translate('::App.ListFormEdit.TabChartAnnotations')}
</TabNav> </TabNav>
)} )}
{visibleTabs.includes('zoomAndPanSettings') && ( {visibleTabs.includes('zoomAndPanSettings') && (
<TabNav value="zoomAndPanSettings"> <TabNav value="zoomAndPanSettings">
{translate('::ListForms.ListFormEdit.TabChartZoomAndPan')} {translate('::App.ListFormEdit.TabChartZoomAndPan')}
</TabNav> </TabNav>
)} )}
{visibleTabs.includes('legendSettings') && ( {visibleTabs.includes('legendSettings') && (
<TabNav value="legendSettings"> <TabNav value="legendSettings">
{translate('::ListForms.ListFormEdit.TabChartLegend')} {translate('::App.ListFormEdit.TabChartLegend')}
</TabNav> </TabNav>
)} )}
{visibleTabs.includes('crosshairOptions') && ( {visibleTabs.includes('crosshairOptions') && (
<TabNav value="crosshairOptions"> <TabNav value="crosshairOptions">
{translate('::ListForms.ListFormEdit.TabChartCrosshair')} {translate('::App.ListFormEdit.TabChartCrosshair')}
</TabNav> </TabNav>
)} )}
{visibleTabs.includes('exportSettings') && ( {visibleTabs.includes('exportSettings') && (
<TabNav value="exportSettings"> <TabNav value="exportSettings">
{translate('::ListForms.ListFormEdit.PermissionsExport')} {translate('::App.Platform.Export')}
</TabNav> </TabNav>
)} )}
</TabList> </TabList>

View file

@ -40,7 +40,7 @@ function FormTabColumns(props: FormEditProps) {
<div className="grid grid-cols-1 md:grid-cols-2 gap-3"> <div className="grid grid-cols-1 md:grid-cols-2 gap-3">
<div className="my-2"> <div className="my-2">
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.SelectionShowColumnHeaders')} label={translate('::App.ListFormEdit.SelectionShowColumnHeaders')}
invalid={ invalid={
errors.columnOptionDto?.showColumnHeaders && errors.columnOptionDto?.showColumnHeaders &&
touched.columnOptionDto?.showColumnHeaders touched.columnOptionDto?.showColumnHeaders
@ -49,12 +49,12 @@ function FormTabColumns(props: FormEditProps) {
> >
<Field <Field
name="columnOptionDto.showColumnHeaders" name="columnOptionDto.showColumnHeaders"
placeholder={translate('::ListForms.ListFormEdit.SelectionShowColumnHeaders')} placeholder={translate('::App.ListFormEdit.SelectionShowColumnHeaders')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.SelectionShowBorders')} label={translate('::App.ListFormEdit.SelectionShowBorders')}
invalid={ invalid={
errors.columnOptionDto?.showBorders && touched.columnOptionDto?.showBorders errors.columnOptionDto?.showBorders && touched.columnOptionDto?.showBorders
} }
@ -62,12 +62,12 @@ function FormTabColumns(props: FormEditProps) {
> >
<Field <Field
name="columnOptionDto.showBorders" name="columnOptionDto.showBorders"
placeholder={translate('::ListForms.ListFormEdit.SelectionShowBorders')} placeholder={translate('::App.ListFormEdit.SelectionShowBorders')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.SelectionShowRowLines')} label={translate('::App.ListFormEdit.SelectionShowRowLines')}
invalid={ invalid={
errors.columnOptionDto?.showRowLines && touched.columnOptionDto?.showRowLines errors.columnOptionDto?.showRowLines && touched.columnOptionDto?.showRowLines
} }
@ -75,12 +75,12 @@ function FormTabColumns(props: FormEditProps) {
> >
<Field <Field
name="columnOptionDto.showRowLines" name="columnOptionDto.showRowLines"
placeholder={translate('::ListForms.ListFormEdit.SelectionShowRowLines')} placeholder={translate('::App.ListFormEdit.SelectionShowRowLines')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.SelectionShowColumnLines')} label={translate('::App.ListFormEdit.SelectionShowColumnLines')}
invalid={ invalid={
errors.columnOptionDto?.showColumnLines && errors.columnOptionDto?.showColumnLines &&
touched.columnOptionDto?.showColumnLines touched.columnOptionDto?.showColumnLines
@ -89,12 +89,12 @@ function FormTabColumns(props: FormEditProps) {
> >
<Field <Field
name="columnOptionDto.showColumnLines" name="columnOptionDto.showColumnLines"
placeholder={translate('::ListForms.ListFormEdit.SelectionShowColumnLines')} placeholder={translate('::App.ListFormEdit.SelectionShowColumnLines')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.SelectionRowAlternationEnabled')} label={translate('::App.ListFormEdit.SelectionRowAlternationEnabled')}
invalid={ invalid={
errors.columnOptionDto?.rowAlternationEnabled && errors.columnOptionDto?.rowAlternationEnabled &&
touched.columnOptionDto?.rowAlternationEnabled touched.columnOptionDto?.rowAlternationEnabled
@ -104,13 +104,13 @@ function FormTabColumns(props: FormEditProps) {
<Field <Field
name="columnOptionDto.rowAlternationEnabled" name="columnOptionDto.rowAlternationEnabled"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.SelectionRowAlternationEnabled', '::App.ListFormEdit.SelectionRowAlternationEnabled',
)} )}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.SelectionAllowColumnReordering')} label={translate('::App.ListFormEdit.SelectionAllowColumnReordering')}
invalid={ invalid={
errors.columnOptionDto?.allowColumnReordering && errors.columnOptionDto?.allowColumnReordering &&
touched.columnOptionDto?.allowColumnReordering touched.columnOptionDto?.allowColumnReordering
@ -120,13 +120,13 @@ function FormTabColumns(props: FormEditProps) {
<Field <Field
name="columnOptionDto.allowColumnReordering" name="columnOptionDto.allowColumnReordering"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.SelectionAllowColumnReordering', '::App.ListFormEdit.SelectionAllowColumnReordering',
)} )}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.SelectionColumnAutoWidth')} label={translate('::App.ListFormEdit.SelectionColumnAutoWidth')}
invalid={ invalid={
errors.columnOptionDto?.columnAutoWidth && errors.columnOptionDto?.columnAutoWidth &&
touched.columnOptionDto?.columnAutoWidth touched.columnOptionDto?.columnAutoWidth
@ -135,12 +135,12 @@ function FormTabColumns(props: FormEditProps) {
> >
<Field <Field
name="columnOptionDto.columnAutoWidth" name="columnOptionDto.columnAutoWidth"
placeholder={translate('::ListForms.ListFormEdit.SelectionColumnAutoWidth')} placeholder={translate('::App.ListFormEdit.SelectionColumnAutoWidth')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.SelectionColumnFixingEnabled')} label={translate('::App.ListFormEdit.SelectionColumnFixingEnabled')}
invalid={ invalid={
errors.columnOptionDto?.columnFixingEnabled && errors.columnOptionDto?.columnFixingEnabled &&
touched.columnOptionDto?.columnFixingEnabled touched.columnOptionDto?.columnFixingEnabled
@ -150,7 +150,7 @@ function FormTabColumns(props: FormEditProps) {
<Field <Field
name="columnOptionDto.columnFixingEnabled" name="columnOptionDto.columnFixingEnabled"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.SelectionColumnFixingEnabled', '::App.ListFormEdit.SelectionColumnFixingEnabled',
)} )}
component={Checkbox} component={Checkbox}
/> />
@ -158,7 +158,7 @@ function FormTabColumns(props: FormEditProps) {
</div> </div>
<div className="my-2"> <div className="my-2">
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.SelectionRtlEnabled')} label={translate('::App.ListFormEdit.SelectionRtlEnabled')}
invalid={ invalid={
errors.columnOptionDto?.rtlEnabled && touched.columnOptionDto?.rtlEnabled errors.columnOptionDto?.rtlEnabled && touched.columnOptionDto?.rtlEnabled
} }
@ -166,12 +166,12 @@ function FormTabColumns(props: FormEditProps) {
> >
<Field <Field
name="columnOptionDto.rtlEnabled" name="columnOptionDto.rtlEnabled"
placeholder={translate('::ListForms.ListFormEdit.SelectionRtlEnabled')} placeholder={translate('::App.ListFormEdit.SelectionRtlEnabled')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.SelectionColumnChooserEnabled')} label={translate('::App.ListFormEdit.SelectionColumnChooserEnabled')}
invalid={ invalid={
errors.columnOptionDto?.columnChooserEnabled && errors.columnOptionDto?.columnChooserEnabled &&
touched.columnOptionDto?.columnChooserEnabled touched.columnOptionDto?.columnChooserEnabled
@ -181,13 +181,13 @@ function FormTabColumns(props: FormEditProps) {
<Field <Field
name="columnOptionDto.columnChooserEnabled" name="columnOptionDto.columnChooserEnabled"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.SelectionColumnChooserEnabled', '::App.ListFormEdit.SelectionColumnChooserEnabled',
)} )}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.SelectionColumnChooserMode')} label={translate('::App.ListFormEdit.SelectionColumnChooserMode')}
invalid={ invalid={
errors.columnOptionDto?.columnChooserMode && errors.columnOptionDto?.columnChooserMode &&
touched.columnOptionDto?.columnChooserMode touched.columnOptionDto?.columnChooserMode
@ -198,7 +198,7 @@ function FormTabColumns(props: FormEditProps) {
type="text" type="text"
autoComplete="off" autoComplete="off"
name="columnOptionDto.columnChooserMode" name="columnOptionDto.columnChooserMode"
placeholder={translate('::ListForms.ListFormEdit.SelectionColumnChooserMode')} placeholder={translate('::App.ListFormEdit.SelectionColumnChooserMode')}
> >
{({ field, form }: FieldProps<ColumnChooserMode>) => ( {({ field, form }: FieldProps<ColumnChooserMode>) => (
<Select <Select
@ -215,7 +215,7 @@ function FormTabColumns(props: FormEditProps) {
</Field> </Field>
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.SelectionAllowColumnResizing')} label={translate('::App.ListFormEdit.SelectionAllowColumnResizing')}
invalid={ invalid={
errors.columnOptionDto?.allowColumnResizing && errors.columnOptionDto?.allowColumnResizing &&
touched.columnOptionDto?.allowColumnResizing touched.columnOptionDto?.allowColumnResizing
@ -225,13 +225,13 @@ function FormTabColumns(props: FormEditProps) {
<Field <Field
name="columnOptionDto.allowColumnResizing" name="columnOptionDto.allowColumnResizing"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.SelectionAllowColumnResizing', '::App.ListFormEdit.SelectionAllowColumnResizing',
)} )}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.SelectionColumnResizingMode')} label={translate('::App.ListFormEdit.SelectionColumnResizingMode')}
invalid={ invalid={
errors.columnOptionDto?.columnResizingMode && errors.columnOptionDto?.columnResizingMode &&
touched.columnOptionDto?.columnResizingMode touched.columnOptionDto?.columnResizingMode
@ -243,7 +243,7 @@ function FormTabColumns(props: FormEditProps) {
autoComplete="off" autoComplete="off"
name="columnOptionDto.columnResizingMode" name="columnOptionDto.columnResizingMode"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.SelectionColumnResizingMode', '::App.ListFormEdit.SelectionColumnResizingMode',
)} )}
> >
{({ field, form }: FieldProps<ColumnResizeMode>) => ( {({ field, form }: FieldProps<ColumnResizeMode>) => (
@ -261,7 +261,7 @@ function FormTabColumns(props: FormEditProps) {
</Field> </Field>
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.SelectionHoverStateEnabled')} label={translate('::App.ListFormEdit.SelectionHoverStateEnabled')}
invalid={ invalid={
errors.columnOptionDto?.hoverStateEnabled && errors.columnOptionDto?.hoverStateEnabled &&
touched.columnOptionDto?.hoverStateEnabled touched.columnOptionDto?.hoverStateEnabled
@ -270,12 +270,12 @@ function FormTabColumns(props: FormEditProps) {
> >
<Field <Field
name="columnOptionDto.hoverStateEnabled" name="columnOptionDto.hoverStateEnabled"
placeholder={translate('::ListForms.ListFormEdit.SelectionHoverStateEnabled')} placeholder={translate('::App.ListFormEdit.SelectionHoverStateEnabled')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.SelectionColumnHidingEnabled')} label={translate('::App.ListFormEdit.SelectionColumnHidingEnabled')}
invalid={ invalid={
errors.columnOptionDto?.columnHidingEnabled && errors.columnOptionDto?.columnHidingEnabled &&
touched.columnOptionDto?.columnHidingEnabled touched.columnOptionDto?.columnHidingEnabled
@ -285,13 +285,13 @@ function FormTabColumns(props: FormEditProps) {
<Field <Field
name="columnOptionDto.columnHidingEnabled" name="columnOptionDto.columnHidingEnabled"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.SelectionColumnHidingEnabled', '::App.ListFormEdit.SelectionColumnHidingEnabled',
)} )}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.SelectionFocusedRowEnabled')} label={translate('::App.ListFormEdit.SelectionFocusedRowEnabled')}
invalid={ invalid={
errors.columnOptionDto?.focusedRowEnabled && errors.columnOptionDto?.focusedRowEnabled &&
touched.columnOptionDto?.focusedRowEnabled touched.columnOptionDto?.focusedRowEnabled
@ -300,7 +300,7 @@ function FormTabColumns(props: FormEditProps) {
> >
<Field <Field
name="columnOptionDto.focusedRowEnabled" name="columnOptionDto.focusedRowEnabled"
placeholder={translate('::ListForms.ListFormEdit.SelectionFocusedRowEnabled')} placeholder={translate('::App.ListFormEdit.SelectionFocusedRowEnabled')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
@ -308,7 +308,7 @@ function FormTabColumns(props: FormEditProps) {
</div> </div>
<Button block size="sm" variant="solid" loading={isSubmitting} type="submit" className="my-2"> <Button block size="sm" variant="solid" loading={isSubmitting} type="submit" className="my-2">
{isSubmitting ? translate('::Saving') : translate('::Save')} {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -29,8 +29,8 @@ function FormTabCommands() {
<Card <Card
className="my-2" className="my-2"
bodyClass="p-0" bodyClass="p-0"
header={translate('::ListForms.ListFormEdit.CommandColumns')} header={translate('::App.ListFormEdit.CommandColumns')}
headerExtra={translate('::ListForms.ListFormEdit.CommandColumnsDescription')} headerExtra={translate('::App.ListFormEdit.CommandColumnsDescription')}
> >
<Table compact> <Table compact>
<THead> <THead>
@ -55,15 +55,15 @@ function FormTabCommands() {
}} }}
/> />
</Th> </Th>
<Th>{translate('::ListForms.ListFormEdit.CommandPosition')}</Th> <Th>{translate('::App.Listform.ListformField.Position')}</Th>
<Th>{translate('::ListForms.ListFormEdit.CommandText')}</Th> <Th>{translate('::App.Listform.ListformField.Text')}</Th>
<Th>{translate('::ListForms.ListFormEdit.CommandHint')}</Th> <Th>{translate('::App.ListFormEdit.CommandHint')}</Th>
<Th>{translate('::App.Listform.ListformField.Icon')}</Th> <Th>{translate('::App.Listform.ListformField.Icon')}</Th>
<Th>{translate('::ListForms.ListFormEdit.CommandAuthorizationType')}</Th> <Th>{translate('::App.ListFormEdit.CommandAuthorizationType')}</Th>
<Th>{translate('::ListForms.ListFormEdit.CommandUrlTarget')}</Th> <Th>{translate('::App.ListFormEdit.CommandUrlTarget')}</Th>
<Th>{translate('::ListForms.ListFormEdit.CommandUrl')}</Th> <Th>{translate('::App.Sender.Rocket.Url')}</Th>
<Th>{translate('::ListForms.ListFormEdit.CommandVisible')}</Th> <Th>{translate('::App.ListFormEdit.CommandVisible')}</Th>
<Th>{translate('::ListForms.ListFormEdit.CommandVisibleExpression')}</Th> <Th>{translate('::App.ListFormEdit.CommandVisibleExpression')}</Th>
</Tr> </Tr>
</THead> </THead>
<TBody> <TBody>

View file

@ -24,19 +24,19 @@ function FormTabDatabase(props: FormEditProps) {
<Tabs defaultValue="tabDataSource"> <Tabs defaultValue="tabDataSource">
<TabList className="flex-wrap"> <TabList className="flex-wrap">
<TabNav value="tabDataSource"> <TabNav value="tabDataSource">
{translate('::ListForms.ListFormEdit.DatabaseDataSource')} {translate('::App.Platform.DataSource')}
</TabNav> </TabNav>
<TabNav value="tabSelect"> <TabNav value="tabSelect">
{translate('::ListForms.ListFormEdit.DatabaseSelectOperations')} {translate('::App.ListFormEdit.DatabaseSelectOperations')}
</TabNav> </TabNav>
<TabNav value="tabInsert"> <TabNav value="tabInsert">
{translate('::ListForms.ListFormEdit.DatabaseInsertOperations')} {translate('::App.ListFormEdit.DatabaseInsertOperations')}
</TabNav> </TabNav>
<TabNav value="tabUpdate"> <TabNav value="tabUpdate">
{translate('::ListForms.ListFormEdit.DatabaseUpdateOperations')} {translate('::App.ListFormEdit.DatabaseUpdateOperations')}
</TabNav> </TabNav>
<TabNav value="tabDelete"> <TabNav value="tabDelete">
{translate('::ListForms.ListFormEdit.DatabaseDeleteOperations')} {translate('::App.ListFormEdit.DatabaseDeleteOperations')}
</TabNav> </TabNav>
</TabList> </TabList>
<TabContent value="tabDataSource"> <TabContent value="tabDataSource">

View file

@ -144,29 +144,29 @@ function FormTabDatabaseDataSource(props: FormEditProps) {
<FormContainer size="sm"> <FormContainer size="sm">
<Card className="mt-2 mb-2"> <Card className="mt-2 mb-2">
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.IsTenant')} label={translate('::App.ListFormEdit.IsTenant')}
invalid={errors.editingOptionDto?.isTenant && touched.editingOptionDto?.isTenant} invalid={errors.editingOptionDto?.isTenant && touched.editingOptionDto?.isTenant}
errorMessage={errors.editingOptionDto?.isTenant} errorMessage={errors.editingOptionDto?.isTenant}
> >
<Field <Field
name="isTenant" name="isTenant"
placeholder={translate('::ListForms.ListFormEdit.IsTenant')} placeholder={translate('::App.ListFormEdit.IsTenant')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.IsBranch')} label={translate('::App.ListFormEdit.IsBranch')}
invalid={errors.editingOptionDto?.isBranch && touched.editingOptionDto?.isBranch} invalid={errors.editingOptionDto?.isBranch && touched.editingOptionDto?.isBranch}
errorMessage={errors.editingOptionDto?.isBranch} errorMessage={errors.editingOptionDto?.isBranch}
> >
<Field <Field
name="isBranch" name="isBranch"
placeholder={translate('::ListForms.ListFormEdit.IsBranch')} placeholder={translate('::App.ListFormEdit.IsBranch')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.IsOrganizationUnit')} label={translate('::App.ListFormEdit.IsOrganizationUnit')}
invalid={ invalid={
errors.editingOptionDto?.isOrganizationUnit && errors.editingOptionDto?.isOrganizationUnit &&
touched.editingOptionDto?.isOrganizationUnit touched.editingOptionDto?.isOrganizationUnit
@ -175,7 +175,7 @@ function FormTabDatabaseDataSource(props: FormEditProps) {
> >
<Field <Field
name="isOrganizationUnit" name="isOrganizationUnit"
placeholder={translate('::ListForms.ListFormEdit.IsOrganizationUnit')} placeholder={translate('::App.ListFormEdit.IsOrganizationUnit')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
@ -215,7 +215,7 @@ function FormTabDatabaseDataSource(props: FormEditProps) {
</Field> </Field>
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DatabaseDataSourceSelectCommand')} label={translate('::App.ListFormEdit.DatabaseDataSourceSelectCommand')}
invalid={errors.selectCommand && touched.selectCommand} invalid={errors.selectCommand && touched.selectCommand}
errorMessage={errors.selectCommand} errorMessage={errors.selectCommand}
extra={ extra={
@ -284,9 +284,9 @@ function FormTabDatabaseDataSource(props: FormEditProps) {
options={grouped} options={grouped}
placeholder={ placeholder={
isLoadingDbObjects isLoadingDbObjects
? translate('::Loading') ? translate('::App.Platform.Loading')
: translate( : translate(
'::ListForms.ListFormEdit.DatabaseDataSourceSelectCommand', '::App.ListFormEdit.DatabaseDataSourceSelectCommand',
) )
} }
value={field.value ? { label: field.value, value: field.value } : null} value={field.value ? { label: field.value, value: field.value } : null}
@ -354,9 +354,9 @@ function FormTabDatabaseDataSource(props: FormEditProps) {
</span> </span>
) : selectCommandColumns.length === 0 && !isLoadingColumns ? ( ) : selectCommandColumns.length === 0 && !isLoadingColumns ? (
<span className="text-xs ml-2 text-gray-400"> <span className="text-xs ml-2 text-gray-400">
{translate('::ListForms.ListFormEdit.ColumnsLoadAfterSelect', { {translate('::App.ListFormEdit.ColumnsLoadAfterSelect', {
command: translate( command: translate(
'::ListForms.ListFormEdit.DatabaseDataSourceSelectCommand', '::App.ListFormEdit.DatabaseDataSourceSelectCommand',
), ),
})} })}
</span> </span>
@ -373,7 +373,7 @@ function FormTabDatabaseDataSource(props: FormEditProps) {
isLoading={isLoadingColumns} isLoading={isLoadingColumns}
placeholder={ placeholder={
isLoadingColumns isLoadingColumns
? translate('::Loading') ? translate('::App.Platform.Loading')
: translate('::App.Listform.ListformField.KeyFieldName') : translate('::App.Listform.ListformField.KeyFieldName')
} }
options={selectCommandColumns.map((c) => ({ options={selectCommandColumns.map((c) => ({
@ -406,7 +406,7 @@ function FormTabDatabaseDataSource(props: FormEditProps) {
</Card> </Card>
<Button block size="sm" variant="solid" loading={isSubmitting}> <Button block size="sm" variant="solid" loading={isSubmitting}>
{isSubmitting ? translate('::Saving') : translate('::Save')} {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -54,7 +54,7 @@ function FormTabDatabaseDelete({
<FormContainer size="sm"> <FormContainer size="sm">
<Card className="my-2"> <Card className="my-2">
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DatabaseDeleteServiceAddress')} label={translate('::App.ListFormEdit.DatabaseDeleteServiceAddress')}
invalid={errors.deleteServiceAddress && touched.deleteServiceAddress} invalid={errors.deleteServiceAddress && touched.deleteServiceAddress}
errorMessage={errors.deleteServiceAddress} errorMessage={errors.deleteServiceAddress}
> >
@ -62,14 +62,14 @@ function FormTabDatabaseDelete({
type="text" type="text"
autoComplete="off" autoComplete="off"
name="deleteServiceAddress" name="deleteServiceAddress"
placeholder={translate('::ListForms.ListFormEdit.DatabaseDeleteServiceAddress')} placeholder={translate('::App.ListFormEdit.DatabaseDeleteServiceAddress')}
component={Input} component={Input}
/> />
</FormItem> </FormItem>
<div className="grid grid-cols-1 md:grid-cols-3 gap-4"> <div className="grid grid-cols-1 md:grid-cols-3 gap-4">
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DatabaseDeleteCommand')} label={translate('::App.ListFormEdit.DatabaseDeleteCommand')}
invalid={errors.deleteCommand && touched.deleteCommand} invalid={errors.deleteCommand && touched.deleteCommand}
errorMessage={errors.deleteCommand} errorMessage={errors.deleteCommand}
> >
@ -77,14 +77,14 @@ function FormTabDatabaseDelete({
type="text" type="text"
autoComplete="off" autoComplete="off"
name="deleteCommand" name="deleteCommand"
placeholder={translate('::ListForms.ListFormEdit.DatabaseDeleteCommand')} placeholder={translate('::App.ListFormEdit.DatabaseDeleteCommand')}
component={Input} component={Input}
textArea={true} textArea={true}
rows={4} rows={4}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DatabaseDeleteBeforeCommand')} label={translate('::App.ListFormEdit.DatabaseDeleteBeforeCommand')}
invalid={errors.deleteBeforeCommand && touched.deleteBeforeCommand} invalid={errors.deleteBeforeCommand && touched.deleteBeforeCommand}
errorMessage={errors.deleteBeforeCommand} errorMessage={errors.deleteBeforeCommand}
> >
@ -93,7 +93,7 @@ function FormTabDatabaseDelete({
autoComplete="off" autoComplete="off"
name="deleteBeforeCommand" name="deleteBeforeCommand"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.DatabaseDeleteBeforeCommand', '::App.ListFormEdit.DatabaseDeleteBeforeCommand',
)} )}
component={Input} component={Input}
textArea={true} textArea={true}
@ -101,7 +101,7 @@ function FormTabDatabaseDelete({
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DatabaseDeleteAfterCommand')} label={translate('::App.ListFormEdit.DatabaseDeleteAfterCommand')}
invalid={errors.deleteAfterCommand && touched.deleteAfterCommand} invalid={errors.deleteAfterCommand && touched.deleteAfterCommand}
errorMessage={errors.deleteAfterCommand} errorMessage={errors.deleteAfterCommand}
> >
@ -109,7 +109,7 @@ function FormTabDatabaseDelete({
type="text" type="text"
autoComplete="off" autoComplete="off"
name="deleteAfterCommand" name="deleteAfterCommand"
placeholder={translate('::ListForms.ListFormEdit.DatabaseDeleteAfterCommand')} placeholder={translate('::App.ListFormEdit.DatabaseDeleteAfterCommand')}
component={Input} component={Input}
textArea={true} textArea={true}
rows={4} rows={4}
@ -118,15 +118,15 @@ function FormTabDatabaseDelete({
</div> </div>
<Button block size="sm" variant="solid" loading={isSubmitting}> <Button block size="sm" variant="solid" loading={isSubmitting}>
{isSubmitting ? translate('::Saving') : translate('::Save')} {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
</Button> </Button>
</Card> </Card>
<Card <Card
className="my-2" className="my-2"
bodyClass="p-0" bodyClass="p-0"
header={translate('::ListForms.ListFormEdit.DatabaseDeleteFieldsDefaultValues')} header={translate('::App.ListFormEdit.DatabaseDeleteFieldsDefaultValues')}
headerExtra={translate('::ListForms.ListFormEdit.DatabaseDefaultValuesDescription')} headerExtra={translate('::App.ListFormEdit.DatabaseDefaultValuesDescription')}
> >
<Table compact> <Table compact>
<THead> <THead>
@ -152,11 +152,11 @@ function FormTabDatabaseDelete({
}} }}
/> />
</Th> </Th>
<Th>{translate('::ListForms.ListFormFieldEdit.FieldName')}</Th> <Th>{translate('::App.ListFormFieldEdit.FieldName')}</Th>
<Th>{translate('::ListForms.ListFormEdit.FieldDbType')}</Th> <Th>{translate('::App.ListFormEdit.FieldDbType')}</Th>
<Th>{translate('::ListForms.ListFormEdit.CustomValueType')}</Th> <Th>{translate('::App.Listform.ListformField.ValueType')}</Th>
<Th>{translate('::App.Listform.ListformField.Value')}</Th> <Th>{translate('::App.Listform.ListformField.Value')}</Th>
<Th>{translate('::ListForms.ListFormEdit.SqlQuery')}</Th> <Th>{translate('::App.ListFormEdit.SqlQuery')}</Th>
</Tr> </Tr>
</THead> </THead>
<TBody> <TBody>
@ -220,7 +220,7 @@ function FormTabDatabaseDelete({
<Card <Card
className="my-2" className="my-2"
header={translate('::ListForms.ListFormEdit.DatabasePreviewTSQL')} header={translate('::App.ListFormEdit.DatabasePreviewTSQL')}
> >
<span>{sqlQuery}</span> <span>{sqlQuery}</span>
<Button <Button
@ -233,7 +233,7 @@ function FormTabDatabaseDelete({
setSqlQuery(resp.data) setSqlQuery(resp.data)
}} }}
> >
{translate('::Preview')} {translate('::App.Listform.ListformField.Preview')}
</Button> </Button>
</Card> </Card>
</FormContainer> </FormContainer>

View file

@ -54,7 +54,7 @@ function FormTabDatabaseInsert({
<FormContainer size="sm"> <FormContainer size="sm">
<Card className="my-2"> <Card className="my-2">
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DatabaseInsertServiceAddress')} label={translate('::App.ListFormEdit.DatabaseInsertServiceAddress')}
invalid={errors.insertServiceAddress && touched.insertServiceAddress} invalid={errors.insertServiceAddress && touched.insertServiceAddress}
errorMessage={errors.insertServiceAddress} errorMessage={errors.insertServiceAddress}
> >
@ -62,13 +62,13 @@ function FormTabDatabaseInsert({
type="text" type="text"
autoComplete="off" autoComplete="off"
name="insertServiceAddress" name="insertServiceAddress"
placeholder={translate('::ListForms.ListFormEdit.DatabaseInsertServiceAddress')} placeholder={translate('::App.ListFormEdit.DatabaseInsertServiceAddress')}
component={Input} component={Input}
/> />
</FormItem> </FormItem>
<div className="grid grid-cols-1 md:grid-cols-3 gap-4"> <div className="grid grid-cols-1 md:grid-cols-3 gap-4">
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DatabaseInsertCommand')} label={translate('::App.ListFormEdit.DatabaseInsertCommand')}
invalid={errors.insertCommand && touched.insertCommand} invalid={errors.insertCommand && touched.insertCommand}
errorMessage={errors.insertCommand} errorMessage={errors.insertCommand}
> >
@ -76,14 +76,14 @@ function FormTabDatabaseInsert({
type="text" type="text"
autoComplete="off" autoComplete="off"
name="insertCommand" name="insertCommand"
placeholder={translate('::ListForms.ListFormEdit.DatabaseInsertCommand')} placeholder={translate('::App.ListFormEdit.DatabaseInsertCommand')}
component={Input} component={Input}
textArea={true} textArea={true}
rows={4} rows={4}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DatabaseInsertBeforeCommand')} label={translate('::App.ListFormEdit.DatabaseInsertBeforeCommand')}
invalid={errors.insertBeforeCommand && touched.insertBeforeCommand} invalid={errors.insertBeforeCommand && touched.insertBeforeCommand}
errorMessage={errors.insertBeforeCommand} errorMessage={errors.insertBeforeCommand}
> >
@ -92,7 +92,7 @@ function FormTabDatabaseInsert({
autoComplete="off" autoComplete="off"
name="insertBeforeCommand" name="insertBeforeCommand"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.DatabaseInsertBeforeCommand', '::App.ListFormEdit.DatabaseInsertBeforeCommand',
)} )}
component={Input} component={Input}
textArea={true} textArea={true}
@ -100,7 +100,7 @@ function FormTabDatabaseInsert({
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DatabaseInsertAfterCommand')} label={translate('::App.ListFormEdit.DatabaseInsertAfterCommand')}
invalid={errors.insertAfterCommand && touched.insertAfterCommand} invalid={errors.insertAfterCommand && touched.insertAfterCommand}
errorMessage={errors.insertAfterCommand} errorMessage={errors.insertAfterCommand}
> >
@ -108,7 +108,7 @@ function FormTabDatabaseInsert({
type="text" type="text"
autoComplete="off" autoComplete="off"
name="insertAfterCommand" name="insertAfterCommand"
placeholder={translate('::ListForms.ListFormEdit.DatabaseInsertAfterCommand')} placeholder={translate('::App.ListFormEdit.DatabaseInsertAfterCommand')}
component={Input} component={Input}
textArea={true} textArea={true}
rows={4} rows={4}
@ -116,15 +116,15 @@ function FormTabDatabaseInsert({
</FormItem> </FormItem>
</div> </div>
<Button block size="sm" variant="solid" loading={isSubmitting}> <Button block size="sm" variant="solid" loading={isSubmitting}>
{isSubmitting ? translate('::Saving') : translate('::Save')} {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
</Button> </Button>
</Card> </Card>
<Card <Card
className="my-2" className="my-2"
bodyClass="p-0" bodyClass="p-0"
header={translate('::ListForms.ListFormEdit.DatabaseInsertFieldsDefaultValues')} header={translate('::App.ListFormEdit.DatabaseInsertFieldsDefaultValues')}
headerExtra={translate('::ListForms.ListFormEdit.DatabaseDefaultValuesDescription')} headerExtra={translate('::App.ListFormEdit.DatabaseDefaultValuesDescription')}
> >
<Table compact> <Table compact>
<THead> <THead>
@ -150,11 +150,11 @@ function FormTabDatabaseInsert({
}} }}
/> />
</Th> </Th>
<Th>{translate('::ListForms.ListFormFieldEdit.FieldName')}</Th> <Th>{translate('::App.ListFormFieldEdit.FieldName')}</Th>
<Th>{translate('::ListForms.ListFormEdit.FieldDbType')}</Th> <Th>{translate('::App.ListFormEdit.FieldDbType')}</Th>
<Th>{translate('::ListForms.ListFormEdit.CustomValueType')}</Th> <Th>{translate('::App.Listform.ListformField.ValueType')}</Th>
<Th>{translate('::App.Listform.ListformField.Value')}</Th> <Th>{translate('::App.Listform.ListformField.Value')}</Th>
<Th>{translate('::ListForms.ListFormEdit.SqlQuery')}</Th> <Th>{translate('::App.ListFormEdit.SqlQuery')}</Th>
</Tr> </Tr>
</THead> </THead>
<TBody> <TBody>
@ -219,10 +219,10 @@ function FormTabDatabaseInsert({
className="my-2" className="my-2"
bodyClass="p-0" bodyClass="p-0"
header={translate( header={translate(
'::ListForms.ListFormEdit.DatabaseFormDefaultFieldsDefaultValues', '::App.ListFormEdit.DatabaseFormDefaultFieldsDefaultValues',
)} )}
headerExtra={translate( headerExtra={translate(
'::ListForms.ListFormEdit.DatabaseFormDefaultFieldsDefaultValuesDescription', '::App.ListFormEdit.DatabaseFormDefaultFieldsDefaultValuesDescription',
)} )}
> >
<Table compact> <Table compact>
@ -249,11 +249,11 @@ function FormTabDatabaseInsert({
}} }}
/> />
</Th> </Th>
<Th>{translate('::ListForms.ListFormFieldEdit.FieldName')}</Th> <Th>{translate('::App.ListFormFieldEdit.FieldName')}</Th>
<Th>{translate('::ListForms.ListFormEdit.FieldDbType')}</Th> <Th>{translate('::App.ListFormEdit.FieldDbType')}</Th>
<Th>{translate('::ListForms.ListFormEdit.CustomValueType')}</Th> <Th>{translate('::App.Listform.ListformField.ValueType')}</Th>
<Th>{translate('::App.Listform.ListformField.Value')}</Th> <Th>{translate('::App.Listform.ListformField.Value')}</Th>
<Th>{translate('::ListForms.ListFormEdit.SqlQuery')}</Th> <Th>{translate('::App.ListFormEdit.SqlQuery')}</Th>
</Tr> </Tr>
</THead> </THead>
<TBody> <TBody>
@ -315,7 +315,7 @@ function FormTabDatabaseInsert({
<Card <Card
className="my-2" className="my-2"
header={translate('::ListForms.ListFormEdit.DatabasePreviewTSQL')} header={translate('::App.ListFormEdit.DatabasePreviewTSQL')}
> >
<span>{sqlQuery}</span> <span>{sqlQuery}</span>
<Button <Button
@ -328,7 +328,7 @@ function FormTabDatabaseInsert({
setSqlQuery(resp.data) setSqlQuery(resp.data)
}} }}
> >
{translate('::Preview')} {translate('::App.Listform.ListformField.Preview')}
</Button> </Button>
</Card> </Card>
</FormContainer> </FormContainer>

View file

@ -54,7 +54,7 @@ function FormTabDatabaseSelect({
<FormContainer size="sm"> <FormContainer size="sm">
<Card className="my-2"> <Card className="my-2">
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DatabaseSelectDefaultFilter')} label={translate('::App.ListFormEdit.DatabaseSelectDefaultFilter')}
invalid={errors.defaultFilter && touched.defaultFilter} invalid={errors.defaultFilter && touched.defaultFilter}
errorMessage={errors.defaultFilter} errorMessage={errors.defaultFilter}
> >
@ -62,12 +62,12 @@ function FormTabDatabaseSelect({
type="text" type="text"
autoComplete="off" autoComplete="off"
name="defaultFilter" name="defaultFilter"
placeholder={translate('::ListForms.ListFormEdit.DatabaseSelectDefaultFilter')} placeholder={translate('::App.ListFormEdit.DatabaseSelectDefaultFilter')}
component={Input} component={Input}
/> />
</FormItem> </FormItem>
<Button block size="sm" variant="solid" loading={isSubmitting}> <Button block size="sm" variant="solid" loading={isSubmitting}>
{isSubmitting ? translate('::Saving') : translate('::Save')} {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
</Button> </Button>
</Card> </Card>
@ -75,10 +75,10 @@ function FormTabDatabaseSelect({
className="my-2" className="my-2"
bodyClass="p-0" bodyClass="p-0"
header={translate( header={translate(
'::ListForms.ListFormEdit.DatabaseSelectSelectFieldsDefaultValues', '::App.ListFormEdit.DatabaseSelectSelectFieldsDefaultValues',
)} )}
headerExtra={translate( headerExtra={translate(
'::ListForms.ListFormEdit.DatabaseSelectSelectFieldsDefaultValuesDescription', '::App.ListFormEdit.DatabaseSelectSelectFieldsDefaultValuesDescription',
)} )}
> >
<Table compact> <Table compact>
@ -105,11 +105,11 @@ function FormTabDatabaseSelect({
}} }}
/> />
</Th> </Th>
<Th>{translate('::ListForms.ListFormFieldEdit.FieldName')}</Th> <Th>{translate('::App.ListFormFieldEdit.FieldName')}</Th>
<Th>{translate('::ListForms.ListFormEdit.FieldDbType')}</Th> <Th>{translate('::App.ListFormEdit.FieldDbType')}</Th>
<Th>{translate('::ListForms.ListFormEdit.CustomValueType')}</Th> <Th>{translate('::App.Listform.ListformField.ValueType')}</Th>
<Th>{translate('::App.Listform.ListformField.Value')}</Th> <Th>{translate('::App.Listform.ListformField.Value')}</Th>
<Th>{translate('::ListForms.ListFormEdit.SqlQuery')}</Th> <Th>{translate('::App.ListFormEdit.SqlQuery')}</Th>
</Tr> </Tr>
</THead> </THead>
<TBody> <TBody>
@ -173,7 +173,7 @@ function FormTabDatabaseSelect({
<Card <Card
className="my-2" className="my-2"
header={translate('::ListForms.ListFormEdit.DatabasePreviewTSQL')} header={translate('::App.ListFormEdit.DatabasePreviewTSQL')}
> >
<span>{sqlQuery}</span> <span>{sqlQuery}</span>
<Button <Button
@ -186,7 +186,7 @@ function FormTabDatabaseSelect({
setSqlQuery(resp.data) setSqlQuery(resp.data)
}} }}
> >
{translate('::Preview')} {translate('::App.Listform.ListformField.Preview')}
</Button> </Button>
</Card> </Card>
</FormContainer> </FormContainer>

View file

@ -54,7 +54,7 @@ function FormTabDatabaseUpdate({
<FormContainer size="sm"> <FormContainer size="sm">
<Card className="my-2"> <Card className="my-2">
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DatabaseUpdateServiceAddress')} label={translate('::App.ListFormEdit.DatabaseUpdateServiceAddress')}
invalid={errors.updateServiceAddress && touched.updateServiceAddress} invalid={errors.updateServiceAddress && touched.updateServiceAddress}
errorMessage={errors.updateServiceAddress} errorMessage={errors.updateServiceAddress}
> >
@ -62,13 +62,13 @@ function FormTabDatabaseUpdate({
type="text" type="text"
autoComplete="off" autoComplete="off"
name="updateServiceAddress" name="updateServiceAddress"
placeholder={translate('::ListForms.ListFormEdit.DatabaseUpdateServiceAddress')} placeholder={translate('::App.ListFormEdit.DatabaseUpdateServiceAddress')}
component={Input} component={Input}
/> />
</FormItem> </FormItem>
<div className="grid grid-cols-1 md:grid-cols-3 gap-4"> <div className="grid grid-cols-1 md:grid-cols-3 gap-4">
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DatabaseUpdateCommand')} label={translate('::App.ListFormEdit.DatabaseUpdateCommand')}
invalid={errors.updateCommand && touched.updateCommand} invalid={errors.updateCommand && touched.updateCommand}
errorMessage={errors.updateCommand} errorMessage={errors.updateCommand}
> >
@ -76,14 +76,14 @@ function FormTabDatabaseUpdate({
type="text" type="text"
autoComplete="off" autoComplete="off"
name="updateCommand" name="updateCommand"
placeholder={translate('::ListForms.ListFormEdit.DatabaseUpdateCommand')} placeholder={translate('::App.ListFormEdit.DatabaseUpdateCommand')}
component={Input} component={Input}
textArea={true} textArea={true}
rows={4} rows={4}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DatabaseUpdateBeforeCommand')} label={translate('::App.ListFormEdit.DatabaseUpdateBeforeCommand')}
invalid={errors.updateBeforeCommand && touched.updateBeforeCommand} invalid={errors.updateBeforeCommand && touched.updateBeforeCommand}
errorMessage={errors.updateBeforeCommand} errorMessage={errors.updateBeforeCommand}
> >
@ -92,7 +92,7 @@ function FormTabDatabaseUpdate({
autoComplete="off" autoComplete="off"
name="updateBeforeCommand" name="updateBeforeCommand"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.DatabaseUpdateBeforeCommand', '::App.ListFormEdit.DatabaseUpdateBeforeCommand',
)} )}
component={Input} component={Input}
textArea={true} textArea={true}
@ -100,7 +100,7 @@ function FormTabDatabaseUpdate({
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DatabaseUpdateAfterCommand')} label={translate('::App.ListFormEdit.DatabaseUpdateAfterCommand')}
invalid={errors.updateAfterCommand && touched.updateAfterCommand} invalid={errors.updateAfterCommand && touched.updateAfterCommand}
errorMessage={errors.updateAfterCommand} errorMessage={errors.updateAfterCommand}
> >
@ -108,7 +108,7 @@ function FormTabDatabaseUpdate({
type="text" type="text"
autoComplete="off" autoComplete="off"
name="updateAfterCommand" name="updateAfterCommand"
placeholder={translate('::ListForms.ListFormEdit.DatabaseUpdateAfterCommand')} placeholder={translate('::App.ListFormEdit.DatabaseUpdateAfterCommand')}
component={Input} component={Input}
textArea={true} textArea={true}
rows={4} rows={4}
@ -116,16 +116,16 @@ function FormTabDatabaseUpdate({
</FormItem> </FormItem>
</div> </div>
<Button block size="sm" variant="solid" loading={isSubmitting}> <Button block size="sm" variant="solid" loading={isSubmitting}>
{isSubmitting ? translate('::Saving') : translate('::Save')} {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
</Button> </Button>
</Card> </Card>
<Card <Card
className="my-2" className="my-2"
bodyClass="p-0" bodyClass="p-0"
header={translate('::ListForms.ListFormEdit.DatabaseUpdateFieldsDefaultValues')} header={translate('::App.ListFormEdit.DatabaseUpdateFieldsDefaultValues')}
headerExtra={translate( headerExtra={translate(
'::ListForms.ListFormEdit.DatabaseUpdateFieldsDefaultValuesDescription', '::App.ListFormEdit.DatabaseUpdateFieldsDefaultValuesDescription',
)} )}
> >
<Table compact> <Table compact>
@ -152,11 +152,11 @@ function FormTabDatabaseUpdate({
}} }}
/> />
</Th> </Th>
<Th>{translate('::ListForms.ListFormFieldEdit.FieldName')}</Th> <Th>{translate('::App.ListFormFieldEdit.FieldName')}</Th>
<Th>{translate('::ListForms.ListFormEdit.FieldDbType')}</Th> <Th>{translate('::App.ListFormEdit.FieldDbType')}</Th>
<Th>{translate('::ListForms.ListFormEdit.CustomValueType')}</Th> <Th>{translate('::App.Listform.ListformField.ValueType')}</Th>
<Th>{translate('::App.Listform.ListformField.Value')}</Th> <Th>{translate('::App.Listform.ListformField.Value')}</Th>
<Th>{translate('::ListForms.ListFormEdit.SqlQuery')}</Th> <Th>{translate('::App.ListFormEdit.SqlQuery')}</Th>
</Tr> </Tr>
</THead> </THead>
<TBody> <TBody>
@ -220,7 +220,7 @@ function FormTabDatabaseUpdate({
<Card <Card
className="my-2" className="my-2"
header={translate('::ListForms.ListFormEdit.DatabasePreviewTSQL')} header={translate('::App.ListFormEdit.DatabasePreviewTSQL')}
> >
<span>{sqlQuery}</span> <span>{sqlQuery}</span>
<Button <Button
@ -233,7 +233,7 @@ function FormTabDatabaseUpdate({
setSqlQuery(resp.data) setSqlQuery(resp.data)
}} }}
> >
{translate('::Preview')} {translate('::App.Listform.ListformField.Preview')}
</Button> </Button>
</Card> </Card>
</FormContainer> </FormContainer>

View file

@ -103,7 +103,7 @@ function FormTabDetails(
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.ListFormType')} label={translate('::App.ListFormEdit.ListFormType')}
invalid={errors.listFormType && touched.listFormType} invalid={errors.listFormType && touched.listFormType}
errorMessage={errors.listFormType} errorMessage={errors.listFormType}
> >
@ -111,7 +111,7 @@ function FormTabDetails(
type="text" type="text"
autoComplete="off" autoComplete="off"
name="listFormType" name="listFormType"
placeholder={translate('::ListForms.ListFormEdit.ListFormType')} placeholder={translate('::App.ListFormEdit.ListFormType')}
> >
{({ field, form }: FieldProps<SelectBoxOption>) => ( {({ field, form }: FieldProps<SelectBoxOption>) => (
<Select <Select
@ -132,7 +132,7 @@ function FormTabDetails(
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DetailsTitle')} label={translate('::App.Listform.ListformField.Title')}
invalid={errors.title && touched.title} invalid={errors.title && touched.title}
errorMessage={errors.title} errorMessage={errors.title}
> >
@ -140,13 +140,13 @@ function FormTabDetails(
type="text" type="text"
autoComplete="off" autoComplete="off"
name="title" name="title"
placeholder={translate('::ListForms.ListFormEdit.DetailsTitle')} placeholder={translate('::App.Listform.ListformField.Title')}
component={Input} component={Input}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DetailsName')} label={translate('::App.ListFormEdit.DetailsName')}
invalid={errors.name && touched.name} invalid={errors.name && touched.name}
errorMessage={errors.name} errorMessage={errors.name}
> >
@ -154,13 +154,13 @@ function FormTabDetails(
type="text" type="text"
autoComplete="off" autoComplete="off"
name="name" name="name"
placeholder={translate('::ListForms.ListFormEdit.DetailsName')} placeholder={translate('::App.ListFormEdit.DetailsName')}
component={Input} component={Input}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DetailsDescription')} label={translate('::App.Listform.ListformField.Description')}
invalid={errors.description && touched.description} invalid={errors.description && touched.description}
errorMessage={errors.description} errorMessage={errors.description}
> >
@ -168,19 +168,19 @@ function FormTabDetails(
type="text" type="text"
autoComplete="off" autoComplete="off"
name="description" name="description"
placeholder={translate('::ListForms.ListFormEdit.DetailsDescription')} placeholder={translate('::App.Listform.ListformField.Description')}
component={Input} component={Input}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.ShowNote')} label={translate('::App.ListFormEdit.ShowNote')}
invalid={errors.showNote && touched.showNote} invalid={errors.showNote && touched.showNote}
errorMessage={errors.showNote} errorMessage={errors.showNote}
> >
<Field <Field
name="showNote" name="showNote"
placeholder={translate('::ListForms.ListFormEdit.ShowNote')} placeholder={translate('::App.ListFormEdit.ShowNote')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
@ -188,7 +188,7 @@ function FormTabDetails(
<Card className="my-2" header="Layout & Popup"> <Card className="my-2" header="Layout & Popup">
<div className="flex gap-2"> <div className="flex gap-2">
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DetailsWidth')} label={translate('::App.ListFormEdit.DetailsWidth')}
invalid={errors.width && touched.width} invalid={errors.width && touched.width}
errorMessage={errors.width} errorMessage={errors.width}
> >
@ -197,12 +197,12 @@ function FormTabDetails(
type="number" type="number"
autoComplete="off" autoComplete="off"
name="width" name="width"
placeholder={translate('::ListForms.ListFormEdit.DetailsWidth')} placeholder={translate('::App.ListFormEdit.DetailsWidth')}
component={Input} component={Input}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DetailsHeight')} label={translate('::App.ListFormEdit.DetailsHeight')}
invalid={errors.width && touched.width} invalid={errors.width && touched.width}
errorMessage={errors.width} errorMessage={errors.width}
> >
@ -211,37 +211,37 @@ function FormTabDetails(
type="number" type="number"
autoComplete="off" autoComplete="off"
name="height" name="height"
placeholder={translate('::ListForms.ListFormEdit.DetailsHeight')} placeholder={translate('::App.ListFormEdit.DetailsHeight')}
component={Input} component={Input}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DetailsFullHeight')} label={translate('::App.ListFormEdit.DetailsFullHeight')}
invalid={errors.fullHeight && touched.fullHeight} invalid={errors.fullHeight && touched.fullHeight}
errorMessage={errors.fullHeight} errorMessage={errors.fullHeight}
> >
<Field <Field
name="fullHeight" name="fullHeight"
placeholder={translate('::ListForms.ListFormEdit.DetailsFullHeight')} placeholder={translate('::App.ListFormEdit.DetailsFullHeight')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.IsSub')} label={translate('::App.ListFormEdit.IsSub')}
invalid={errors.isSubForm && touched.isSubForm} invalid={errors.isSubForm && touched.isSubForm}
errorMessage={errors.isSubForm} errorMessage={errors.isSubForm}
> >
<Field <Field
name="isSubForm" name="isSubForm"
placeholder={translate('::ListForms.ListFormEdit.IsSub')} placeholder={translate('::App.ListFormEdit.IsSub')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
</div> </div>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.SubFormsListFormType')} label={translate('::App.ListFormEdit.SubFormsListFormType')}
invalid={errors.subFormsListFormType && touched.subFormsListFormType} invalid={errors.subFormsListFormType && touched.subFormsListFormType}
errorMessage={errors.subFormsListFormType} errorMessage={errors.subFormsListFormType}
> >
@ -249,7 +249,7 @@ function FormTabDetails(
type="text" type="text"
autoComplete="off" autoComplete="off"
name="subFormsListFormType" name="subFormsListFormType"
placeholder={translate('::ListForms.ListFormEdit.SubFormsListFormType')} placeholder={translate('::App.ListFormEdit.SubFormsListFormType')}
> >
{({ field, form }: FieldProps<SelectBoxOption>) => ( {({ field, form }: FieldProps<SelectBoxOption>) => (
<Select <Select
@ -271,7 +271,7 @@ function FormTabDetails(
{values.listFormType === 'List' && ( {values.listFormType === 'List' && (
<> <>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DetailsLayoutDto.DefaultLayout')} label={translate('::App.ListFormEditDetailsLayoutDto.DefaultLayout')}
invalid={errors.layoutDto?.defaultLayout && touched.layoutDto?.defaultLayout} invalid={errors.layoutDto?.defaultLayout && touched.layoutDto?.defaultLayout}
errorMessage={errors.layoutDto?.defaultLayout} errorMessage={errors.layoutDto?.defaultLayout}
> >
@ -280,7 +280,7 @@ function FormTabDetails(
autoComplete="off" autoComplete="off"
name="layoutDto.defaultLayout" name="layoutDto.defaultLayout"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.DetailsLayoutDto.DefaultLayout', '::App.ListFormEditDetailsLayoutDto.DefaultLayout',
)} )}
> >
{({ field, form }: FieldProps<SelectBoxOption>) => ( {({ field, form }: FieldProps<SelectBoxOption>) => (
@ -300,7 +300,7 @@ function FormTabDetails(
<div className="flex flex-wrap gap-2"> <div className="flex flex-wrap gap-2">
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DetailsLayoutDto.GridLayout')} label={translate('::App.ListFormEditDetailsLayoutDto.GridLayout')}
invalid={errors.layoutDto?.grid && touched.layoutDto?.grid} invalid={errors.layoutDto?.grid && touched.layoutDto?.grid}
errorMessage={errors.layoutDto?.grid} errorMessage={errors.layoutDto?.grid}
> >
@ -309,14 +309,14 @@ function FormTabDetails(
autoComplete="off" autoComplete="off"
name="layoutDto.grid" name="layoutDto.grid"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.DetailsLayoutDto.GridLayout', '::App.ListFormEditDetailsLayoutDto.GridLayout',
)} )}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DetailsLayoutDto.CardLayout')} label={translate('::App.ListFormEditDetailsLayoutDto.CardLayout')}
invalid={errors.layoutDto?.card && touched.layoutDto?.card} invalid={errors.layoutDto?.card && touched.layoutDto?.card}
errorMessage={errors.layoutDto?.card} errorMessage={errors.layoutDto?.card}
> >
@ -325,14 +325,14 @@ function FormTabDetails(
autoComplete="off" autoComplete="off"
name="layoutDto.card" name="layoutDto.card"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.DetailsLayoutDto.CardLayout', '::App.ListFormEditDetailsLayoutDto.CardLayout',
)} )}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DetailsLayoutDto.PivotLayout')} label={translate('::App.ListFormEditDetailsLayoutDto.PivotLayout')}
invalid={errors.layoutDto?.pivot && touched.layoutDto?.pivot} invalid={errors.layoutDto?.pivot && touched.layoutDto?.pivot}
errorMessage={errors.layoutDto?.pivot} errorMessage={errors.layoutDto?.pivot}
> >
@ -341,14 +341,14 @@ function FormTabDetails(
autoComplete="off" autoComplete="off"
name="layoutDto.pivot" name="layoutDto.pivot"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.DetailsLayoutDto.PivotLayout', '::App.ListFormEditDetailsLayoutDto.PivotLayout',
)} )}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DetailsLayoutDto.ChartLayout')} label={translate('::App.ListFormEditDetailsLayoutDto.ChartLayout')}
invalid={errors.layoutDto?.chart && touched.layoutDto?.chart} invalid={errors.layoutDto?.chart && touched.layoutDto?.chart}
errorMessage={errors.layoutDto?.chart} errorMessage={errors.layoutDto?.chart}
> >
@ -357,14 +357,14 @@ function FormTabDetails(
autoComplete="off" autoComplete="off"
name="layoutDto.chart" name="layoutDto.chart"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.DetailsLayoutDto.ChartLayout', '::App.ListFormEditDetailsLayoutDto.ChartLayout',
)} )}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DetailsLayoutDto.TreeLayout')} label={translate('::App.ListFormEditDetailsLayoutDto.TreeLayout')}
invalid={errors.layoutDto?.tree && touched.layoutDto?.tree} invalid={errors.layoutDto?.tree && touched.layoutDto?.tree}
errorMessage={errors.layoutDto?.tree} errorMessage={errors.layoutDto?.tree}
> >
@ -373,14 +373,14 @@ function FormTabDetails(
autoComplete="off" autoComplete="off"
name="layoutDto.tree" name="layoutDto.tree"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.DetailsLayoutDto.TreeLayout', '::App.ListFormEditDetailsLayoutDto.TreeLayout',
)} )}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DetailsLayoutDto.GanttLayout')} label={translate('::App.ListFormEditDetailsLayoutDto.GanttLayout')}
invalid={errors.layoutDto?.gantt && touched.layoutDto?.gantt} invalid={errors.layoutDto?.gantt && touched.layoutDto?.gantt}
errorMessage={errors.layoutDto?.gantt} errorMessage={errors.layoutDto?.gantt}
> >
@ -389,7 +389,7 @@ function FormTabDetails(
autoComplete="off" autoComplete="off"
name="layoutDto.gantt" name="layoutDto.gantt"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.DetailsLayoutDto.GanttLayout', '::App.ListFormEditDetailsLayoutDto.GanttLayout',
)} )}
component={Checkbox} component={Checkbox}
/> />
@ -397,7 +397,7 @@ function FormTabDetails(
<FormItem <FormItem
label={translate( label={translate(
'::ListForms.ListFormEdit.DetailsLayoutDto.SchedulerLayout', '::App.ListFormEditDetailsLayoutDto.SchedulerLayout',
)} )}
invalid={errors.layoutDto?.scheduler && touched.layoutDto?.scheduler} invalid={errors.layoutDto?.scheduler && touched.layoutDto?.scheduler}
errorMessage={errors.layoutDto?.scheduler} errorMessage={errors.layoutDto?.scheduler}
@ -407,14 +407,14 @@ function FormTabDetails(
autoComplete="off" autoComplete="off"
name="layoutDto.scheduler" name="layoutDto.scheduler"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.DetailsLayoutDto.SchedulerLayout', '::App.ListFormEditDetailsLayoutDto.SchedulerLayout',
)} )}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DetailsLayoutDto.TodoLayout')} label={translate('::App.ListFormEditDetailsLayoutDto.TodoLayout')}
invalid={errors.layoutDto?.todo && touched.layoutDto?.todo} invalid={errors.layoutDto?.todo && touched.layoutDto?.todo}
errorMessage={errors.layoutDto?.todo} errorMessage={errors.layoutDto?.todo}
> >
@ -470,7 +470,7 @@ function FormTabDetails(
</div> </div>
<Button block size="sm" variant="solid" loading={isSubmitting} type="submit"> <Button block size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::Saving') : translate('::Save')} {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -46,7 +46,7 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
<div className="grid grid-cols-1 md:grid-cols-2 gap-3"> <div className="grid grid-cols-1 md:grid-cols-2 gap-3">
<div> <div>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.EditingAllowAdding')} label={translate('::App.ListFormSchedulerOptions.AllowAdding')}
invalid={ invalid={
errors.editingOptionDto?.allowAdding && errors.editingOptionDto?.allowAdding &&
touched.editingOptionDto?.allowAdding touched.editingOptionDto?.allowAdding
@ -55,12 +55,12 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
> >
<Field <Field
name="editingOptionDto.allowAdding" name="editingOptionDto.allowAdding"
placeholder={translate('::ListForms.ListFormEdit.EditingAllowAdding')} placeholder={translate('::App.ListFormSchedulerOptions.AllowAdding')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.EditingAddPageUrl')} label={translate('::App.ListFormEdit.EditingAddPageUrl')}
invalid={ invalid={
errors.editingOptionDto?.addPageUrl && errors.editingOptionDto?.addPageUrl &&
touched.editingOptionDto?.addPageUrl touched.editingOptionDto?.addPageUrl
@ -71,12 +71,12 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
type="text" type="text"
autoComplete="off" autoComplete="off"
name="editingOptionDto.addPageUrl" name="editingOptionDto.addPageUrl"
placeholder={translate('::ListForms.ListFormEdit.EditingAddPageUrl')} placeholder={translate('::App.ListFormEdit.EditingAddPageUrl')}
component={Input} component={Input}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.AllowUpdating')} label={translate('::App.ListFormEdit.AllowUpdating')}
invalid={ invalid={
errors.editingOptionDto?.allowUpdating && errors.editingOptionDto?.allowUpdating &&
touched.editingOptionDto?.allowUpdating touched.editingOptionDto?.allowUpdating
@ -85,13 +85,13 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
> >
<Field <Field
name="editingOptionDto.allowUpdating" name="editingOptionDto.allowUpdating"
placeholder={translate('::ListForms.ListFormEdit.AllowUpdating')} placeholder={translate('::App.ListFormEdit.AllowUpdating')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate( label={translate(
'::ListForms.ListFormEdit.SendOnlyChangedFormValuesUpdate', '::App.ListFormEdit.SendOnlyChangedFormValuesUpdate',
)} )}
invalid={ invalid={
errors.editingOptionDto?.sendOnlyChangedFormValuesUpdate && errors.editingOptionDto?.sendOnlyChangedFormValuesUpdate &&
@ -102,13 +102,13 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
<Field <Field
name="editingOptionDto.sendOnlyChangedFormValuesUpdate" name="editingOptionDto.sendOnlyChangedFormValuesUpdate"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.SendOnlyChangedFormValuesUpdate', '::App.ListFormEdit.SendOnlyChangedFormValuesUpdate',
)} )}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.EditingAllowDetail')} label={translate('::App.ListFormEdit.EditingAllowDetail')}
invalid={ invalid={
errors.editingOptionDto?.allowDetail && errors.editingOptionDto?.allowDetail &&
touched.editingOptionDto?.allowDetail touched.editingOptionDto?.allowDetail
@ -117,12 +117,12 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
> >
<Field <Field
name="editingOptionDto.allowDetail" name="editingOptionDto.allowDetail"
placeholder={translate('::ListForms.ListFormEdit.EditingAllowDetail')} placeholder={translate('::App.ListFormEdit.EditingAllowDetail')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.EditingAllowDuplicate')} label={translate('::App.ListFormEdit.EditingAllowDuplicate')}
invalid={ invalid={
errors.editingOptionDto?.allowDuplicate && errors.editingOptionDto?.allowDuplicate &&
touched.editingOptionDto?.allowDuplicate touched.editingOptionDto?.allowDuplicate
@ -131,12 +131,12 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
> >
<Field <Field
name="editingOptionDto.allowDuplicate" name="editingOptionDto.allowDuplicate"
placeholder={translate('::ListForms.ListFormEdit.EditingAllowDuplicate')} placeholder={translate('::App.ListFormEdit.EditingAllowDuplicate')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.EditingAllowDeleting')} label={translate('::App.ListFormEdit.EditingAllowDeleting')}
invalid={ invalid={
errors.editingOptionDto?.allowDeleting && errors.editingOptionDto?.allowDeleting &&
touched.editingOptionDto?.allowDeleting touched.editingOptionDto?.allowDeleting
@ -145,12 +145,12 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
> >
<Field <Field
name="editingOptionDto.allowDeleting" name="editingOptionDto.allowDeleting"
placeholder={translate('::ListForms.ListFormEdit.EditingAllowDeleting')} placeholder={translate('::App.ListFormEdit.EditingAllowDeleting')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.EditingAllowDeleteAll')} label={translate('::App.ListFormEdit.EditingAllowDeleteAll')}
invalid={ invalid={
errors.editingOptionDto?.allowAllDeleting && errors.editingOptionDto?.allowAllDeleting &&
touched.editingOptionDto?.allowAllDeleting touched.editingOptionDto?.allowAllDeleting
@ -159,7 +159,7 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
> >
<Field <Field
name="editingOptionDto.allowAllDeleting" name="editingOptionDto.allowAllDeleting"
placeholder={translate('::ListForms.ListFormEdit.EditingAllowDeleteAll')} placeholder={translate('::App.ListFormEdit.EditingAllowDeleteAll')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
@ -167,7 +167,7 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
<div> <div>
<div className="grid grid-cols-1 md:grid-cols-3 gap-3"> <div className="grid grid-cols-1 md:grid-cols-3 gap-3">
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.EditingConfirmDelete')} label={translate('::App.ListFormEdit.EditingConfirmDelete')}
invalid={ invalid={
errors.editingOptionDto?.confirmDelete && errors.editingOptionDto?.confirmDelete &&
touched.editingOptionDto?.confirmDelete touched.editingOptionDto?.confirmDelete
@ -176,12 +176,12 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
> >
<Field <Field
name="editingOptionDto.confirmDelete" name="editingOptionDto.confirmDelete"
placeholder={translate('::ListForms.ListFormEdit.EditingConfirmDelete')} placeholder={translate('::App.ListFormEdit.EditingConfirmDelete')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.EditingUseIcons')} label={translate('::App.ListFormEdit.EditingUseIcons')}
invalid={ invalid={
errors.editingOptionDto?.useIcons && touched.editingOptionDto?.useIcons errors.editingOptionDto?.useIcons && touched.editingOptionDto?.useIcons
} }
@ -189,12 +189,12 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
> >
<Field <Field
name="editingOptionDto.useIcons" name="editingOptionDto.useIcons"
placeholder={translate('::ListForms.ListFormEdit.EditingUseIcons')} placeholder={translate('::App.ListFormEdit.EditingUseIcons')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.EditingSelectTextOnEditStart')} label={translate('::App.ListFormEdit.EditingSelectTextOnEditStart')}
invalid={ invalid={
errors.editingOptionDto?.selectTextOnEditStart && errors.editingOptionDto?.selectTextOnEditStart &&
touched.editingOptionDto?.selectTextOnEditStart touched.editingOptionDto?.selectTextOnEditStart
@ -204,14 +204,14 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
<Field <Field
name="editingOptionDto.selectTextOnEditStart" name="editingOptionDto.selectTextOnEditStart"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.EditingSelectTextOnEditStart', '::App.ListFormEdit.EditingSelectTextOnEditStart',
)} )}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
</div> </div>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.EditingMode')} label={translate('::App.ListFormEdit.EditingMode')}
invalid={errors.editingOptionDto?.mode && touched.editingOptionDto?.mode} invalid={errors.editingOptionDto?.mode && touched.editingOptionDto?.mode}
errorMessage={errors.editingOptionDto?.mode} errorMessage={errors.editingOptionDto?.mode}
> >
@ -219,7 +219,7 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
type="text" type="text"
autoComplete="off" autoComplete="off"
name="editingOptionDto.mode" name="editingOptionDto.mode"
placeholder={translate('::SidePanel.Mode')} placeholder={translate('::App.Platform.Mode')}
> >
{({ field, form }: FieldProps<GridsEditMode>) => ( {({ field, form }: FieldProps<GridsEditMode>) => (
<Select <Select
@ -236,7 +236,7 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
</Field> </Field>
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.EditingRefreshMode')} label={translate('::App.ListFormEdit.EditingRefreshMode')}
invalid={ invalid={
errors.editingOptionDto?.refreshMode && errors.editingOptionDto?.refreshMode &&
touched.editingOptionDto?.refreshMode touched.editingOptionDto?.refreshMode
@ -247,7 +247,7 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
type="text" type="text"
autoComplete="off" autoComplete="off"
name="editingOptionDto.refreshMode" name="editingOptionDto.refreshMode"
placeholder={translate('::ListForms.ListFormEdit.EditingRefreshMode')} placeholder={translate('::App.ListFormEdit.EditingRefreshMode')}
> >
{({ field, form }: FieldProps<GridsEditRefreshMode>) => ( {({ field, form }: FieldProps<GridsEditRefreshMode>) => (
<Select <Select
@ -264,7 +264,7 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
</Field> </Field>
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.EditingNewRowPosition')} label={translate('::App.ListFormEdit.EditingNewRowPosition')}
invalid={ invalid={
errors.editingOptionDto?.newRowPosition && errors.editingOptionDto?.newRowPosition &&
touched.editingOptionDto?.newRowPosition touched.editingOptionDto?.newRowPosition
@ -275,7 +275,7 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
type="text" type="text"
autoComplete="off" autoComplete="off"
name="editingOptionDto.newRowPosition" name="editingOptionDto.newRowPosition"
placeholder={translate('::ListForms.ListFormEdit.EditingNewRowPosition')} placeholder={translate('::App.ListFormEdit.EditingNewRowPosition')}
> >
{({ field, form }: FieldProps<NewRowPosition>) => ( {({ field, form }: FieldProps<NewRowPosition>) => (
<Select <Select
@ -292,7 +292,7 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
</Field> </Field>
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.EditingStartEditAction')} label={translate('::App.ListFormEdit.EditingStartEditAction')}
invalid={ invalid={
errors.editingOptionDto?.startEditAction && errors.editingOptionDto?.startEditAction &&
touched.editingOptionDto?.startEditAction touched.editingOptionDto?.startEditAction
@ -303,7 +303,7 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
type="text" type="text"
autoComplete="off" autoComplete="off"
name="editingOptionDto.startEditAction" name="editingOptionDto.startEditAction"
placeholder={translate('::ListForms.ListFormEdit.EditingStartEditAction')} placeholder={translate('::App.ListFormEdit.EditingStartEditAction')}
> >
{({ field, form }: FieldProps<StartEditAction>) => ( {({ field, form }: FieldProps<StartEditAction>) => (
<Select <Select
@ -321,7 +321,7 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
</Field> </Field>
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.EditingEditColumnName')} label={translate('::App.ListFormEdit.EditingEditColumnName')}
invalid={ invalid={
errors.editingOptionDto?.editColumnName && errors.editingOptionDto?.editColumnName &&
touched.editingOptionDto?.editColumnName touched.editingOptionDto?.editColumnName
@ -332,7 +332,7 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
type="text" type="text"
autoComplete="off" autoComplete="off"
name="editingOptionDto.editColumnName" name="editingOptionDto.editColumnName"
placeholder={translate('::ListForms.ListFormEdit.EditingEditColumnName')} placeholder={translate('::App.ListFormEdit.EditingEditColumnName')}
component={Input} component={Input}
/> />
</FormItem> </FormItem>
@ -343,7 +343,7 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
{values.editingOptionDto.mode === 'popup' && ( {values.editingOptionDto.mode === 'popup' && (
<> <>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.EditingShowTitle')} label={translate('::App.ListFormEdit.EditingShowTitle')}
invalid={ invalid={
errors.editingOptionDto?.popup?.showTitle && errors.editingOptionDto?.popup?.showTitle &&
touched.editingOptionDto?.popup?.showTitle touched.editingOptionDto?.popup?.showTitle
@ -352,12 +352,12 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
> >
<Field <Field
name="editingOptionDto.popup.showTitle" name="editingOptionDto.popup.showTitle"
placeholder={translate('::ListForms.ListFormEdit.EditingShowTitle')} placeholder={translate('::App.ListFormEdit.EditingShowTitle')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DetailsTitle')} label={translate('::App.Listform.ListformField.Title')}
invalid={ invalid={
errors.editingOptionDto?.popup?.title && errors.editingOptionDto?.popup?.title &&
touched.editingOptionDto?.popup?.title touched.editingOptionDto?.popup?.title
@ -368,12 +368,12 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
type="text" type="text"
autoComplete="off" autoComplete="off"
name="editingOptionDto.popup.title" name="editingOptionDto.popup.title"
placeholder={translate('::ListForms.ListFormEdit.DetailsTitle')} placeholder={translate('::App.Listform.ListformField.Title')}
component={Input} component={Input}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DetailsWidth')} label={translate('::App.ListFormEdit.DetailsWidth')}
invalid={ invalid={
errors.editingOptionDto?.popup?.width && errors.editingOptionDto?.popup?.width &&
touched.editingOptionDto?.popup?.width touched.editingOptionDto?.popup?.width
@ -385,12 +385,12 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
type="number" type="number"
autoComplete="off" autoComplete="off"
name="editingOptionDto.popup.width" name="editingOptionDto.popup.width"
placeholder={translate('::ListForms.ListFormEdit.DetailsWidth')} placeholder={translate('::App.ListFormEdit.DetailsWidth')}
component={Input} component={Input}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DetailsHeight')} label={translate('::App.ListFormEdit.DetailsHeight')}
invalid={ invalid={
errors.editingOptionDto?.popup?.height && errors.editingOptionDto?.popup?.height &&
touched.editingOptionDto?.popup?.height touched.editingOptionDto?.popup?.height
@ -402,12 +402,12 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
type="number" type="number"
autoComplete="off" autoComplete="off"
name="editingOptionDto.popup.height" name="editingOptionDto.popup.height"
placeholder={translate('::ListForms.ListFormEdit.DetailsHeight')} placeholder={translate('::App.ListFormEdit.DetailsHeight')}
component={Input} component={Input}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.EditingFullScreen')} label={translate('::App.Platform.Fullscreen')}
invalid={ invalid={
errors.editingOptionDto?.popup?.fullScreen && errors.editingOptionDto?.popup?.fullScreen &&
touched.editingOptionDto?.popup?.fullScreen touched.editingOptionDto?.popup?.fullScreen
@ -416,12 +416,12 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
> >
<Field <Field
name="editingOptionDto.popup.fullScreen" name="editingOptionDto.popup.fullScreen"
placeholder={translate('::ListForms.ListFormEdit.EditingFullScreen')} placeholder={translate('::App.Platform.Fullscreen')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.ResizeEnabled')} label={translate('::App.ListFormEdit.ResizeEnabled')}
invalid={ invalid={
errors.editingOptionDto?.popup?.resizeEnabled && errors.editingOptionDto?.popup?.resizeEnabled &&
touched.editingOptionDto?.popup?.resizeEnabled touched.editingOptionDto?.popup?.resizeEnabled
@ -430,12 +430,12 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
> >
<Field <Field
name="editingOptionDto.popup.resizeEnabled" name="editingOptionDto.popup.resizeEnabled"
placeholder={translate('::ListForms.ListFormEdit.ResizeEnabled')} placeholder={translate('::App.ListFormEdit.ResizeEnabled')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.EditingHideOnOutsideClick')} label={translate('::App.ListFormEdit.EditingHideOnOutsideClick')}
invalid={ invalid={
errors.editingOptionDto?.popup?.hideOnOutsideClick && errors.editingOptionDto?.popup?.hideOnOutsideClick &&
touched.editingOptionDto?.popup?.hideOnOutsideClick touched.editingOptionDto?.popup?.hideOnOutsideClick
@ -445,7 +445,7 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
<Field <Field
name="editingOptionDto.popup.hideOnOutsideClick" name="editingOptionDto.popup.hideOnOutsideClick"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.EditingHideOnOutsideClick', '::App.ListFormEdit.EditingHideOnOutsideClick',
)} )}
component={Checkbox} component={Checkbox}
/> />
@ -455,7 +455,7 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
</Card> </Card>
</div> </div>
<Button block size="sm" variant="solid" loading={isSubmitting}> <Button block size="sm" variant="solid" loading={isSubmitting}>
{isSubmitting ? translate('::Saving') : translate('::Save')} {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -28,8 +28,8 @@ function FormTabEditForm(props: { listFormCode: string }) {
<Card <Card
className="my-2" className="my-2"
bodyClass="p-0" bodyClass="p-0"
header={translate('::ListForms.ListFormEdit.EditingFormFormFields')} header={translate('::App.ListFormEdit.EditingFormFormFields')}
headerExtra={translate('::ListForms.ListFormEdit.EditingFormFormFieldsDescription')} headerExtra={translate('::App.ListFormEdit.EditingFormFormFieldsDescription')}
> >
<Table compact> <Table compact>
<THead> <THead>
@ -55,10 +55,10 @@ function FormTabEditForm(props: { listFormCode: string }) {
/> />
</Th> </Th>
<Th>{translate('::App.Listform.ListformField.Order')}</Th> <Th>{translate('::App.Listform.ListformField.Order')}</Th>
<Th>{translate('::ListForms.ListFormEdit.EditingFormItemType')}</Th> <Th>{translate('::App.ListFormEdit.EditingFormItemType')}</Th>
<Th>{translate('::ListForms.ListFormEdit.DetailsTitle')}</Th> <Th>{translate('::App.Listform.ListformField.Title')}</Th>
<Th>{translate('::ListForms.ListFormEdit.EditingFormColumnCount')}</Th> <Th>{translate('::App.ListFormEdit.EditingFormColumnCount')}</Th>
<Th>{translate('::ListForms.ListFormEdit.EditingFormColumnSpan')}</Th> <Th>{translate('::App.ListFormEdit.EditingFormColumnSpan')}</Th>
</Tr> </Tr>
</THead> </THead>
<TBody> <TBody>

View file

@ -28,8 +28,8 @@ function FormTabExtraFilters(props: { listFormCode: string }) {
<Card <Card
className="my-2" className="my-2"
bodyClass="p-0" bodyClass="p-0"
header={translate('::ListForms.ListFormEdit.ExtraFilters')} header={translate('::App.ListFormEdit.ExtraFilters')}
headerExtra={translate('::ListForms.ListFormEdit.ExtraFiltersDescription')} headerExtra={translate('::App.ListFormEdit.ExtraFiltersDescription')}
> >
<Table compact> <Table compact>
<THead> <THead>
@ -54,12 +54,12 @@ function FormTabExtraFilters(props: { listFormCode: string }) {
}} }}
/> />
</Th> </Th>
<Th>{translate('::ListForms.ListFormFieldEdit.FieldName')}</Th> <Th>{translate('::App.ListFormFieldEdit.FieldName')}</Th>
<Th>{translate('::ListForms.ListFormEdit.DetailsTitle')}</Th> <Th>{translate('::App.Listform.ListformField.Title')}</Th>
<Th>{translate('::ListForms.ListFormEdit.ExtraOperator')}</Th> <Th>{translate('::App.Listform.ListformField.Operator')}</Th>
<Th>{translate('::ListForms.ListFormEdit.ExtraDefaultValue')}</Th> <Th>{translate('::App.Listform.ListformField.DefaultValue')}</Th>
<Th>{translate('::ListForms.ListFormEdit.ExtraControlType')}</Th> <Th>{translate('::App.ListFormEdit.ExtraControlType')}</Th>
<Th>{translate('::ListForms.ListFormEdit.SqlQuery')}</Th> <Th>{translate('::App.ListFormEdit.SqlQuery')}</Th>
</Tr> </Tr>
</THead> </THead>
<TBody> <TBody>

View file

@ -47,31 +47,31 @@ function FormTabFilters(props: FormEditProps) {
<Tabs defaultValue="tabRowFilter"> <Tabs defaultValue="tabRowFilter">
<TabList className="flex-wrap my-3"> <TabList className="flex-wrap my-3">
<TabNav value="tabRowFilter"> <TabNav value="tabRowFilter">
{translate('::ListForms.ListFormEdit.FilteringSortingFilterRow')} {translate('::App.ListFormEdit.FilteringSortingFilterRow')}
</TabNav> </TabNav>
<TabNav value="tabHeaderFilter"> <TabNav value="tabHeaderFilter">
{translate('::ListForms.ListFormEdit.FilteringSortingHeaderFilter')} {translate('::App.ListFormEdit.FilteringSortingHeaderFilter')}
</TabNav> </TabNav>
<TabNav value="tabFilterPanel"> <TabNav value="tabFilterPanel">
{translate('::ListForms.ListFormEdit.FilteringSortingFilterPanel')} {translate('::App.ListFormEdit.FilteringSortingFilterPanel')}
</TabNav> </TabNav>
</TabList> </TabList>
<TabContent value="tabRowFilter"> <TabContent value="tabRowFilter">
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.FilteringSortingFilterRowVisible')} label={translate('::App.ListFormEdit.FilteringSortingFilterRowVisible')}
invalid={errors.filterRowDto?.visible && touched.filterRowDto?.visible} invalid={errors.filterRowDto?.visible && touched.filterRowDto?.visible}
errorMessage={errors.filterRowDto?.visible} errorMessage={errors.filterRowDto?.visible}
> >
<Field <Field
name="filterRowDto.visible" name="filterRowDto.visible"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.FilteringSortingFilterRowVisible', '::App.ListFormEdit.FilteringSortingFilterRowVisible',
)} )}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.FilteringSortingApplyFilter')} label={translate('::App.ListFormEdit.FilteringSortingApplyFilter')}
invalid={errors.filterRowDto?.applyFilter && touched.filterRowDto?.applyFilter} invalid={errors.filterRowDto?.applyFilter && touched.filterRowDto?.applyFilter}
errorMessage={errors.filterRowDto?.applyFilter} errorMessage={errors.filterRowDto?.applyFilter}
> >
@ -80,7 +80,7 @@ function FormTabFilters(props: FormEditProps) {
autoComplete="off" autoComplete="off"
name="filterRowDto.applyFilter" name="filterRowDto.applyFilter"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.FilteringSortingApplyFilter', '::App.ListFormEdit.FilteringSortingApplyFilter',
)} )}
> >
{({ field, form }: FieldProps<ApplyFilterMode>) => ( {({ field, form }: FieldProps<ApplyFilterMode>) => (
@ -99,7 +99,7 @@ function FormTabFilters(props: FormEditProps) {
</FormItem> </FormItem>
<FormItem <FormItem
label={translate( label={translate(
'::ListForms.ListFormEdit.FilteringSortingAllowUserUIFilterSave', '::App.ListFormEdit.FilteringSortingAllowUserUIFilterSave',
)} )}
invalid={ invalid={
errors.filterRowDto?.allowUserUiFilterSave && errors.filterRowDto?.allowUserUiFilterSave &&
@ -110,7 +110,7 @@ function FormTabFilters(props: FormEditProps) {
<Field <Field
name="filterRowDto.allowUserUiFilterSave" name="filterRowDto.allowUserUiFilterSave"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.FilteringSortingAllowUserUIFilterSave', '::App.ListFormEdit.FilteringSortingAllowUserUIFilterSave',
)} )}
component={Checkbox} component={Checkbox}
/> />
@ -119,7 +119,7 @@ function FormTabFilters(props: FormEditProps) {
<TabContent value="tabHeaderFilter"> <TabContent value="tabHeaderFilter">
<FormItem <FormItem
label={translate( label={translate(
'::ListForms.ListFormEdit.FilteringSortingHeaderFilterVisible', '::App.ListFormEdit.FilteringSortingHeaderFilterVisible',
)} )}
invalid={errors.headerFilterDto?.visible && touched.headerFilterDto?.visible} invalid={errors.headerFilterDto?.visible && touched.headerFilterDto?.visible}
errorMessage={errors.headerFilterDto?.visible} errorMessage={errors.headerFilterDto?.visible}
@ -127,13 +127,13 @@ function FormTabFilters(props: FormEditProps) {
<Field <Field
name="headerFilterDto.visible" name="headerFilterDto.visible"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.FilteringSortingHeaderFilterVisible', '::App.ListFormEdit.FilteringSortingHeaderFilterVisible',
)} )}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormFieldEdit.HeaderingAllowSearch')} label={translate('::App.ListFormFieldEdit.HeaderingAllowSearch')}
invalid={ invalid={
errors.headerFilterDto?.allowSearch && touched.headerFilterDto?.allowSearch errors.headerFilterDto?.allowSearch && touched.headerFilterDto?.allowSearch
} }
@ -141,12 +141,12 @@ function FormTabFilters(props: FormEditProps) {
> >
<Field <Field
name="headerFilterDto.allowSearch" name="headerFilterDto.allowSearch"
placeholder={translate('::ListForms.ListFormFieldEdit.HeaderingAllowSearch')} placeholder={translate('::App.ListFormFieldEdit.HeaderingAllowSearch')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DetailsWidth')} label={translate('::App.ListFormEdit.DetailsWidth')}
invalid={errors.headerFilterDto?.width && touched.headerFilterDto?.width} invalid={errors.headerFilterDto?.width && touched.headerFilterDto?.width}
errorMessage={errors.headerFilterDto?.width} errorMessage={errors.headerFilterDto?.width}
> >
@ -155,12 +155,12 @@ function FormTabFilters(props: FormEditProps) {
type="number" type="number"
autoComplete="off" autoComplete="off"
name="headerFilterDto.width" name="headerFilterDto.width"
placeholder={translate('::ListForms.ListFormEdit.DetailsWidth')} placeholder={translate('::App.ListFormEdit.DetailsWidth')}
component={Input} component={Input}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.DetailsHeight')} label={translate('::App.ListFormEdit.DetailsHeight')}
invalid={errors.headerFilterDto?.height && touched.headerFilterDto?.height} invalid={errors.headerFilterDto?.height && touched.headerFilterDto?.height}
errorMessage={errors.headerFilterDto?.height} errorMessage={errors.headerFilterDto?.height}
> >
@ -169,13 +169,13 @@ function FormTabFilters(props: FormEditProps) {
type="number" type="number"
autoComplete="off" autoComplete="off"
name="headerFilterDto.height" name="headerFilterDto.height"
placeholder={translate('::ListForms.ListFormEdit.DetailsHeight')} placeholder={translate('::App.ListFormEdit.DetailsHeight')}
component={Input} component={Input}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate( label={translate(
'::ListForms.ListFormEdit.FilteringSortingHeaderFilterSearchTimeout', '::App.ListFormEdit.FilteringSortingHeaderFilterSearchTimeout',
)} )}
invalid={ invalid={
errors.headerFilterDto?.searchTimeout && errors.headerFilterDto?.searchTimeout &&
@ -189,7 +189,7 @@ function FormTabFilters(props: FormEditProps) {
autoComplete="off" autoComplete="off"
name="headerFilterDto.searchTimeout" name="headerFilterDto.searchTimeout"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.FilteringSortingHeaderFilterSearchTimeout', '::App.ListFormEdit.FilteringSortingHeaderFilterSearchTimeout',
)} )}
component={Input} component={Input}
/> />
@ -197,21 +197,21 @@ function FormTabFilters(props: FormEditProps) {
</TabContent> </TabContent>
<TabContent value="tabFilterPanel"> <TabContent value="tabFilterPanel">
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.FilteringSortingFilterPanelVisible')} label={translate('::App.ListFormEdit.FilteringSortingFilterPanelVisible')}
invalid={errors.filterPanelDto?.visible && touched.filterPanelDto?.visible} invalid={errors.filterPanelDto?.visible && touched.filterPanelDto?.visible}
errorMessage={errors.filterPanelDto?.visible} errorMessage={errors.filterPanelDto?.visible}
> >
<Field <Field
name="filterPanelDto.visible" name="filterPanelDto.visible"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.FilteringSortingFilterPanelVisible', '::App.ListFormEdit.FilteringSortingFilterPanelVisible',
)} )}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate( label={translate(
'::ListForms.ListFormEdit.FilteringSortingFilterPanelFilterEnabled', '::App.ListFormEdit.FilteringSortingFilterPanelFilterEnabled',
)} )}
invalid={ invalid={
errors.filterPanelDto?.filterEnabled && touched.filterPanelDto?.filterEnabled errors.filterPanelDto?.filterEnabled && touched.filterPanelDto?.filterEnabled
@ -221,14 +221,14 @@ function FormTabFilters(props: FormEditProps) {
<Field <Field
name="filterPanelDto.filterEnabled" name="filterPanelDto.filterEnabled"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.FilteringSortingFilterPanelFilterEnabled', '::App.ListFormEdit.FilteringSortingFilterPanelFilterEnabled',
)} )}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate( label={translate(
'::ListForms.ListFormEdit.FilteringSortingTexts.FilterEnabledHint', '::App.ListFormEditFilteringSortingTexts.FilterEnabledHint',
)} )}
invalid={ invalid={
errors.filterPanelDto?.texts?.filterEnabledHint && errors.filterPanelDto?.texts?.filterEnabledHint &&
@ -241,26 +241,26 @@ function FormTabFilters(props: FormEditProps) {
autoComplete="off" autoComplete="off"
name="filterPanelDto.texts.filterEnabledHint" name="filterPanelDto.texts.filterEnabledHint"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.FilteringSortingTexts.FilterEnabledHint', '::App.ListFormEditFilteringSortingTexts.FilterEnabledHint',
)} )}
component={Input} component={Input}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate( label={translate(
'::ListForms.ListFormEdit.FilteringSortingFilterPanelCustomizeText', '::App.ListFormEdit.FilteringSortingFilterPanelCustomizeText',
)} )}
> >
<Field <Field
name="filterPanelDto.customizeText" name="filterPanelDto.customizeText"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.FilteringSortingFilterPanelCustomizeText', '::App.ListFormEdit.FilteringSortingFilterPanelCustomizeText',
)} )}
component={Input} component={Input}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.FilteringSortingTexts.ClearFilter')} label={translate('::App.ListFormEditFilteringSortingTexts.ClearFilter')}
invalid={ invalid={
errors.filterPanelDto?.texts?.clearFilter && errors.filterPanelDto?.texts?.clearFilter &&
touched.filterPanelDto?.texts?.clearFilter touched.filterPanelDto?.texts?.clearFilter
@ -272,13 +272,13 @@ function FormTabFilters(props: FormEditProps) {
autoComplete="off" autoComplete="off"
name="filterPanelDto.texts.clearFilter" name="filterPanelDto.texts.clearFilter"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.FilteringSortingTexts.ClearFilter', '::App.ListFormEditFilteringSortingTexts.ClearFilter',
)} )}
component={Input} component={Input}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.FilteringSortingTexts.CreateFilter')} label={translate('::App.ListFormEditFilteringSortingTexts.CreateFilter')}
invalid={ invalid={
errors.filterPanelDto?.texts?.createFilter && errors.filterPanelDto?.texts?.createFilter &&
touched.filterPanelDto?.texts?.createFilter touched.filterPanelDto?.texts?.createFilter
@ -290,7 +290,7 @@ function FormTabFilters(props: FormEditProps) {
autoComplete="off" autoComplete="off"
name="filterPanelDto.texts.createFilter" name="filterPanelDto.texts.createFilter"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.FilteringSortingTexts.CreateFilter', '::App.ListFormEditFilteringSortingTexts.CreateFilter',
)} )}
component={Input} component={Input}
/> />
@ -299,7 +299,7 @@ function FormTabFilters(props: FormEditProps) {
</Tabs> </Tabs>
<Button block size="sm" variant="solid" loading={isSubmitting} type="submit"> <Button block size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::Saving') : translate('::Save')} {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -86,7 +86,7 @@ function FormTabGantt(props: FormEditProps) {
<div className="grid grid-cols-1 md:grid-cols-2 gap-3"> <div className="grid grid-cols-1 md:grid-cols-2 gap-3">
<Card <Card
className="mt-4" className="mt-4"
header={translate('::ListForms.SchedulerOptions.BasicSettings')} header={translate('::App.ListFormSchedulerOptions.BasicSettings')}
> >
<div className="grid grid-cols-1 md:grid-cols-2 gap-3"> <div className="grid grid-cols-1 md:grid-cols-2 gap-3">
<div> <div>
@ -116,7 +116,7 @@ function FormTabGantt(props: FormEditProps) {
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.ParentIdExpr')} label={translate('::App.ListFormEdit.ParentIdExpr')}
invalid={ invalid={
errors.ganttOptionDto?.parentIdExpr && touched.ganttOptionDto?.parentIdExpr errors.ganttOptionDto?.parentIdExpr && touched.ganttOptionDto?.parentIdExpr
} }
@ -125,7 +125,7 @@ function FormTabGantt(props: FormEditProps) {
<Field <Field
type="text" type="text"
name="ganttOptionDto.parentIdExpr" name="ganttOptionDto.parentIdExpr"
placeholder={translate('::ListForms.ListFormEdit.ParentIdExpr')} placeholder={translate('::App.ListFormEdit.ParentIdExpr')}
> >
{({ field, form }: FieldProps<SelectBoxOption>) => ( {({ field, form }: FieldProps<SelectBoxOption>) => (
<Select <Select
@ -143,7 +143,7 @@ function FormTabGantt(props: FormEditProps) {
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.HasItemsExpr')} label={translate('::App.ListFormEdit.HasItemsExpr')}
invalid={ invalid={
errors.ganttOptionDto?.hasItemsExpr && touched.ganttOptionDto?.hasItemsExpr errors.ganttOptionDto?.hasItemsExpr && touched.ganttOptionDto?.hasItemsExpr
} }
@ -153,13 +153,13 @@ function FormTabGantt(props: FormEditProps) {
type="text" type="text"
autoComplete="off" autoComplete="off"
name="ganttOptionDto.hasItemsExpr" name="ganttOptionDto.hasItemsExpr"
placeholder={translate('::ListForms.ListFormEdit.HasItemsExpr')} placeholder={translate('::App.ListFormEdit.HasItemsExpr')}
component={Input} component={Input}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.RootValue')} label={translate('::App.ListFormEdit.RootValue')}
invalid={ invalid={
!!(errors.ganttOptionDto?.rootValue && touched.ganttOptionDto?.rootValue) !!(errors.ganttOptionDto?.rootValue && touched.ganttOptionDto?.rootValue)
} }
@ -169,13 +169,13 @@ function FormTabGantt(props: FormEditProps) {
type="text" type="text"
autoComplete="off" autoComplete="off"
name="ganttOptionDto.rootValue" name="ganttOptionDto.rootValue"
placeholder={translate('::ListForms.ListFormEdit.RootValue')} placeholder={translate('::App.ListFormEdit.RootValue')}
component={Input} component={Input}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.AutoExpandAll')} label={translate('::App.ListFormEdit.AutoExpandAll')}
invalid={ invalid={
errors.ganttOptionDto?.autoExpandAll && errors.ganttOptionDto?.autoExpandAll &&
touched.ganttOptionDto?.autoExpandAll touched.ganttOptionDto?.autoExpandAll
@ -184,13 +184,13 @@ function FormTabGantt(props: FormEditProps) {
> >
<Field <Field
name="ganttOptionDto.autoExpandAll" name="ganttOptionDto.autoExpandAll"
placeholder={translate('::ListForms.ListFormEdit.AutoExpandAll')} placeholder={translate('::App.ListFormEdit.AutoExpandAll')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.RecursiveSelection')} label={translate('::App.ListFormEdit.RecursiveSelection')}
invalid={ invalid={
errors.ganttOptionDto?.recursiveSelection && errors.ganttOptionDto?.recursiveSelection &&
touched.ganttOptionDto?.recursiveSelection touched.ganttOptionDto?.recursiveSelection
@ -199,14 +199,14 @@ function FormTabGantt(props: FormEditProps) {
> >
<Field <Field
name="ganttOptionDto.recursiveSelection" name="ganttOptionDto.recursiveSelection"
placeholder={translate('::ListForms.ListFormEdit.RecursiveSelection')} placeholder={translate('::App.ListFormEdit.RecursiveSelection')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
</div> </div>
<div> <div>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.ScaleType')} label={translate('::App.ListFormEdit.ScaleType')}
invalid={ invalid={
errors.ganttOptionDto?.scaleType && touched.ganttOptionDto?.scaleType errors.ganttOptionDto?.scaleType && touched.ganttOptionDto?.scaleType
} }
@ -215,7 +215,7 @@ function FormTabGantt(props: FormEditProps) {
<Field <Field
type="text" type="text"
name="ganttOptionDto.scaleType" name="ganttOptionDto.scaleType"
placeholder={translate('::ListForms.ListFormEdit.ScaleType')} placeholder={translate('::App.ListFormEdit.ScaleType')}
> >
{({ field, form }: FieldProps<GanttScaleType>) => ( {({ field, form }: FieldProps<GanttScaleType>) => (
<Select <Select
@ -233,7 +233,7 @@ function FormTabGantt(props: FormEditProps) {
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.TitleExpr')} label={translate('::App.ListFormEdit.TitleExpr')}
invalid={ invalid={
errors.ganttOptionDto?.titleExpr && touched.ganttOptionDto?.titleExpr errors.ganttOptionDto?.titleExpr && touched.ganttOptionDto?.titleExpr
} }
@ -242,7 +242,7 @@ function FormTabGantt(props: FormEditProps) {
<Field <Field
type="text" type="text"
name="ganttOptionDto.titleExpr" name="ganttOptionDto.titleExpr"
placeholder={translate('::ListForms.ListFormEdit.TitleExpr')} placeholder={translate('::App.ListFormEdit.TitleExpr')}
> >
{({ field, form }: FieldProps<SelectBoxOption>) => ( {({ field, form }: FieldProps<SelectBoxOption>) => (
<Select <Select
@ -260,7 +260,7 @@ function FormTabGantt(props: FormEditProps) {
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.StartExpr')} label={translate('::App.ListFormEdit.StartExpr')}
invalid={ invalid={
errors.ganttOptionDto?.startExpr && touched.ganttOptionDto?.startExpr errors.ganttOptionDto?.startExpr && touched.ganttOptionDto?.startExpr
} }
@ -269,7 +269,7 @@ function FormTabGantt(props: FormEditProps) {
<Field <Field
type="text" type="text"
name="ganttOptionDto.startExpr" name="ganttOptionDto.startExpr"
placeholder={translate('::ListForms.ListFormEdit.StartExpr')} placeholder={translate('::App.ListFormEdit.StartExpr')}
> >
{({ field, form }: FieldProps<SelectBoxOption>) => ( {({ field, form }: FieldProps<SelectBoxOption>) => (
<Select <Select
@ -287,14 +287,14 @@ function FormTabGantt(props: FormEditProps) {
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.EndExpr')} label={translate('::App.ListFormEdit.EndExpr')}
invalid={errors.ganttOptionDto?.endExpr && touched.ganttOptionDto?.endExpr} invalid={errors.ganttOptionDto?.endExpr && touched.ganttOptionDto?.endExpr}
errorMessage={errors.ganttOptionDto?.endExpr} errorMessage={errors.ganttOptionDto?.endExpr}
> >
<Field <Field
type="text" type="text"
name="ganttOptionDto.endExpr" name="ganttOptionDto.endExpr"
placeholder={translate('::ListForms.ListFormEdit.EndExpr')} placeholder={translate('::App.ListFormEdit.EndExpr')}
> >
{({ field, form }: FieldProps<SelectBoxOption>) => ( {({ field, form }: FieldProps<SelectBoxOption>) => (
<Select <Select
@ -312,7 +312,7 @@ function FormTabGantt(props: FormEditProps) {
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.ProgressExpr')} label={translate('::App.ListFormEdit.ProgressExpr')}
invalid={ invalid={
errors.ganttOptionDto?.progressExpr && touched.ganttOptionDto?.progressExpr errors.ganttOptionDto?.progressExpr && touched.ganttOptionDto?.progressExpr
} }
@ -321,7 +321,7 @@ function FormTabGantt(props: FormEditProps) {
<Field <Field
type="text" type="text"
name="ganttOptionDto.progressExpr" name="ganttOptionDto.progressExpr"
placeholder={translate('::ListForms.ListFormEdit.ProgressExpr')} placeholder={translate('::App.ListFormEdit.ProgressExpr')}
> >
{({ field, form }: FieldProps<SelectBoxOption>) => ( {({ field, form }: FieldProps<SelectBoxOption>) => (
<Select <Select
@ -343,12 +343,12 @@ function FormTabGantt(props: FormEditProps) {
<Card <Card
className="mt-4" className="mt-4"
header={translate('::ListForms.SchedulerOptions.InteractionSettings')} header={translate('::App.ListFormSchedulerOptions.InteractionSettings')}
> >
<div className="grid grid-cols-1 md:grid-cols-2 gap-3"> <div className="grid grid-cols-1 md:grid-cols-2 gap-3">
<div> <div>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.AllowEditing')} label={translate('::App.ListFormEdit.AllowEditing')}
invalid={ invalid={
errors.ganttOptionDto?.allowEditing && touched.ganttOptionDto?.allowEditing errors.ganttOptionDto?.allowEditing && touched.ganttOptionDto?.allowEditing
} }
@ -356,13 +356,13 @@ function FormTabGantt(props: FormEditProps) {
> >
<Field <Field
name="ganttOptionDto.allowEditing" name="ganttOptionDto.allowEditing"
placeholder={translate('::ListForms.ListFormEdit.AllowEditing')} placeholder={translate('::App.ListFormEdit.AllowEditing')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.AllowTaskUpdating')} label={translate('::App.ListFormEdit.AllowTaskUpdating')}
invalid={ invalid={
errors.ganttOptionDto?.allowTaskUpdating && errors.ganttOptionDto?.allowTaskUpdating &&
touched.ganttOptionDto?.allowTaskUpdating touched.ganttOptionDto?.allowTaskUpdating
@ -371,13 +371,13 @@ function FormTabGantt(props: FormEditProps) {
> >
<Field <Field
name="ganttOptionDto.allowTaskUpdating" name="ganttOptionDto.allowTaskUpdating"
placeholder={translate('::ListForms.ListFormEdit.AllowTaskUpdating')} placeholder={translate('::App.ListFormEdit.AllowTaskUpdating')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.AllowDependencyAdding')} label={translate('::App.ListFormEdit.AllowDependencyAdding')}
invalid={ invalid={
errors.ganttOptionDto?.allowDependencyAdding && errors.ganttOptionDto?.allowDependencyAdding &&
touched.ganttOptionDto?.allowDependencyAdding touched.ganttOptionDto?.allowDependencyAdding
@ -386,13 +386,13 @@ function FormTabGantt(props: FormEditProps) {
> >
<Field <Field
name="ganttOptionDto.allowDependencyAdding" name="ganttOptionDto.allowDependencyAdding"
placeholder={translate('::ListForms.ListFormEdit.AllowDependencyAdding')} placeholder={translate('::App.ListFormEdit.AllowDependencyAdding')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.AllowResourceAdding')} label={translate('::App.ListFormEdit.AllowResourceAdding')}
invalid={ invalid={
errors.ganttOptionDto?.allowResourceAdding && errors.ganttOptionDto?.allowResourceAdding &&
touched.ganttOptionDto?.allowResourceAdding touched.ganttOptionDto?.allowResourceAdding
@ -401,13 +401,13 @@ function FormTabGantt(props: FormEditProps) {
> >
<Field <Field
name="ganttOptionDto.allowResourceAdding" name="ganttOptionDto.allowResourceAdding"
placeholder={translate('::ListForms.ListFormEdit.AllowResourceAdding')} placeholder={translate('::App.ListFormEdit.AllowResourceAdding')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.AllowResourceDeleting')} label={translate('::App.ListFormEdit.AllowResourceDeleting')}
invalid={ invalid={
errors.ganttOptionDto?.allowResourceDeleting && errors.ganttOptionDto?.allowResourceDeleting &&
touched.ganttOptionDto?.allowResourceDeleting touched.ganttOptionDto?.allowResourceDeleting
@ -416,14 +416,14 @@ function FormTabGantt(props: FormEditProps) {
> >
<Field <Field
name="ganttOptionDto.allowResourceDeleting" name="ganttOptionDto.allowResourceDeleting"
placeholder={translate('::ListForms.ListFormEdit.AllowResourceDeleting')} placeholder={translate('::App.ListFormEdit.AllowResourceDeleting')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
</div> </div>
<div> <div>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.AllowTaskAdding')} label={translate('::App.ListFormEdit.AllowTaskAdding')}
invalid={ invalid={
errors.ganttOptionDto?.allowTaskAdding && errors.ganttOptionDto?.allowTaskAdding &&
touched.ganttOptionDto?.allowTaskAdding touched.ganttOptionDto?.allowTaskAdding
@ -432,13 +432,13 @@ function FormTabGantt(props: FormEditProps) {
> >
<Field <Field
name="ganttOptionDto.allowTaskAdding" name="ganttOptionDto.allowTaskAdding"
placeholder={translate('::ListForms.ListFormEdit.AllowTaskAdding')} placeholder={translate('::App.ListFormEdit.AllowTaskAdding')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.AllowTaskDeleting')} label={translate('::App.ListFormEdit.AllowTaskDeleting')}
invalid={ invalid={
errors.ganttOptionDto?.allowTaskDeleting && errors.ganttOptionDto?.allowTaskDeleting &&
touched.ganttOptionDto?.allowTaskDeleting touched.ganttOptionDto?.allowTaskDeleting
@ -447,13 +447,13 @@ function FormTabGantt(props: FormEditProps) {
> >
<Field <Field
name="ganttOptionDto.allowTaskDeleting" name="ganttOptionDto.allowTaskDeleting"
placeholder={translate('::ListForms.ListFormEdit.AllowTaskDeleting')} placeholder={translate('::App.ListFormEdit.AllowTaskDeleting')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.AllowDependencyDeleting')} label={translate('::App.ListFormEdit.AllowDependencyDeleting')}
invalid={ invalid={
errors.ganttOptionDto?.allowDependencyDeleting && errors.ganttOptionDto?.allowDependencyDeleting &&
touched.ganttOptionDto?.allowDependencyDeleting touched.ganttOptionDto?.allowDependencyDeleting
@ -462,13 +462,13 @@ function FormTabGantt(props: FormEditProps) {
> >
<Field <Field
name="ganttOptionDto.allowDependencyDeleting" name="ganttOptionDto.allowDependencyDeleting"
placeholder={translate('::ListForms.ListFormEdit.AllowDependencyDeleting')} placeholder={translate('::App.ListFormEdit.AllowDependencyDeleting')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.AllowResourceUpdating')} label={translate('::App.ListFormEdit.AllowResourceUpdating')}
invalid={ invalid={
errors.ganttOptionDto?.allowResourceUpdating && errors.ganttOptionDto?.allowResourceUpdating &&
touched.ganttOptionDto?.allowResourceUpdating touched.ganttOptionDto?.allowResourceUpdating
@ -477,13 +477,13 @@ function FormTabGantt(props: FormEditProps) {
> >
<Field <Field
name="ganttOptionDto.allowResourceUpdating" name="ganttOptionDto.allowResourceUpdating"
placeholder={translate('::ListForms.ListFormEdit.AllowResourceUpdating')} placeholder={translate('::App.ListFormEdit.AllowResourceUpdating')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.AllowTaskResourceUpdating')} label={translate('::App.ListFormEdit.AllowTaskResourceUpdating')}
invalid={ invalid={
errors.ganttOptionDto?.allowTaskResourceUpdating && errors.ganttOptionDto?.allowTaskResourceUpdating &&
touched.ganttOptionDto?.allowTaskResourceUpdating touched.ganttOptionDto?.allowTaskResourceUpdating
@ -493,7 +493,7 @@ function FormTabGantt(props: FormEditProps) {
<Field <Field
name="ganttOptionDto.allowTaskResourceUpdating" name="ganttOptionDto.allowTaskResourceUpdating"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.AllowTaskResourceUpdating', '::App.ListFormEdit.AllowTaskResourceUpdating',
)} )}
component={Checkbox} component={Checkbox}
/> />
@ -511,7 +511,7 @@ function FormTabGantt(props: FormEditProps) {
type="submit" type="submit"
className="my-2" className="my-2"
> >
{isSubmitting ? translate('::Saving') : translate('::Save')} {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -30,18 +30,18 @@ function FormTabGroup(props: FormEditProps) {
<Form> <Form>
<FormContainer size="sm"> <FormContainer size="sm">
<FormItem <FormItem
label={translate('::ListForms.ListFormFieldEdit.OptionsVisible')} label={translate('::App.ListFormEdit.CommandVisible')}
invalid={errors.groupPanelDto?.visible && touched.groupPanelDto?.visible} invalid={errors.groupPanelDto?.visible && touched.groupPanelDto?.visible}
errorMessage={errors.groupPanelDto?.visible} errorMessage={errors.groupPanelDto?.visible}
> >
<Field <Field
name="groupPanelDto.visible" name="groupPanelDto.visible"
placeholder={translate('::ListForms.ListFormFieldEdit.OptionsVisible')} placeholder={translate('::App.ListFormEdit.CommandVisible')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.AutoExpandAll')} label={translate('::App.ListFormEdit.AutoExpandAll')}
invalid={ invalid={
errors.groupPanelDto?.autoExpandAll && touched.groupPanelDto?.autoExpandAll errors.groupPanelDto?.autoExpandAll && touched.groupPanelDto?.autoExpandAll
} }
@ -49,13 +49,13 @@ function FormTabGroup(props: FormEditProps) {
> >
<Field <Field
name="groupPanelDto.autoExpandAll" name="groupPanelDto.autoExpandAll"
placeholder={translate('::ListForms.ListFormEdit.AutoExpandAll')} placeholder={translate('::App.ListFormEdit.AutoExpandAll')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<Button block size="sm" variant="solid" loading={isSubmitting} type="submit"> <Button block size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::Saving') : translate('::Save')} {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -39,7 +39,7 @@ function FormTabPager(props: FormEditProps) {
<div className="grid grid-cols-1 md:grid-cols-2 gap-3"> <div className="grid grid-cols-1 md:grid-cols-2 gap-3">
<div className="my-2"> <div className="my-2">
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.PageSize')} label={translate('::App.ListFormEdit.PageSize')}
invalid={errors.pageSize && touched.pageSize} invalid={errors.pageSize && touched.pageSize}
errorMessage={errors.pageSize} errorMessage={errors.pageSize}
> >
@ -48,23 +48,23 @@ function FormTabPager(props: FormEditProps) {
className="w-20" className="w-20"
autoComplete="off" autoComplete="off"
name="pageSize" name="pageSize"
placeholder={translate('::ListForms.ListFormEdit.PageSize')} placeholder={translate('::App.ListFormEdit.PageSize')}
component={Input} component={Input}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormFieldEdit.OptionsVisible')} label={translate('::App.ListFormEdit.CommandVisible')}
invalid={errors.pagerOptionDto?.visible && touched.pagerOptionDto?.visible} invalid={errors.pagerOptionDto?.visible && touched.pagerOptionDto?.visible}
errorMessage={errors.pagerOptionDto?.visible} errorMessage={errors.pagerOptionDto?.visible}
> >
<Field <Field
name="pagerOptionDto.visible" name="pagerOptionDto.visible"
placeholder={translate('::ListForms.ListFormFieldEdit.OptionsVisible')} placeholder={translate('::App.ListFormEdit.CommandVisible')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.PagingShowPageSizeSelector')} label={translate('::App.ListFormEdit.PagingShowPageSizeSelector')}
invalid={ invalid={
errors.pagerOptionDto?.showPageSizeSelector && errors.pagerOptionDto?.showPageSizeSelector &&
touched.pagerOptionDto?.showPageSizeSelector touched.pagerOptionDto?.showPageSizeSelector
@ -73,23 +73,23 @@ function FormTabPager(props: FormEditProps) {
> >
<Field <Field
name="pagerOptionDto.showPageSizeSelector" name="pagerOptionDto.showPageSizeSelector"
placeholder={translate('::ListForms.ListFormEdit.PagingShowPageSizeSelector')} placeholder={translate('::App.ListFormEdit.PagingShowPageSizeSelector')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.PagingShowInfo')} label={translate('::App.ListFormEdit.PagingShowInfo')}
invalid={errors.pagerOptionDto?.showInfo && touched.pagerOptionDto?.showInfo} invalid={errors.pagerOptionDto?.showInfo && touched.pagerOptionDto?.showInfo}
errorMessage={errors.pagerOptionDto?.showInfo} errorMessage={errors.pagerOptionDto?.showInfo}
> >
<Field <Field
name="pagerOptionDto.showInfo" name="pagerOptionDto.showInfo"
placeholder={translate('::ListForms.ListFormEdit.PagingShowInfo')} placeholder={translate('::App.ListFormEdit.PagingShowInfo')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.PagingShowNavigationButtons')} label={translate('::App.ListFormEdit.PagingShowNavigationButtons')}
invalid={ invalid={
errors.pagerOptionDto?.showNavigationButtons && errors.pagerOptionDto?.showNavigationButtons &&
touched.pagerOptionDto?.showNavigationButtons touched.pagerOptionDto?.showNavigationButtons
@ -99,13 +99,13 @@ function FormTabPager(props: FormEditProps) {
<Field <Field
name="pagerOptionDto.showNavigationButtons" name="pagerOptionDto.showNavigationButtons"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.PagingShowNavigationButtons', '::App.ListFormEdit.PagingShowNavigationButtons',
)} )}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.PagingAllowedPageSizes')} label={translate('::App.ListFormEdit.PagingAllowedPageSizes')}
invalid={ invalid={
errors.pagerOptionDto?.allowedPageSizes && errors.pagerOptionDto?.allowedPageSizes &&
touched.pagerOptionDto?.allowedPageSizes touched.pagerOptionDto?.allowedPageSizes
@ -116,14 +116,14 @@ function FormTabPager(props: FormEditProps) {
type="text" type="text"
autoComplete="off" autoComplete="off"
name="pagerOptionDto.allowedPageSizes" name="pagerOptionDto.allowedPageSizes"
placeholder={translate('::ListForms.ListFormEdit.PagingAllowedPageSizes')} placeholder={translate('::App.ListFormEdit.PagingAllowedPageSizes')}
component={Input} component={Input}
/> />
</FormItem> </FormItem>
</div> </div>
<div className="my-2"> <div className="my-2">
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.PagingInfoText')} label={translate('::App.ListFormEdit.PagingInfoText')}
invalid={errors.pagerOptionDto?.infoText && touched.pagerOptionDto?.infoText} invalid={errors.pagerOptionDto?.infoText && touched.pagerOptionDto?.infoText}
errorMessage={errors.pagerOptionDto?.infoText} errorMessage={errors.pagerOptionDto?.infoText}
> >
@ -131,12 +131,12 @@ function FormTabPager(props: FormEditProps) {
type="text" type="text"
autoComplete="off" autoComplete="off"
name="pagerOptionDto.infoText" name="pagerOptionDto.infoText"
placeholder={translate('::ListForms.ListFormEdit.PagingInfoText')} placeholder={translate('::App.ListFormEdit.PagingInfoText')}
component={Input} component={Input}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.PagingDisplayMode')} label={translate('::App.ListFormEdit.PagingDisplayMode')}
invalid={ invalid={
errors.pagerOptionDto?.displayMode && touched.pagerOptionDto?.displayMode errors.pagerOptionDto?.displayMode && touched.pagerOptionDto?.displayMode
} }
@ -146,7 +146,7 @@ function FormTabPager(props: FormEditProps) {
type="text" type="text"
autoComplete="off" autoComplete="off"
name="pagerOptionDto.displayMode" name="pagerOptionDto.displayMode"
placeholder={translate('::ListForms.ListFormEdit.PagingDisplayMode')} placeholder={translate('::App.ListFormEdit.PagingDisplayMode')}
> >
{({ field, form }: FieldProps<PagerDisplayMode>) => ( {({ field, form }: FieldProps<PagerDisplayMode>) => (
<Select <Select
@ -163,7 +163,7 @@ function FormTabPager(props: FormEditProps) {
</Field> </Field>
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.PagingScrollingMode')} label={translate('::App.ListFormEdit.PagingScrollingMode')}
invalid={ invalid={
errors.pagerOptionDto?.scrollingMode && touched.pagerOptionDto?.scrollingMode errors.pagerOptionDto?.scrollingMode && touched.pagerOptionDto?.scrollingMode
} }
@ -173,7 +173,7 @@ function FormTabPager(props: FormEditProps) {
type="text" type="text"
autoComplete="off" autoComplete="off"
name="pagerOptionDto.scrollingMode" name="pagerOptionDto.scrollingMode"
placeholder={translate('::ListForms.ListFormEdit.PagingScrollingMode')} placeholder={translate('::App.ListFormEdit.PagingScrollingMode')}
> >
{({ field, form }: FieldProps<ScrollMode | 'virtual'>) => ( {({ field, form }: FieldProps<ScrollMode | 'virtual'>) => (
<Select <Select
@ -190,7 +190,7 @@ function FormTabPager(props: FormEditProps) {
</Field> </Field>
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.PagingLoadPanelEnabled')} label={translate('::App.ListFormEdit.PagingLoadPanelEnabled')}
invalid={ invalid={
errors.pagerOptionDto?.loadPanelEnabled && errors.pagerOptionDto?.loadPanelEnabled &&
touched.pagerOptionDto?.loadPanelEnabled touched.pagerOptionDto?.loadPanelEnabled
@ -201,7 +201,7 @@ function FormTabPager(props: FormEditProps) {
type="text" type="text"
autoComplete="off" autoComplete="off"
name="pagerOptionDto.loadPanelEnabled" name="pagerOptionDto.loadPanelEnabled"
placeholder={translate('::ListForms.ListFormEdit.PagingLoadPanelEnabled')} placeholder={translate('::App.ListFormEdit.PagingLoadPanelEnabled')}
> >
{({ field, form }: FieldProps<boolean | 'auto'>) => ( {({ field, form }: FieldProps<boolean | 'auto'>) => (
<Select <Select
@ -218,7 +218,7 @@ function FormTabPager(props: FormEditProps) {
</Field> </Field>
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.PagingLoadPanelText')} label={translate('::App.ListFormEdit.PagingLoadPanelText')}
invalid={ invalid={
errors.pagerOptionDto?.loadPanelText && touched.pagerOptionDto?.loadPanelText errors.pagerOptionDto?.loadPanelText && touched.pagerOptionDto?.loadPanelText
} }
@ -228,7 +228,7 @@ function FormTabPager(props: FormEditProps) {
type="text" type="text"
autoComplete="off" autoComplete="off"
name="pagerOptionDto.loadPanelText" name="pagerOptionDto.loadPanelText"
placeholder={translate('::ListForms.ListFormEdit.PagingLoadPanelText')} placeholder={translate('::App.ListFormEdit.PagingLoadPanelText')}
component={Input} component={Input}
/> />
</FormItem> </FormItem>
@ -236,7 +236,7 @@ function FormTabPager(props: FormEditProps) {
</div> </div>
<Button block size="sm" variant="solid" loading={isSubmitting} type="submit"> <Button block size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::Saving') : translate('::Save')} {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -64,7 +64,7 @@ function FormTabPermissions(props: FormEditProps) {
<Form> <Form>
<FormContainer size="sm"> <FormContainer size="sm">
<FormItem <FormItem
label={translate('::Create')} label={translate('::App.Platform.Create')}
invalid={errors.permissionDto?.c && touched.permissionDto?.c} invalid={errors.permissionDto?.c && touched.permissionDto?.c}
errorMessage={errors.permissionDto?.c} errorMessage={errors.permissionDto?.c}
> >
@ -72,7 +72,7 @@ function FormTabPermissions(props: FormEditProps) {
type="text" type="text"
autoComplete="off" autoComplete="off"
name="permissionDto.c" name="permissionDto.c"
placeholder={translate('::Create')} placeholder={translate('::App.Platform.Create')}
> >
{({ field, form }: FieldProps<SelectBoxOption>) => ( {({ field, form }: FieldProps<SelectBoxOption>) => (
<Select <Select
@ -89,7 +89,7 @@ function FormTabPermissions(props: FormEditProps) {
</Field> </Field>
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::Read')} label={translate('::App.Platform.Read')}
invalid={errors.permissionDto?.r && touched.permissionDto?.r} invalid={errors.permissionDto?.r && touched.permissionDto?.r}
errorMessage={errors.permissionDto?.r} errorMessage={errors.permissionDto?.r}
> >
@ -97,7 +97,7 @@ function FormTabPermissions(props: FormEditProps) {
type="text" type="text"
autoComplete="off" autoComplete="off"
name="permissionDto.r" name="permissionDto.r"
placeholder={translate('::Read')} placeholder={translate('::App.Platform.Read')}
> >
{({ field, form }: FieldProps<SelectBoxOption>) => ( {({ field, form }: FieldProps<SelectBoxOption>) => (
<Select <Select
@ -114,7 +114,7 @@ function FormTabPermissions(props: FormEditProps) {
</Field> </Field>
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::Update')} label={translate('::App.Platform.Update')}
invalid={errors.permissionDto?.u && touched.permissionDto?.u} invalid={errors.permissionDto?.u && touched.permissionDto?.u}
errorMessage={errors.permissionDto?.u} errorMessage={errors.permissionDto?.u}
> >
@ -122,7 +122,7 @@ function FormTabPermissions(props: FormEditProps) {
type="text" type="text"
autoComplete="off" autoComplete="off"
name="permissionDto.u" name="permissionDto.u"
placeholder={translate('::Update')} placeholder={translate('::App.Platform.Update')}
> >
{({ field, form }: FieldProps<SelectBoxOption>) => ( {({ field, form }: FieldProps<SelectBoxOption>) => (
<Select <Select
@ -139,7 +139,7 @@ function FormTabPermissions(props: FormEditProps) {
</Field> </Field>
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::Delete')} label={translate('::App.Platform.Delete')}
invalid={errors.permissionDto?.d && touched.permissionDto?.d} invalid={errors.permissionDto?.d && touched.permissionDto?.d}
errorMessage={errors.permissionDto?.d} errorMessage={errors.permissionDto?.d}
> >
@ -147,7 +147,7 @@ function FormTabPermissions(props: FormEditProps) {
type="text" type="text"
autoComplete="off" autoComplete="off"
name="permissionDto.d" name="permissionDto.d"
placeholder={translate('::Delete')} placeholder={translate('::App.Platform.Delete')}
> >
{({ field, form }: FieldProps<SelectBoxOption>) => ( {({ field, form }: FieldProps<SelectBoxOption>) => (
<Select <Select
@ -164,7 +164,7 @@ function FormTabPermissions(props: FormEditProps) {
</Field> </Field>
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.PermissionsExport')} label={translate('::App.Platform.Export')}
invalid={errors.permissionDto?.e && touched.permissionDto?.e} invalid={errors.permissionDto?.e && touched.permissionDto?.e}
errorMessage={errors.permissionDto?.e} errorMessage={errors.permissionDto?.e}
> >
@ -172,7 +172,7 @@ function FormTabPermissions(props: FormEditProps) {
type="text" type="text"
autoComplete="off" autoComplete="off"
name="permissionDto.e" name="permissionDto.e"
placeholder={translate('::ListForms.ListFormEdit.PermissionsExport')} placeholder={translate('::App.Platform.Export')}
> >
{({ field, form }: FieldProps<SelectBoxOption>) => ( {({ field, form }: FieldProps<SelectBoxOption>) => (
<Select <Select
@ -189,7 +189,7 @@ function FormTabPermissions(props: FormEditProps) {
</Field> </Field>
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::App.Listforms.ImportManager.Tab.Import')} label={translate('::App.Platform.Import')}
invalid={errors.permissionDto?.i && touched.permissionDto?.i} invalid={errors.permissionDto?.i && touched.permissionDto?.i}
errorMessage={errors.permissionDto?.i} errorMessage={errors.permissionDto?.i}
> >
@ -197,7 +197,7 @@ function FormTabPermissions(props: FormEditProps) {
type="text" type="text"
autoComplete="off" autoComplete="off"
name="permissionDto.i" name="permissionDto.i"
placeholder={translate('::App.Listforms.ImportManager.Tab.Import')} placeholder={translate('::App.Platform.Import')}
> >
{({ field, form }: FieldProps<SelectBoxOption>) => ( {({ field, form }: FieldProps<SelectBoxOption>) => (
<Select <Select
@ -216,7 +216,7 @@ function FormTabPermissions(props: FormEditProps) {
{listFormValues.showNote && ( {listFormValues.showNote && (
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.PermissionsNote')} label={translate('::App.Platform.Note')}
invalid={errors.permissionDto?.n && touched.permissionDto?.n} invalid={errors.permissionDto?.n && touched.permissionDto?.n}
errorMessage={errors.permissionDto?.n} errorMessage={errors.permissionDto?.n}
> >
@ -224,7 +224,7 @@ function FormTabPermissions(props: FormEditProps) {
type="text" type="text"
autoComplete="off" autoComplete="off"
name="permissionDto.n" name="permissionDto.n"
placeholder={translate('::ListForms.ListFormEdit.PermissionsNote')} placeholder={translate('::App.Platform.Note')}
> >
{({ field, form }: FieldProps<SelectBoxOption>) => ( {({ field, form }: FieldProps<SelectBoxOption>) => (
<Select <Select
@ -243,7 +243,7 @@ function FormTabPermissions(props: FormEditProps) {
)} )}
<Button block size="sm" variant="solid" loading={isSubmitting} type="submit"> <Button block size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::Saving') : translate('::Save')} {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -34,7 +34,7 @@ function FormTabColumns(props: FormEditProps) {
<div className="grid grid-cols-1 md:grid-cols-2 gap-3"> <div className="grid grid-cols-1 md:grid-cols-2 gap-3">
<div> <div>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.ShowFieldPanel')} label={translate('::App.ListFormEdit.ShowFieldPanel')}
invalid={ invalid={
errors.pivotOptionDto?.showFieldPanel && errors.pivotOptionDto?.showFieldPanel &&
touched.pivotOptionDto?.showFieldPanel touched.pivotOptionDto?.showFieldPanel
@ -43,12 +43,12 @@ function FormTabColumns(props: FormEditProps) {
> >
<Field <Field
name="pivotOptionDto.showFieldPanel" name="pivotOptionDto.showFieldPanel"
placeholder={translate('::ListForms.ListFormEdit.ShowFieldPanel')} placeholder={translate('::App.ListFormEdit.ShowFieldPanel')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.AllowFieldDragging')} label={translate('::App.ListFormEdit.AllowFieldDragging')}
invalid={ invalid={
errors.pivotOptionDto?.allowFieldDragging && errors.pivotOptionDto?.allowFieldDragging &&
touched.pivotOptionDto?.allowFieldDragging touched.pivotOptionDto?.allowFieldDragging
@ -57,12 +57,12 @@ function FormTabColumns(props: FormEditProps) {
> >
<Field <Field
name="pivotOptionDto.allowFieldDragging" name="pivotOptionDto.allowFieldDragging"
placeholder={translate('::ListForms.ListFormEdit.AllowFieldDragging')} placeholder={translate('::App.ListFormEdit.AllowFieldDragging')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.SelectionColumnChooserEnabled')} label={translate('::App.ListFormEdit.SelectionColumnChooserEnabled')}
invalid={ invalid={
errors.pivotOptionDto?.columnChooserEnabled && errors.pivotOptionDto?.columnChooserEnabled &&
touched.pivotOptionDto?.columnChooserEnabled touched.pivotOptionDto?.columnChooserEnabled
@ -72,13 +72,13 @@ function FormTabColumns(props: FormEditProps) {
<Field <Field
name="pivotOptionDto.columnChooserEnabled" name="pivotOptionDto.columnChooserEnabled"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.SelectionColumnChooserEnabled', '::App.ListFormEdit.SelectionColumnChooserEnabled',
)} )}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.ShowColumnFields')} label={translate('::App.ListFormEdit.ShowColumnFields')}
invalid={ invalid={
errors.pivotOptionDto?.showRowFields && touched.pivotOptionDto?.showRowFields errors.pivotOptionDto?.showRowFields && touched.pivotOptionDto?.showRowFields
} }
@ -86,12 +86,12 @@ function FormTabColumns(props: FormEditProps) {
> >
<Field <Field
name="pivotOptionDto.showColumnFields" name="pivotOptionDto.showColumnFields"
placeholder={translate('::ListForms.ListFormEdit.ShowColumnFields')} placeholder={translate('::App.ListFormEdit.ShowColumnFields')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.ShowRowFields')} label={translate('::App.ListFormEdit.ShowRowFields')}
invalid={ invalid={
errors.pivotOptionDto?.showRowFields && touched.pivotOptionDto?.showRowFields errors.pivotOptionDto?.showRowFields && touched.pivotOptionDto?.showRowFields
} }
@ -99,14 +99,14 @@ function FormTabColumns(props: FormEditProps) {
> >
<Field <Field
name="pivotOptionDto.showRowFields" name="pivotOptionDto.showRowFields"
placeholder={translate('::ListForms.ListFormEdit.ShowRowFields')} placeholder={translate('::App.ListFormEdit.ShowRowFields')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
</div> </div>
<div> <div>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.ShowDataFields')} label={translate('::App.ListFormEdit.ShowDataFields')}
invalid={ invalid={
errors.pivotOptionDto?.showDataFields && errors.pivotOptionDto?.showDataFields &&
touched.pivotOptionDto?.showDataFields touched.pivotOptionDto?.showDataFields
@ -115,12 +115,12 @@ function FormTabColumns(props: FormEditProps) {
> >
<Field <Field
name="pivotOptionDto.showDataFields" name="pivotOptionDto.showDataFields"
placeholder={translate('::ListForms.ListFormEdit.ShowDataFields')} placeholder={translate('::App.ListFormEdit.ShowDataFields')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.ShowFilterFields')} label={translate('::App.ListFormEdit.ShowFilterFields')}
invalid={ invalid={
errors.pivotOptionDto?.showFilterFields && errors.pivotOptionDto?.showFilterFields &&
touched.pivotOptionDto?.showFilterFields touched.pivotOptionDto?.showFilterFields
@ -129,23 +129,23 @@ function FormTabColumns(props: FormEditProps) {
> >
<Field <Field
name="pivotOptionDto.showFilterFields" name="pivotOptionDto.showFilterFields"
placeholder={translate('::ListForms.ListFormEdit.ShowFilterFields')} placeholder={translate('::App.ListFormEdit.ShowFilterFields')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.ShowChart')} label={translate('::App.Platform.ShowChart')}
invalid={errors.pivotOptionDto?.showChart && touched.pivotOptionDto?.showChart} invalid={errors.pivotOptionDto?.showChart && touched.pivotOptionDto?.showChart}
errorMessage={errors.pivotOptionDto?.showChart} errorMessage={errors.pivotOptionDto?.showChart}
> >
<Field <Field
name="pivotOptionDto.showChart" name="pivotOptionDto.showChart"
placeholder={translate('::ListForms.ListFormEdit.ShowChart')} placeholder={translate('::App.Platform.ShowChart')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.ChartHeight')} label={translate('::App.ListFormEdit.ChartHeight')}
invalid={ invalid={
errors.pivotOptionDto?.chartHeight && touched.pivotOptionDto?.chartHeight errors.pivotOptionDto?.chartHeight && touched.pivotOptionDto?.chartHeight
} }
@ -156,7 +156,7 @@ function FormTabColumns(props: FormEditProps) {
type="number" type="number"
autoComplete="off" autoComplete="off"
name="editingOptionDto.chartHeight" name="editingOptionDto.chartHeight"
placeholder={translate('::ListForms.ListFormEdit.ChartHeight')} placeholder={translate('::App.ListFormEdit.ChartHeight')}
component={Input} component={Input}
/> />
</FormItem> </FormItem>
@ -187,7 +187,7 @@ function FormTabColumns(props: FormEditProps) {
</div> </div>
<Button block size="sm" variant="solid" loading={isSubmitting} type="submit" className="my-2"> <Button block size="sm" variant="solid" loading={isSubmitting} type="submit" className="my-2">
{isSubmitting ? translate('::Saving') : translate('::Save')} {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -35,26 +35,26 @@ function FormTabRow(props: FormEditProps) {
<Form> <Form>
<FormContainer size="sm"> <FormContainer size="sm">
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.FilteringSortingRowHeight')} label={translate('::App.ListFormEdit.FilteringSortingRowHeight')}
invalid={errors.rowDto?.rowHeight && touched.rowDto?.rowHeight} invalid={errors.rowDto?.rowHeight && touched.rowDto?.rowHeight}
errorMessage={errors.rowDto?.rowHeight} errorMessage={errors.rowDto?.rowHeight}
> >
<Field <Field
name="rowDto.rowHeight" name="rowDto.rowHeight"
placeholder={translate('::ListForms.ListFormEdit.FilteringSortingRowHeight')} placeholder={translate('::App.ListFormEdit.FilteringSortingRowHeight')}
component={Input} component={Input}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.FilteringSortingRowWhiteSpace')} label={translate('::App.ListFormEdit.FilteringSortingRowWhiteSpace')}
invalid={errors.rowDto?.whiteSpace && touched.rowDto?.whiteSpace} invalid={errors.rowDto?.whiteSpace && touched.rowDto?.whiteSpace}
errorMessage={errors.rowDto?.whiteSpace} errorMessage={errors.rowDto?.whiteSpace}
> >
<Field <Field
type="text" type="text"
name="rowDto.whiteSpace" name="rowDto.whiteSpace"
placeholder={translate('::ListForms.ListFormEdit.FilteringSortingRowWhiteSpace')} placeholder={translate('::App.ListFormEdit.FilteringSortingRowWhiteSpace')}
> >
{({ field, form }: FieldProps<SelectBoxOption>) => ( {({ field, form }: FieldProps<SelectBoxOption>) => (
<Select <Select
@ -72,7 +72,7 @@ function FormTabRow(props: FormEditProps) {
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.FilteringSortingRowOverflowWrap')} label={translate('::App.ListFormEdit.FilteringSortingRowOverflowWrap')}
invalid={errors.rowDto?.overflowWrap && touched.rowDto?.overflowWrap} invalid={errors.rowDto?.overflowWrap && touched.rowDto?.overflowWrap}
errorMessage={errors.rowDto?.overflowWrap} errorMessage={errors.rowDto?.overflowWrap}
> >
@ -80,7 +80,7 @@ function FormTabRow(props: FormEditProps) {
type="text" type="text"
name="rowDto.overflowWrap" name="rowDto.overflowWrap"
placeholder={translate( placeholder={translate(
'::ListForms.ListFormEdit.FilteringSortingRowOverflowWrap', '::App.ListFormEdit.FilteringSortingRowOverflowWrap',
)} )}
> >
{({ field, form }: FieldProps<SelectBoxOption>) => ( {({ field, form }: FieldProps<SelectBoxOption>) => (
@ -99,7 +99,7 @@ function FormTabRow(props: FormEditProps) {
</FormItem> </FormItem>
<Button block size="sm" variant="solid" loading={isSubmitting} type="submit"> <Button block size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::Saving') : translate('::Save')} {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -99,10 +99,10 @@ function FormTabScheduler(props: FormEditProps) {
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-3"> <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-3">
<Card <Card
className="mt-4" className="mt-4"
header={translate('::ListForms.SchedulerOptions.BasicSettings')} header={translate('::App.ListFormSchedulerOptions.BasicSettings')}
> >
<FormItem <FormItem
label={translate('::ListForms.SchedulerOptions.TextExpr')} label={translate('::App.ListFormSchedulerOptions.TextExpr')}
invalid={ invalid={
errors.schedulerOptionDto?.textExpr && touched.schedulerOptionDto?.textExpr errors.schedulerOptionDto?.textExpr && touched.schedulerOptionDto?.textExpr
} }
@ -143,7 +143,7 @@ function FormTabScheduler(props: FormEditProps) {
</Field> </Field>
</FormItem> </FormItem>
<FormItem label={translate('::ListForms.ListFormFieldEdit.TodoDescriptionExpr')}> <FormItem label={translate('::App.ListFormFieldEdit.TodoDescriptionExpr')}>
<Field type="text" name="schedulerOptionDto.descriptionExpr"> <Field type="text" name="schedulerOptionDto.descriptionExpr">
{({ field, form }: FieldProps<SelectBoxOption>) => ( {({ field, form }: FieldProps<SelectBoxOption>) => (
<Select <Select
@ -163,7 +163,7 @@ function FormTabScheduler(props: FormEditProps) {
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.SchedulerOptions.StartDateExpr')} label={translate('::App.ListFormSchedulerOptions.StartDateExpr')}
invalid={ invalid={
errors.schedulerOptionDto?.startDateExpr && errors.schedulerOptionDto?.startDateExpr &&
touched.schedulerOptionDto?.startDateExpr touched.schedulerOptionDto?.startDateExpr
@ -187,7 +187,7 @@ function FormTabScheduler(props: FormEditProps) {
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.SchedulerOptions.EndDateExpr')} label={translate('::App.ListFormSchedulerOptions.EndDateExpr')}
invalid={ invalid={
errors.schedulerOptionDto?.endDateExpr && errors.schedulerOptionDto?.endDateExpr &&
touched.schedulerOptionDto?.endDateExpr touched.schedulerOptionDto?.endDateExpr
@ -211,7 +211,7 @@ function FormTabScheduler(props: FormEditProps) {
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.SchedulerOptions.AllDayExpr')} label={translate('::App.ListFormSchedulerOptions.AllDayExpr')}
invalid={ invalid={
errors.schedulerOptionDto?.allDayExpr && touched.schedulerOptionDto?.allDayExpr errors.schedulerOptionDto?.allDayExpr && touched.schedulerOptionDto?.allDayExpr
} }
@ -236,9 +236,9 @@ function FormTabScheduler(props: FormEditProps) {
<Card <Card
className="mt-4" className="mt-4"
header={translate('::ListForms.SchedulerOptions.ViewSettings')} header={translate('::App.ListFormSchedulerOptions.ViewSettings')}
> >
<FormItem label={translate('::ListForms.SchedulerOptions.DefaultView')}> <FormItem label={translate('::App.ListFormSchedulerOptions.DefaultView')}>
<Field name="schedulerOptionDto.defaultView"> <Field name="schedulerOptionDto.defaultView">
{({ field, form }: FieldProps) => ( {({ field, form }: FieldProps) => (
<Select <Select
@ -254,7 +254,7 @@ function FormTabScheduler(props: FormEditProps) {
</Field> </Field>
</FormItem> </FormItem>
<FormItem label={translate('::ListForms.SchedulerOptions.FirstDayOfWeek')}> <FormItem label={translate('::App.ListFormSchedulerOptions.FirstDayOfWeek')}>
<Field name="schedulerOptionDto.firstDayOfWeek"> <Field name="schedulerOptionDto.firstDayOfWeek">
{({ field, form }: FieldProps) => ( {({ field, form }: FieldProps) => (
<Select <Select
@ -271,7 +271,7 @@ function FormTabScheduler(props: FormEditProps) {
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.SchedulerOptions.StartDayHour')} label={translate('::App.ListFormSchedulerOptions.StartDayHour')}
invalid={ invalid={
errors.schedulerOptionDto?.startDayHour && errors.schedulerOptionDto?.startDayHour &&
touched.schedulerOptionDto?.startDayHour touched.schedulerOptionDto?.startDayHour
@ -290,7 +290,7 @@ function FormTabScheduler(props: FormEditProps) {
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.SchedulerOptions.EndDayHour')} label={translate('::App.ListFormSchedulerOptions.EndDayHour')}
invalid={ invalid={
errors.schedulerOptionDto?.endDayHour && touched.schedulerOptionDto?.endDayHour errors.schedulerOptionDto?.endDayHour && touched.schedulerOptionDto?.endDayHour
} }
@ -308,7 +308,7 @@ function FormTabScheduler(props: FormEditProps) {
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.SchedulerOptions.CellDuration')} label={translate('::App.ListFormSchedulerOptions.CellDuration')}
invalid={ invalid={
errors.schedulerOptionDto?.cellDuration && errors.schedulerOptionDto?.cellDuration &&
touched.schedulerOptionDto?.cellDuration touched.schedulerOptionDto?.cellDuration
@ -329,10 +329,10 @@ function FormTabScheduler(props: FormEditProps) {
<Card <Card
className="mt-4" className="mt-4"
header={translate('::ListForms.SchedulerOptions.RecurrenceSettings')} header={translate('::App.ListFormSchedulerOptions.RecurrenceSettings')}
> >
<FormItem <FormItem
label={translate('::ListForms.SchedulerOptions.RecurrenceRuleExpr')} label={translate('::App.ListFormSchedulerOptions.RecurrenceRuleExpr')}
invalid={ invalid={
errors.schedulerOptionDto?.recurrenceRuleExpr && errors.schedulerOptionDto?.recurrenceRuleExpr &&
touched.schedulerOptionDto?.recurrenceRuleExpr touched.schedulerOptionDto?.recurrenceRuleExpr
@ -357,7 +357,7 @@ function FormTabScheduler(props: FormEditProps) {
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.SchedulerOptions.RecurrenceExceptionExpr')} label={translate('::App.ListFormSchedulerOptions.RecurrenceExceptionExpr')}
invalid={ invalid={
errors.schedulerOptionDto?.recurrenceExceptionExpr && errors.schedulerOptionDto?.recurrenceExceptionExpr &&
touched.schedulerOptionDto?.recurrenceExceptionExpr touched.schedulerOptionDto?.recurrenceExceptionExpr
@ -384,33 +384,33 @@ function FormTabScheduler(props: FormEditProps) {
<Card <Card
className="mt-4" className="mt-4"
header={translate('::ListForms.SchedulerOptions.InteractionSettings')} header={translate('::App.ListFormSchedulerOptions.InteractionSettings')}
> >
<FormItem label={translate('::ListForms.SchedulerOptions.ShowAllDayPanel')}> <FormItem label={translate('::App.ListFormSchedulerOptions.ShowAllDayPanel')}>
<Field name="schedulerOptionDto.showAllDayPanel" component={Checkbox} /> <Field name="schedulerOptionDto.showAllDayPanel" component={Checkbox} />
</FormItem> </FormItem>
<FormItem label={translate('::ListForms.SchedulerOptions.CrossScrollingEnabled')}> <FormItem label={translate('::App.ListFormSchedulerOptions.CrossScrollingEnabled')}>
<Field name="schedulerOptionDto.crossScrollingEnabled" component={Checkbox} /> <Field name="schedulerOptionDto.crossScrollingEnabled" component={Checkbox} />
</FormItem> </FormItem>
<FormItem label={translate('::ListForms.SchedulerOptions.AllowResizing')}> <FormItem label={translate('::App.ListFormSchedulerOptions.AllowResizing')}>
<Field name="schedulerOptionDto.allowResizing" component={Checkbox} /> <Field name="schedulerOptionDto.allowResizing" component={Checkbox} />
</FormItem> </FormItem>
<FormItem label={translate('::ListForms.SchedulerOptions.AllowDragging')}> <FormItem label={translate('::App.ListFormSchedulerOptions.AllowDragging')}>
<Field name="schedulerOptionDto.allowDragging" component={Checkbox} /> <Field name="schedulerOptionDto.allowDragging" component={Checkbox} />
</FormItem> </FormItem>
<FormItem label={translate('::ListForms.SchedulerOptions.AllowAdding')}> <FormItem label={translate('::App.ListFormSchedulerOptions.AllowAdding')}>
<Field name="schedulerOptionDto.allowAdding" component={Checkbox} /> <Field name="schedulerOptionDto.allowAdding" component={Checkbox} />
</FormItem> </FormItem>
<FormItem label={translate('::ListForms.ListFormEdit.AllowEditing')}> <FormItem label={translate('::App.ListFormEdit.AllowEditing')}>
<Field name="schedulerOptionDto.allowEditing" component={Checkbox} /> <Field name="schedulerOptionDto.allowEditing" component={Checkbox} />
</FormItem> </FormItem>
<FormItem label={translate('::ListForms.SchedulerOptions.AllowDeleting')}> <FormItem label={translate('::App.ListFormSchedulerOptions.AllowDeleting')}>
<Field name="schedulerOptionDto.allowDeleting" component={Checkbox} /> <Field name="schedulerOptionDto.allowDeleting" component={Checkbox} />
</FormItem> </FormItem>
</Card> </Card>
@ -423,7 +423,7 @@ function FormTabScheduler(props: FormEditProps) {
type="submit" type="submit"
className="my-2" className="my-2"
> >
{isSubmitting ? translate('::Saving') : translate('::Save')} {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
</Button>{' '} </Button>{' '}
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -30,18 +30,18 @@ function FormTabSearch(props: FormEditProps) {
<Form> <Form>
<FormContainer size="sm"> <FormContainer size="sm">
<FormItem <FormItem
label={translate('::ListForms.ListFormFieldEdit.OptionsVisible')} label={translate('::App.ListFormEdit.CommandVisible')}
invalid={errors.searchPanelDto?.visible && touched.searchPanelDto?.visible} invalid={errors.searchPanelDto?.visible && touched.searchPanelDto?.visible}
errorMessage={errors.searchPanelDto?.visible} errorMessage={errors.searchPanelDto?.visible}
> >
<Field <Field
name="searchPanelDto.visible" name="searchPanelDto.visible"
placeholder={translate('::ListForms.ListFormFieldEdit.OptionsVisible')} placeholder={translate('::App.ListFormEdit.CommandVisible')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.SearchPanelWidth')} label={translate('::App.ListFormEdit.SearchPanelWidth')}
invalid={errors.searchPanelDto?.width && touched.searchPanelDto?.width} invalid={errors.searchPanelDto?.width && touched.searchPanelDto?.width}
errorMessage={errors.searchPanelDto?.width} errorMessage={errors.searchPanelDto?.width}
> >
@ -50,13 +50,13 @@ function FormTabSearch(props: FormEditProps) {
type="number" type="number"
autoComplete="off" autoComplete="off"
name="searchPanelDto.width" name="searchPanelDto.width"
placeholder={translate('::ListForms.ListFormEdit.SearchPanelWidth')} placeholder={translate('::App.ListFormEdit.SearchPanelWidth')}
component={Input} component={Input}
/> />
</FormItem> </FormItem>
<Button block size="sm" variant="solid" loading={isSubmitting} type="submit"> <Button block size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::Saving') : translate('::Save')} {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -37,7 +37,7 @@ function FormTabSelect(props: FormEditProps) {
<Form> <Form>
<FormContainer size="sm"> <FormContainer size="sm">
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.SelectionMode')} label={translate('::App.ListFormEdit.SelectionMode')}
invalid={errors.selectionDto?.mode && touched.selectionDto?.mode} invalid={errors.selectionDto?.mode && touched.selectionDto?.mode}
errorMessage={errors.selectionDto?.mode} errorMessage={errors.selectionDto?.mode}
> >
@ -45,7 +45,7 @@ function FormTabSelect(props: FormEditProps) {
type="text" type="text"
autoComplete="off" autoComplete="off"
name="selectionDto.mode" name="selectionDto.mode"
placeholder={translate('::ListForms.ListFormEdit.SelectionMode')} placeholder={translate('::App.ListFormEdit.SelectionMode')}
> >
{({ field, form }: FieldProps<SingleMultipleOrNone>) => ( {({ field, form }: FieldProps<SingleMultipleOrNone>) => (
<Select <Select
@ -62,7 +62,7 @@ function FormTabSelect(props: FormEditProps) {
</Field> </Field>
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.SelectionSelectAllMode')} label={translate('::App.ListFormEdit.SelectionSelectAllMode')}
invalid={errors.selectionDto?.selectAllMode && touched.selectionDto?.selectAllMode} invalid={errors.selectionDto?.selectAllMode && touched.selectionDto?.selectAllMode}
errorMessage={errors.selectionDto?.selectAllMode} errorMessage={errors.selectionDto?.selectAllMode}
> >
@ -70,7 +70,7 @@ function FormTabSelect(props: FormEditProps) {
type="text" type="text"
autoComplete="off" autoComplete="off"
name="selectionDto.selectAllMode" name="selectionDto.selectAllMode"
placeholder={translate('::ListForms.ListFormEdit.SelectionSelectAllMode')} placeholder={translate('::App.ListFormEdit.SelectionSelectAllMode')}
> >
{({ field, form }: FieldProps<SelectAllMode>) => ( {({ field, form }: FieldProps<SelectAllMode>) => (
<Select <Select
@ -87,7 +87,7 @@ function FormTabSelect(props: FormEditProps) {
</Field> </Field>
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.SelectionShowCheckBoxMode')} label={translate('::App.ListFormEdit.SelectionShowCheckBoxMode')}
invalid={ invalid={
errors.selectionDto?.showCheckBoxesMode && errors.selectionDto?.showCheckBoxesMode &&
touched.selectionDto?.showCheckBoxesMode touched.selectionDto?.showCheckBoxesMode
@ -98,7 +98,7 @@ function FormTabSelect(props: FormEditProps) {
type="text" type="text"
autoComplete="off" autoComplete="off"
name="selectionDto.showCheckBoxesMode" name="selectionDto.showCheckBoxesMode"
placeholder={translate('::ListForms.ListFormEdit.SelectionShowCheckBoxMode')} placeholder={translate('::App.ListFormEdit.SelectionShowCheckBoxMode')}
> >
{({ field, form }: FieldProps<SelectionColumnDisplayMode>) => ( {({ field, form }: FieldProps<SelectionColumnDisplayMode>) => (
<Select <Select
@ -115,7 +115,7 @@ function FormTabSelect(props: FormEditProps) {
</Field> </Field>
</FormItem> </FormItem>
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.SelectionAllowSelectAll')} label={translate('::App.ListFormEdit.SelectionAllowSelectAll')}
invalid={ invalid={
errors.selectionDto?.allowSelectAll && touched.selectionDto?.allowSelectAll errors.selectionDto?.allowSelectAll && touched.selectionDto?.allowSelectAll
} }
@ -123,13 +123,13 @@ function FormTabSelect(props: FormEditProps) {
> >
<Field <Field
name="selectionDto.allowSelectAll" name="selectionDto.allowSelectAll"
placeholder={translate('::ListForms.ListFormEdit.SelectionAllowSelectAll')} placeholder={translate('::App.ListFormEdit.SelectionAllowSelectAll')}
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<Button block size="sm" variant="solid" loading={isSubmitting} type="submit"> <Button block size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::Saving') : translate('::Save')} {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -39,7 +39,7 @@ function FormTabSorting(props: FormEditProps) {
<Form> <Form>
<FormContainer size="sm"> <FormContainer size="sm">
<FormItem <FormItem
label={translate('::ListForms.ListFormEdit.FilteringSortingSortMode')} label={translate('::App.Listform.ListformField.SortMode')}
invalid={errors.sortMode && touched.sortMode} invalid={errors.sortMode && touched.sortMode}
errorMessage={errors.sortMode} errorMessage={errors.sortMode}
> >
@ -47,7 +47,7 @@ function FormTabSorting(props: FormEditProps) {
type="text" type="text"
autoComplete="off" autoComplete="off"
name="sortMode" name="sortMode"
placeholder={translate('::ListForms.ListFormEdit.FilteringSortingSortMode')} placeholder={translate('::App.Listform.ListformField.SortMode')}
> >
{({ field, form }: FieldProps<GridOptionsSortModeEnum>) => ( {({ field, form }: FieldProps<GridOptionsSortModeEnum>) => (
<Select <Select
@ -63,7 +63,7 @@ function FormTabSorting(props: FormEditProps) {
</FormItem> </FormItem>
<Button block size="sm" variant="solid" loading={isSubmitting} type="submit"> <Button block size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::Saving') : translate('::Save')} {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

Some files were not shown because too many files have changed in this diff Show more