*/ id: isRequiredForA11y( React.PropTypes.oneOfType([ React.PropTypes.string, React.PropTypes.number ]) ), componentClass: elementType, /** * The children of a Dropdown may be a `<Dropdown.Toggle/>` or a `<Dropdown.Menu/>`. * @type {node} */ children: all( CustomPropTypes.requiredRoles(TOGGLE_ROLE, MENU_ROLE), CustomPropTypes.exclusiveRoles(MENU_ROLE) ), /** * Whether or not component is disabled. */ disabled: React.PropTypes.bool, /** * Align the menu to the right side of the Dropdown toggle */ pullRight: React.PropTypes.bool, /** * Whether or not the Dropdown is visible. *
*/ active: React.PropTypes.bool, /** * Disable the menu item, making it unselectable. */ disabled: React.PropTypes.bool, /** * Styles the menu item as a horizontal rule, providing visual separation between * groups of menu items. */ divider: all( React.PropTypes.bool, props => { if (props.divider && props.children) { return new Error('Children will not be rendered for dividers'); } } ), /** * Value passed to the `onSelect` handler, useful for identifying the selected menu item. */ eventKey: React.PropTypes.any, /** * Styles the menu item as a header label, useful for describing a group of menu items. */ header: React.PropTypes.bool, /**
key: child.key ? child.key : index, navItem: true } ); } } Nav.propTypes = { activeHref: React.PropTypes.string, activeKey: React.PropTypes.any, stacked: React.PropTypes.bool, justified: all( React.PropTypes.bool, ({justified, navbar}) => ( justified && navbar ? Error('justified navbar `Nav`s are not supported') : null ) ), onSelect: React.PropTypes.func, /** * CSS classes for the wrapper `nav` element */ className: React.PropTypes.string, /** * HTML id for the wrapper `nav` element */ id: React.PropTypes.oneOfType([ React.PropTypes.string, React.PropTypes.number
*/ activeKey: React.PropTypes.any, /** * Marks the child NavItem with a matching `href` prop as active. */ activeHref: React.PropTypes.string, /** * NavItems are be positioned vertically. */ stacked: React.PropTypes.bool, justified: all(React.PropTypes.bool, function (_ref) { var justified = _ref.justified; var navbar = _ref.navbar; return justified && navbar ? Error('justified navbar `Nav`s are not supported') : null; }), /** * A callback fired when a NavItem is selected. * * ```js * function ( * Any eventKey, * SyntheticEvent event? * ) * ``` */ onSelect: React.PropTypes.func,
import Button from './Button'; import { bsClass, getClassSet, prefix, splitBsProps } from './utils/bootstrapUtils'; const propTypes = { vertical: React.PropTypes.bool, justified: React.PropTypes.bool, /** * Display block buttons; only useful when used with the "vertical" prop. * @type {bool} */ block: all( React.PropTypes.bool, ({ block, vertical }) => ( block && !vertical ? new Error('`block` requires `vertical` to be set to have any effect') : null ), ), }; const defaultProps = { block: false, justified: false, vertical: false, }; class ButtonGroup extends React.Component { render() { const { block, justified, vertical, className, ...props } = this.props; const [bsProps, elementProps] = splitBsProps(props);
* An html id attribute, necessary for assistive technologies, such as screen readers. * @type {string|number} * @required */ id: isRequiredForA11y(React.PropTypes.oneOfType([ React.PropTypes.string, React.PropTypes.number, ])), componentClass: elementType, /** * The children of a Dropdown may be a `<Dropdown.Toggle>` or a `<Dropdown.Menu>`. * @type {node} */ children: all( requiredRoles(TOGGLE_ROLE, MENU_ROLE), exclusiveRoles(MENU_ROLE) ), /** * Whether or not component is disabled. */ disabled: React.PropTypes.bool, /** * Align the menu to the right side of the Dropdown toggle */ pullRight: React.PropTypes.bool, /** * Whether or not the Dropdown is visible. *
import all from 'react-prop-types/lib/all'; import Button from './Button'; const ButtonGroup = React.createClass({ propTypes: { vertical: React.PropTypes.bool, justified: React.PropTypes.bool, /** * Display block buttons, only useful when used with the "vertical" prop. * @type {bool} */ block: all( React.PropTypes.bool, props => { if (props.block && !props.vertical) { return new Error('The block property requires the vertical property to be set to have any effect'); } } ) }, getDefaultProps() { return { block: false, justified: false, vertical: false }; }, render() { let classes = bootstrapUtils.getClassSet(this.props);
}) ]) let viewNames = PropTypes.oneOf( Object.keys(Views).map(k => Views[k]) ); export let accessor = PropTypes.oneOfType([ PropTypes.string, PropTypes.func ]) export let dateFormat = createChainableTypeChecker( (...args) => localizer.propType && localizer.propType(...args)) export let views = PropTypes.oneOfType([ PropTypes.arrayOf(viewNames), all([ PropTypes.object, (props, name, component)=>{ let prop = props[name] , err; Object.keys(prop).every( key => !(err = elementType(prop, key, component))) return err || null } ]) ])
/** * Duration of the fade animation in milliseconds, to ensure that finishing * callbacks are fired even if the original browser transition end events are * canceled */ timeout: React.PropTypes.number, /** * duration * @private */ duration: all( React.PropTypes.number, (props)=> { if (props.duration != null) { deprecationWarning('Fade `duration`', 'the `timeout` prop'); } return null; } ), /** * Callback fired before the component fades in */ onEnter: React.PropTypes.func, /** * Callback fired after the component starts to fade in */ onEntering: React.PropTypes.func, /** * Callback fired after the has component faded in