List üzerindeki Toogle butonlar düzeltildi.

This commit is contained in:
Sedat ÖZTÜRK 2025-09-23 17:05:42 +03:00
parent 85a14f580c
commit d4f994b7b1
2 changed files with 121 additions and 119 deletions

View file

@ -201,12 +201,18 @@ const Card = (props: CardProps) => {
const { getLookupDataSource } = useLookupDataSource({ listFormCode }) const { getLookupDataSource } = useLookupDataSource({ listFormCode })
const [layoutCount, setLayoutCount] = useState(4) const [layoutCount, setLayoutCount] = useState(4)
const [searchText, setSearchText] = useState('') const [searchText, setSearchText] = useState('')
const [prevValue, setPrevValue] = useState('')
const [loading, setLoading] = useState(false) const [loading, setLoading] = useState(false)
const [extraFilters, setExtraFilters] = useState<GridExtraFilterState[]>([]) const [extraFilters, setExtraFilters] = useState<GridExtraFilterState[]>([])
const { states } = useStoreState((state) => state.base.lists) const { states } = useStoreState((state) => state.base.lists)
const { setStates } = useStoreActions((a) => a.base.lists) const { setStates } = useStoreActions((a) => a.base.lists)
// props.searchParams varsa onunla başlat
const [urlSearchParams, setUrlSearchParams] = useState<URLSearchParams>(
searchParams ? new URLSearchParams(searchParams) : new URLSearchParams(),
)
const lookupCache = useRef<Map<string, any>>(new Map()) const lookupCache = useRef<Map<string, any>>(new Map())
const getCachedLookupDataSource = useCallback( const getCachedLookupDataSource = useCallback(
(editorOptions: any, colData: any) => { (editorOptions: any, colData: any) => {
@ -230,12 +236,7 @@ const Card = (props: CardProps) => {
setCurrentPage(page) setCurrentPage(page)
} }
// props.searchParams varsa onunla başlat const onFilter = useCallback(
const [urlSearchParams, setUrlSearchParams] = useState<URLSearchParams>(
searchParams ? new URLSearchParams(searchParams) : new URLSearchParams(),
)
const filtrele = useCallback(
(value?: string) => { (value?: string) => {
const text = value !== undefined ? value.trim() : searchText.trim() const text = value !== undefined ? value.trim() : searchText.trim()
@ -363,13 +364,23 @@ const Card = (props: CardProps) => {
onChange={(e) => setSearchText(e.target.value)} onChange={(e) => setSearchText(e.target.value)}
onKeyDown={(e) => { onKeyDown={(e) => {
if (e.key === 'Enter') { if (e.key === 'Enter') {
filtrele(e.currentTarget.value) onFilter(e.currentTarget.value)
setPrevValue(e.currentTarget.value.trim()) // Enter ile tetiklenirse güncelle
} }
}} }}
onBlur={(e) => { onBlur={(e) => {
filtrele(e.currentTarget.value) const newValue = e.currentTarget.value.trim()
// 1. Değer değişmemişse => hiçbir şey yapma
if (newValue === prevValue) return
// 2. Yeni değer boş, ama eskiden değer vardı => filtre temizle
// 3. Yeni değer dolu ve eskisinden farklı => filtre uygula
onFilter(newValue)
setPrevValue(newValue)
}} }}
className="p-1 pl-6 pr-2 border border-1 outline-none text-xs text-gray-700 dark:text-gray-200 placeholder-gray-400 rounded" className="p-1 pl-6 pr-2 border border-1 outline-none text-xs text-gray-700
dark:text-gray-200 placeholder-gray-400 rounded"
/> />
<Button <Button
size="xs" size="xs"

View file

@ -11,7 +11,6 @@ import Card from './Card'
import { Button } from '@/components/ui' import { Button } from '@/components/ui'
import Pivot from './Pivot' import Pivot from './Pivot'
import { getList } from '@/services/form.service' import { getList } from '@/services/form.service'
import { Loading } from '@/components/shared'
import { useCurrentMenuIcon } from '@/utils/hooks/useCurrentMenuIcon' import { useCurrentMenuIcon } from '@/utils/hooks/useCurrentMenuIcon'
const List = () => { const List = () => {
@ -28,28 +27,26 @@ const List = () => {
const { states } = useStoreState((state) => state.base.lists) const { states } = useStoreState((state) => state.base.lists)
const { setStates } = useStoreActions((a) => a.base.lists) const { setStates } = useStoreActions((a) => a.base.lists)
useEffect(() => {
const initializeGridAsync = async () => { const initializeGridAsync = async () => {
const response = await getList({ listFormCode }) const response = await getList({ listFormCode })
setGridDto(response.data) setGridDto(response.data)
} }
useEffect(() => {
initializeGridAsync() initializeGridAsync()
}, [listFormCode]) .then(() => {
useEffect(() => {
if (!gridDto) {
return
}
//base içerisine kaydedilen state içerisinden bakılacak //base içerisine kaydedilen state içerisinden bakılacak
const listFormStates = states.find((a) => a.listFormCode === listFormCode) const listFormStates = states.find((a) => a.listFormCode === listFormCode)
if (listFormStates) { if (listFormStates) {
setViewMode(listFormStates.layout) setViewMode(listFormStates.layout || 'grid')
} else { } else {
setViewMode(gridDto?.gridOptions?.layoutDto.defaultLayout) setViewMode(gridDto?.gridOptions?.layoutDto.defaultLayout || 'grid')
} }
}, [gridDto]) })
.catch((error) => {
console.error('Hata oluştu:', error)
})
}, [listFormCode])
if (!listFormCode) { if (!listFormCode) {
return null return null
@ -57,10 +54,6 @@ const List = () => {
return ( return (
<Container> <Container>
{!gridDto ? (
<Loading loading={true} />
) : (
<>
<div <div
className={classNames('flex items-center border-solid gap-1 pb-1', { className={classNames('flex items-center border-solid gap-1 pb-1', {
'border-gray-100': mode === 'light', 'border-gray-100': mode === 'light',
@ -140,16 +133,14 @@ const List = () => {
isSubForm={false} isSubForm={false}
gridDto={gridDto} gridDto={gridDto}
/> />
) : ( ) : viewMode === 'grid' ? (
<Grid <Grid
listFormCode={listFormCode} listFormCode={listFormCode}
searchParams={searchParams} searchParams={searchParams}
isSubForm={false} isSubForm={false}
gridDto={gridDto} gridDto={gridDto}
/> />
)} ) : null}
</>
)}
</Container> </Container>
) )
} }