ar-design 0.4.46 → 0.4.48
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.
|
@@ -195,30 +195,37 @@ const KanbanBoard = function ({ trackBy, columns, onChange, onLazyLoad, config,
|
|
|
195
195
|
}, [columns]);
|
|
196
196
|
const _prevFilters = useRef(JSON.stringify({ search, selectedFilters, dateFilters }));
|
|
197
197
|
useEffect(() => {
|
|
198
|
-
const
|
|
198
|
+
const normalizedFilters = JSON.stringify({
|
|
199
199
|
search,
|
|
200
|
-
selectedFilters: Object.fromEntries(Object.entries(selectedFilters).map(([k, v]) => [k, Array.from(v)])),
|
|
200
|
+
selectedFilters: Object.fromEntries(Object.entries(selectedFilters).map(([k, v]) => [k, Array.from(v).sort()])),
|
|
201
201
|
dateFilters,
|
|
202
202
|
});
|
|
203
|
-
|
|
203
|
+
const hasSelectedFilters = Object.values(selectedFilters).some((set) => set.size > 0);
|
|
204
|
+
const hasDateFilters = Object.values(dateFilters).some((r) => r.from || r.to);
|
|
205
|
+
// Page reset + Scroll logic.
|
|
206
|
+
if (_prevFilters.current !== normalizedFilters) {
|
|
204
207
|
setCurrentPage(1);
|
|
205
|
-
_prevFilters.current =
|
|
208
|
+
_prevFilters.current = normalizedFilters;
|
|
206
209
|
if (_kanbanWrapper.current) {
|
|
207
210
|
_isProgrammaticScroll.current = true;
|
|
208
|
-
_kanbanWrapper.current.scrollTo({
|
|
211
|
+
_kanbanWrapper.current.scrollTo({
|
|
212
|
+
top: 0,
|
|
213
|
+
left: 0,
|
|
214
|
+
behavior: "smooth",
|
|
215
|
+
});
|
|
209
216
|
}
|
|
210
217
|
}
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
if (!search && Object.keys(selectedFilters).length === 0 && Object.keys(dateFilters).length === 0) {
|
|
218
|
+
// Query Build Logic.
|
|
219
|
+
if (!search && !hasSelectedFilters && !hasDateFilters) {
|
|
214
220
|
setQuery(null);
|
|
215
221
|
return;
|
|
216
222
|
}
|
|
217
|
-
const sampleItem = columns[0]?.items[0];
|
|
218
|
-
const keys =
|
|
223
|
+
const sampleItem = columns?.[0]?.items?.[0];
|
|
224
|
+
const keys = config?.filter?.keys(sampleItem) ?? [];
|
|
225
|
+
const keyMap = Object.fromEntries(keys.map((k) => [k.name, k.key]));
|
|
219
226
|
const dateQuery = Object.entries(dateFilters).reduce((acc, [name, range]) => {
|
|
220
227
|
if (range.from || range.to) {
|
|
221
|
-
const technicalKey =
|
|
228
|
+
const technicalKey = keyMap[name] || name;
|
|
222
229
|
acc[technicalKey] = {
|
|
223
230
|
from: range.from,
|
|
224
231
|
to: range.to,
|
|
@@ -226,10 +233,10 @@ const KanbanBoard = function ({ trackBy, columns, onChange, onLazyLoad, config,
|
|
|
226
233
|
}
|
|
227
234
|
return acc;
|
|
228
235
|
}, {});
|
|
229
|
-
const selectQuery = Object.entries(selectedFilters).reduce((acc, [
|
|
230
|
-
if (
|
|
231
|
-
const technicalKey =
|
|
232
|
-
acc[technicalKey] = Array.from(
|
|
236
|
+
const selectQuery = Object.entries(selectedFilters).reduce((acc, [name, set]) => {
|
|
237
|
+
if (set.size > 0) {
|
|
238
|
+
const technicalKey = keyMap[name] || name;
|
|
239
|
+
acc[technicalKey] = Array.from(set);
|
|
233
240
|
}
|
|
234
241
|
return acc;
|
|
235
242
|
}, {});
|
|
@@ -238,7 +245,7 @@ const KanbanBoard = function ({ trackBy, columns, onChange, onLazyLoad, config,
|
|
|
238
245
|
...dateQuery,
|
|
239
246
|
...selectQuery,
|
|
240
247
|
});
|
|
241
|
-
}, [search, selectedFilters, dateFilters]);
|
|
248
|
+
}, [search, selectedFilters, dateFilters, columns, config]);
|
|
242
249
|
useEffect(() => {
|
|
243
250
|
if (!onLazyLoad)
|
|
244
251
|
return;
|
|
@@ -118,7 +118,7 @@ const useValidation = function (data, params, step) {
|
|
|
118
118
|
const key = getKey(param.subkey);
|
|
119
119
|
if (param.where) {
|
|
120
120
|
if (param.where(data)) {
|
|
121
|
-
setError(param.subkey ? key : param.key, s.message, param.step);
|
|
121
|
+
setError(param.subkey ? key : param.key, s.message, param.step, trackByValue);
|
|
122
122
|
}
|
|
123
123
|
}
|
|
124
124
|
else {
|