From bf98ff90a7ad9fad79f75a2215108dcfdaa02ed2 Mon Sep 17 00:00:00 2001
From: Eug-VS <eug-vs@keemail.me>
Date: Tue, 28 Jan 2020 17:00:00 +0300
Subject: feat!: install Typescript, migrate Window to .tsx

---
 src/lib/components/Window/Window.tsx | 63 ++++++++++++++++++++++++++++++++++++
 1 file changed, 63 insertions(+)
 create mode 100644 src/lib/components/Window/Window.tsx

(limited to 'src/lib/components/Window/Window.tsx')

diff --git a/src/lib/components/Window/Window.tsx b/src/lib/components/Window/Window.tsx
new file mode 100644
index 0000000..4821cb3
--- /dev/null
+++ b/src/lib/components/Window/Window.tsx
@@ -0,0 +1,63 @@
+import React from 'react';
+
+import { Typography, Divider, makeStyles } from '@material-ui/core';
+
+import WindowSurface from './WindowSurface';
+import { SurfaceSize, SurfacePosition } from './types';
+
+
+interface PropTypes {
+  type: 'primary' | 'secondary' | 'mono';
+  name?: string;
+  children?: any;
+}
+
+
+const useStyles = makeStyles((theme: any) => ({
+  header: {
+    padding: theme.spacing(1, 0, 1, 2),
+    background: theme.palette.background.elevation2,
+  },
+}));
+
+
+const Window = (props: PropTypes) => {
+  const classes = useStyles();
+  const { type, name, children } = props;
+
+  const size: SurfaceSize = {
+    height: '85vh',
+  };
+
+  const position: SurfacePosition = {
+    bottom: '3vh',
+  };
+
+  if (type === 'primary') {
+    size.width = '63vw';
+    position.left = '2vw';
+  } else if (type === 'secondary') {
+    size.width = '31vw';
+    position.right = '2vw';
+  } else if (type === 'mono') {
+    position.left = '2vw';
+    position.right = '2vw';
+  }
+
+  return (
+    <WindowSurface
+      size={size}
+      position={position}
+    >
+      {name &&
+      <div>
+        <Typography variant="h5" className={classes.header}>{name}</Typography>
+        <Divider />
+      </div>
+      }
+      {children}
+    </WindowSurface>
+  );
+};
+
+export default Window;
-- 
cgit v1.2.3


From 5bcc9b41e59bf7215abf395ea899cdbc2d06db9a Mon Sep 17 00:00:00 2001
From: Eug-VS <eug-vs@keemail.me>
Date: Mon, 3 Feb 2020 14:51:10 +0300
Subject: feat: use React.FC<PropTypes> syntax

This approach is better because it allows to use destructuring
right in a function declaration without explicitly defining
children propety in PropTypes
---
 src/lib/components/Window/Window.tsx | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

(limited to 'src/lib/components/Window/Window.tsx')

diff --git a/src/lib/components/Window/Window.tsx b/src/lib/components/Window/Window.tsx
index 4821cb3..ea8e264 100644
--- a/src/lib/components/Window/Window.tsx
+++ b/src/lib/components/Window/Window.tsx
@@ -9,7 +9,6 @@ import { SurfaceSize, SurfacePosition } from './types';
 interface PropTypes {
   type: 'primary' | 'secondary' | 'mono';
   name?: string;
-  children?: any;
 }
 
 
@@ -21,9 +20,8 @@ const useStyles = makeStyles((theme: any) => ({
 }));
 
 
-const Window = (props: PropTypes) => {
+const Window: React.FC<PropTypes> = ({ type, name, children }) => {
   const classes = useStyles();
-  const { type, name, children } = props;
 
   const size: SurfaceSize = {
     height: '85vh',
-- 
cgit v1.2.3

