// @flow import React from 'react'; import { Text, TouchableHighlight, View } from 'react-native'; import { Icon } from '../../icons'; import AbstractToolboxItem from './AbstractToolboxItem'; import type { Props } from './AbstractToolboxItem'; /** * Native implementation of {@code AbstractToolboxItem}. */ export default class ToolboxItem extends AbstractToolboxItem { /** * Renders the {@code Icon} part of this {@code ToolboxItem}. * * @private * @returns {ReactElement} */ _renderIcon() { const { styles } = this.props; return ( ); } /** * Renders this {@code ToolboxItem}. Invoked by {@link AbstractToolboxItem}. * * @override * @protected * @returns {ReactElement} */ _renderItem() { const { disabled, elementAfter, onClick, showLabel, styles, toggled } = this.props; let children = this._renderIcon(); // XXX When using a wrapper View, apply the style to it instead of // applying it to the TouchableHighlight. let style = styles && styles.style; if (showLabel) { // XXX TouchableHighlight requires 1 child. If there's a need to // show both the icon and the label, then these two need to be // wrapped in a View. children = ( { children } { this.label } { elementAfter } ); // XXX As stated earlier, the style was applied to the wrapper View // (above). style = undefined; } return ( { children } ); } }