import React, { useMemo } from 'react'
import { shiftQueryPeriod, getDateForShiftedPeriod } from '../../query'
import classNames from 'classnames'
import { useQueryContext } from '../../query-context'
import { useSiteContext } from '../../site-context'
import { NavigateKeybind } from '../../keybinding'
import { AppNavigationLink } from '../../navigation/use-app-navigate'
import { QueryPeriod } from '../../query-time-periods'
import { useMatch } from 'react-router-dom'
import { rootRoute } from '../../router'
const ArrowKeybind = ({
keyboardKey
}: {
keyboardKey: 'ArrowLeft' | 'ArrowRight'
}) => {
const site = useSiteContext()
const { query } = useQueryContext()
const search = useMemo(
() =>
shiftQueryPeriod({
query,
site,
direction: ({ ArrowLeft: -1, ArrowRight: 1 } as const)[keyboardKey],
keybindHint: keyboardKey
}),
[site, query, keyboardKey]
)
return (
)
}
function ArrowIcon({
direction,
disabled = false
}: {
direction: 'left' | 'right'
disabled?: boolean
}) {
return (
)
}
export function MovePeriodArrows({ className }: { className?: string }) {
const periodsWithArrows = [
QueryPeriod.year,
QueryPeriod.month,
QueryPeriod.day
]
const { query } = useQueryContext()
const site = useSiteContext()
const dashboardRouteMatch = useMatch(rootRoute.path)
if (!periodsWithArrows.includes(query.period)) {
return null
}
const canGoBack =
getDateForShiftedPeriod({ site, query, direction: -1 }) !== null
const canGoForward =
getDateForShiftedPeriod({ site, query, direction: 1 }) !== null
const sharedClass =
'flex items-center px-1 sm:px-2 dark:text-gray-100 transition-colors duration-150'
const enabledClass = 'hover:bg-gray-100 dark:hover:bg-gray-700'
const disabledClass = 'bg-gray-200 dark:bg-gray-850 cursor-not-allowed'
return (
search
}
>
search
}
>
{!!dashboardRouteMatch &&
}
{!!dashboardRouteMatch &&
}
)
}