diff --git a/api/src/Kurs.Platform.Application.Contracts/ListForms/GridOptionsDto/GridEditingPopupDto.cs b/api/src/Kurs.Platform.Application.Contracts/ListForms/GridOptionsDto/GridEditingPopupDto.cs index 29ce446a..3a6db6d7 100644 --- a/api/src/Kurs.Platform.Application.Contracts/ListForms/GridOptionsDto/GridEditingPopupDto.cs +++ b/api/src/Kurs.Platform.Application.Contracts/ListForms/GridOptionsDto/GridEditingPopupDto.cs @@ -14,4 +14,7 @@ public class GridEditingPopupDto /// guncelleme asamasinda popup ekranin disinda bir alana tiklanirsa popup ekran kapansin /// public bool HideOnOutsideClick { get; set; } = true; + /// popup ekranin küçültülüp büyütülebilmesini saglar + /// + public bool ResizeEnabled { get; set; } = true; } diff --git a/api/src/Kurs.Platform.DbMigrator/Seeds/LanguagesData.json b/api/src/Kurs.Platform.DbMigrator/Seeds/LanguagesData.json index 992075f8..e6f207a5 100644 --- a/api/src/Kurs.Platform.DbMigrator/Seeds/LanguagesData.json +++ b/api/src/Kurs.Platform.DbMigrator/Seeds/LanguagesData.json @@ -4837,6 +4837,12 @@ "en": "Full Screen", "tr": "Tam Ekran" }, + { + "resourceName": "Platform", + "key": "ListForms.ListFormEdit.ResizeEnabled", + "en": "Resize Enabled", + "tr": "Küçültme/Büyütme İzni" + }, { "resourceName": "Platform", "key": "ListForms.ListFormEdit.EditingForm", diff --git a/ui/src/proxy/form/models.ts b/ui/src/proxy/form/models.ts index db7856d4..814ddffd 100644 --- a/ui/src/proxy/form/models.ts +++ b/ui/src/proxy/form/models.ts @@ -426,6 +426,7 @@ export interface GridEditingPopupDto { height: number fullScreen: boolean hideOnOutsideClick: boolean + resizeEnabled: boolean } export interface GridFilterRowDto { diff --git a/ui/src/views/admin/listForm/edit/FormTabEdit.tsx b/ui/src/views/admin/listForm/edit/FormTabEdit.tsx index 495b0d70..b3dc6f83 100644 --- a/ui/src/views/admin/listForm/edit/FormTabEdit.tsx +++ b/ui/src/views/admin/listForm/edit/FormTabEdit.tsx @@ -1,13 +1,5 @@ import { Container } from '@/components/shared' -import { - Button, - Card, - Checkbox, - FormContainer, - FormItem, - Input, - Select, -} from '@/components/ui' +import { Button, Card, Checkbox, FormContainer, FormItem, Input, Select } from '@/components/ui' import { ListFormEditTabs } from '@/proxy/admin/list-form/options' import { useStoreState } from '@/store' import { useLocalization } from '@/utils/hooks/useLocalization' @@ -348,6 +340,20 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) { component={Checkbox} /> + + + { const [mode, setMode] = useState('view') const [extraFilters, setExtraFilters] = useState([]) const [gridDto, setGridDto] = useState() + const [isPopupFullScreen, setIsPopupFullScreen] = useState(false) const preloadExportLibs = () => { import('exceljs') @@ -262,6 +263,7 @@ const Grid = (props: GridProps) => { } setMode('new') + setIsPopupFullScreen(gridDto?.gridOptions.editingOptionDto?.popup?.fullScreen ?? false) for (const colFormat of gridDto?.columnFormats) { if (!colFormat.fieldName) { @@ -357,6 +359,7 @@ const Grid = (props: GridProps) => { function onEditingStart(e: DataGridTypes.EditingStartEvent) { setMode('edit') + setIsPopupFullScreen(gridDto?.gridOptions.editingOptionDto?.popup?.fullScreen ?? false) const columns = e.component.option('columns') as GridColumnData[] // FormEditingExtraItem field ise datayı doldur columns?.forEach((col) => { @@ -452,6 +455,10 @@ const Grid = (props: GridProps) => { })), ) } + + if (gridDto.gridOptions.editingOptionDto?.popup) { + setIsPopupFullScreen(gridDto.gridOptions.editingOptionDto?.popup?.fullScreen ?? false) + } }, [gridDto]) useEffect(() => { @@ -700,9 +707,11 @@ const Grid = (props: GridProps) => { onExporting={onExporting} onEditCanceled={() => { setMode('view') + setIsPopupFullScreen(false) }} onSaved={() => { setMode('view') + setIsPopupFullScreen(false) }} onRowInserted={() => { props.refreshData?.() @@ -807,16 +816,32 @@ const Grid = (props: GridProps) => { } startEditAction={gridDto.gridOptions.editingOptionDto?.startEditAction} popup={{ - title: translate('::' + gridDto.gridOptions.editingOptionDto?.popup?.title), + title: (mode === 'new' ? '✚ ' : '🖊️ ') + translate('::' + gridDto.gridOptions.editingOptionDto?.popup?.title), showTitle: gridDto.gridOptions.editingOptionDto?.popup?.showTitle, hideOnOutsideClick: gridDto.gridOptions.editingOptionDto?.popup?.hideOnOutsideClick, width: gridDto.gridOptions.editingOptionDto?.popup?.width, height: gridDto.gridOptions.editingOptionDto?.popup?.height, - fullScreen: gridDto.gridOptions.editingOptionDto?.popup?.fullScreen, + resizeEnabled: gridDto.gridOptions.editingOptionDto?.popup?.resizeEnabled, + fullScreen: isPopupFullScreen, + toolbarItems: [ + { + widget: 'dxButton', + toolbar: 'top', + location: 'after', + options: { + icon: isPopupFullScreen ? 'collapse' : 'fullscreen', + hint: isPopupFullScreen + ? translate('::Normal Boyut') + : translate('::Tam Ekran'), + stylingMode: 'text', + onClick: () => setIsPopupFullScreen(!isPopupFullScreen), + }, + }, + ], }} form={{ - colCount: 1, + colCount: 1, onFieldDataChanged: (e) => { if (e.dataField) { const formItem = gridDto.gridOptions.editingFormDto @@ -839,7 +864,9 @@ const Grid = (props: GridProps) => { .sort((a: any, b: any) => (a.order >= b.order ? 1 : -1)) // Tabbed item'ları grupla - const tabbedItems = sortedFormDto.filter((e: any) => e.itemType === 'tabbed') + const tabbedItems = sortedFormDto.filter( + (e: any) => e.itemType === 'tabbed', + ) const result: any[] = [] // Helper function: item mapper @@ -956,11 +983,8 @@ const Grid = (props: GridProps) => { const maxItemColSpan = Math.max( ...(e.items?.map((i: any) => i.colSpan || 1) || [1]), ) - const effectiveColCount = Math.max( - maxItemColSpan, - e.colCount || 1, - ) - + const effectiveColCount = Math.max(maxItemColSpan, e.colCount || 1) + result.push({ itemType: e.itemType, colCount: effectiveColCount, @@ -985,7 +1009,7 @@ const Grid = (props: GridProps) => { // Tabbed için caption OLMAMALI - sadece tabs array içinde title kullan result.push({ itemType: 'tabbed', - colCount: 1, + colCount: 1, colSpan: 1, // caption kullanma! Tabs içindeki title'lar yeterli tabs: tabbedItems.map((tabbedItem: any) => { @@ -998,7 +1022,6 @@ const Grid = (props: GridProps) => { tabbedItem.colCount || 1, ) - return { title: tabbedItem.caption, // Her tab'ın title'ı colCount: effectiveColCount,