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;