ar-design 0.1.81 → 0.1.83
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.
|
@@ -19,7 +19,7 @@ const Table = function ({ children, title, description, data, columns, actions,
|
|
|
19
19
|
// states
|
|
20
20
|
const [selectAll, setSelectAll] = useState(false);
|
|
21
21
|
const [selectionItems, setSelectionItems] = useState([]);
|
|
22
|
-
const [
|
|
22
|
+
const [searchedText, setSearchedText] = useState(undefined);
|
|
23
23
|
const [_searchedParams, setSearchedParams] = useState(undefined);
|
|
24
24
|
const [currentPage, setCurrentPage] = useState(1);
|
|
25
25
|
if (config && Object.keys(config.scroll || {}).length > 0) {
|
|
@@ -94,23 +94,21 @@ const Table = function ({ children, title, description, data, columns, actions,
|
|
|
94
94
|
});
|
|
95
95
|
};
|
|
96
96
|
// Derinlemesine arama yapmak için özyinelemeli bir fonksiyon tanımlayalım.
|
|
97
|
-
const deepSearch = (
|
|
98
|
-
if (
|
|
97
|
+
const deepSearch = (item, searchedText) => {
|
|
98
|
+
if (!searchedText)
|
|
99
99
|
return false;
|
|
100
|
-
if (searchedTexts.length === 0)
|
|
101
|
-
return true;
|
|
102
100
|
// Eğer değer bir sayı veya string ise, aranan metinle eşleşip eşleşmediğini kontrol ediyoruz.
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
101
|
+
return Object.entries(searchedText).every(([key, value]) => {
|
|
102
|
+
const _itemValue = item[key];
|
|
103
|
+
if (typeof _itemValue === "number" || typeof _itemValue === "string") {
|
|
104
|
+
return _itemValue.toString().toLowerCase().includes(value.toLowerCase());
|
|
105
|
+
}
|
|
106
|
+
if (typeof _itemValue === "object") {
|
|
107
|
+
deepSearch(_itemValue, searchedText);
|
|
108
|
+
}
|
|
109
|
+
// Diğer türlerdeki değerleri atla.
|
|
110
|
+
return false;
|
|
111
|
+
});
|
|
114
112
|
};
|
|
115
113
|
const getData = useCallback(() => {
|
|
116
114
|
let _data = [...data];
|
|
@@ -120,13 +118,10 @@ const Table = function ({ children, title, description, data, columns, actions,
|
|
|
120
118
|
const indexOfFirstRow = indexOfLastRow - pagination.perPage;
|
|
121
119
|
_data = data.slice(indexOfFirstRow, indexOfLastRow);
|
|
122
120
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
})
|
|
128
|
-
: _data;
|
|
129
|
-
}, [data, searchedTexts, currentPage]);
|
|
121
|
+
if (searchedText)
|
|
122
|
+
_data = _data.filter((item) => deepSearch(item, searchedText));
|
|
123
|
+
return _data;
|
|
124
|
+
}, [data, searchedText, currentPage]);
|
|
130
125
|
// useEffects
|
|
131
126
|
useEffect(() => {
|
|
132
127
|
handleOnScroll();
|
|
@@ -157,7 +152,7 @@ const Table = function ({ children, title, description, data, columns, actions,
|
|
|
157
152
|
setSelectAll(allChecked);
|
|
158
153
|
}, [currentPage]);
|
|
159
154
|
return (React.createElement("div", { ref: _tableWrapper, className: _tableClassName.map((c) => c).join(" ") },
|
|
160
|
-
(title || description || actions) && (React.createElement("div", { className: "header" },
|
|
155
|
+
(title || description || actions || React.Children.count(children) > 0) && (React.createElement("div", { className: "header" },
|
|
161
156
|
React.createElement("div", { className: "title" },
|
|
162
157
|
React.createElement("h3", null, title),
|
|
163
158
|
React.createElement("h5", null, description)),
|
|
@@ -215,7 +210,7 @@ const Table = function ({ children, title, description, data, columns, actions,
|
|
|
215
210
|
}), ...(c.config?.sticky && {
|
|
216
211
|
"data-sticky-position": c.config.sticky,
|
|
217
212
|
}) },
|
|
218
|
-
React.createElement("input", { name: String(c.key), className: "search-input", onChange: (event) => {
|
|
213
|
+
React.createElement("input", { name: typeof c.key !== "object" ? String(c.key) : String(c.key.field), className: "search-input", onChange: (event) => {
|
|
219
214
|
if (config.isServerSide) {
|
|
220
215
|
if (_searchTimeOut.current)
|
|
221
216
|
clearTimeout(_searchTimeOut.current);
|
|
@@ -225,19 +220,7 @@ const Table = function ({ children, title, description, data, columns, actions,
|
|
|
225
220
|
}, 750);
|
|
226
221
|
}
|
|
227
222
|
else {
|
|
228
|
-
|
|
229
|
-
setSearchedTexts((prev) => {
|
|
230
|
-
const updated = prev.some((item) => item.key === c.key);
|
|
231
|
-
if (updated) {
|
|
232
|
-
if (event.target.value.toLowerCase() === "") {
|
|
233
|
-
return prev.filter((item) => item.key !== c.key);
|
|
234
|
-
}
|
|
235
|
-
return prev.map((item) => item.key === c.key ? { ...item, value: event.target.value.toLowerCase() } : item);
|
|
236
|
-
}
|
|
237
|
-
else {
|
|
238
|
-
return [...prev, { key: c.key, value: event.target.value.toLowerCase() }];
|
|
239
|
-
}
|
|
240
|
-
});
|
|
223
|
+
setSearchedText((prev) => ({ ...prev, [event.target.name]: event.target.value }));
|
|
241
224
|
}
|
|
242
225
|
} })));
|
|
243
226
|
})))),
|