import * as React from "react"; import { OptionProps } from "./typings/Option"; import Control from "./shared/Control"; import { cx, css } from "emotion"; import { activeRow, rowWrapper, selectedRow, labelWrap } from "./styles/Options.styles"; import Ink from "react-ink"; import { colors } from "pebble-shared"; const defaultProps = { rightElement: ({ isSelected, multiSelect, indeterminate, iconClassName }: OptionProps) => { const iconClass = cx( "pi", { "pi-checkbox-selected": !indeterminate && isSelected, "pi-checkbox-unselected": !indeterminate && !isSelected, "pi-checkbox-indeterminate": !!indeterminate }, css({ marginLeft: "10px", color: indeterminate || isSelected ? colors.violet.base : colors.gray.light, fontSize: "20px" }) ); return multiSelect ? : null; } }; class Option extends React.Component< OptionProps & Required > { static defaultProps = defaultProps; render() { const { label, isActive, isSelected, leftElement, rightElement, labelClassName, className } = this.props; const _class = cx( rowWrapper, { [activeRow]: !!isActive, [selectedRow]: !!isSelected }, className ); return ( {() => { return ( <> {leftElement && leftElement(this.props)}
{label}
{rightElement(this.props)} ); }}
); } } export default Option;