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 ? (