fixed category filtering bug

This commit is contained in:
mushka-n 2023-10-02 03:30:15 +03:00
parent a184219005
commit 0049d16385
5 changed files with 16 additions and 38 deletions

View File

@ -88,7 +88,7 @@ const CategoryFilterDesktop = ({
} }
/> />
{menuItems.map((item, index) => ( {menuItems?.map((item, index) => (
<SubList <SubList
categoryType={item.key} categoryType={item.key}
categories={item.categories || []} categories={item.categories || []}
@ -112,4 +112,4 @@ export default inject(({ oformsStore }) => ({
oformsFilter: oformsStore.oformsFilter, oformsFilter: oformsStore.oformsFilter,
filterOformsByCategory: oformsStore.filterOformsByCategory, filterOformsByCategory: oformsStore.filterOformsByCategory,
}))(withTranslation(["FormGallery"])(observer(CategoryFilterDesktop))); }))(withTranslation(["FormGallery"])(CategoryFilterDesktop));

View File

@ -2,21 +2,21 @@ import * as Styled from "./index.styled";
import DropDownItem from "@docspace/components/drop-down-item"; import DropDownItem from "@docspace/components/drop-down-item";
import { useState, useRef } from "react"; import { useState, useRef } from "react";
import { inject } from "mobx-react"; import { inject, observer } from "mobx-react";
import { withTranslation } from "react-i18next"; import { withTranslation } from "react-i18next";
import CategorySubList from "./CategorySubList"; import CategorySubList from "./CategorySubList";
import Scrollbar from "@docspace/components/scrollbar"; import Scrollbar from "@docspace/components/scrollbar";
import ComboButton from "@docspace/components/combobox/sub-components/combo-button"; import ComboButton from "@docspace/components/combobox/sub-components/combo-button";
import { getOformCategoryTitle } from "@docspace/client/src/helpers/utils";
import { getDefaultOformLocale } from "@docspace/common/utils";
const CategoryFilterMobile = ({ const CategoryFilterMobile = ({
t, t,
menuItems, menuItems,
onViewAllTemplates, currentCategory,
formsByBranch, filterOformsByCategory,
formsByType,
formsByCompilation,
...rest ...rest
}) => { }) => {
@ -39,11 +39,15 @@ const CategoryFilterMobile = ({
if (calculatedHeight > maxCalculatedHeight) if (calculatedHeight > maxCalculatedHeight)
calculatedHeight = maxCalculatedHeight; calculatedHeight = maxCalculatedHeight;
const onViewAllTemplates = () => filterOformsByCategory("", "");
return ( return (
<Styled.CategoryFilterMobileWrapper ref={wrapperRef} {...rest}> <Styled.CategoryFilterMobileWrapper ref={wrapperRef} {...rest}>
<ComboButton <ComboButton
selectedOption={{ selectedOption={{
label: t("FormGallery:Categories"), label:
getOformCategoryTitle(currentCategory, getDefaultOformLocale()) ||
t("FormGallery:Categories"),
}} }}
isOpen={isOpen} isOpen={isOpen}
scaled={true} scaled={true}
@ -103,11 +107,5 @@ const CategoryFilterMobile = ({
export default inject(({ oformsStore }) => ({ export default inject(({ oformsStore }) => ({
currentCategory: oformsStore.currentCategory, currentCategory: oformsStore.currentCategory,
fetchCategoriesByBranch: oformsStore.fetchCategoriesByBranch,
fetchCategoriesByType: oformsStore.fetchCategoriesByType,
fetchPopularCategories: oformsStore.fetchPopularCategories,
oformsFilter: oformsStore.oformsFilter,
filterOformsByCategory: oformsStore.filterOformsByCategory, filterOformsByCategory: oformsStore.filterOformsByCategory,
}))(withTranslation(["FormGallery"])(CategoryFilterMobile)); }))(withTranslation(["FormGallery"])(CategoryFilterMobile));

View File

@ -2,12 +2,10 @@ import { useState, useEffect } from "react";
import { inject, observer } from "mobx-react"; import { inject, observer } from "mobx-react";
import CategoryFilterDesktop from "./DesktopView"; import CategoryFilterDesktop from "./DesktopView";
import CategoryFilterMobile from "./MobileView"; import CategoryFilterMobile from "./MobileView";
import { getOformCategoryTitle } from "@docspace/client/src/helpers/utils";
import { smallTablet } from "@docspace/components/utils/device"; import { smallTablet } from "@docspace/components/utils/device";
import { isMobileOnly } from "react-device-detect"; import { isMobileOnly } from "react-device-detect";
import styled, { css } from "styled-components"; import styled, { css } from "styled-components";
import { getDefaultOformLocale } from "@docspace/common/utils";
export const StyledCategoryFilterWrapper = styled.div` export const StyledCategoryFilterWrapper = styled.div`
width: 100%; width: 100%;
@ -39,20 +37,14 @@ export const StyledCategoryFilterWrapper = styled.div`
`} `}
`; `;
const categoryLocale = getDefaultOformLocale();
const CategoryFilter = ({ const CategoryFilter = ({
currentCategory,
oformsFilter, oformsFilter,
filterOformsByCategory,
fetchCategoryList, fetchCategoryList,
fetchCategories, fetchCategories,
}) => { }) => {
const [menuItems, setMenuItems] = useState([]); const [menuItems, setMenuItems] = useState([]);
const onViewAllTemplates = () => filterOformsByCategory("", "");
useEffect(() => { useEffect(() => {
(async () => { (async () => {
let newMenuItems = await fetchCategoryList(); let newMenuItems = await fetchCategoryList();
@ -81,16 +73,11 @@ const CategoryFilter = ({
}) })
.finally(() => setMenuItems(newMenuItems)); .finally(() => setMenuItems(newMenuItems));
})(); })();
}, [oformsFilter.locale]); }, []);
return ( return (
<StyledCategoryFilterWrapper className="categoryFilterWrapper"> <StyledCategoryFilterWrapper className="categoryFilterWrapper">
<CategoryFilterMobile <CategoryFilterMobile className="mobileView" menuItems={menuItems} />
className="mobileView"
currentCategoryTitle={getOformCategoryTitle(currentCategory)}
onViewAllTemplates={onViewAllTemplates}
menuItems={menuItems}
/>
<CategoryFilterDesktop className="desktopView" menuItems={menuItems} /> <CategoryFilterDesktop className="desktopView" menuItems={menuItems} />
</StyledCategoryFilterWrapper> </StyledCategoryFilterWrapper>
); );

View File

@ -30,12 +30,8 @@ const FormGallery = ({
const [isInitLoading, setIsInitLoading] = useState(true); const [isInitLoading, setIsInitLoading] = useState(true);
useEffect(() => { useEffect(() => {
if ( if (!isInitLoading && location.search !== `?${oformsFilter.toUrlParams()}`)
!isInitLoading &&
location.search !== `?${oformsFilter.toUrlParams()}`
) {
navigate(`${location.pathname}?${oformsFilter.toUrlParams()}`); navigate(`${location.pathname}?${oformsFilter.toUrlParams()}`);
}
}, [oformsFilter]); }, [oformsFilter]);
useEffect(() => { useEffect(() => {

View File

@ -67,7 +67,6 @@ class OformsStore {
filter.total = paginationData.total; filter.total = paginationData.total;
} }
console.log(oformData?.data?.data);
runInAction(() => { runInAction(() => {
this.setOformsFilter(filter); this.setOformsFilter(filter);
this.setOformFiles(oformData?.data?.data ?? []); this.setOformFiles(oformData?.data?.data ?? []);
@ -162,9 +161,7 @@ class OformsStore {
this.oformsFilter.categoryId = categoryId; this.oformsFilter.categoryId = categoryId;
const newOformsFilter = this.oformsFilter.clone(); const newOformsFilter = this.oformsFilter.clone();
runInAction(() => { runInAction(() => this.getOforms(newOformsFilter));
this.getOforms(newOformsFilter);
});
}; };
filterOformsByLocale = async (locale) => { filterOformsByLocale = async (locale) => {