UNPKG

@render-props/choices

Version:

A state container which provides an interface for making selections from a group of choices. The `Choices` component itself is a context provider which can be used with the `Choice` and `ChoicesConsumer` components for deep-tree selections. It does not ha

62 lines (46 loc) 1.53 kB
'use strict' var _interopRequireDefault = require('@babel/runtime/helpers/interopRequireDefault') exports.__esModule = true exports.default = _default var _extends2 = _interopRequireDefault( require('@babel/runtime/helpers/extends') ) var _react = _interopRequireDefault(require('react')) var _propTypes = _interopRequireDefault(require('prop-types')) var _ChoicesContext = _interopRequireDefault(require('./ChoicesContext')) class Choice extends _react.default.Component { constructor(props) { super(props) this.select = () => this.props.select(this.props.value) this.deselect = () => this.props.deselect(this.props.value) this.toggle = () => this.props.toggle(this.props.value) this.delete = () => this.props.deleteChoice(this.props.value) this.choiceContext = { select: this.select, deselect: this.deselect, toggle: this.toggle, delete: this.delete, isSelected: this.props.isSelected(props.value), } } render() { this.choiceContext.isSelected = this.props.isSelected(this.props.value) return this.props.children(this.choiceContext) } } Choice.propTypes = { children: _propTypes.default.func.isRequired, value: _propTypes.default.any.isRequired, } function _default(props) { return _react.default.createElement( _ChoicesContext.default.Consumer, null, function(choicesContext) { return _react.default.createElement( Choice, (0, _extends2.default)({}, choicesContext, props) ) } ) }