You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
session-desktop/ts/components/session/settings/SessionSettingListItem.tsx

87 lines
2.2 KiB
TypeScript

import React from 'react';
5 years ago
import classNames from 'classnames';
import { SessionToggle } from '../SessionToggle';
import { SessionButton } from '../SessionButton';
import { SessionSettingType } from './SessionSettings';
import { SessionRadioGroup } from '../SessionRadioGroup';
5 years ago
interface Props {
title: string;
description?: string;
type: SessionSettingType;
value: any;
options?: Array<any>;
onClick?: any;
content: any;
}
export class SessionSettingListItem extends React.Component<Props> {
5 years ago
public static defaultProps = {
inline: true,
};
public constructor(props: Props) {
super(props);
this.state = {};
this.handleClick = this.handleClick.bind(this);
}
public render(): JSX.Element {
const { title, description, type, value, content } = this.props;
const inline = ![
SessionSettingType.Options,
SessionSettingType.Slider,
].includes(type);
return (
<div className={classNames('session-settings-item', inline && 'inline')}>
<div className="session-settings-item__info">
<div className="session-settings-item__title">{title}</div>
{description && (
<div className="session-settings-item__description">
{description}
</div>
)}
</div>
<div className="session-settings-item__content">
{type === SessionSettingType.Toggle && (
<div className="session-sessings-item__selection">
<SessionToggle
active={Boolean(value)}
onClick={this.handleClick}
/>
</div>
)}
{type === SessionSettingType.Button && (
<SessionButton
text={content.buttonText}
buttonColor={content.buttonColor}
onClick={this.handleClick}
/>
)}
5 years ago
{type === SessionSettingType.Options && (
<SessionRadioGroup
initalItem={content.options.initalItem}
group={content.options.group}
items={content.options.items}
onClick={this.handleClick}
/>
)}
</div>
</div>
);
}
private handleClick() {
this.props.onClick && this.props.onClick();
}
}