From 0f46de0381382317fe069d1b867db091e07e568a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sedat=20=C3=96ZT=C3=9CRK?= <76204082+iamsedatozturk@users.noreply.github.com> Date: Thu, 11 Jun 2026 14:38:48 +0300 Subject: [PATCH] Mobile ve Desktop IsPopupFullScreen --- .../DynamicApi/CreateUpdateUserInput.cs | 1 + .../Identity/PlatformIdentityAppService.cs | 1 + .../ListForms/ListFormDynamicApiAppService.cs | 9 +++++- ui/src/views/form/FormEdit.tsx | 2 +- ui/src/views/form/FormView.tsx | 2 +- ui/src/views/form/notes/NoteList.tsx | 20 ++++++------- ui/src/views/form/notes/NotePanel.tsx | 16 +++++++---- ui/src/views/list/Grid.tsx | 28 +++++++++++-------- ui/src/views/list/Tree.tsx | 24 ++++++++++------ 9 files changed, 64 insertions(+), 39 deletions(-) diff --git a/api/src/Sozsoft.Platform.Application.Contracts/ListForms/DynamicApi/CreateUpdateUserInput.cs b/api/src/Sozsoft.Platform.Application.Contracts/ListForms/DynamicApi/CreateUpdateUserInput.cs index f1c5d1f..a6aef1a 100644 --- a/api/src/Sozsoft.Platform.Application.Contracts/ListForms/DynamicApi/CreateUpdateUserInput.cs +++ b/api/src/Sozsoft.Platform.Application.Contracts/ListForms/DynamicApi/CreateUpdateUserInput.cs @@ -4,6 +4,7 @@ namespace Sozsoft.Platform.ListForms.DynamicApi; public class CreateUpdateUserInput { + public string Avatar { get; set; } public string UserName { get; set; } public string Name { get; set; } public string Surname { get; set; } diff --git a/api/src/Sozsoft.Platform.Application/Identity/PlatformIdentityAppService.cs b/api/src/Sozsoft.Platform.Application/Identity/PlatformIdentityAppService.cs index 5f330b5..8d310e1 100644 --- a/api/src/Sozsoft.Platform.Application/Identity/PlatformIdentityAppService.cs +++ b/api/src/Sozsoft.Platform.Application/Identity/PlatformIdentityAppService.cs @@ -170,6 +170,7 @@ public class PlatformIdentityAppService : ApplicationService LoginEndDate = user.GetLoginEndDate(), ConcurrencyStamp = user.ConcurrencyStamp, LastPasswordChangeTime = user.LastPasswordChangeTime, + Avatar = user.GetAvatar(), EmailConfirmed = user.EmailConfirmed, PhoneNumberConfirmed = user.PhoneNumberConfirmed, diff --git a/api/src/Sozsoft.Platform.Application/ListForms/ListFormDynamicApiAppService.cs b/api/src/Sozsoft.Platform.Application/ListForms/ListFormDynamicApiAppService.cs index 12d6f17..2dd169a 100644 --- a/api/src/Sozsoft.Platform.Application/ListForms/ListFormDynamicApiAppService.cs +++ b/api/src/Sozsoft.Platform.Application/ListForms/ListFormDynamicApiAppService.cs @@ -68,6 +68,7 @@ public class ListFormDynamicApiAppService : PlatformAppService, IListFormDynamic user.SetDepartmentId(ParseGuid(input.Data.DepartmentId)); user.SetJobPositionId(ParseGuid(input.Data.JobPositionId)); user.SetIsVerified(verify); + user.SetAvatar(input.Data.Avatar); (await userManager.CreateAsync(user, input.Data.Password)).CheckErrors(); await userManager.SetLockoutEnabledAsync(user, true); @@ -138,6 +139,12 @@ public class ListFormDynamicApiAppService : PlatformAppService, IListFormDynamic user.SetJobPositionId(ParseGuid(input.Data.JobPositionId)); } + if (input.Data.Avatar != null) + { + user.SetJobPositionId(ParseGuid(input.Data.Avatar)); + } + + (await userManager.UpdateAsync(user)).CheckErrors(); } @@ -231,7 +238,7 @@ public class ListFormDynamicApiAppService : PlatformAppService, IListFormDynamic entity.SetEmail(input.Data.Email); entity.SetWebsite(input.Data.Website); entity.SetMenuGroup(input.Data.MenuGroup); - + await tenantRepository.UpdateAsync(entity, autoSave: true); } diff --git a/ui/src/views/form/FormEdit.tsx b/ui/src/views/form/FormEdit.tsx index c9bb6d0..ff22a63 100644 --- a/ui/src/views/form/FormEdit.tsx +++ b/ui/src/views/form/FormEdit.tsx @@ -78,7 +78,7 @@ const FormEdit = ( return ( <> {!isSubForm && ( {!isSubForm && ( = ({ } return ( -
+
setCurrentTab(val as 'notes' | 'audit')} variant="underline" > - + {translate('::ListForms.ListForm.Notes')} @@ -358,7 +358,7 @@ export const NoteList: React.FC = ({
{currentTab === 'notes' ? ( -
+
) : ( -
+
{notes.map((note, index) => { const files = note.filesJson ? JSON.parse(note.filesJson) : [] const creationDate = note.creationTime ? new Date(note.creationTime) : null @@ -413,7 +413,7 @@ export const NoteList: React.FC = ({ return (
{/* Timeline Düğmesi */}
@@ -422,8 +422,8 @@ export const NoteList: React.FC = ({
{/* Header */} -
-
+
+
= ({
{/* Body */} -
+
{note.subject && (

{note.subject}

)} @@ -503,7 +503,7 @@ export const NoteList: React.FC = ({

{translate('::ListForms.ListForm.AuditLogs.Empty')}

) : ( -
+
{auditItems.map(({ log, matchedActions }) => { const execTime = log.executionTime ? new Date(log.executionTime) : null const changeCount = log.entityChangeCount ?? log.entityChanges?.length ?? 0 @@ -552,7 +552,7 @@ export const NoteList: React.FC = ({ return (
diff --git a/ui/src/views/form/notes/NotePanel.tsx b/ui/src/views/form/notes/NotePanel.tsx index 5ec01ff..9795719 100644 --- a/ui/src/views/form/notes/NotePanel.tsx +++ b/ui/src/views/form/notes/NotePanel.tsx @@ -7,6 +7,8 @@ import { noteService } from '@/services/note.service' import { NoteDto } from '@/proxy/note/models' import { useLocalization } from '@/utils/hooks/useLocalization' +const NOTE_PANEL_WIDTH = 375 + interface NotePanelProps { entityName: string entityId: string @@ -144,18 +146,20 @@ export const NotePanel: React.FC = ({ {/* Panel */}
e.stopPropagation()} >
{/* Üst Satır: Başlık, Kayıt Bilgisi Toggle ve Kapat Butonu */} -
-
- {entityName} +
+
+ + {entityName} + - +
diff --git a/ui/src/views/list/Grid.tsx b/ui/src/views/list/Grid.tsx index 881dee9..1f8cc89 100644 --- a/ui/src/views/list/Grid.tsx +++ b/ui/src/views/list/Grid.tsx @@ -254,7 +254,7 @@ const Grid = (props: GridProps) => { const { listFormCode, searchParams, isSubForm, level, gridDto: extGridDto } = props const { translate } = useLocalization() const currentUser = useStoreState((state) => state.auth.user) - const useMobileEditPopup = useRef(isMobileViewport() || isTouchLikeDevice()).current + const useMobileEditPopup = isMobileViewport() || isTouchLikeDevice() const gridRef = useRef() const refListFormCode = useRef('') @@ -520,7 +520,9 @@ const Grid = (props: GridProps) => { } setMode('new') - setIsPopupFullScreen(gridDto?.gridOptions.editingOptionDto?.popup?.fullScreen ?? false) + setIsPopupFullScreen( + useMobileEditPopup || (gridDto?.gridOptions.editingOptionDto?.popup?.fullScreen ?? false), + ) e.promise = (async () => { const rawFilter = searchParams?.get('filter') @@ -609,7 +611,7 @@ const Grid = (props: GridProps) => { editingFormDataRef.current = { ...(e.data || {}) } })() }, - [gridDto, searchParams, extraFilters, getNextSequenceValue], + [gridDto, searchParams, extraFilters, getNextSequenceValue, useMobileEditPopup], ) const onRowInserting = useCallback( @@ -659,7 +661,9 @@ const Grid = (props: GridProps) => { isEditingRef.current = true editingFormDataRef.current = { ...(e.data || {}) } setMode('edit') - setIsPopupFullScreen(gridDto?.gridOptions.editingOptionDto?.popup?.fullScreen ?? false) + setIsPopupFullScreen( + useMobileEditPopup || (gridDto?.gridOptions.editingOptionDto?.popup?.fullScreen ?? false), + ) const columns = e.component.option('columns') as GridColumnData[] // FormEditingExtraItem field ise datayı doldur @@ -676,7 +680,7 @@ const Grid = (props: GridProps) => { e.data[col.dataField] = json[field[1]] }) }, - [gridDto, mode], + [gridDto, mode, useMobileEditPopup], ) const onDataErrorOccurred = useCallback((e: DataGridTypes.DataErrorOccurredEvent) => { @@ -965,9 +969,11 @@ const Grid = (props: GridProps) => { } if (gridDto.gridOptions.editingOptionDto?.popup) { - setIsPopupFullScreen(gridDto.gridOptions.editingOptionDto?.popup?.fullScreen ?? false) + setIsPopupFullScreen( + useMobileEditPopup || (gridDto.gridOptions.editingOptionDto?.popup?.fullScreen ?? false), + ) } - }, [gridDto]) + }, [gridDto, useMobileEditPopup]) // extraFilters değişikliklerini useMemo ile optimize et const filterParams = useMemo(() => { @@ -1557,8 +1563,8 @@ const Grid = (props: GridProps) => { width: useMobileEditPopup ? '100%' : gridDto.gridOptions.editingOptionDto?.popup?.width, - height: useMobileEditPopup - ? '100dvh' + height: useMobileEditPopup && isPopupFullScreen + ? '100%' : gridDto.gridOptions.editingOptionDto?.popup?.height, position: useMobileEditPopup ? { @@ -1607,7 +1613,7 @@ const Grid = (props: GridProps) => { ? translate('::Normal Boyut') : translate('::Tam Ekran'), stylingMode: 'text', - onClick: () => setIsPopupFullScreen(!isPopupFullScreen), + onClick: () => setIsPopupFullScreen((current) => !current), }, }, ], @@ -1834,7 +1840,7 @@ const Grid = (props: GridProps) => {