| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import React, { Component } from 'react';
-
- /**
- * Abstract (base) class for container of React Component children with a style.
- *
- * @extends Component
- */
- export default class AbstractContainer extends Component {
- /**
- * AbstractContainer component's property types.
- *
- * @static
- */
- static propTypes = {
- children: React.PropTypes.node,
-
- /**
- * The event handler/listener to be invoked when this AbstractContainer
- * is clicked on Web or pressed on React Native. If onClick is defined
- * and touchFeedback is undefined, touchFeedback is considered defined
- * as true.
- */
- onClick: React.PropTypes.func,
-
- /**
- * The style (as in stylesheet) to be applied to this AbstractContainer.
- */
- style: React.PropTypes.object,
-
- /**
- * True if this instance is to provide visual feedback when touched;
- * otherwise, false. If touchFeedback is undefined and onClick is
- * defined, touchFeedback is considered defined as true.
- */
- touchFeedback: React.PropTypes.bool,
-
- /**
- * True if this AbstractContainer is to be visible or false if this
- * instance is to be hidden or not rendered at all.
- */
- visible: React.PropTypes.bool
- };
-
- /**
- * Renders this AbstractContainer as a React Component of a specific type.
- *
- * @param {string|ReactClass} type - The type of the React Component which
- * is to be rendered.
- * @param {Object|undefined} props - The read-only React Component
- * properties, if any, to render. If undefined, the props of this instance
- * will be rendered.
- * @protected
- * @returns {ReactElement}
- */
- _render(type, props) {
- const {
- children,
-
- /* eslint-disable no-unused-vars */
-
- // The following properties are defined for the benefit of
- // AbstractContainer and its extenders so they are to not be
- // propagated.
- touchFeedback,
- visible,
-
- /* eslint-enable no-unused-vars */
-
- ...filteredProps
- } = props || this.props;
-
- // visible
- if (typeof visible !== 'undefined' && !visible) {
- return null;
- }
-
- return React.createElement(type, filteredProps, children);
- }
- }
|