From 81f75b1e0ecaa3c7a13f75188497be8b0f716dea Mon Sep 17 00:00:00 2001
From: fusagiko / takayamaki <24884114+takayamaki@users.noreply.github.com>
Date: Mon, 1 May 2023 07:51:00 +0900
Subject: [PATCH] Rewrite Icon and IconWithBadge with typescript (#24747)
---
app/javascript/mastodon/components/icon.jsx | 21 ------------------
app/javascript/mastodon/components/icon.tsx | 14 ++++++++++++
.../mastodon/components/icon_with_badge.jsx | 22 -------------------
.../mastodon/components/icon_with_badge.tsx | 20 +++++++++++++++++
4 files changed, 34 insertions(+), 43 deletions(-)
delete mode 100644 app/javascript/mastodon/components/icon.jsx
create mode 100644 app/javascript/mastodon/components/icon.tsx
delete mode 100644 app/javascript/mastodon/components/icon_with_badge.jsx
create mode 100644 app/javascript/mastodon/components/icon_with_badge.tsx
diff --git a/app/javascript/mastodon/components/icon.jsx b/app/javascript/mastodon/components/icon.jsx
deleted file mode 100644
index d3d7c591d..000000000
--- a/app/javascript/mastodon/components/icon.jsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import classNames from 'classnames';
-
-export default class Icon extends React.PureComponent {
-
- static propTypes = {
- id: PropTypes.string.isRequired,
- className: PropTypes.string,
- fixedWidth: PropTypes.bool,
- };
-
- render () {
- const { id, className, fixedWidth, ...other } = this.props;
-
- return (
-
- );
- }
-
-}
diff --git a/app/javascript/mastodon/components/icon.tsx b/app/javascript/mastodon/components/icon.tsx
new file mode 100644
index 000000000..d85fff6ef
--- /dev/null
+++ b/app/javascript/mastodon/components/icon.tsx
@@ -0,0 +1,14 @@
+import React from 'react';
+import classNames from 'classnames';
+
+type Props = {
+ id: string;
+ className?: string;
+ fixedWidth?: boolean;
+ children?: never;
+ [key: string]: any;
+}
+export const Icon: React.FC = ({ id, className, fixedWidth, ...other }) =>
+ ;
+
+export default Icon;
diff --git a/app/javascript/mastodon/components/icon_with_badge.jsx b/app/javascript/mastodon/components/icon_with_badge.jsx
deleted file mode 100644
index 4214eccfd..000000000
--- a/app/javascript/mastodon/components/icon_with_badge.jsx
+++ /dev/null
@@ -1,22 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import Icon from 'mastodon/components/icon';
-
-const formatNumber = num => num > 40 ? '40+' : num;
-
-const IconWithBadge = ({ id, count, issueBadge, className }) => (
-
-
- {count > 0 && {formatNumber(count)}}
- {issueBadge && }
-
-);
-
-IconWithBadge.propTypes = {
- id: PropTypes.string.isRequired,
- count: PropTypes.number.isRequired,
- issueBadge: PropTypes.bool,
- className: PropTypes.string,
-};
-
-export default IconWithBadge;
diff --git a/app/javascript/mastodon/components/icon_with_badge.tsx b/app/javascript/mastodon/components/icon_with_badge.tsx
new file mode 100644
index 000000000..487bf326a
--- /dev/null
+++ b/app/javascript/mastodon/components/icon_with_badge.tsx
@@ -0,0 +1,20 @@
+import React from 'react';
+import { Icon } from './icon';
+
+const formatNumber = (num: number): number | string => num > 40 ? '40+' : num;
+
+type Props = {
+ id: string;
+ count: number;
+ issueBadge: boolean;
+ className: string;
+}
+const IconWithBadge: React.FC = ({ id, count, issueBadge, className }) => (
+
+
+ {count > 0 && {formatNumber(count)}}
+ {issueBadge && }
+
+);
+
+export default IconWithBadge;