saleor-dashboard/src/components/Timeline/TimelineEventHeader.tsx

94 lines
2.2 KiB
TypeScript
Raw Normal View History

Feature/order reissue (#910) * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * Add change to changelog * Remove console.log * Update tests * Extract messages * Add utils functions for selecting only ulfulfilled order lines * Add optional value selection for line item * Update tests * Add optional rendering of unfulfilled items card and refactor a bit * Update displaying of items card title when refunded card * UUpdate utils, form data etc. not to include refunded items when calculating replaced items amount * Uppdate return items card not to display replace buttons for refunded items * Refactor and small fixes after review * Update extracted messages * Fix card title when no fullfilemtn id * wip * Initially stitch returns page. Update types, add mutation * remove unnecessary component display names * Add loading status from form submission & refactor * Add errors from response * Add errors from response and refactor * Remove comments * Add optional error adding when no data from return create request * Update messages * wip * Update snapshots * Remove unnecessary console.log * Add better typing for getParsedLineData function * Update & refactor card title to match cards both in return and order details * Add handling of new statuses to order details cards. Also refactor, and devide order fulfillment card into couple of smaller components * Update messages * Update schema to match api * Update types * Update status label component to match colors with new designs and order details cards * RUpdate and refactor order fulfillment card components to be reusable. Also add replaced status handling * Updayte card title component to handle all cases and statuses * Update oorder unfulfilled items card and order details page, reduce some of the boilerplate * Fix card title types and adjust returns card to match * Update messages * Update snapshots * RUpdate order fulfillment card with subtitles and buttons for returned status * Add onRefund to order fulfillment card * Fix typo and wrong message in card title * Add missing condition in return form submission utils to decice if to refund products * Update fulfillment subtitles row and tests * Update messages * Change naming and locations of OrderFulfillment and items card components * Update messages * U[pdate names of components again to even better ones * Update messages * changelog * Update schema and types so that order history event also includes user first and last name * Add extended timeline event and event header components. Move some of the logic to utils and add way to display links in the event header. * FFix types * Update messages * Change naming of isOfType -> isTimelineEventOfType and refactor extended timeline event messages selection to be less complicated * Add ids and update messages * Add ids and update messages some more * Update storybook decorator to work with react router context in components and tests * Refactor after review * Update messages * Add rredirecting to draft order * Add handling draft creation from replacement * Add related order to order event fragment and update lots and lots of types * Update extended timeline event to match related order type on order history event * Update fixtures * Refactor ExtendedTimelineEvent Co-authored-by: Jakub Majorek <majorek.jakub@gmail.com> * Fix typing * Update messages * Fix missing history event for replacement draft created for replaced products * Update messages * Handle new statuses for returned and partially returned orders * Update messages * update snapshots * BBump empty line to rebuild ci * Change status to proper color * Change replaceable items in return for replace to be auto off instead of on * Add utils functions and make order details menu not show option to return items when there are returnable items in the order * Fix replace checkbox showing when previously hidden and clicked set maximal quantities * Fix return form invalid money values * Add default values to avoid returning of NaN in utils for return amount and refactor * Add ggeneral error alerts * Add eproduct error box component and style. style a lot. * Fixes * Fix lint * Add cannot refund error title + description * Extract messages * Refactor after review * Add better, nicer and fancier imports to product error cell * Use error color from palette in product error cell * Fix max refund when 0 for return * Add ddisable ability to refund products button so it's disabled when 0 products selected * Add class for order return form data parsing and add condition to not do refund when total captured on order is 0 * Update snapshots * Add condition for order lines quantity in order products table row * Fix return amount submit button * Add change to changelog Co-authored-by: Jakub Majorek <majorek.jakub@gmail.com>
2021-01-20 16:16:43 +00:00
import { makeStyles } from "@material-ui/core/styles";
import Typography from "@material-ui/core/Typography";
import useNavigator from "@saleor/hooks/useNavigator";
import React from "react";
import { DateTime } from "../Date";
import Link from "../Link";
const useStyles = makeStyles(
theme => ({
container: {
alignItems: "center",
display: "flex",
flexDirection: "row",
justifyContent: "space-between",
width: "100%"
},
date: {
color: theme.typography.caption.color,
paddingLeft: 24
},
elementsContainer: {
alignItems: "center",
display: "flex",
flexDirection: "row",
flexWrap: "wrap"
},
secondaryTitle: {
color: "#9e9e9e",
fontSize: 14,
marginTop: theme.spacing(2)
},
titleElement: {
marginRight: "0.5rem"
}
}),
{ name: "TimelineEventHeader" }
);
export interface TitleElement {
text: string;
link?: string;
}
export interface TimelineEventHeaderProps {
title?: string;
date: string;
titleElements?: TitleElement[];
secondaryTitle?: string;
}
export const TimelineEventHeader: React.FC<TimelineEventHeaderProps> = props => {
const { title, date, titleElements, secondaryTitle } = props;
const navigate = useNavigator();
const classes = useStyles(props);
return (
<div className={classes.container}>
{title && <Typography>{title}</Typography>}
{titleElements && (
<div className={classes.elementsContainer}>
{titleElements.map(({ text, link }) => {
if (link) {
return (
<Link
className={classes.titleElement}
onClick={() => navigate(link)}
>
{text}
</Link>
);
}
return (
<Typography className={classes.titleElement}>{text}</Typography>
);
})}
</div>
)}
<Typography className={classes.date}>
<DateTime date={date} />
</Typography>
{secondaryTitle && (
<Typography className={classes.secondaryTitle}>
{secondaryTitle}
</Typography>
)}
</div>
);
};
export default TimelineEventHeader;