From bb3d202daeac32d9232e5a603e69b84d03b59745 Mon Sep 17 00:00:00 2001 From: Andrei Dekterev Date: Thu, 27 Oct 2022 18:33:36 +0300 Subject: [PATCH] Revert "feat(#ott-2710): add matches filters" This reverts commit 3d3716c8eecddecc93aa1855ad3f52b67b2f7b4b. --- public/images/closeBlack.svg | 3 - public/images/closeWhite.svg | 3 - src/components/SelectFilter/styled.tsx | 2 +- src/config/lexics/indexLexics.tsx | 12 - .../HeaderFilters/store/hooks/index.tsx | 65 +----- .../store/hooks/useMatchFilters.tsx | 185 --------------- src/features/HeaderMobile/index.tsx | 8 +- .../components/ClearFiltersPopup/index.tsx | 41 ---- .../components/ClearFiltersPopup/styled.tsx | 113 --------- .../HomePage/components/Dropdown/Dropdown.tsx | 160 ------------- .../HomePage/components/Dropdown/helpers.tsx | 62 ----- .../HomePage/components/Dropdown/styled.tsx | 215 ------------------ .../HomePage/components/Dropdown/types.tsx | 24 -- .../components/HeaderFilters/index.tsx | 47 +--- .../components/HeaderFilters/styled.tsx | 3 +- .../components/MatchesFilters/helpers.tsx | 14 -- .../components/MatchesFilters/index.tsx | 110 --------- .../components/MatchesFilters/styled.tsx | 169 -------------- .../components/MobileMatchesFilters/index.tsx | 87 ------- .../MobileMatchesFilters/styled.tsx | 71 ------ src/features/HomePage/hooks.tsx | 15 +- src/features/UserFavorites/styled.tsx | 3 +- src/requests/getMatches/getHomeMatches.tsx | 29 +-- src/requests/getMatches/types.tsx | 13 -- 24 files changed, 24 insertions(+), 1430 deletions(-) delete mode 100644 public/images/closeBlack.svg delete mode 100644 public/images/closeWhite.svg delete mode 100644 src/features/HeaderFilters/store/hooks/useMatchFilters.tsx delete mode 100644 src/features/HomePage/components/ClearFiltersPopup/index.tsx delete mode 100644 src/features/HomePage/components/ClearFiltersPopup/styled.tsx delete mode 100644 src/features/HomePage/components/Dropdown/Dropdown.tsx delete mode 100644 src/features/HomePage/components/Dropdown/helpers.tsx delete mode 100644 src/features/HomePage/components/Dropdown/styled.tsx delete mode 100644 src/features/HomePage/components/Dropdown/types.tsx delete mode 100644 src/features/HomePage/components/MatchesFilters/helpers.tsx delete mode 100644 src/features/HomePage/components/MatchesFilters/index.tsx delete mode 100644 src/features/HomePage/components/MatchesFilters/styled.tsx delete mode 100644 src/features/HomePage/components/MobileMatchesFilters/index.tsx delete mode 100644 src/features/HomePage/components/MobileMatchesFilters/styled.tsx diff --git a/public/images/closeBlack.svg b/public/images/closeBlack.svg deleted file mode 100644 index 8cb31a4f..00000000 --- a/public/images/closeBlack.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/images/closeWhite.svg b/public/images/closeWhite.svg deleted file mode 100644 index 8bcc2ce2..00000000 --- a/public/images/closeWhite.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/components/SelectFilter/styled.tsx b/src/components/SelectFilter/styled.tsx index c926476d..e985e196 100644 --- a/src/components/SelectFilter/styled.tsx +++ b/src/components/SelectFilter/styled.tsx @@ -7,7 +7,7 @@ export const ScSelectFilter = styled.div` display: flex; color: white; font-size: 14px; - width: auto; + width: 30%; text-transform: uppercase; font-weight: 700; align-items: center; diff --git a/src/config/lexics/indexLexics.tsx b/src/config/lexics/indexLexics.tsx index 939c0678..8bb9b918 100644 --- a/src/config/lexics/indexLexics.tsx +++ b/src/config/lexics/indexLexics.tsx @@ -110,17 +110,6 @@ const newDevicePopup = { ok: 724, } -const matchesFilter = { - arena: 19803, - clear_filters: 4302, - clear_popup_message: 19812, - division: 19806, - gender: 19801, - main_team: 19804, - round: 19805, - youth_age: 19802, -} - export const indexLexics = { add_to_favorites: 14967, add_to_favorites_error: 12943, @@ -186,7 +175,6 @@ export const indexLexics = { watch_from_last_pause: 13022, watch_now: 13020, - ...matchesFilter, ...filterPopup, ...confirmPopup, ...highlightsPageLexic, diff --git a/src/features/HeaderFilters/store/hooks/index.tsx b/src/features/HeaderFilters/store/hooks/index.tsx index 27f7b4c9..8530987c 100644 --- a/src/features/HeaderFilters/store/hooks/index.tsx +++ b/src/features/HeaderFilters/store/hooks/index.tsx @@ -13,7 +13,6 @@ import { useQueryParamStore } from 'hooks' import { filterKeys } from '../config' import { isValidDate } from '../helpers/isValidDate' -import { useMatchFilters } from './useMatchFilters' export const useFilters = () => { const { search } = useLocation() @@ -23,27 +22,7 @@ export const useFilters = () => { key: filterKeys.DATE, validator: isValidDate, }) - const { - activeFilters, - changeInput, - clearAllFilters, - clearFilters, - clickCancel, - clickClearAll, - closeDropdownList, - confirmClear, - currentFilters, - filtersList, - filtersSize, - handleSetFilters, - inputValue, - isEmptyFilters, - isOpenList, - openDropdownList, - openPopup, - queryParams, - setFilters, - } = useMatchFilters(selectedDate) + const [selectedSport, setSelectedSport] = useState(['all_sports']) const [selectedLeague, setSelectedLeague] = useState>(['all_competitions']) const [selectedFilters, setSelectedFilters] = useState>([]) @@ -82,33 +61,14 @@ export const useFilters = () => { ]) const store = useMemo(() => ({ - activeFilters, - changeInput, - clearAllFilters, - clearFilters, - clickCancel, - clickClearAll, - closeDropdownList, - confirmClear, - currentFilters, - filtersList, - filtersSize, - handleSetFilters, - inputValue, - isEmptyFilters, - isOpenList, isShowTournament, isTodaySelected, - openDropdownList, - openPopup, - queryParams, resetFilters, selectTournament, selectedDate, selectedFilters, selectedLeague, selectedSport, - setFilters, setIsShowTournament, setSelectTournament, setSelectedDate, @@ -119,35 +79,16 @@ export const useFilters = () => { sportIds, updateDate, }), [ - activeFilters, - clickCancel, - clickClearAll, - confirmClear, - changeInput, - clearAllFilters, - clearFilters, - closeDropdownList, - currentFilters, - filtersList, - filtersSize, - handleSetFilters, - inputValue, - isEmptyFilters, - isOpenList, isShowTournament, isTodaySelected, - openPopup, - openDropdownList, - queryParams, resetFilters, - selectTournament, selectedDate, selectedFilters, selectedLeague, selectedSport, - setFilters, - setIsShowTournament, + selectTournament, setSelectTournament, + setIsShowTournament, setSelectedDate, setSelectedFilters, setSelectedLeague, diff --git a/src/features/HeaderFilters/store/hooks/useMatchFilters.tsx b/src/features/HeaderFilters/store/hooks/useMatchFilters.tsx deleted file mode 100644 index 3455c590..00000000 --- a/src/features/HeaderFilters/store/hooks/useMatchFilters.tsx +++ /dev/null @@ -1,185 +0,0 @@ -import { - useCallback, - useEffect, - useMemo, - useState, - MouseEvent, - ChangeEvent, -} from 'react' -import some from 'lodash/some' -import isNil from 'lodash/isNil' -import includes from 'lodash/includes' -import filter from 'lodash/filter' -import isEmpty from 'lodash/isEmpty' -import map from 'lodash/map' -import reduce from 'lodash/reduce' -import size from 'lodash/size' - -import { format } from 'date-fns' - -import { - getHomeMatches, - Match, - TQueryParams, -} from 'requests' - -const getTimezoneOffset = (date: Date) => { - const offset = date.getTimezoneOffset() - if (offset === 0) return offset - return -(offset) -} -const getDate = (date: Date) => format(date, 'yyyy-MM-dd') - -export type TActiveFilters = { - arena?: Array, - division?: Array, - gender?: Array, - main_team?: Array, - round?: Array, - youth_age?: Array, -} -export type TDefaultType = { - id: number, - name_eng: string, - name_rus: string, -} - -export const useMatchFilters = (selectedDate: Date) => { - const [filtersList, setFiltersList] = useState>() - const [isOpenList, setOpenList] = useState('') - const [activeFilters, setActiveFilters] = useState({}) - const [inputValue, setInputValue] = useState('') - const [openPopup, setOpenPopup] = useState(false) - - const setFilters = (filters: Array) => { - setFiltersList(filters) - } - - const openDropdownList = (title: string) => () => { - setOpenList(title === isOpenList ? '' : title) - } - - const closeDropdownList = () => { - setOpenList('') - } - const fetchMatches = useCallback( - (limit: number, offset: number) => getHomeMatches({ - date: getDate(selectedDate), - limit, - offset, - timezoneOffset: getTimezoneOffset(selectedDate), - }), - [selectedDate], - ) - - useEffect(() => { - fetchMatches(1000, 0).then((resp) => setFiltersList(resp.broadcast)) - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [selectedDate]) - - const currentFilters = useMemo(() => { - const arr = [] - if (some(filtersList, (item) => !isNil(item.arena?.id))) arr.push('arena') - if (some(filtersList, (item) => !isNil(item.round?.id))) arr.push('round') - if (some(filtersList, (item) => !isNil(item.team1?.main_team) || !isNil(item.team2?.main_team))) arr.push('main_team') - if (some(filtersList, (item) => !isNil(item.team1?.youth_age) || !isNil(item.team2?.youth_age))) arr.push('youth_age') - if (some(filtersList, (item) => !isNil(item.team1?.gender) || !isNil(item.team2?.gender))) arr.push('gender') - if (some(filtersList, (item) => !isNil(item.team1?.division?.id) || !isNil(item.team2?.division?.id))) arr.push('division') - return arr - }, [filtersList]) - - const handleSetFilters = (filterName: string, value: any) => { - const isFilterPresent = !isNil(activeFilters[filterName as keyof typeof activeFilters]) - if (isFilterPresent) { - const isValuePresent = includes( - activeFilters[filterName as keyof typeof activeFilters], value, - ) - const currentValue = isValuePresent - ? filter(activeFilters[filterName as keyof typeof activeFilters], (item) => item !== value) - : [...activeFilters[filterName as keyof typeof activeFilters]!, value] - - return setActiveFilters({ - ...activeFilters, - [filterName]: currentValue, - }) - } - return setActiveFilters({ - ...activeFilters, - [filterName]: [value], - }) - } - - const clearFilters = (filterName: string) => (e: MouseEvent | ChangeEvent) => { - e.stopPropagation() - e.preventDefault() - return setActiveFilters({ - ...activeFilters, - [filterName]: [], - }) - } - - const clearAllFilters = (e: MouseEvent) => { - e.stopPropagation() - setActiveFilters({}) - } - - const isEmptyFilters = some(activeFilters, (filterItem) => isEmpty(filterItem)) - || isEmpty(activeFilters) - - const queryParams: TQueryParams = useMemo(() => { - const params = { - arena: map(activeFilters.arena, (item) => item.id), - division: map(activeFilters.division, (item) => item.id), - gender: map(activeFilters.gender, (item) => item.id), - main_team: map(activeFilters.main_team, (item) => item.id), - round: map(activeFilters.round, (item) => item.id), - youth_age: activeFilters.youth_age, - } - - return (params) - }, [activeFilters]) - - const changeInput = (e: ChangeEvent) => { - const { value } = e.target - setInputValue(value) - } - - const clickClearAll = () => { - setOpenPopup(true) - } - - const confirmClear = (e: MouseEvent) => { - setOpenPopup(false) - clearAllFilters(e) - } - - const clickCancel = () => { - setOpenPopup(false) - } - - const filtersSize = reduce(activeFilters, - (result, - value) => result + size(value), 0) - - return { - activeFilters, - changeInput, - clearAllFilters, - clearFilters, - clickCancel, - clickClearAll, - closeDropdownList, - confirmClear, - currentFilters, - filtersList, - filtersSize, - handleSetFilters, - inputValue, - isEmptyFilters, - isOpenList, - openDropdownList, - openPopup, - queryParams, - setFilters, - } -} diff --git a/src/features/HeaderMobile/index.tsx b/src/features/HeaderMobile/index.tsx index 6076bce9..86d26f4c 100644 --- a/src/features/HeaderMobile/index.tsx +++ b/src/features/HeaderMobile/index.tsx @@ -10,7 +10,6 @@ import { SportsFilter } from 'features/SportsFilter' import { isSportFilterShownAtom } from 'features/HomePage/Atoms/HomePageAtoms' import { SmartBanner } from 'components/SmartBanner' -import { MobileMathesFilters } from 'features/HomePage/components/MobileMatchesFilters' import { HeaderStyled, ScoreSwitchWrapper, @@ -36,12 +35,7 @@ export const HeaderMobile = ({ isOpenDownload, setIsOpenDownload }: HeaderBanner - {!isLffClient && isSportFilterShown ? ( - <> - - - - ) : null} + {!isLffClient && isSportFilterShown ? : null} diff --git a/src/features/HomePage/components/ClearFiltersPopup/index.tsx b/src/features/HomePage/components/ClearFiltersPopup/index.tsx deleted file mode 100644 index 3a510448..00000000 --- a/src/features/HomePage/components/ClearFiltersPopup/index.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { useHeaderFiltersStore } from 'features/HeaderFilters' -import { T9n } from 'features/T9n' -import React from 'react' -import { - ButtonsContainer, - CancelButton, - ConfirmButton, - Modal, - PopupContainer, - PopupText, - PopupTitle, -} from './styled' - -export const ClearFiltersPopup = () => { - const { - clickCancel, - confirmClear, - openPopup, - } = useHeaderFiltersStore() - - return ( - - - - - - - - - - - - - - - - - - - ) -} diff --git a/src/features/HomePage/components/ClearFiltersPopup/styled.tsx b/src/features/HomePage/components/ClearFiltersPopup/styled.tsx deleted file mode 100644 index 690d81cb..00000000 --- a/src/features/HomePage/components/ClearFiltersPopup/styled.tsx +++ /dev/null @@ -1,113 +0,0 @@ -import styled, { css } from 'styled-components/macro' - -import { ModalWindow } from 'features/Modal/styled' -import { - Modal as BaseModal, -} from 'features/AuthServiceApp/components/RegisterPopup/styled' -import { isMobileDevice } from 'config/userAgent' - -export const Modal = styled(BaseModal)` - ${ModalWindow} { - ${isMobileDevice - ? css` - min-height: 201px; - max-width: 351px; - padding: 26px 19px 33px 19px; - ` - : css` - min-height: 220px; - max-width: 611px; - padding: 37px 0 39px 0; - `} - } -` - -export const PopupContainer = styled.div` -display: flex; -flex-direction: column; -align-items: center; -justify-content: center; -font-style: normal; -color: #FFFFFF; - -${isMobileDevice - ? css`` - : css` - min-width: 611px;`} -` - -export const PopupTitle = styled.div` -font-weight: 700; -font-size: 24px; -line-height: 24px; -margin-bottom: 45px; -${isMobileDevice - ? css` - font-size: 20px; - line-height: 24px; - margin-bottom: 25px;` - : css` - font-size: 24px; - line-height: 24px; - margin-bottom: 45px;`} -` - -export const PopupText = styled.div` -font-weight: 400; - -${isMobileDevice - ? css` - font-size: 16px; - line-height: 22px; -margin-bottom: 33px;` - : css` - font-size: 20px; - line-height: 28px; - margin-bottom: 55px;`} -` - -export const ButtonsContainer = styled.div` -display: flex; -flex-direction: row; -align-items: center; -${isMobileDevice - ? css` - gap: 15px;` - : css` - gap: 20px; - `} -` - -const Button = styled.button` -display: flex; -flex-direction: row; -justify-content: center; -align-items: center; -border-radius: 5px; -color: #FFFF; -font-weight: 600; - -${isMobileDevice - ? css` - font-size: 16px; -line-height: 16px; -width: 149px; -height: 38px;` - : css` - font-size: 20px; - line-height: 50px; - cursor: pointer; - width: 134px; - height: 50px;`} -` - -export const ConfirmButton = styled(Button)` -background: #294FC4; -border: 1px solid #294FC4; -filter: drop-shadow(0px 1px 1px rgba(0, 0, 0, 0.3)); -` -export const CancelButton = styled(Button)` -border: 1px solid #FFFFFF; -background: none; -filter: drop-shadow(0px 1px 1px rgba(0, 0, 0, 0.3)); -` diff --git a/src/features/HomePage/components/Dropdown/Dropdown.tsx b/src/features/HomePage/components/Dropdown/Dropdown.tsx deleted file mode 100644 index 5ba084b7..00000000 --- a/src/features/HomePage/components/Dropdown/Dropdown.tsx +++ /dev/null @@ -1,160 +0,0 @@ -import React, { useMemo } from 'react' - -import map from 'lodash/map' -import isEmpty from 'lodash/isEmpty' -import includes from 'lodash/includes' - -import { T9n } from 'features/T9n' -import { Name } from 'features/Name' - -import { useLexicsStore } from 'features/LexicsStore' -import { isMobileDevice } from 'config/userAgent' -import { - getAge, - getArena, - getDivision, - getGender, - getMainTeam, - getRound, -} from './helpers' -import { - TDropDownProps, - TFilterItem, - TItem, -} from './types' -import { - DropDownContainer, - FiltersList, - FilterItem, - Checkbox, - CommonButtonsBlock, - ClearButtonContainer, - SearchWithAllContainer, - SearchContainer, - SearchInput, - BackButton, -} from './styled' - -const Label = ({ item }: TFilterItem) => { - const isNumber = typeof item === 'number' - - return ( - <> - {isNumber ? (<>U{item}) : ()} - - ) -} - -export const DropDown = ({ - activeFilters, - changeInput, - clearFilters, - closeDropdownList, - filterList, - filterTitle, - inputValue, - setFilters, -}: TDropDownProps) => { - const { translate } = useLexicsStore() - - const dropDownList = useMemo(() => { - switch (filterTitle) { - case 'gender': - return getGender(filterList) - case 'youth_age': - return getAge(filterList) - case 'division': - return getDivision(filterList) - case 'main_team': - return getMainTeam(filterList) - case 'arena': - return getArena(filterList, inputValue) - case 'round': - return getRound(filterList) - default: - return [] - } - }, [filterTitle, filterList, inputValue]) as Array | Array - - const currentActiveFilter = activeFilters[filterTitle as keyof typeof activeFilters] - - return ( - - - - - {/* {isMobileDevice && ()} */} - {isMobileDevice && closeDropdownList - && ( - - {filterTitle} - - )} - {filterTitle === 'arena' && ( - - e.stopPropagation()} - placeholder={translate('search')} - /> - - )} - - - - - - - - {!isEmpty(dropDownList) && map(dropDownList, (filterItem, i) => ( - <> - { - e.preventDefault() - e.stopPropagation() - setFilters(filterTitle, filterItem) - }} - > - {filterTitle === 'gender' - ? ( - { - e.preventDefault() - e.stopPropagation() - setFilters(filterTitle, filterItem) - }} - labelLexic={filterItem.title} - /> - ) - : ( - { - e.preventDefault() - e.stopPropagation() - setFilters(filterTitle, filterItem) - }} - label={( - - ))} - - - ) -} diff --git a/src/features/HomePage/components/Dropdown/helpers.tsx b/src/features/HomePage/components/Dropdown/helpers.tsx deleted file mode 100644 index caffc6fc..00000000 --- a/src/features/HomePage/components/Dropdown/helpers.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import map from 'lodash/map' -import some from 'lodash/some' -import filter from 'lodash/filter' -import uniq from 'lodash/uniq' -import flatten from 'lodash/flatten' -import compact from 'lodash/compact' -import startsWith from 'lodash/startsWith' -import toLower from 'lodash/toLower' - -import { Match } from 'requests' - -const checkStartString = (text: string, searchString: string) => startsWith( - toLower(text), toLower(searchString), -) -export const getAge = (filterList: Array) => compact( - uniq( - flatten( - map( - filterList, (item) => [item.team1.youth_age, item.team2.youth_age], - ), - ), - ), -) - -export const getDivision = (filterList: Array) => filter( - flatten( - map( - filterList, (item) => [item.team1.division, item.team2.division], - ), - ), (item) => item?.id, -) - -export const getMainTeam = (filterList: Array) => filter( - flatten( - map( - filterList, (item) => [item.team1.main_team, item.team2.main_team], - ), - ), (item) => item?.id, -) - -export const getArena = (filterList: Array, inputValue: string) => filter( - map( - filterList, (item) => item.arena, - ), (item) => item?.id - && (checkStartString(item.name_eng, inputValue) - || checkStartString(item.name_rus, inputValue)), -) - -export const getRound = (filterList: Array) => filter( - map( - filterList, (item) => item.round, - ), (item) => item?.id, -) - -export const getGender = (filterList: Array) => { - const list = [] - - if (some(filterList, (item) => item.team1.gender === 1 || item.team2.gender === 1)) list.push({ id: 1, title: 'gender_male_long' }) - if (some(filterList, (item) => item.team1.gender === 2 || item.team2.gender === 2)) list.push({ id: 2, title: 'gender_female_long' }) - - return list -} diff --git a/src/features/HomePage/components/Dropdown/styled.tsx b/src/features/HomePage/components/Dropdown/styled.tsx deleted file mode 100644 index 4cff2a99..00000000 --- a/src/features/HomePage/components/Dropdown/styled.tsx +++ /dev/null @@ -1,215 +0,0 @@ -import styled, { css } from 'styled-components/macro' -import { customScrollbar } from 'features/Common' -import { Checkbox as BaseCheckbox } from 'features/Common/Checkbox' -import { Label } from 'features/Common/Checkbox/styled' -import { CheckboxSvg } from 'features/Common/Checkbox/Icon' -import { isMobileDevice } from 'config/userAgent' -import { NameStyled } from 'features/Name' - -export const DropDownContainer = styled.div` -${isMobileDevice - ? css` - border-top: 1px solid #505050;` - : css` - position: absolute; - top: 57px; - right: -24px; - background: #333333; - border-radius: 3.5px; - z-index: 10;`} -` -export const FiltersList = styled.ul` -${customScrollbar} -overflow-y: auto; -display: flex; -flex-direction: column; -max-height: 500px; -` -export const FilterItem = styled.li` - -${isMobileDevice - ? css` - max-width: 280px; - white-space: nowrap; - padding: 10px 0 10px 13px; - ` - : css` - min-width: 286px; - white-space: nowrap; - padding: 15px 26px;`} -:hover { - background: rgba(255, 255, 255, 0.2); -} -` -export const Checkbox = styled(BaseCheckbox)` - display: block; - text-transform: uppercase; - - ${Label} { - text-transform: uppercase; - font-weight: 700; - ${isMobileDevice - ? css` - font-size: 10px; - line-height: 11px; - ` - : css` - font-size: 18px; - line-height: 16px; - `} - ${NameStyled} { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - - ${({ checked }) => (checked - ? css`` - : css` - color: rgba(255, 255, 255, 0.6);` - )} - } - - ${CheckboxSvg} { - margin-right: 8px; - - flex: 0 0 auto; - ${isMobileDevice - ? css` - width: 14px; - height: 14px; - ` - : css` - width: 20px; - height: 20px; - `} - } -` -type TCommonButtonsBlock = { - isArena?: boolean, -} - -export const CommonButtonsBlock = styled.div` -display: flex; -justify-content: space-between; -${({ isArena }) => (isArena - ? css` - align-items: flex-start; - padding: ${isMobileDevice ? '8px 25px 10px 13px' : '24px 26px 15px 26px'}; - ` - : css` - align-items: center; - padding:${isMobileDevice ? '8px 25px 10px 13px' : '15px 26px'}; - ` - )} -` -export const ClearButtonContainer = styled.div` -${isMobileDevice - ? css` - position: absolute; - top: 14px; - right: 36px;` - : ''} - -.clear_button { - font-style: normal; - ${isMobileDevice - ? css` - font-size: 10px; - line-height: 12px;` - : css` - font-size: 18px; - line-height: 22px;`} - font-weight: 400; - - letter-spacing: 0.05em; - text-transform: uppercase; - color: rgba(255, 255, 255, 0.5); - cursor: pointer; -} -` -export const SearchContainer = styled.div` -padding-right: ${isMobileDevice ? '0px' : '20px'}; -position: relative; - -:before { - content: ''; - background: url(/images/search.svg) no-repeat; - position: absolute; - ${isMobileDevice - ? css` - left: 8px; - top: 7px;` - : css` - left: 13px; - top: 13px;`} - z-index: 2; - width: 13px; - height: 11px; -} -` -export const SearchInput = styled.input` -border: none; -background: transparent; -outline: none; -width: 100%; -background: #292929; -border-radius: 10px; -margin-bottom: 15px; - -color: #FFFF; -${isMobileDevice - ? css` - height: 24px; - min-width: 242px; - padding-left: 23px;` - : css` - min-width: 513px; - padding-left: 36px; - height: 36px;`} - -::placeholder { - -${isMobileDevice - ? css` - font-size: 10px; - line-height: 15px;` - : css` - font-size: 18px; - line-height: 22px;`} - - text-transform: uppercase; - letter-spacing: 0.05em; -} -` -export const SearchWithAllContainer = styled.div` -flex: 1 1 auto; -` -export const BackButton = styled.div` -font-style: normal; -font-weight: 700; -font-size: 10px; -line-height: 12px; -align-items: center; -letter-spacing: 0.05em; -text-transform: uppercase; -color: #FFFFFF; -cursor: pointer; -position: absolute; -top: 12px; -left: 13px; -padding-left: 24px; -:before { - content: ''; - display: block; - background: url(/images/arrowUpWhite.svg) center no-repeat; - background-size: 12px 12xp; - transform: rotate(-90deg); - right: 0; - width: 12px; - height: 12px; - position: absolute; - top: 0; - left: 0; -} -` diff --git a/src/features/HomePage/components/Dropdown/types.tsx b/src/features/HomePage/components/Dropdown/types.tsx deleted file mode 100644 index 77c26e29..00000000 --- a/src/features/HomePage/components/Dropdown/types.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import { MouseEvent, ChangeEvent } from 'react' -import { Match } from 'requests' -import { TActiveFilters } from 'features/HeaderFilters/store/hooks/useMatchFilters' - -export type TDropDownProps = { - activeFilters: TActiveFilters, - changeInput: (e: ChangeEvent) => void, - clearFilters: (filterName: string) => (e: MouseEvent | ChangeEvent) => void, - closeDropdownList?: () => void, - filterList: Array, - filterTitle: string, - inputValue: string, - setFilters: (filterName: string, value: number) => void, -} - -export type TItem = { - id: number, - name_eng: string, - name_rus: string, -} - -export type TFilterItem = { - item: TItem | number, -} diff --git a/src/features/HomePage/components/HeaderFilters/index.tsx b/src/features/HomePage/components/HeaderFilters/index.tsx index 781164e1..9114e223 100644 --- a/src/features/HomePage/components/HeaderFilters/index.tsx +++ b/src/features/HomePage/components/HeaderFilters/index.tsx @@ -1,51 +1,23 @@ import { useRecoilValue } from 'recoil' -import { isLffClient, isInSportsClient } from 'config/clients' +import { isLffClient } from 'config/clients' import { SportsFilter } from 'features/SportsFilter' import { SelectFilter } from 'components/SelectFilter' import { useHeaderFiltersStore } from 'features/HeaderFilters' import { T9n } from 'features/T9n' -import { - Modal as BaseModal, -} from 'features/AuthServiceApp/components/RegisterPopup/styled' -import styled from 'styled-components/macro' -import { ModalWindow } from 'features/Modal/styled' import { ScArrow, ScHeaderFilters, ScFilterItemsWrap, ScFilterItem, } from './styled' -import { isSportFilterShownAtom } from '../../Atoms/HomePageAtoms' -import { ClearFiltersPopup } from '../ClearFiltersPopup' -import { MatchesFilters } from '../MatchesFilters' -export const Modal = styled(BaseModal)` - ${ModalWindow} { - min-height: 452px; - max-width: 280px; - padding: 37px 0 39px 0; - } -` -const ClearButton = styled.span` - cursor: pointer; - position: absolute; - left: 5px; - top: 38px; - font-style: normal; - font-weight: 400; - font-size: 18px; - letter-spacing: 0.05em; - text-transform: uppercase; - color: rgba(255, 255, 255, 0.5); -` +import { isSportFilterShownAtom } from '../../Atoms/HomePageAtoms' export const HeaderFilters = () => { const { - clickClearAll, - isEmptyFilters, isShowTournament, selectedFilters, selectTournament, @@ -68,6 +40,7 @@ export const HeaderFilters = () => { setSelectedFilters([]) setSelectedLeague(['all_competitions']) } + return ( {!isShowTournament && ( @@ -87,19 +60,7 @@ export const HeaderFilters = () => { )} {!isLffClient && isShowTournament && isSportFilterShown && } - {!isEmptyFilters && ( - - - - )} - {!isLffClient && ( - <> - - - - - )} - {isShowTournament && !isInSportsClient && ( + {isShowTournament && ( ( - size(text) <= TEXT_LENGTH ? text : `${join(take(text, TEXT_LENGTH), '')}...`) - -export const checkSize = (filtersList: Array | Array | undefined) => ( - (filtersList && size(filtersList) > 2) -) diff --git a/src/features/HomePage/components/MatchesFilters/index.tsx b/src/features/HomePage/components/MatchesFilters/index.tsx deleted file mode 100644 index 15ff7714..00000000 --- a/src/features/HomePage/components/MatchesFilters/index.tsx +++ /dev/null @@ -1,110 +0,0 @@ -import React from 'react' -import map from 'lodash/map' -import isNil from 'lodash/isNil' -import size from 'lodash/size' - -import { useName } from 'features/Name' -import { T9n } from 'features/T9n' -import { useHeaderFiltersStore } from 'features/HeaderFilters' -import { isMobileDevice } from 'config/userAgent' -import { - FilterContainer, - FiltersCount, - MatchFiltersContainer, - ActiveFilters, - ActiveFilter, - CloseButton, -} from './styled' -import { DropDown } from '../Dropdown/Dropdown' -import { checkSize, truncateString } from './helpers' - -type TProps = { - filterTitle: string, - item: any, -} - -const ActiveFilterText = ({ filterTitle, item }: TProps) => { - const name = useName(item) - if (filterTitle === 'gender') return () - return ( - <> - {truncateString(name)} - - ) -} -type TFiltersProps = { - isMobile?: boolean, -} - -export const MatchesFilters = ({ isMobile }: TFiltersProps) => { - const { - activeFilters, - changeInput, - clearFilters, - currentFilters, - filtersList, - filtersSize, - handleSetFilters, - inputValue, - isOpenList, - openDropdownList, - } = useHeaderFiltersStore() - - return ( - - {map(currentFilters, (filterTitle, index) => { - const currentActiveFilters = activeFilters[filterTitle as keyof typeof activeFilters] - - const isShrinkFilters = filtersSize >= 7 || size(currentActiveFilters) >= 7 - || isMobile - const shrinkedActiveFilters = isShrinkFilters && currentActiveFilters - && size(currentActiveFilters) > 2 - ? [currentActiveFilters[0], currentActiveFilters[1]] - : currentActiveFilters - - return ( - - {/* */} - {filterTitle} - - {map(shrinkedActiveFilters, (item, i) => ( - - {typeof item === 'number' - ? `U${item}` - : ()} - { - e.stopPropagation() - handleSetFilters(filterTitle, item) - }} - /> - - ))} - - {checkSize(currentActiveFilters) && isShrinkFilters && ( - - +{size(currentActiveFilters) - 2} - - )} - - {isOpenList === filterTitle && !isNil(filtersList) && !isMobileDevice && ( - - )} - - ) - })} - - - ) -} diff --git a/src/features/HomePage/components/MatchesFilters/styled.tsx b/src/features/HomePage/components/MatchesFilters/styled.tsx deleted file mode 100644 index 656c771b..00000000 --- a/src/features/HomePage/components/MatchesFilters/styled.tsx +++ /dev/null @@ -1,169 +0,0 @@ -import { isMobileDevice } from 'config/userAgent' -import styled, { css } from 'styled-components/macro' - -export const MatchFiltersContainer = styled.div` -display: flex; -flex-wrap: no-wrap; -justify-content: flex-end; -width: 100%; - -${isMobileDevice - ? css` - flex-direction: column; - padding-right: 16px; - border-top: 1px solid #505050; - padding-top: 19px; - gap: 22px; - ` - : css` - gap: 30px; - flex-direction: row; - padding-right: 25px; - `} -` - -type TFilterContainer = { - active?: boolean, -} - -export const FilterContainer = styled.div` -font-style: normal; -font-weight: 700; -letter-spacing: 0.05em; -text-transform: uppercase; -position: relative; -display: flex; - -${isMobileDevice - ? css` - color:#8b8b8b; - font-size: 10px; - line-height: 14px; - padding-left: 19px; - flex-direction: row; - align-items: center; -` - : css` - font-size: 18px; - line-height: 34px; - height: 34px; - color: #FFFFFF; - padding-left: 32px; - flex-direction: column;`} - -.filter_title { - cursor: pointer; - ${isMobileDevice && 'margin-right: 6px;'} -} -${({ active }) => active && !isMobileDevice && css` -:after { - content: ''; - display: block; - position: fixed; - background: #000000; - opacity: 0.7; - top: 0px; - left: 0px; - width: 100%; - height: 100%; - z-index: 9; - cursor: auto; -}`} - - -:before { - display: block; - position: absolute; - top: 0; - content: ''; - height: 100%; - cursor: pointer; - - ${({ active }) => (active - ? css` - z-index: 12; - ` - : css` - transform: rotate(180deg); - `)} - - ${isMobileDevice - ? css` - background: url(/images/arrowUpWhite.svg) center no-repeat; - transform: rotate(90deg); - right: 0; - width: 10px; - ` - : css` - background: url(/images/arrowUpWhite.svg) center no-repeat; - background-size: 20px 12px; - left: 0; - width: 20px; - `} - - -} - span { - ${({ active }) => (active && css` - z-index:12; - position: relative; - `)} - } -` - -export const ActiveFilters = styled.div` -display: flex; -flex-direction: row; -${isMobileDevice - ? css` - gap: 5px;` - : css` - gap: 10px;`} -` -export const CloseButton = styled.div` -background: url(/images/closeWhite.svg) no-repeat; - -${isMobileDevice - ? css` - width: 7px; - height: 7px; - background-size: 7px;` - : css` - height: 9px; - width: 9px; - background-size: 10px;`} - -` -export const ActiveFilter = styled.span` -font-style: normal; -font-weight: 600; -display: flex; -align-items: center; -letter-spacing: 0.05em; -text-transform: uppercase; -color: #FFFFFF; -border: 1px solid #FFFFFF; -border-radius: 16px; -gap: 5px; -cursor: pointer; -${isMobileDevice - ? css` - padding: 0 5px; - font-size: 10px; - line-height: 12px;` - : css` - padding: 0 10px; - font-size: 14px; - height: 17px; - :hover { - background: #ffff; - color: #000000; - - ${CloseButton} { - background: url(/images/closeBlack.svg) no-repeat; - } - }`} - - -` -export const FiltersCount = styled(ActiveFilter)`` diff --git a/src/features/HomePage/components/MobileMatchesFilters/index.tsx b/src/features/HomePage/components/MobileMatchesFilters/index.tsx deleted file mode 100644 index 2547c38d..00000000 --- a/src/features/HomePage/components/MobileMatchesFilters/index.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import { useHeaderFiltersStore } from 'features/HeaderFilters' -import { T9n } from 'features/T9n' -import React, { useState } from 'react' -import isEmpty from 'lodash/isEmpty' -import isNil from 'lodash/isNil' -import { MatchesFilters } from '../MatchesFilters' -import { - ClearButton, - CloseButton, - FilterContainer, - Modal, -} from './styled' -import { DropDown } from '../Dropdown/Dropdown' -import { ClearFiltersPopup } from '../ClearFiltersPopup' - -export const MobileMathesFilters = () => { - const [isOpen, setOpen] = useState(false) - const { - activeFilters, - changeInput, - clearFilters, - clickClearAll, - closeDropdownList, - currentFilters, - filtersList, - filtersSize, - handleSetFilters, - inputValue, - isOpenList, - } = useHeaderFiltersStore() - - const openFilters = () => setOpen(true) - - const clearAllFilters = () => { - setOpen(false) - clickClearAll() - } - - const closeFilters = () => { - setOpen(false) - closeDropdownList() - } - return ( - <> - {!isEmpty(currentFilters) && ( - <> - - - {filtersSize !== 0 && ` ${filtersSize}`} - - - {isEmpty(isOpenList) - ? ( - <> - - {filtersSize !== 0 && ( - - - - )} - - - ) - : ( - <> - {!isNil(filtersList) && ( - - )} - - - )} - - - - )} - - ) -} diff --git a/src/features/HomePage/components/MobileMatchesFilters/styled.tsx b/src/features/HomePage/components/MobileMatchesFilters/styled.tsx deleted file mode 100644 index 1b40d4f8..00000000 --- a/src/features/HomePage/components/MobileMatchesFilters/styled.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import styled, { css } from 'styled-components/macro' - -import { ModalWindow } from 'features/Modal/styled' -import { - Modal as BaseModal, -} from 'features/AuthServiceApp/components/RegisterPopup/styled' - -export const Modal = styled(BaseModal)` - ${ModalWindow} { - min-height: auto; - max-height: 452px; - max-width: 293px; - padding: 35px 0 9px 0; - } -` - -export const CloseButton = styled.div` -position: absolute; -width: 13px; -height: 13px; -background:url(/images/closeWhite.svg) no-repeat; -background-size: 13px; -top: 13px; -right: 13px; -` - -type TFilterProps = { - active?: boolean, -} - -export const FilterContainer = styled.div` -font-style: normal; -font-weight: 700; -font-size: 10px; -line-height: 12px; -letter-spacing: 0.05em; -text-transform: uppercase; -color: #FFFFFF; -padding-left: 22px; -position: relative; -margin-left: 20px; - -:before{ - content: ''; - display: block; - position: absolute; - left: 0; - top: 0; - width:14px; - height: 14px; - ${({ active }) => (active - ? css` - background: url(/images/filter-white.svg) no-repeat;` - : css` - background: url(/images/filter-gray.svg) no-repeat;`)} - background-size: 14px 14px; -} -` - -export const ClearButton = styled.div` -font-style: normal; -position: absolute; -top: 14px; -right: 36px; -font-size: 10px; -line-height: 12px; -font-weight: 400; -letter-spacing: 0.05em; -text-transform: uppercase; -color: rgba(255,255,255,0.5); -` diff --git a/src/features/HomePage/hooks.tsx b/src/features/HomePage/hooks.tsx index 6f14c4d1..c8b11b82 100644 --- a/src/features/HomePage/hooks.tsx +++ b/src/features/HomePage/hooks.tsx @@ -35,7 +35,7 @@ const getDate = (date: Date) => format(date, 'yyyy-MM-dd') export const useHomePage = () => { const { user } = useAuthStore() - const { queryParams, selectedDate } = useHeaderFiltersStore() + const { selectedDate } = useHeaderFiltersStore() const [isOpenDownload, setIsOpenDownload] = useState(false) const [isShowConfirmPopup, setIsShowConfirmPopup] = useState(false) const setIsSportFilterShown = useSetRecoilState(isSportFilterShownAtom) @@ -57,22 +57,21 @@ export const useHomePage = () => { useEffect(() => { const dateLastOpenSmartBanner = localStorage.getItem('dateLastOpenSmartBanner') if (!dateLastOpenSmartBanner - || Date.parse(JSON.parse(dateLastOpenSmartBanner)) < Date.parse(new Date().toISOString()) + || Date.parse(JSON.parse(dateLastOpenSmartBanner)) < Date.parse(new Date().toISOString()) ) { setIsOpenDownload(true) } }, []) - const fetchMatches = useCallback((limit: number, offset: number) => getHomeMatches( - { + const fetchMatches = useCallback( + (limit: number, offset: number) => getHomeMatches({ date: getDate(selectedDate), limit, offset, - queryParams, timezoneOffset: getTimezoneOffset(selectedDate), - - }, - ), [selectedDate, queryParams]) + }), + [selectedDate], + ) useEffect(() => { if (client.name === ClientNames.Facr) { diff --git a/src/features/UserFavorites/styled.tsx b/src/features/UserFavorites/styled.tsx index 85bb5e40..bb588989 100644 --- a/src/features/UserFavorites/styled.tsx +++ b/src/features/UserFavorites/styled.tsx @@ -18,8 +18,7 @@ export const UserSportFavWrapper = styled.aside` left: 0; top: 0; bottom: 0; - width: 4%; - z-index: 8; + z-index: 10; ${isMobileDevice ? css` diff --git a/src/requests/getMatches/getHomeMatches.tsx b/src/requests/getMatches/getHomeMatches.tsx index f1519251..f76c9aad 100644 --- a/src/requests/getMatches/getHomeMatches.tsx +++ b/src/requests/getMatches/getHomeMatches.tsx @@ -1,5 +1,4 @@ import { PROCEDURES, API_ROOT } from 'config' -import isEmpty from 'lodash/isEmpty' import { client } from 'config/clients' @@ -9,20 +8,10 @@ import { getMatchesPreviews } from './getPreviews' const proc = PROCEDURES.get_matches -export type TQueryParams = { - arena?: Array, - division?: Array, - gender?: Array, - main_team?: Array, - round?: Array, - youth_age?: Array, -} - type Args = { date: string, limit: number, offset: number, - queryParams?: TQueryParams, timezoneOffset: number, } @@ -30,22 +19,16 @@ export const getHomeMatches = async ({ date, limit, offset, - queryParams, timezoneOffset, }: Args): Promise => { - const url = `${API_ROOT}/v1/data/matches/query` + const url = `${API_ROOT}/v1/data/get-matches` + const config = { body: { - arena: !isEmpty(queryParams?.arena) ? queryParams?.arena : undefined, - date: `${date} 00:00:00`, - division: !isEmpty(queryParams?.division) ? queryParams?.division : undefined, - gender: !isEmpty(queryParams?.gender) ? queryParams?.gender : undefined, - gmt: String(timezoneOffset), - limit: String(limit), - main_team: !isEmpty(queryParams?.main_team) ? queryParams?.main_team : undefined, - offset: String(offset), - round: !isEmpty(queryParams?.round) ? queryParams?.round : undefined, - youth_age: !isEmpty(queryParams?.youth_age) ? queryParams?.youth_age : undefined, + _p_date: `${date} 00:00:00`, + _p_gmt: timezoneOffset, + _p_limit: limit, + _p_offset: offset, ...client.requests?.[proc], }, } diff --git a/src/requests/getMatches/types.tsx b/src/requests/getMatches/types.tsx index ff130b6f..b7e3ac03 100644 --- a/src/requests/getMatches/types.tsx +++ b/src/requests/getMatches/types.tsx @@ -7,20 +7,11 @@ export type TournamentType = { name_rus: string, } -export type TDefaultType = { - id: number, - name_eng: string, - name_rus: string, -} type Team = { - division?: TDefaultType, // Дивизион - gender?: number, // ИД пола id: number, - main_team?: TDefaultType, // Родительский клуб команды name_eng: string, name_rus: string, score?: number | null, - youth_age?: number | null, // Возраст команды } export type SportInfo = { @@ -30,8 +21,6 @@ export type SportInfo = { export type Match = { access: boolean, - /** Стадион */ - arena: TDefaultType | null, /** тип трансляции */ c_type_broadcast: number, calc: boolean, @@ -49,8 +38,6 @@ export type Match = { live: boolean, preview?: string, previewURL?: string, - /** Раунд */ - round?: TDefaultType, sport: SportTypes, sport_info: SportInfo, /** наличие завершенного hls стрима */