From c8ff13cf04216d7fa3bdd53b26753fb5bcbe2d51 Mon Sep 17 00:00:00 2001
From: Jim Daniels Wasswa <104334373+jim-deriv@users.noreply.github.com>
Date: Tue, 27 Sep 2022 14:50:25 +0800
Subject: [PATCH] Jim/74989/card component ts migration (#6455)
* refactor: migrate card component to ts
* chore: add new line between type declarations
* chore: render only if truthy
Co-authored-by: Carol Sachdeva <58209918+carol-binary@users.noreply.github.com>
---
.../components/src/components/card/card.jsx | 37 -------------
.../components/src/components/card/card.tsx | 52 +++++++++++++++++++
.../components/card/{index.js => index.ts} | 2 +-
3 files changed, 53 insertions(+), 38 deletions(-)
delete mode 100644 packages/components/src/components/card/card.jsx
create mode 100644 packages/components/src/components/card/card.tsx
rename packages/components/src/components/card/{index.js => index.ts} (58%)
diff --git a/packages/components/src/components/card/card.jsx b/packages/components/src/components/card/card.jsx
deleted file mode 100644
index 77a5a34ff657..000000000000
--- a/packages/components/src/components/card/card.jsx
+++ /dev/null
@@ -1,37 +0,0 @@
-import classNames from 'classnames';
-import PropTypes from 'prop-types';
-import React from 'react';
-
-const CardRoot = ({ children, className, ...props }) => (
-
- {children}
-
-);
-
-const CardHeader = ({ children }) => {children}
;
-
-const CardContent = ({ children }) => {children}
;
-
-const CardFooter = ({ children }) => {children}
;
-
-const Card = ({ className, header, content, footer, renderHeader, renderContent, renderFooter, ...props }) => {
- return (
-
- {renderHeader ? renderHeader() : header !== null && {header}}
- {renderContent ? renderContent() : content !== null && {content}}
- {renderFooter ? renderFooter() : footer !== null && {footer}}
-
- );
-};
-
-Card.propTypes = {
- className: PropTypes.string,
- header: PropTypes.node,
- renderHeader: PropTypes.func,
- content: PropTypes.node,
- renderContent: PropTypes.func,
- footer: PropTypes.node,
- renderFooter: PropTypes.func,
-};
-
-export default Card;
diff --git a/packages/components/src/components/card/card.tsx b/packages/components/src/components/card/card.tsx
new file mode 100644
index 000000000000..fbe934884150
--- /dev/null
+++ b/packages/components/src/components/card/card.tsx
@@ -0,0 +1,52 @@
+import classNames from 'classnames';
+import React, { HTMLProps } from 'react';
+
+type TGeneralCardComponentsProps = HTMLProps;
+
+type TCardProps = HTMLProps & {
+ header: React.ReactNode;
+ renderHeader: () => React.ReactNode;
+ content: React.ReactNode;
+ renderContent: () => React.ReactNode;
+ footer: React.ReactNode;
+ renderFooter: () => React.ReactNode;
+};
+
+const CardRoot = ({ children, className, ...props }: TGeneralCardComponentsProps) => (
+
+ {children}
+
+);
+
+const CardHeader = ({ children }: TGeneralCardComponentsProps) => (
+ {children}
+);
+
+const CardContent = ({ children }: TGeneralCardComponentsProps) => (
+ {children}
+);
+
+const CardFooter = ({ children }: TGeneralCardComponentsProps) => (
+ {children}
+);
+
+const Card = ({
+ className,
+ header,
+ content,
+ footer,
+ renderHeader,
+ renderContent,
+ renderFooter,
+ ...props
+}: TCardProps) => {
+ return (
+
+ {renderHeader ? renderHeader() : !!header && {header}}
+ {renderContent ? renderContent() : !!content && {content}}
+ {renderFooter ? renderFooter() : !!footer && {footer}}
+
+ );
+};
+
+export default Card;
diff --git a/packages/components/src/components/card/index.js b/packages/components/src/components/card/index.ts
similarity index 58%
rename from packages/components/src/components/card/index.js
rename to packages/components/src/components/card/index.ts
index 5f447ef3b34c..f3e0a4ea4eb8 100644
--- a/packages/components/src/components/card/index.js
+++ b/packages/components/src/components/card/index.ts
@@ -1,4 +1,4 @@
-import Card from './card.jsx';
+import Card from './card';
import './card.scss';
export default Card;