prevent catalog filter with empty value

This commit is contained in:
Tom (plebeius.eth)
2024-09-05 16:01:45 +02:00
parent cb6fd503d7
commit 8f0efaf15f
3 changed files with 24 additions and 20 deletions
@@ -140,9 +140,13 @@
margin: 0 2px;
padding: 1px;
outline: none;
border: 1px solid #aaa;
border: var(--reply-modal-field-input-border, revert);
font-size: 11px;
width: 180px;
width: 200px;
}
.filtersTable input[type='text']:focus {
border: var(--reply-modal-field-input-border-focus, revert);
}
.filtersTable span {
@@ -1,4 +1,4 @@
import { useState, useCallback, useEffect } from 'react';
import { useState, useCallback } from 'react';
import { useLocation, useParams } from 'react-router-dom';
import { useTranslation } from 'react-i18next';
import { isAllView, isCatalogView } from '../../../lib/utils/view-utils';
@@ -8,32 +8,30 @@ import styles from './catalog-filters.module.css';
const FiltersTable = () => {
const { t } = useTranslation();
const { filterItems, saveAndApplyFilters } = useCatalogFiltersStore();
const [localFilterItems, setLocalFilterItems] = useState<any[]>([]);
useEffect(() => {
setLocalFilterItems(filterItems);
}, [filterItems]);
const [localFilterItems, setLocalFilterItems] = useState(filterItems);
const handleAddFilter = useCallback(() => {
setLocalFilterItems([...localFilterItems, { text: '', enabled: true }]);
}, [localFilterItems]);
setLocalFilterItems((prev) => [...prev, { text: '', enabled: true }]);
}, []);
const handleSave = useCallback(() => {
saveAndApplyFilters(localFilterItems);
const nonEmptyFilters = localFilterItems.filter((item) => item.text.trim() !== '');
saveAndApplyFilters(nonEmptyFilters);
}, [saveAndApplyFilters, localFilterItems]);
const updateLocalFilterItem = useCallback((index: number, item: any) => {
setLocalFilterItems((items) => items.map((f, i) => (i === index ? item : f)));
setLocalFilterItems((prev) => prev.map((f, i) => (i === index ? item : f)));
}, []);
const removeLocalFilterItem = useCallback((index: number) => {
setLocalFilterItems((items) => items.filter((_, i) => i !== index));
setLocalFilterItems((prev) => prev.filter((_, i) => i !== index));
}, []);
const moveLocalFilterItemUp = useCallback((index: number) => {
if (index === 0) return;
setLocalFilterItems((items) => {
const newItems = [...items];
setLocalFilterItems((prev) => {
const newItems = [...prev];
[newItems[index - 1], newItems[index]] = [newItems[index], newItems[index - 1]];
return newItems;
});
@@ -134,7 +132,7 @@ const FiltersModal = ({ closeModal }: { closeModal: () => void }) => {
</div>
)}
</div>
<FiltersTable />
{isInCatalogView && <FiltersTable />}
</div>
</>
);