From d4f994b7b17bd96c45ed868e4c94d18ca757e217 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sedat=20=C3=96ZT=C3=9CRK?= <76204082+iamsedatozturk@users.noreply.github.com> Date: Tue, 23 Sep 2025 17:05:42 +0300 Subject: [PATCH] =?UTF-8?q?List=20=C3=BCzerindeki=20Toogle=20butonlar=20d?= =?UTF-8?q?=C3=BCzeltildi.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/src/views/list/Card.tsx | 29 +++-- ui/src/views/list/List.tsx | 211 ++++++++++++++++++------------------- 2 files changed, 121 insertions(+), 119 deletions(-) diff --git a/ui/src/views/list/Card.tsx b/ui/src/views/list/Card.tsx index 6a01a7ef..9cc2420d 100644 --- a/ui/src/views/list/Card.tsx +++ b/ui/src/views/list/Card.tsx @@ -201,12 +201,18 @@ const Card = (props: CardProps) => { const { getLookupDataSource } = useLookupDataSource({ listFormCode }) const [layoutCount, setLayoutCount] = useState(4) const [searchText, setSearchText] = useState('') + const [prevValue, setPrevValue] = useState('') const [loading, setLoading] = useState(false) const [extraFilters, setExtraFilters] = useState([]) const { states } = useStoreState((state) => state.base.lists) const { setStates } = useStoreActions((a) => a.base.lists) + // props.searchParams varsa onunla başlat + const [urlSearchParams, setUrlSearchParams] = useState( + searchParams ? new URLSearchParams(searchParams) : new URLSearchParams(), + ) + const lookupCache = useRef>(new Map()) const getCachedLookupDataSource = useCallback( (editorOptions: any, colData: any) => { @@ -230,12 +236,7 @@ const Card = (props: CardProps) => { setCurrentPage(page) } - // props.searchParams varsa onunla başlat - const [urlSearchParams, setUrlSearchParams] = useState( - searchParams ? new URLSearchParams(searchParams) : new URLSearchParams(), - ) - - const filtrele = useCallback( + const onFilter = useCallback( (value?: string) => { const text = value !== undefined ? value.trim() : searchText.trim() @@ -363,13 +364,23 @@ const Card = (props: CardProps) => { onChange={(e) => setSearchText(e.target.value)} onKeyDown={(e) => { if (e.key === 'Enter') { - filtrele(e.currentTarget.value) + onFilter(e.currentTarget.value) + setPrevValue(e.currentTarget.value.trim()) // Enter ile tetiklenirse güncelle } }} 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" /> - )} - - {gridDto?.gridOptions?.layoutDto.card && ( - - )} - {gridDto?.gridOptions?.layoutDto.pivot && ( - - )} - - - - {viewMode === 'pivot' ? ( - - ) : viewMode === 'card' ? ( - - ) : ( - +
+ {gridDto?.gridOptions?.layoutDto.grid && ( + )} - - )} + + {gridDto?.gridOptions?.layoutDto.card && ( + + )} + {gridDto?.gridOptions?.layoutDto.pivot && ( + + )} +
+ + + {viewMode === 'pivot' ? ( + + ) : viewMode === 'card' ? ( + + ) : viewMode === 'grid' ? ( + + ) : null} ) }