feat(ott-879): disabled match filters for non current date selected (#316)

* feat(ott-879): disabled match filters for non current date selected

* feat(ott-879): refactor for PR

* feat(ott-879): short fix PR
keep-around/af30b88d367751c9e05a735e4a0467a96238ef47
Sergiu 5 years ago committed by GitHub
parent 3da64ed59a
commit 29848337dd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 9
      src/features/Common/RadioButtons/index.tsx
  2. 10
      src/features/HeaderFilters/components/MatchStatusFilter/index.tsx
  3. 15
      src/features/HeaderFilters/store/hooks/index.tsx

@ -13,6 +13,7 @@ export const RadioButtonGroup = styled.div.attrs({
type RadioButtonProps = { type RadioButtonProps = {
buttonWidth?: number, buttonWidth?: number,
disabled?: boolean,
selected?: boolean, selected?: boolean,
upperCase?: boolean, upperCase?: boolean,
} }
@ -64,6 +65,14 @@ export const RadioButton = styled.button.attrs(({ selected }: RadioButtonProps)
upperCase ? 'text-transform: uppercase;' : '' upperCase ? 'text-transform: uppercase;' : ''
)} )}
${({ disabled }) => (
disabled
&& css`
pointer-events: none;
opacity: 0.7;
`
)}
:not(:last-child) { :not(:last-child) {
border-right: 1px solid #222222; border-right: 1px solid #222222;
} }

@ -7,7 +7,12 @@ import {
import { MatchStatuses, useHeaderFiltersStore } from '../../store' import { MatchStatuses, useHeaderFiltersStore } from '../../store'
export const MatchStatusFilter = () => { export const MatchStatusFilter = () => {
const { selectedMatchStatus, setSelectedMatchStatus } = useHeaderFiltersStore() const {
isTodaySelected,
selectedMatchStatus,
setSelectedMatchStatus,
} = useHeaderFiltersStore()
return ( return (
<RadioButtonGroup> <RadioButtonGroup>
<RadioButton <RadioButton
@ -15,6 +20,7 @@ export const MatchStatusFilter = () => {
selected={selectedMatchStatus === MatchStatuses.Live} selected={selectedMatchStatus === MatchStatuses.Live}
onClick={() => setSelectedMatchStatus(MatchStatuses.Live)} onClick={() => setSelectedMatchStatus(MatchStatuses.Live)}
buttonWidth={80} buttonWidth={80}
disabled={!isTodaySelected}
> >
<T9n t='match_status_live' /> <T9n t='match_status_live' />
</RadioButton> </RadioButton>
@ -22,6 +28,7 @@ export const MatchStatusFilter = () => {
selected={selectedMatchStatus === MatchStatuses.Finished} selected={selectedMatchStatus === MatchStatuses.Finished}
onClick={() => setSelectedMatchStatus(MatchStatuses.Finished)} onClick={() => setSelectedMatchStatus(MatchStatuses.Finished)}
buttonWidth={121} buttonWidth={121}
disabled={!isTodaySelected}
> >
<T9n t='match_status_finished' /> <T9n t='match_status_finished' />
</RadioButton> </RadioButton>
@ -29,6 +36,7 @@ export const MatchStatusFilter = () => {
selected={selectedMatchStatus === MatchStatuses.Soon} selected={selectedMatchStatus === MatchStatuses.Soon}
onClick={() => setSelectedMatchStatus(MatchStatuses.Soon)} onClick={() => setSelectedMatchStatus(MatchStatuses.Soon)}
buttonWidth={87} buttonWidth={87}
disabled={!isTodaySelected}
> >
<T9n t='match_status_soon' /> <T9n t='match_status_soon' />
</RadioButton> </RadioButton>

@ -5,6 +5,7 @@ import {
useCallback, useCallback,
} from 'react' } from 'react'
import { useLocation } from 'react-router-dom' import { useLocation } from 'react-router-dom'
import { isToday } from 'date-fns'
import { SportTypes } from 'config' import { SportTypes } from 'config'
@ -31,6 +32,8 @@ export const useFilters = () => {
validator: isValidDate, validator: isValidDate,
}) })
const isTodaySelected = isToday(selectedDate)
const [ const [
selectedMatchStatus, selectedMatchStatus,
setMatchStatus, setMatchStatus,
@ -82,9 +85,18 @@ export const useFilters = () => {
if (!search) { if (!search) {
resetFilters() resetFilters()
} }
}, [search, resetFilters]) if (!isTodaySelected) {
setMatchStatus(null)
}
}, [
isTodaySelected,
resetFilters,
search,
setMatchStatus,
])
const store = useMemo(() => ({ const store = useMemo(() => ({
isTodaySelected,
selectedDate, selectedDate,
selectedDateFormatted: getMoscowDate(selectedDate), selectedDateFormatted: getMoscowDate(selectedDate),
selectedMatchStatus, selectedMatchStatus,
@ -95,6 +107,7 @@ export const useFilters = () => {
setSelectedSportTypeId, setSelectedSportTypeId,
setSelectedTournamentId, setSelectedTournamentId,
}), [ }), [
isTodaySelected,
selectedDate, selectedDate,
selectedMatchStatus, selectedMatchStatus,
selectedSportTypeId, selectedSportTypeId,

Loading…
Cancel
Save