mirror of
https://github.com/Stremio/stremio-web.git
synced 2026-04-21 03:22:11 +00:00
refactor(ActionsGroup): simplify
This commit is contained in:
parent
f73fa5931e
commit
6bf3b8147d
5 changed files with 27 additions and 16 deletions
|
|
@ -3,8 +3,8 @@
|
||||||
import classNames from 'classnames';
|
import classNames from 'classnames';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import Icon from '@stremio/stremio-icons/react';
|
import Icon from '@stremio/stremio-icons/react';
|
||||||
import styles from './ActionsGroup.less';
|
|
||||||
import { Tooltip } from 'stremio/common/Tooltips';
|
import { Tooltip } from 'stremio/common/Tooltips';
|
||||||
|
import styles from './ActionsGroup.less';
|
||||||
|
|
||||||
type Item = {
|
type Item = {
|
||||||
icon: string;
|
icon: string;
|
||||||
|
|
@ -23,15 +23,21 @@ type Props = {
|
||||||
const ActionsGroup = ({ items, className }: Props) => {
|
const ActionsGroup = ({ items, className }: Props) => {
|
||||||
return (
|
return (
|
||||||
<div className={classNames(styles['group-container'], className)}>
|
<div className={classNames(styles['group-container'], className)}>
|
||||||
{items.map((item, index) => (
|
{
|
||||||
<div key={index}
|
items.map((item, index) => (
|
||||||
className={classNames(styles['icon-container'], item.className, { [styles['disabled']]: item.disabled })}
|
<div
|
||||||
onClick={item.onClick}
|
key={index}
|
||||||
>
|
className={classNames(styles['icon-container'], item.className, { [styles['disabled']]: item.disabled })}
|
||||||
{item.label && <Tooltip label={item.label} position={'top'} />}
|
onClick={item.onClick}
|
||||||
<Icon name={item.icon} className={styles['icon']} />
|
>
|
||||||
</div>
|
{
|
||||||
))}
|
item.label &&
|
||||||
|
<Tooltip label={item.label} position={'top'} />
|
||||||
|
}
|
||||||
|
<Icon name={item.icon} className={styles['icon']} />
|
||||||
|
</div>
|
||||||
|
))
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
// Copyright (C) 2017-2023 Smart code 203358507
|
// Copyright (C) 2017-2025 Smart code 203358507
|
||||||
|
|
||||||
import ActionsGroup from './ActionsGroup';
|
import ActionsGroup from './ActionsGroup';
|
||||||
|
|
||||||
export { ActionsGroup };
|
export default ActionsGroup;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ const { useTranslation } = require('react-i18next');
|
||||||
const { default: Icon } = require('@stremio/stremio-icons/react');
|
const { default: Icon } = require('@stremio/stremio-icons/react');
|
||||||
const { default: Button } = require('stremio/components/Button');
|
const { default: Button } = require('stremio/components/Button');
|
||||||
const { default: Image } = require('stremio/components/Image');
|
const { default: Image } = require('stremio/components/Image');
|
||||||
const { ActionsGroup } = require('stremio/components/ActionsGroup');
|
const { default: ActionsGroup } = require('stremio/components/ActionsGroup');
|
||||||
const ModalDialog = require('stremio/components/ModalDialog');
|
const ModalDialog = require('stremio/components/ModalDialog');
|
||||||
const SharePrompt = require('stremio/components/SharePrompt');
|
const SharePrompt = require('stremio/components/SharePrompt');
|
||||||
const CONSTANTS = require('stremio/common/CONSTANTS');
|
const CONSTANTS = require('stremio/common/CONSTANTS');
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
import React, { useMemo } from 'react';
|
import React, { useMemo } from 'react';
|
||||||
import useRating from './useRating';
|
import useRating from './useRating';
|
||||||
import { ActionsGroup } from 'stremio/components/ActionsGroup';
|
import { ActionsGroup } from 'stremio/components';
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
metaId?: string;
|
metaId?: string;
|
||||||
|
|
@ -13,6 +13,7 @@ type Props = {
|
||||||
const Ratings = ({ ratingInfo, className }: Props) => {
|
const Ratings = ({ ratingInfo, className }: Props) => {
|
||||||
const { onLiked, onLoved, liked, loved } = useRating(ratingInfo);
|
const { onLiked, onLoved, liked, loved } = useRating(ratingInfo);
|
||||||
const disabled = useMemo(() => ratingInfo?.type !== 'Ready', [ratingInfo]);
|
const disabled = useMemo(() => ratingInfo?.type !== 'Ready', [ratingInfo]);
|
||||||
|
|
||||||
const items = useMemo(() => [
|
const items = useMemo(() => [
|
||||||
{
|
{
|
||||||
icon: liked ? 'thumbs-up' : 'thumbs-up-outline',
|
icon: liked ? 'thumbs-up' : 'thumbs-up-outline',
|
||||||
|
|
@ -24,9 +25,11 @@ const Ratings = ({ ratingInfo, className }: Props) => {
|
||||||
disabled,
|
disabled,
|
||||||
onClick: onLoved,
|
onClick: onLoved,
|
||||||
},
|
},
|
||||||
], [liked, loved, disabled, onLiked, onLoved]);
|
], [liked, loved, disabled]);
|
||||||
|
|
||||||
return <ActionsGroup items={items} className={className} />;
|
return (
|
||||||
|
<ActionsGroup items={items} className={className} />
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export default Ratings;
|
export default Ratings;
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ import TextInput from './TextInput';
|
||||||
import Toggle from './Toggle';
|
import Toggle from './Toggle';
|
||||||
import Transition from './Transition';
|
import Transition from './Transition';
|
||||||
import Video from './Video';
|
import Video from './Video';
|
||||||
|
import ActionsGroup from './ActionsGroup';
|
||||||
|
|
||||||
export {
|
export {
|
||||||
AddonDetailsModal,
|
AddonDetailsModal,
|
||||||
|
|
@ -65,4 +66,5 @@ export {
|
||||||
Toggle,
|
Toggle,
|
||||||
Transition,
|
Transition,
|
||||||
Video,
|
Video,
|
||||||
|
ActionsGroup
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue