Skip to content

Commit

Permalink
Merge pull request #4758 from MohammedFaragallah/products-ts
Browse files Browse the repository at this point in the history
Convert products demo example into typescript
  • Loading branch information
fzaninotto committed May 27, 2020
2 parents e1e03c9 + 7418be9 commit e1269b8
Show file tree
Hide file tree
Showing 7 changed files with 49 additions and 20 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import React from 'react';
import Card from '@material-ui/core/Card';
import CardContent from '@material-ui/core/CardContent';
import { makeStyles } from '@material-ui/core/styles';
import React, { FC } from 'react';
import { FieldProps, Product } from '../types';

const useStyles = makeStyles({
root: { display: 'inline-block', marginTop: '1em', zIndex: 2 },
Expand All @@ -14,8 +15,11 @@ const useStyles = makeStyles({
},
});

const Poster = ({ record }) => {
const Poster: FC<FieldProps<Product>> = ({ record }) => {
const classes = useStyles();

if (!record) return null;

return (
<Card className={classes.root}>
<CardContent className={classes.content}>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React from 'react';
import React, { FC } from 'react';
import {
Create,
FormTab,
Expand All @@ -12,6 +12,7 @@ import {
import { InputAdornment } from '@material-ui/core';
import { makeStyles } from '@material-ui/core/styles';
import RichTextInput from 'ra-input-rich-text';
import { CreateComponentProps } from '../types';

export const styles = {
price: { width: '7em' },
Expand All @@ -24,7 +25,7 @@ export const styles = {

const useStyles = makeStyles(styles);

const ProductCreate = props => {
const ProductCreate: FC<CreateComponentProps> = props => {
const classes = useStyles();
return (
<Create {...props}>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React from 'react';
import React, { FC } from 'react';
import {
Datagrid,
DateField,
Expand All @@ -23,10 +23,16 @@ import CustomerReferenceField from '../visitors/CustomerReferenceField';
import StarRatingField from '../reviews/StarRatingField';
import Poster from './Poster';
import { styles as createStyles } from './ProductCreate';
import { Product, EditComponentProps } from '../types';

const ProductTitle = ({ record }) => <span>Poster #{record.reference}</span>;
interface ProductTitleProps {
record?: Product;
}

const styles = {
const ProductTitle: FC<ProductTitleProps> = ({ record }) =>
record ? <span>Poster #{record.reference}</span> : null;

const useStyles = makeStyles({
...createStyles,
comment: {
maxWidth: '20em',
Expand All @@ -38,11 +44,9 @@ const styles = {
maxWidth: '40em',
display: 'block',
},
};

const useStyles = makeStyles(styles);
});

const ProductEdit = props => {
const ProductEdit: FC<EditComponentProps> = props => {
const classes = useStyles();
return (
<Edit {...props} title={<ProductTitle />}>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
import React from 'react';
import Chip from '@material-ui/core/Chip';
import { makeStyles } from '@material-ui/core/styles';
import { InputProps } from 'ra-core';
import React, { FC } from 'react';
import {
Filter,
List,
Expand All @@ -9,8 +12,7 @@ import {
SelectInput,
useTranslate,
} from 'react-admin';
import Chip from '@material-ui/core/Chip';
import { makeStyles } from '@material-ui/core/styles';
import { FilterProps, ListComponentProps } from '../types';
import GridList from './GridList';

const useQuickFilterStyles = makeStyles(theme => ({
Expand All @@ -19,13 +21,23 @@ const useQuickFilterStyles = makeStyles(theme => ({
},
}));

const QuickFilter = ({ label }) => {
const QuickFilter: FC<InputProps> = ({ label }) => {
const translate = useTranslate();
const classes = useQuickFilterStyles();
return <Chip className={classes.root} label={translate(label)} />;
};

export const ProductFilter = props => (
interface FilterParams {
q?: string;
category_id?: string;
width_gte?: number;
width_lte?: number;
height_gte?: number;
height_lte?: number;
stock_lte?: number;
}

export const ProductFilter: FC<FilterProps<FilterParams>> = props => (
<Filter {...props}>
<SearchInput source="q" alwaysOn />
<ReferenceInput
Expand All @@ -47,7 +59,7 @@ export const ProductFilter = props => (
</Filter>
);

const ProductList = props => (
const ProductList: FC<ListComponentProps> = props => (
<List
{...props}
filters={<ProductFilter />}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import React from 'react';
import React, { FC } from 'react';
import { ReferenceField, TextField } from 'react-admin';
import { FieldProps } from './../types';

const ProductReferenceField = props => (
const ProductReferenceField: FC<FieldProps> = props => (
<ReferenceField
label="Product"
source="product_id"
Expand Down
File renamed without changes.
9 changes: 8 additions & 1 deletion examples/demo/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,6 @@ export interface Customer extends Record {
export type OrderStatus = 'ordered' | 'delivered' | 'cancelled';

export interface Order extends Record {
date: string;
status: OrderStatus;
basket: BasketItem[];
date: Date;
Expand Down Expand Up @@ -166,6 +165,14 @@ export interface ShowComponentProps<
id: string;
}

export interface CreateComponentProps<
Params extends ResourceMatch = { id: string },
C extends StaticContext = StaticContext,
S = H.LocationState
> extends ResourceComponentProps<Params, C, S> {
id: string;
}

declare global {
interface Window {
restServer: any;
Expand Down

0 comments on commit e1269b8

Please sign in to comment.