From cc63d222d108aaa1a6ccd048ed17dd5c0c147ef0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sedat=20=C3=96zt=C3=BCrk?= Date: Wed, 8 Oct 2025 23:35:47 +0300 Subject: [PATCH] =?UTF-8?q?Filter,=20Sorting=20ve=20Row=20tan=C4=B1mlamala?= =?UTF-8?q?r=C4=B1=20yap=C4=B1ld=C4=B1.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GridOptionsDto/GridColumnOptionDto.cs | 2 +- .../GridOptionsDto/GridOptionsDto.cs | 14 ++ .../ListForms/GridOptionsDto/GridRowDto.cs | 8 ++ .../ListForms/ListFormEditTabs.cs | 2 + .../Administration/ListFormsAppService.cs | 9 +- .../Seeds/TenantData.json | 42 +++++- .../Entities/Host/ListForm/ListForm.cs | 1 + ....cs => 20251008192259_Initial.Designer.cs} | 5 +- ...1_Initial.cs => 20251008192259_Initial.cs} | 1 + .../PlatformDbContextModelSnapshot.cs | 3 + ui/src/components/ui/Alert/Alert.tsx | 2 +- ui/src/proxy/admin/list-form/options.ts | 4 + ui/src/proxy/form/models.ts | 8 ++ ui/src/views/admin/listForm/edit/FormEdit.tsx | 129 ++++++------------ .../views/admin/listForm/edit/FormTabEdit.tsx | 1 - .../admin/listForm/edit/FormTabFilters.tsx | 42 ++---- .../views/admin/listForm/edit/FormTabRow.tsx | 119 ++++++++++++++++ .../admin/listForm/edit/FormTabSorting.tsx | 88 ++++++++++++ ui/src/views/admin/listForm/edit/options.ts | 17 +++ ui/src/views/list/Grid.tsx | 8 +- 20 files changed, 379 insertions(+), 126 deletions(-) create mode 100644 api/src/Kurs.Platform.Application.Contracts/ListForms/GridOptionsDto/GridRowDto.cs rename api/src/Kurs.Platform.EntityFrameworkCore/Migrations/{20251008124621_Initial.Designer.cs => 20251008192259_Initial.Designer.cs} (99%) rename api/src/Kurs.Platform.EntityFrameworkCore/Migrations/{20251008124621_Initial.cs => 20251008192259_Initial.cs} (99%) create mode 100644 ui/src/views/admin/listForm/edit/FormTabRow.tsx create mode 100644 ui/src/views/admin/listForm/edit/FormTabSorting.tsx 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 ( - + (
- + - - {translate('::ListForms.ListFormEdit.FilteringSorting')} - {translate('::ListForms.ListFormEdit.FilteringSortingFilterRow')} @@ -59,33 +62,6 @@ function FormTabFilters(props: FormEditProps) { {translate('::ListForms.ListFormEdit.FilteringSortingFilterPanel')} - - - - {({ field, form }: FieldProps) => ( - option.value === values.rowDto.whiteSpace, + )} + onChange={(option) => form.setFieldValue(field.name, option?.value)} + /> + )} + + + + + + {({ field, form }: FieldProps) => ( + option.value === values.sortMode)} + onChange={(option) => form.setFieldValue(field.name, option?.value)} + /> + )} + + + + + +
+ )} +
+
+ ) +} + +export default FormTabSorting diff --git a/ui/src/views/admin/listForm/edit/options.ts b/ui/src/views/admin/listForm/edit/options.ts index 3f1fc12b..c20d9946 100644 --- a/ui/src/views/admin/listForm/edit/options.ts +++ b/ui/src/views/admin/listForm/edit/options.ts @@ -27,6 +27,23 @@ import { import { enumToList } from '../../../../utils/enumUtils' import { colSpan, iconList, WidgetColorEnum } from '@/components/ui/Widget/iconList' +export const overflowWrapOptions = [ + { value: 'normal', label: 'Normal' }, + { value: 'break-word', label: 'Break Word' }, + { value: 'none', label: 'None' }, + { value: 'break-all', label: 'Break All' }, + { value: 'keep-all', label: 'Keep All' }, +] + +export const whiteSpaceOptions = [ + { value: 'normal', label: 'Normal' }, + { value: 'nowrap', label: 'No Wrap' }, + { value: 'pre', label: 'Pre' }, + { value: 'pre-line', label: 'Pre Line' }, + { value: 'pre-wrap', label: 'Pre Wrap' }, + { value: 'break-word', label: 'Break Word' }, +] + export const sortModeOptions = [ { value: 'none', label: 'None' }, { value: 'single', label: 'Single' }, diff --git a/ui/src/views/list/Grid.tsx b/ui/src/views/list/Grid.tsx index bec0879d..17fdefbf 100644 --- a/ui/src/views/list/Grid.tsx +++ b/ui/src/views/list/Grid.tsx @@ -639,6 +639,13 @@ const Grid = (props: GridProps) => { columnAutoWidth={gridDto.gridOptions.columnOptionDto?.columnAutoWidth} rtlEnabled={gridDto.gridOptions.columnOptionDto?.rtlEnabled} rowAlternationEnabled={gridDto.gridOptions.columnOptionDto?.rowAlternationEnabled} + onRowPrepared={(e) => { + if (e.rowType === 'data') { + e.rowElement.style.height = gridDto.gridOptions?.rowDto.rowHeight + e.rowElement.style.whiteSpace = gridDto.gridOptions?.rowDto.whiteSpace + e.rowElement.style.overflowWrap = gridDto.gridOptions?.rowDto.overflowWrap + } + }} hoverStateEnabled={gridDto.gridOptions.columnOptionDto?.hoverStateEnabled} columnHidingEnabled={gridDto.gridOptions.columnOptionDto?.columnHidingEnabled} focusedRowEnabled={gridDto.gridOptions.columnOptionDto?.focusedRowEnabled} @@ -714,7 +721,6 @@ const Grid = (props: GridProps) => { } } - // 🔥 Butonların onClick eventlerini wrap et if (editor.editorOptions?.buttons) { editor.editorOptions.buttons = editor.editorOptions.buttons.map( (btn: any) => {