From e22ea52c6afb8a859fa5ba29f5f3776e68199a73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sedat=20=C3=96zt=C3=BCrk?= Date: Sun, 21 Sep 2025 02:17:18 +0300 Subject: [PATCH] =?UTF-8?q?Listelerdeki=20ba=C5=9Fl=C4=B1=C4=9Fa=20Men?= =?UTF-8?q?=C3=BCdeki=20Icon=20getirildi.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/src/utils/navigation.ts | 20 +++++++++++++++++++- ui/src/views/list/CardView.tsx | 11 ++++++++++- ui/src/views/list/List.tsx | 27 +++++++++++++++++++++++---- 3 files changed, 52 insertions(+), 6 deletions(-) diff --git a/ui/src/utils/navigation.ts b/ui/src/utils/navigation.ts index cd472c49..8be80cd4 100644 --- a/ui/src/utils/navigation.ts +++ b/ui/src/utils/navigation.ts @@ -6,11 +6,29 @@ import { } from '@/constants/navigation.constant' import { MenuDto } from '@/proxy/menus/models' +export function navigationTreeToFlat(items: NavigationTree[]): NavigationTree[] { + const result: NavigationTree[] = [] + + const traverse = (nodes: NavigationTree[]) => { + for (const node of nodes) { + const { subMenu, ...rest } = node + result.push(rest as NavigationTree) + + if (subMenu && subMenu.length > 0) { + traverse(subMenu) + } + } + } + + traverse(items) + return result +} + export default function getChildren(menu: MenuDto[], parentCode: string | null): NavigationTree[] { const menus: NavigationTree[] = [] for (const child of menu.filter((a) => a.parentCode === parentCode)) { const item: NavigationTree = { - key: child.url?.length ? child.url : child.code ?? '', + key: child.url?.length ? child.url : (child.code ?? ''), path: child.url ?? '', title: child.displayName ?? '', icon: child.icon ?? '', diff --git a/ui/src/views/list/CardView.tsx b/ui/src/views/list/CardView.tsx index 5aa54d7c..712a3ac3 100644 --- a/ui/src/views/list/CardView.tsx +++ b/ui/src/views/list/CardView.tsx @@ -7,7 +7,7 @@ import { Pagination, Select } from '@/components/ui' import classNames from 'classnames' import { useStoreState } from '@/store/store' import { getList } from '@/services/form.service' -import { FaAngleRight } from 'react-icons/fa' +import { FaAngleRight, FaInbox } from 'react-icons/fa' interface MultiFormViewProps { listFormCode: string @@ -82,6 +82,15 @@ const CardView = ({ listFormCode, searchParams }: MultiFormViewProps) => { return ( <> + {data.length === 0 && ( +
+
+ +

Kayıt Bulunamadı

+

Görüntülenecek herhangi bir veri yok.

+
+
+ )}
{data.map((row, idx) => { const keyField = gridDto.gridOptions.keyFieldName diff --git a/ui/src/views/list/List.tsx b/ui/src/views/list/List.tsx index 534cfe2a..5ba98833 100644 --- a/ui/src/views/list/List.tsx +++ b/ui/src/views/list/List.tsx @@ -1,14 +1,17 @@ -import { useParams, useSearchParams } from 'react-router-dom' -import { useState } from 'react' +import { useLocation, useParams, useSearchParams } from 'react-router-dom' +import { useMemo, useState } from 'react' import Container from '@/components/shared/Container' import Grid from './Grid' -import { FaList, FaTh } from 'react-icons/fa' +import { FaList, FaTh, FaUser } from 'react-icons/fa' import { useStoreState } from '@/store/store' import classNames from 'classnames' import { useLocalization } from '@/utils/hooks/useLocalization' import { GridDto } from '@/proxy/form/models' import CardView from './CardView' import { Button } from '@/components/ui' +import navigationIcon from '@/configs/navigation-icon.config' +import { NavigationTree } from '@/@types/navigation' +import { navigationTreeToFlat } from '@/utils/navigation' const List = () => { const params = useParams() @@ -18,9 +21,22 @@ const List = () => { const [viewMode, setViewMode] = useState<'grid' | 'card'>('grid') const mode = useStoreState((state) => state.theme.mode) const [gridDto, setGridDto] = useState() + const mainMenu = useStoreState((state) => state.abpConfig.menu.mainMenu) + const location = useLocation() if (!listFormCode) return null + const getCurrentMenuIcon = (className = 'w-6 h-6'): JSX.Element => { + const menus = navigationTreeToFlat(mainMenu) + const currentMenu = menus.find((menu) => menu.path === location.pathname) + + if (currentMenu?.icon) { + const IconComponent = navigationIcon[currentMenu.icon] || FaUser + return + } + return + } + return (
{ 'border-neutral-700': mode === 'dark', })} > -

{translate('::' + gridDto?.gridOptions?.title)}

+
+ {getCurrentMenuIcon('w-6 h-6')} +

{translate('::' + gridDto?.gridOptions?.title)}

+
{gridDto?.gridOptions?.description === gridDto?.gridOptions?.title ? (