Skip to content
Snippets Groups Projects
Unverified Commit 81f75b1e authored by fusagiko / takayamaki's avatar fusagiko / takayamaki Committed by GitHub
Browse files

Rewrite Icon and IconWithBadge with typescript (#24747)

parent c53fe9b7
No related branches found
No related tags found
No related merge requests found
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 (
<i className={classNames('fa', `fa-${id}`, className, { 'fa-fw': fixedWidth })} {...other} />
);
}
}
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<Props> = ({ id, className, fixedWidth, ...other }) =>
<i className={classNames('fa', `fa-${id}`, className, { 'fa-fw': fixedWidth })} {...other} />;
export default Icon;
import React from 'react';
import PropTypes from 'prop-types';
import Icon from 'mastodon/components/icon';
import { Icon } from './icon';
const formatNumber = num => num > 40 ? '40+' : num;
const formatNumber = (num: number): number | string => num > 40 ? '40+' : num;
const IconWithBadge = ({ id, count, issueBadge, className }) => (
type Props = {
id: string;
count: number;
issueBadge: boolean;
className: string;
}
const IconWithBadge: React.FC<Props> = ({ id, count, issueBadge, className }) => (
<i className='icon-with-badge'>
<Icon id={id} fixedWidth className={className} />
{count > 0 && <i className='icon-with-badge__badge'>{formatNumber(count)}</i>}
......@@ -12,11 +17,4 @@ const IconWithBadge = ({ id, count, issueBadge, className }) => (
</i>
);
IconWithBadge.propTypes = {
id: PropTypes.string.isRequired,
count: PropTypes.number.isRequired,
issueBadge: PropTypes.bool,
className: PropTypes.string,
};
export default IconWithBadge;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment