saleor-dashboard/src/components/Date/Date.tsx

52 lines
1.2 KiB
TypeScript
Raw Normal View History

import { Tooltip } from "@material-ui/core";
import useDateLocalize from "@saleor/hooks/useDateLocalize";
2019-08-09 11:14:35 +00:00
import moment from "moment-timezone";
2019-08-09 10:26:22 +00:00
import React from "react";
2019-06-19 14:40:52 +00:00
import { LocaleConsumer } from "../Locale";
import { Consumer } from "./DateContext";
import { useStyles } from "./styles";
2019-06-19 14:40:52 +00:00
interface DateProps {
date: string;
plain?: boolean;
}
export const Date: React.FC<DateProps> = ({ date, plain }) => {
const classes = useStyles();
2019-06-19 14:40:52 +00:00
const localizeDate = useDateLocalize();
2019-06-19 14:40:52 +00:00
const getHumanized = (value: string, locale: string, currentDate: number) =>
moment(value)
.locale(locale)
.from(currentDate);
return (
<LocaleConsumer>
2019-10-16 15:18:29 +00:00
{({ locale }) => (
2019-06-19 14:40:52 +00:00
<Consumer>
{currentDate =>
plain ? (
localizeDate(date)
) : (
<Tooltip
title={localizeDate(date)}
PopperProps={{
className: classes.tooltip,
}}
>
2019-06-19 14:40:52 +00:00
<time dateTime={date}>
{getHumanized(date, locale, currentDate)}
</time>
</Tooltip>
)
}
</Consumer>
)}
</LocaleConsumer>
);
};
Date.displayName = "Date";
export default Date;