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 [searchedTexts, setSearchedTexts] = useState([]);
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 = (key, value, searchedTexts) => {
98
- if (value === null || value === undefined)
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
- if (typeof value === "number" || typeof value === "string") {
104
- return searchedTexts.some((searchedText) => searchedText.key === key &&
105
- searchedText.value.length > 0 &&
106
- value.toString().toLowerCase().includes(searchedText.value.toLowerCase()));
107
- }
108
- // Eğer değer bir nesne veya dizi ise, içindeki her bir değeri yine deepSearch fonksiyonuyla kontrol ediyoruz.
109
- if (typeof value === "object") {
110
- return Object.values(value).some((innerValue) => deepSearch(key, innerValue, searchedTexts));
111
- }
112
- // Diğer türlerdeki değerleri atla.
113
- return false;
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
- return Object.keys(searchedTexts).length > 0
124
- ? _data.filter((item) => {
125
- // `some` kullanarak herhangi bir girişin arama koşulunu karşılayıp karşılamadığını kontrol ediyoruz.
126
- return Object.entries(item).some(([_key, _value]) => deepSearch(_key, _value, searchedTexts));
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
- // Bileşen bazlı arama işlemi.
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
  })))),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ar-design",
3
- "version": "0.1.81",
3
+ "version": "0.1.83",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",