Timeline date headers

This commit is contained in:
Evan Hahn 2022-01-26 17:05:26 -06:00 committed by GitHub
parent 0fa069f260
commit f9440bf594
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
41 changed files with 1183 additions and 771 deletions

34
ts/components/Time.tsx Normal file
View file

@ -0,0 +1,34 @@
// Copyright 2022 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import type { Moment } from 'moment';
import type { ReactElement, TimeHTMLAttributes } from 'react';
import moment from 'moment';
import React from 'react';
export function Time({
children,
dateOnly = false,
timestamp,
...otherProps
}: Readonly<
{
dateOnly?: boolean;
timestamp: Readonly<number | Date | Moment>;
} & Omit<TimeHTMLAttributes<HTMLElement>, 'dateTime'>
>): ReactElement {
let dateTime: string;
if (dateOnly) {
dateTime = moment(timestamp).format('YYYY-MM-DD');
} else {
const date =
typeof timestamp === 'number' ? new Date(timestamp) : timestamp;
dateTime = date.toISOString();
}
return (
<time dateTime={dateTime} {...otherProps}>
{children}
</time>
);
}