@axzydev/axzy_ui_system 1.2.14 → 1.2.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "packageManager": "pnpm@10.34.0",
5
5
  "private": false,
6
6
  "license": "MIT",
7
- "version": "1.2.14",
7
+ "version": "1.2.15",
8
8
  "type": "module",
9
9
  "sideEffects": [
10
10
  "*.css"
@@ -87,6 +87,7 @@ export default function ITDataTable<T extends Record<string, unknown>>({
87
87
  } = useTableState({ defaultItemsPerPage });
88
88
 
89
89
  const debounceTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);
90
+ const hasFetchedRef = useRef(false);
90
91
 
91
92
  const computedTotalPages = Math.ceil(totalItems / itemsPerPage) || 1;
92
93
 
@@ -101,17 +102,19 @@ export default function ITDataTable<T extends Record<string, unknown>>({
101
102
  });
102
103
  setData(response.data || []);
103
104
  setTotalItems(response.total || 0);
105
+ hasFetchedRef.current = true;
104
106
  } catch (error) {
105
107
  console.error("ITDataTable: Error fetching data", error);
106
108
  setData([]);
107
109
  setTotalItems(0);
110
+ hasFetchedRef.current = true;
108
111
  } finally {
109
112
  setIsLoading(false);
110
113
  }
111
114
  }, [currentPage, itemsPerPage, filters, sortConfig, fetchData, externalFilters]);
112
115
 
113
116
  useEffect(() => {
114
- if (!fetchOnMount && data.length === 0 && !isLoading) return;
117
+ if (!fetchOnMount && !hasFetchedRef.current) return;
115
118
 
116
119
  if (debounceTimerRef.current) clearTimeout(debounceTimerRef.current);
117
120
 
@@ -122,7 +125,7 @@ export default function ITDataTable<T extends Record<string, unknown>>({
122
125
  return () => {
123
126
  if (debounceTimerRef.current) clearTimeout(debounceTimerRef.current);
124
127
  };
125
- }, [currentPage, itemsPerPage, sortConfig, filters, externalFilters, reloadTrigger, fetchOnMount, performFetch, data.length, isLoading, debounceMs]);
128
+ }, [currentPage, itemsPerPage, sortConfig, filters, externalFilters, reloadTrigger, fetchOnMount, performFetch, debounceMs]);
126
129
 
127
130
  const renderFilterInput = (col: Column<T>) => {
128
131
  if (!col.filter) return null;