[MM-57725] Convert ./components/common/chip/chip.tsx from Class Component to Function Component (#26729)

* [MM-57725] Convert `./components/common/chip/chip.tsx` from Class Component to Function Component

* :refactor: improve code structure
Этот коммит содержится в:
Syed Ali Abbas Zaidi
2024-04-23 09:58:54 +05:00
коммит произвёл GitHub
родитель 4ee5763e9d
Коммит 9b227aaa28

Просмотреть файл

@@ -1,7 +1,7 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information. // See LICENSE.txt for license information.
import React from 'react'; import React, {useCallback} from 'react';
import {FormattedMessage} from 'react-intl'; import {FormattedMessage} from 'react-intl';
import styled from 'styled-components'; import styled from 'styled-components';
@@ -52,34 +52,45 @@ const StyledChip = styled.button<{ otherOption?: boolean }>`
} }
`; `;
export default class Chip extends React.PureComponent<Props> { const emojiStyles = {marginRight: '11px'};
onClick = (e: React.MouseEvent) => {
e.preventDefault(); const Chip = ({
this.props.onClick?.(); onClick,
}; otherOption,
className,
leadingIcon,
id,
defaultMessage,
values,
additionalMarkup,
}: Props) => {
const handleClick = useCallback((e: React.MouseEvent) => {
e.preventDefault();
onClick?.();
}, [onClick]);
render() {
return ( return (
<StyledChip <StyledChip
onClick={this.onClick} onClick={handleClick}
otherOption={this.props.otherOption} otherOption={otherOption}
className={this.props.className || ''} className={className || ''}
> >
{this.props.leadingIcon && ( {leadingIcon && (
<RenderEmoji <RenderEmoji
emojiName={this.props.leadingIcon} emojiName={leadingIcon}
emojiStyle={{marginRight: '11px'}} emojiStyle={emojiStyles}
/> />
)} )}
{(this.props.id && this.props.defaultMessage && this.props.values) && ( {(id && defaultMessage && values) && (
<FormattedMessage <FormattedMessage
id={this.props.id} id={id}
defaultMessage={this.props.defaultMessage} defaultMessage={defaultMessage}
values={this.props.values} values={values}
/> />
)} )}
{this.props.additionalMarkup} {additionalMarkup}
</StyledChip> </StyledChip>
); );
} };
}
export default Chip;