rez-table-listing-mui 1.0.41 → 1.0.43
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/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
- package/src/components/filter/components/attributes-filter.tsx +1 -0
- package/src/components/filter/components/forms/index.tsx +96 -89
- package/src/components/filter/components/main-filter.tsx +1 -1
- package/src/components/filter/components/saved-filter.tsx +1 -1
- package/src/components/table-settings/components/sorting.tsx +24 -5
package/package.json
CHANGED
|
@@ -223,7 +223,10 @@ const FilterForm = ({
|
|
|
223
223
|
</Box>
|
|
224
224
|
)}
|
|
225
225
|
|
|
226
|
-
<Box
|
|
226
|
+
<Box
|
|
227
|
+
className="filter-criteria-form"
|
|
228
|
+
sx={filterFormStyles.formFlexContainer}
|
|
229
|
+
>
|
|
227
230
|
<FilterCriteria
|
|
228
231
|
columnsData={columnsData}
|
|
229
232
|
tableStates={tableStates}
|
|
@@ -236,99 +239,103 @@ const FilterForm = ({
|
|
|
236
239
|
<CustomSearch value={searchTerm} onChange={setSearchTerm} />
|
|
237
240
|
)}
|
|
238
241
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
(
|
|
242
|
-
filter
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
.
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
sx={filterFormStyles.formListItemHeaderDropdown}
|
|
264
|
-
onValueChange={updateFiltersFromForm}
|
|
265
|
-
/>
|
|
266
|
-
<IconButton
|
|
267
|
-
sx={{ marginLeft: "auto" }}
|
|
268
|
-
onClick={() => {
|
|
269
|
-
unregister(`${filter.name}.value`);
|
|
270
|
-
unregister(`${filter.name}.operator`);
|
|
271
|
-
|
|
272
|
-
// ✅ Toggle dummy field to force form dirty
|
|
273
|
-
const dummy = watch("dummyChange");
|
|
274
|
-
setValue(
|
|
275
|
-
"dummyChange",
|
|
276
|
-
dummy === "changed" ? "reset" : "changed",
|
|
277
|
-
{
|
|
278
|
-
shouldDirty: true,
|
|
279
|
-
}
|
|
280
|
-
);
|
|
281
|
-
|
|
282
|
-
handleRemoveFilter(filter.filter_attribute);
|
|
283
|
-
}}
|
|
284
|
-
size="small"
|
|
285
|
-
>
|
|
286
|
-
<CloseIcon />
|
|
287
|
-
</IconButton>
|
|
288
|
-
</Box>
|
|
289
|
-
|
|
290
|
-
<Box>
|
|
291
|
-
{filter.data_type === "text" ||
|
|
292
|
-
filter.data_type === "number" ? (
|
|
293
|
-
<FormTextfield
|
|
294
|
-
filter={filter}
|
|
295
|
-
control={control}
|
|
296
|
-
onValueChange={updateFiltersFromForm}
|
|
297
|
-
/>
|
|
298
|
-
) : filter.data_type === "year" ? (
|
|
299
|
-
<FormDatePicker
|
|
300
|
-
filter={filter}
|
|
301
|
-
control={control}
|
|
302
|
-
views={["year"]}
|
|
303
|
-
onValueChange={updateFiltersFromForm}
|
|
304
|
-
/>
|
|
305
|
-
) : filter.data_type === "date" ? (
|
|
306
|
-
<FormDatePicker
|
|
242
|
+
<Box className="filter-form-inputs">
|
|
243
|
+
{selectedFilters
|
|
244
|
+
.filter(
|
|
245
|
+
(filter) =>
|
|
246
|
+
filter.name
|
|
247
|
+
?.toLowerCase()
|
|
248
|
+
.includes(searchTerm.toLowerCase()) ||
|
|
249
|
+
filter.filter_value
|
|
250
|
+
?.toString()
|
|
251
|
+
.toLowerCase()
|
|
252
|
+
.includes(searchTerm.toLowerCase())
|
|
253
|
+
)
|
|
254
|
+
.map((filter) => {
|
|
255
|
+
const { dropdown_list = [] } = filter;
|
|
256
|
+
return (
|
|
257
|
+
<Box
|
|
258
|
+
key={filter.filter_attribute}
|
|
259
|
+
sx={filterFormStyles.formListItem}
|
|
260
|
+
>
|
|
261
|
+
<Box sx={filterFormStyles.formListItemHeader}>
|
|
262
|
+
<Typography sx={filterFormStyles.formListItemHeaderName}>
|
|
263
|
+
{filter.name}
|
|
264
|
+
</Typography>
|
|
265
|
+
<FormDropdown
|
|
307
266
|
filter={filter}
|
|
308
267
|
control={control}
|
|
268
|
+
dropdownList={dropdown_list}
|
|
269
|
+
sx={filterFormStyles.formListItemHeaderDropdown}
|
|
309
270
|
onValueChange={updateFiltersFromForm}
|
|
310
271
|
/>
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
272
|
+
<IconButton
|
|
273
|
+
sx={{ marginLeft: "auto" }}
|
|
274
|
+
onClick={() => {
|
|
275
|
+
unregister(`${filter.name}.value`);
|
|
276
|
+
unregister(`${filter.name}.operator`);
|
|
277
|
+
|
|
278
|
+
// ✅ Toggle dummy field to force form dirty
|
|
279
|
+
const dummy = watch("dummyChange");
|
|
280
|
+
setValue(
|
|
281
|
+
"dummyChange",
|
|
282
|
+
dummy === "changed" ? "reset" : "changed",
|
|
283
|
+
{
|
|
284
|
+
shouldDirty: true,
|
|
285
|
+
}
|
|
286
|
+
);
|
|
287
|
+
|
|
288
|
+
handleRemoveFilter(filter.filter_attribute);
|
|
289
|
+
}}
|
|
290
|
+
size="small"
|
|
291
|
+
>
|
|
292
|
+
<CloseIcon />
|
|
293
|
+
</IconButton>
|
|
294
|
+
</Box>
|
|
295
|
+
|
|
296
|
+
<Box>
|
|
297
|
+
{filter.data_type === "text" ||
|
|
298
|
+
filter.data_type === "number" ? (
|
|
299
|
+
<FormTextfield
|
|
300
|
+
filter={filter}
|
|
301
|
+
control={control}
|
|
302
|
+
onValueChange={updateFiltersFromForm}
|
|
303
|
+
/>
|
|
304
|
+
) : filter.data_type === "year" ? (
|
|
305
|
+
<FormDatePicker
|
|
306
|
+
filter={filter}
|
|
307
|
+
control={control}
|
|
308
|
+
views={["year"]}
|
|
309
|
+
onValueChange={updateFiltersFromForm}
|
|
310
|
+
/>
|
|
311
|
+
) : filter.data_type === "date" ? (
|
|
312
|
+
<FormDatePicker
|
|
313
|
+
filter={filter}
|
|
314
|
+
control={control}
|
|
315
|
+
onValueChange={updateFiltersFromForm}
|
|
316
|
+
/>
|
|
317
|
+
) : filter.data_type === "select" ? (
|
|
318
|
+
<FormSelect
|
|
319
|
+
filter={filter}
|
|
320
|
+
control={control}
|
|
321
|
+
dropdownData={dropdownData}
|
|
322
|
+
onValueChange={updateFiltersFromForm}
|
|
323
|
+
/>
|
|
324
|
+
) : filter.data_type === "multiselect" ? (
|
|
325
|
+
<FormMultiSelect
|
|
326
|
+
filter={filter}
|
|
327
|
+
control={control}
|
|
328
|
+
dropdownData={dropdownData}
|
|
329
|
+
onValueChange={updateFiltersFromForm}
|
|
330
|
+
/>
|
|
331
|
+
) : (
|
|
332
|
+
<FormControl fullWidth size="small" />
|
|
333
|
+
)}
|
|
334
|
+
</Box>
|
|
328
335
|
</Box>
|
|
329
|
-
|
|
330
|
-
)
|
|
331
|
-
|
|
336
|
+
);
|
|
337
|
+
})}
|
|
338
|
+
</Box>
|
|
332
339
|
</Box>
|
|
333
340
|
</Box>
|
|
334
341
|
|
|
@@ -41,6 +41,7 @@ const Sorting = ({
|
|
|
41
41
|
setSortingTabState,
|
|
42
42
|
saveButtonError,
|
|
43
43
|
setSaveButtonError,
|
|
44
|
+
columnTabState,
|
|
44
45
|
} = filterSettingStates;
|
|
45
46
|
|
|
46
47
|
const [activeTab, setActiveTab] = useState<string | undefined>(
|
|
@@ -248,6 +249,24 @@ const Sorting = ({
|
|
|
248
249
|
);
|
|
249
250
|
}, [saveButtonError]);
|
|
250
251
|
|
|
252
|
+
const getCurrentLists = () => {
|
|
253
|
+
if (sortingTabState?.isDefault) {
|
|
254
|
+
return {
|
|
255
|
+
showList: columnTabState.show_list || [],
|
|
256
|
+
hideList: columnTabState.hide_list || [],
|
|
257
|
+
};
|
|
258
|
+
} else {
|
|
259
|
+
const currentTab = columnTabState?.tabs?.[activeTabIndex || 0];
|
|
260
|
+
return {
|
|
261
|
+
showList: currentTab?.show_list || [],
|
|
262
|
+
hideList: currentTab?.hide_list || [],
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
};
|
|
266
|
+
|
|
267
|
+
const { showList, hideList } = getCurrentLists();
|
|
268
|
+
console.log("showList", showList);
|
|
269
|
+
|
|
251
270
|
return (
|
|
252
271
|
<Box sx={{ display: "flex", flexDirection: "column", gap: "0.75rem" }}>
|
|
253
272
|
<Typography>Select attribute(s) you want to sort by</Typography>
|
|
@@ -296,15 +315,15 @@ const Sorting = ({
|
|
|
296
315
|
size="small"
|
|
297
316
|
fullWidth
|
|
298
317
|
>
|
|
299
|
-
{
|
|
318
|
+
{showList?.map((column, index) => (
|
|
300
319
|
<MenuItem
|
|
301
|
-
key={
|
|
302
|
-
value={column
|
|
320
|
+
key={index}
|
|
321
|
+
value={column.value}
|
|
303
322
|
disabled={tabSortedList.some(
|
|
304
|
-
(s) => s.column === column?.
|
|
323
|
+
(s) => s.column === column?.value
|
|
305
324
|
)}
|
|
306
325
|
>
|
|
307
|
-
{column?.
|
|
326
|
+
{column?.label}
|
|
308
327
|
</MenuItem>
|
|
309
328
|
))}
|
|
310
329
|
</Select>
|