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

85 lines
2.0 KiB
TypeScript

import React from 'react';
5 years ago
import classNames from 'classnames';
import { SessionToggle } from '../SessionToggle';
import { SessionButton, SessionButtonColor } from '../SessionButton';
import { SessionSettingType } from './SessionSettings';
5 years ago
import { SessionRadio } from '../SessionRadio';
interface Props {
title: string;
description?: string;
type: SessionSettingType;
value: any;
options?: Array<any>;
onClick?: any;
5 years ago
inline?: boolean;
buttonText?: string;
buttonColor?: SessionButtonColor;
}
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,
5 years ago
inline,
buttonText,
buttonColor,
} = this.props;
return (
<div className="session-settings-item">
<div className="session-settings-item__info">
5 years ago
<div className={classNames('session-settings-item__title', inline && 'inline')}>{title}</div>
{description && (
<div className="session-settings-item__description">
{description}
</div>
)}
</div>
{type === SessionSettingType.Toggle && (
<div className="session-sessings-item__selection">
<SessionToggle active={Boolean(value)} onClick={this.handleClick} />
</div>
)}
{type === SessionSettingType.Button && (
<SessionButton
text={buttonText}
buttonColor={buttonColor}
onClick={this.handleClick}
/>
)}
5 years ago
{type === SessionSettingType.Options && (
<SessionRadio
label="Both sender name and message"
active={false}
/>
)}
</div>
);
}
private handleClick() {
this.props.onClick && this.props.onClick();
}
}