diff --git a/api/src/Kurs.Platform.Application.Contracts/ListForms/GridOptionsDto/GridColumnOptionDto.cs b/api/src/Kurs.Platform.Application.Contracts/ListForms/GridOptionsDto/GridColumnOptionDto.cs
index e70a6922..e74d805c 100644
--- a/api/src/Kurs.Platform.Application.Contracts/ListForms/GridOptionsDto/GridColumnOptionDto.cs
+++ b/api/src/Kurs.Platform.Application.Contracts/ListForms/GridOptionsDto/GridColumnOptionDto.cs
@@ -11,7 +11,7 @@ public class GridColumnOptionDto
/// kullanicinin kolonlarin yerini degistirebilmesi
///
public bool AllowColumnReordering { get; set; } = false;
- public bool AllowColumnResizing { get; set; }
+ public bool AllowColumnResizing { get; set; } = true;
/// alabilecegi degerler: 'nextColumn', 'widget'
///
public string ColumnResizingMode { get; set; } = "nextColumn";
diff --git a/api/src/Kurs.Platform.Application.Contracts/ListForms/GridOptionsDto/GridOptionsDto.cs b/api/src/Kurs.Platform.Application.Contracts/ListForms/GridOptionsDto/GridOptionsDto.cs
index 4f1c3ca6..688fe040 100644
--- a/api/src/Kurs.Platform.Application.Contracts/ListForms/GridOptionsDto/GridOptionsDto.cs
+++ b/api/src/Kurs.Platform.Application.Contracts/ListForms/GridOptionsDto/GridOptionsDto.cs
@@ -41,6 +41,20 @@ public class GridOptionsDto : AuditedEntityDto
set { FilterRowJson = JsonSerializer.Serialize(value); }
}
+ [JsonIgnore]
+ public string RowJson { get; set; } // Filtreleme yapilabilir mi?
+ public GridRowDto RowDto
+ {
+ get
+ {
+ if (!string.IsNullOrEmpty(RowJson))
+ return JsonSerializer.Deserialize(RowJson);
+
+ return new GridRowDto();
+ }
+ set { RowJson = JsonSerializer.Serialize(value); }
+ }
+
[JsonIgnore]
public string HeaderFilterJson { get; set; } // header ile Filtreleme yapilabilir mi?
public GridHeaderFilterDto HeaderFilterDto
diff --git a/api/src/Kurs.Platform.Application.Contracts/ListForms/GridOptionsDto/GridRowDto.cs b/api/src/Kurs.Platform.Application.Contracts/ListForms/GridOptionsDto/GridRowDto.cs
new file mode 100644
index 00000000..17101f5a
--- /dev/null
+++ b/api/src/Kurs.Platform.Application.Contracts/ListForms/GridOptionsDto/GridRowDto.cs
@@ -0,0 +1,8 @@
+namespace Kurs.Platform.ListForms;
+
+public class GridRowDto
+{
+ public string RowHeight { get; set; } = "auto";
+ public string WhiteSpace { get; set; } = "normal";
+ public string OverflowWrap { get; set; } = "break-word";
+}
diff --git a/api/src/Kurs.Platform.Application.Contracts/ListForms/ListFormEditTabs.cs b/api/src/Kurs.Platform.Application.Contracts/ListForms/ListFormEditTabs.cs
index d1369095..68520a44 100644
--- a/api/src/Kurs.Platform.Application.Contracts/ListForms/ListFormEditTabs.cs
+++ b/api/src/Kurs.Platform.Application.Contracts/ListForms/ListFormEditTabs.cs
@@ -38,7 +38,9 @@ public class ListFormEditTabs
public const string EditForm = "edit.form";
public const string EditingFormFieldsJsonRow = "edit.formFields";
}
+ public const string SortingForm = "sorting";
public const string FilterForm = "filter";
+ public const string RowForm = "row";
public const string SearchForm = "search";
public const string GroupForm = "group";
public const string SelectForm = "select";
diff --git a/api/src/Kurs.Platform.Application/ListForms/Administration/ListFormsAppService.cs b/api/src/Kurs.Platform.Application/ListForms/Administration/ListFormsAppService.cs
index 6fb2ee8e..6ea9b0f1 100644
--- a/api/src/Kurs.Platform.Application/ListForms/Administration/ListFormsAppService.cs
+++ b/api/src/Kurs.Platform.Application/ListForms/Administration/ListFormsAppService.cs
@@ -111,13 +111,20 @@ public class ListFormsAppService : CrudAppService<
{
item.EditingOptionJson = JsonSerializer.Serialize(input.EditingOptionDto);
}
- else if (input.EditType == ListFormEditTabs.FilterForm)
+ else if (input.EditType == ListFormEditTabs.SortingForm)
{
item.SortMode = input.SortMode;
+ }
+ else if (input.EditType == ListFormEditTabs.FilterForm)
+ {
item.FilterRowJson = JsonSerializer.Serialize(input.FilterRowDto);
item.HeaderFilterJson = JsonSerializer.Serialize(input.HeaderFilterDto);
item.FilterPanelJson = JsonSerializer.Serialize(input.FilterPanelDto);
}
+ else if (input.EditType == ListFormEditTabs.RowForm)
+ {
+ item.RowJson = JsonSerializer.Serialize(input.RowDto);
+ }
else if (input.EditType == ListFormEditTabs.SearchForm)
{
item.SearchPanelJson = JsonSerializer.Serialize(input.SearchPanelDto);
diff --git a/api/src/Kurs.Platform.DbMigrator/Seeds/TenantData.json b/api/src/Kurs.Platform.DbMigrator/Seeds/TenantData.json
index e351415d..118cc3c3 100644
--- a/api/src/Kurs.Platform.DbMigrator/Seeds/TenantData.json
+++ b/api/src/Kurs.Platform.DbMigrator/Seeds/TenantData.json
@@ -4945,9 +4945,21 @@
},
{
"resourceName": "Platform",
- "key": "ListForms.ListFormEdit.TabFilteringSorting",
- "en": "Filtering & Sorting",
- "tr": "Filtreleme & Sıralama"
+ "key": "ListForms.ListFormEdit.TabSorting",
+ "en": "Sorting",
+ "tr": "Sıralama"
+ },
+ {
+ "resourceName": "Platform",
+ "key": "ListForms.ListFormEdit.TabFiltering",
+ "en": "Filtering",
+ "tr": "Filtreleme"
+ },
+ {
+ "resourceName": "Platform",
+ "key": "ListForms.ListFormEdit.TabRow",
+ "en": "Row",
+ "tr": "Satır"
},
{
"resourceName": "Platform",
@@ -6017,6 +6029,30 @@
"en": "Filter Panel",
"tr": "Filter Panel"
},
+ {
+ "resourceName": "Platform",
+ "key": "ListForms.ListFormEdit.FilteringSortingRowProps",
+ "en": "Row",
+ "tr": "Satır"
+ },
+ {
+ "resourceName": "Platform",
+ "key": "ListForms.ListFormEdit.FilteringSortingRowHeight",
+ "en": "Row Height",
+ "tr": "Satır Yüksekliği"
+ },
+ {
+ "resourceName": "Platform",
+ "key": "ListForms.ListFormEdit.FilteringSortingRowWhiteSpace",
+ "en": "White Space",
+ "tr": "Beyaz Alan"
+ },
+ {
+ "resourceName": "Platform",
+ "key": "ListForms.ListFormEdit.FilteringSortingRowOverflowWrap",
+ "en": "Overflow Wrap",
+ "tr": "Taşma Sarma"
+ },
{
"resourceName": "Platform",
"key": "ListForms.ListFormEdit.FilteringSortingFilterPanelFilterEnabled",
diff --git a/api/src/Kurs.Platform.Domain/Entities/Host/ListForm/ListForm.cs b/api/src/Kurs.Platform.Domain/Entities/Host/ListForm/ListForm.cs
index 869ca466..aabda275 100644
--- a/api/src/Kurs.Platform.Domain/Entities/Host/ListForm/ListForm.cs
+++ b/api/src/Kurs.Platform.Domain/Entities/Host/ListForm/ListForm.cs
@@ -33,6 +33,7 @@ public class ListForm : FullAuditedEntity
public string ColumnOptionJson { get; set; }
public string PivotOptionJson { get; set; }
public string FilterRowJson { get; set; } // Filtre ayarlari, Json olarak tutulur, donus sinifi FilterRowDto
+ public string RowJson { get; set; } // Row ayarları, Json olarak tutulur, donus sinifi FilterRowDto
public string HeaderFilterJson { get; set; } // Header filtreleme ayarlari, Json olarak tutulur
public string FilterPanelJson { get; set; } // Filtre paneli Json verileri
public string SearchPanelJson { get; set; } // Arama paneli Json verileri
diff --git a/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20251008124621_Initial.Designer.cs b/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20251008192259_Initial.Designer.cs
similarity index 99%
rename from api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20251008124621_Initial.Designer.cs
rename to api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20251008192259_Initial.Designer.cs
index b11b1bbd..0c206c3c 100644
--- a/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20251008124621_Initial.Designer.cs
+++ b/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20251008192259_Initial.Designer.cs
@@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore;
namespace Kurs.Platform.Migrations
{
[DbContext(typeof(PlatformDbContext))]
- [Migration("20251008124621_Initial")]
+ [Migration("20251008192259_Initial")]
partial class Initial
{
///
@@ -3815,6 +3815,9 @@ namespace Kurs.Platform.Migrations
.HasMaxLength(256)
.HasColumnType("nvarchar(256)");
+ b.Property("RowJson")
+ .HasColumnType("nvarchar(max)");
+
b.Property("ScrollBarJson")
.HasColumnType("text");
diff --git a/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20251008124621_Initial.cs b/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20251008192259_Initial.cs
similarity index 99%
rename from api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20251008124621_Initial.cs
rename to api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20251008192259_Initial.cs
index d2a18997..288c93a0 100644
--- a/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20251008124621_Initial.cs
+++ b/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/20251008192259_Initial.cs
@@ -1580,6 +1580,7 @@ namespace Kurs.Platform.Migrations
ColumnOptionJson = table.Column(type: "text", nullable: true),
PivotOptionJson = table.Column(type: "text", nullable: true),
FilterRowJson = table.Column(type: "text", nullable: true),
+ RowJson = table.Column(type: "nvarchar(max)", nullable: true),
HeaderFilterJson = table.Column(type: "text", nullable: true),
FilterPanelJson = table.Column(type: "text", nullable: true),
SearchPanelJson = table.Column(type: "text", nullable: true),
diff --git a/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs b/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs
index d11b2df3..11558f75 100644
--- a/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs
+++ b/api/src/Kurs.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs
@@ -3812,6 +3812,9 @@ namespace Kurs.Platform.Migrations
.HasMaxLength(256)
.HasColumnType("nvarchar(256)");
+ b.Property("RowJson")
+ .HasColumnType("nvarchar(max)");
+
b.Property("ScrollBarJson")
.HasColumnType("text");
diff --git a/ui/src/components/ui/Alert/Alert.tsx b/ui/src/components/ui/Alert/Alert.tsx
index 0700033f..54c906ed 100644
--- a/ui/src/components/ui/Alert/Alert.tsx
+++ b/ui/src/components/ui/Alert/Alert.tsx
@@ -119,7 +119,7 @@ const Alert = forwardRef((props, ref) => {
)
}
- const alertDefaultClass = 'p-4 relative flex'
+ const alertDefaultClass = 'p-2 relative flex'
const alertClass = classNames(
'alert',
diff --git a/ui/src/proxy/admin/list-form/options.ts b/ui/src/proxy/admin/list-form/options.ts
index e667abc1..60db0529 100644
--- a/ui/src/proxy/admin/list-form/options.ts
+++ b/ui/src/proxy/admin/list-form/options.ts
@@ -31,7 +31,9 @@ export const ListFormEditTabs = {
EditForm: 'edit.form',
EditingFormFieldsJsonRow: 'edit.formFields',
},
+ SortingForm: 'sorting',
FilterForm: 'filter',
+ RowForm: 'row',
SearchForm: 'search',
GroupForm: 'group',
SelectForm: 'select',
@@ -76,7 +78,9 @@ export const tabVisibilityConfig: Record = {
'permissions',
'commands',
'edit',
+ 'sortingForm',
'filterRow',
+ 'rowForm',
'search',
'group',
'select',
diff --git a/ui/src/proxy/form/models.ts b/ui/src/proxy/form/models.ts
index 3eed9b2b..b495f0db 100644
--- a/ui/src/proxy/form/models.ts
+++ b/ui/src/proxy/form/models.ts
@@ -326,6 +326,12 @@ export interface TagBoxOptionsDto {
acceptCustomValue: boolean
}
+export interface RowDto {
+ rowHeight: string
+ whiteSpace: string
+ overflowWrap: string
+}
+
export interface FilterPanelDto {
visible: boolean
texts: FilterPanelTextsDto
@@ -453,6 +459,8 @@ export interface GridOptionsDto extends AuditedEntityDto {
headerFilterDto: GridHeaderFilterDto
filterPanelJson?: string
filterPanelDto: FilterPanelDto
+ rowJson?: string
+ rowDto: RowDto
searchPanelJson?: string
searchPanelDto: SearchPanelDto
groupPanelJson?: string
diff --git a/ui/src/views/admin/listForm/edit/FormEdit.tsx b/ui/src/views/admin/listForm/edit/FormEdit.tsx
index a0698316..501f7182 100644
--- a/ui/src/views/admin/listForm/edit/FormEdit.tsx
+++ b/ui/src/views/admin/listForm/edit/FormEdit.tsx
@@ -47,6 +47,8 @@ import ChartTabSeries from './ChartTabSeries'
import ChartTabAxis from './ChartTabAxis'
import ChartTabPanes from './ChartTabPanes'
import { tabVisibilityConfig } from '@/proxy/admin/list-form/options'
+import FormTabSorting from './FormTabSorting'
+import FormTabRow from './FormTabRow'
export interface FormEditProps {
onSubmit: (
@@ -180,7 +182,7 @@ const FormEdit = () => {
{listFormValues.isTenant && (
-
+
Bu bir MULTI TENANT form'dur, veri kaybı olmaması için, sorgularda TENANTID
parametresini kullanmayı unutmayınız.
@@ -206,10 +208,14 @@ const FormEdit = () => {
{visibleTabs.includes('edit') && (
{translate('::ListForms.ListFormEdit.TabEditing')}
)}
+ {visibleTabs.includes('sortingForm') && (
+ {translate('::ListForms.ListFormEdit.TabSorting')}
+ )}
{visibleTabs.includes('filterRow') && (
-
- {translate('::ListForms.ListFormEdit.TabFilteringSorting')}
-
+ {translate('::ListForms.ListFormEdit.TabFiltering')}
+ )}
+ {visibleTabs.includes('rowForm') && (
+ {translate('::ListForms.ListFormEdit.TabRow')}
)}
{visibleTabs.includes('search') && (
{translate('::ListForms.ListFormEdit.TabSearch')}
@@ -302,58 +308,7 @@ const FormEdit = () => {
)}
- {/*
- {translate('::ListForms.ListFormEdit.TabDetails')}
- {translate('::ListForms.ListFormEdit.TabDatabase')}
-
- {translate('::ListForms.ListFormEdit.TabPermissions')}
-
- {translate('::ListForms.ListFormEdit.TabCommands')}
- {translate('::ListForms.ListFormEdit.TabEditing')}
-
- {translate('::ListForms.ListFormEdit.TabFilteringSorting')}
-
- {translate('::ListForms.ListFormEdit.TabSearch')}
- {translate('::ListForms.ListFormEdit.TabGrouping')}
- {translate('::ListForms.ListFormEdit.TabSelection')}
- {translate('::ListForms.ListFormEdit.TabColumns')}
- {translate('::ListForms.ListFormEdit.TabPivots')}
- {translate('::ListForms.ListFormEdit.TabPaging')}
- {translate('::ListForms.ListFormEdit.TabState')}
- {translate('::ListForms.ListFormEdit.ExtraFilters')}
- {translate('::ListForms.ListFormEdit.TabFields')}
-
- {translate('::ListForms.ListFormEdit.TabCustomization')}
-
- {translate('::ListForms.ListFormEdit.EditingForm')}
- {translate('::ListForms.ListFormEdit.TabSubForms')}
- {translate('::ListForms.ListFormEdit.TabWidgets')}
-
- {translate('::ListForms.ListFormEdit.TabChartCommon')}
-
- {translate('::ListForms.ListFormEdit.TabChartSeries')}
- {translate('::ListForms.ListFormEdit.TabChartAxis')}
- {translate('::ListForms.ListFormEdit.TabChartPanes')}
-
- {translate('::ListForms.ListFormEdit.TabChartAnimation')}
-
-
- {translate('::ListForms.ListFormEdit.TabChartAnnotations')}
-
-
- {translate('::ListForms.ListFormEdit.TabChartZoomAndPan')}
-
-
- {translate('::ListForms.ListFormEdit.TabChartLegend')}
-
-
- {translate('::ListForms.ListFormEdit.TabChartExport')}
-
-
- {translate('::ListForms.ListFormEdit.TabChartCrosshair')}
-
- */}
-
+
{
onFormTypeChange={setActiveFormType}
/>
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
-
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
{
userList={userList}
>
-
+
{
getListFormCustomizations={getCustomizations}
>
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/ui/src/views/admin/listForm/edit/FormTabEdit.tsx b/ui/src/views/admin/listForm/edit/FormTabEdit.tsx
index 8a69aa3c..495b0d70 100644
--- a/ui/src/views/admin/listForm/edit/FormTabEdit.tsx
+++ b/ui/src/views/admin/listForm/edit/FormTabEdit.tsx
@@ -7,7 +7,6 @@ import {
FormItem,
Input,
Select,
- Tabs,
} from '@/components/ui'
import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
import { useStoreState } from '@/store'
diff --git a/ui/src/views/admin/listForm/edit/FormTabFilters.tsx b/ui/src/views/admin/listForm/edit/FormTabFilters.tsx
index c02c06a6..34bb301a 100644
--- a/ui/src/views/admin/listForm/edit/FormTabFilters.tsx
+++ b/ui/src/views/admin/listForm/edit/FormTabFilters.tsx
@@ -16,11 +16,17 @@ import { ApplyFilterMode } from 'devextreme/common/grids'
import { Field, FieldProps, Form, Formik } from 'formik'
import * as Yup from 'yup'
import { FormEditProps } from './FormEdit'
-import { applyFilterOptions, sortModeOptions } from './options'
+import {
+ applyFilterOptions,
+ overflowWrapOptions,
+ sortModeOptions,
+ whiteSpaceOptions,
+} from './options'
import TabList from '@/components/ui/Tabs/TabList'
import TabNav from '@/components/ui/Tabs/TabNav'
import TabContent from '@/components/ui/Tabs/TabContent'
import { GridOptionsSortModeEnum } from '@/proxy/form/models'
+import { SelectBoxOption } from '@/shared/types'
const validationSchema = Yup.object().shape({})
@@ -33,7 +39,7 @@ function FormTabFilters(props: FormEditProps) {
}
return (
-
+
(