Completely updated React, fixed #11, (hopefully)

This commit is contained in:
2018-03-04 19:11:49 -05:00
parent 6e0afd6e2a
commit 34e5f5139a
13674 changed files with 333464 additions and 473223 deletions

View File

@@ -0,0 +1,19 @@
import * as React from 'react';
import { StandardProps } from '..';
import { CollapseProps } from '../transitions/Collapse';
import { PaperProps, PaperClassKey } from '../Paper';
export interface ExpansionPanelProps
extends StandardProps<PaperProps, ExpansionPanelClassKey, 'onChange'> {
CollapseProps?: React.ComponentType<CollapseProps>;
defaultExpanded?: boolean;
disabled?: boolean;
expanded?: boolean;
onChange?: (event: React.ChangeEvent<{}>, expanded: boolean) => void;
}
export type ExpansionPanelClassKey = PaperClassKey | 'disabled' | 'expanded';
declare const ExpansionPanel: React.ComponentType<ExpansionPanelProps>;
export default ExpansionPanel;

View File

@@ -0,0 +1,278 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.styles = undefined;
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _Collapse = require('../transitions/Collapse');
var _Collapse2 = _interopRequireDefault(_Collapse);
var _Paper = require('../Paper');
var _Paper2 = _interopRequireDefault(_Paper);
var _withStyles = require('../styles/withStyles');
var _withStyles2 = _interopRequireDefault(_withStyles);
var _reactHelpers = require('../utils/reactHelpers');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var styles = exports.styles = function styles(theme) {
var transition = {
duration: theme.transitions.duration.shortest
};
return {
root: {
position: 'relative',
transition: theme.transitions.create(['margin'], transition),
'&:before': {
position: 'absolute',
left: 0,
top: -1,
right: 0,
height: 1,
content: '""',
opacity: 1,
backgroundColor: theme.palette.divider,
transition: theme.transitions.create(['opacity', 'background-color'], transition)
},
'&:first-child': {
borderTopLeftRadius: 2,
borderTopRightRadius: 2,
'&:before': {
display: 'none'
}
},
'&:last-child': {
borderBottomLeftRadius: 2,
borderBottomRightRadius: 2
},
'&$expanded + &': {
'&:before': {
display: 'none'
}
}
},
expanded: {
margin: theme.spacing.unit * 2 + 'px 0',
'&:first-child': {
marginTop: 0
},
'&:last-child': {
marginBottom: 0
},
'&:before': {
opacity: 0
}
},
disabled: {
backgroundColor: theme.palette.action.disabledBackground
}
};
}; // @inheritedComponent Paper
var ExpansionPanel = function (_React$Component) {
(0, _inherits3.default)(ExpansionPanel, _React$Component);
function ExpansionPanel() {
var _ref;
var _temp, _this, _ret;
(0, _classCallCheck3.default)(this, ExpansionPanel);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = ExpansionPanel.__proto__ || (0, _getPrototypeOf2.default)(ExpansionPanel)).call.apply(_ref, [this].concat(args))), _this), _this.state = {
expanded: false
}, _this.isControlled = null, _this.handleChange = function (event) {
var onChange = _this.props.onChange;
var expanded = !_this.state.expanded;
if (onChange) {
onChange(event, expanded);
}
if (!_this.isControlled) {
_this.setState({ expanded: expanded });
}
}, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);
}
(0, _createClass3.default)(ExpansionPanel, [{
key: 'componentWillMount',
value: function componentWillMount() {
var _props = this.props,
expanded = _props.expanded,
defaultExpanded = _props.defaultExpanded;
this.isControlled = expanded != null;
this.setState({
expanded: this.isControlled ? expanded : defaultExpanded
});
}
}, {
key: 'componentWillReceiveProps',
value: function componentWillReceiveProps(nextProps) {
if (this.isControlled) {
this.setState({
expanded: nextProps.expanded
});
}
}
}, {
key: 'render',
value: function render() {
var _classNames,
_this2 = this;
var _props2 = this.props,
childrenProp = _props2.children,
classes = _props2.classes,
classNameProp = _props2.className,
CollapsePropsProp = _props2.CollapseProps,
defaultExpanded = _props2.defaultExpanded,
disabled = _props2.disabled,
expandedProp = _props2.expanded,
onChange = _props2.onChange,
other = (0, _objectWithoutProperties3.default)(_props2, ['children', 'classes', 'className', 'CollapseProps', 'defaultExpanded', 'disabled', 'expanded', 'onChange']);
var expanded = this.state.expanded;
var className = (0, _classnames2.default)(classes.root, (_classNames = {}, (0, _defineProperty3.default)(_classNames, classes.expanded, expanded), (0, _defineProperty3.default)(_classNames, classes.disabled, disabled), _classNames), classNameProp);
var summary = null;
var children = _react2.default.Children.map(childrenProp, function (child) {
if (!_react2.default.isValidElement(child)) {
return null;
}
if ((0, _reactHelpers.isMuiElement)(child, ['ExpansionPanelSummary'])) {
summary = _react2.default.cloneElement(child, {
disabled: disabled,
expanded: expanded,
onChange: _this2.handleChange
});
return null;
}
return child;
});
var CollapseProps = !expanded ? {
'aria-hidden': 'true'
} : null;
return _react2.default.createElement(
_Paper2.default,
(0, _extends3.default)({ className: className, elevation: 1, square: true }, other),
summary,
_react2.default.createElement(
_Collapse2.default,
(0, _extends3.default)({ 'in': expanded, timeout: 'auto' }, CollapseProps, CollapsePropsProp),
children
)
);
}
}]);
return ExpansionPanel;
}(_react2.default.Component);
ExpansionPanel.propTypes = process.env.NODE_ENV !== "production" ? {
/**
* The content of the expansion panel.
*/
children: _propTypes2.default.node.isRequired,
/**
* Useful to extend the style applied to components.
*/
classes: _propTypes2.default.object.isRequired,
/**
* @ignore
*/
className: _propTypes2.default.string,
/**
* Properties applied to the `Collapse` element.
*/
CollapseProps: _propTypes2.default.object,
/**
* If `true`, expands the panel by default.
*/
defaultExpanded: _propTypes2.default.bool,
/**
* If `true`, the panel will be displayed in a disabled state.
*/
disabled: _propTypes2.default.bool,
/**
* If `true`, expands the panel, otherwise collapse it.
* Setting this prop enables control over the panel.
*/
expanded: _propTypes2.default.bool,
/**
* Callback fired when the expand/collapse state is changed.
*
* @param {object} event The event source of the callback
* @param {boolean} expanded The `expanded` state of the panel
*/
onChange: _propTypes2.default.func
} : {};
ExpansionPanel.defaultProps = {
defaultExpanded: false,
disabled: false
};
exports.default = (0, _withStyles2.default)(styles, { name: 'MuiExpansionPanel' })(ExpansionPanel);

View File

@@ -0,0 +1,205 @@
// @inheritedComponent Paper
import React from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import Collapse from '../transitions/Collapse';
import Paper from '../Paper';
import withStyles from '../styles/withStyles';
import { isMuiElement } from '../utils/reactHelpers';
export const styles = theme => {
const transition = {
duration: theme.transitions.duration.shortest,
};
return {
root: {
position: 'relative',
transition: theme.transitions.create(['margin'], transition),
'&:before': {
position: 'absolute',
left: 0,
top: -1,
right: 0,
height: 1,
content: '""',
opacity: 1,
backgroundColor: theme.palette.divider,
transition: theme.transitions.create(['opacity', 'background-color'], transition),
},
'&:first-child': {
borderTopLeftRadius: 2,
borderTopRightRadius: 2,
'&:before': {
display: 'none',
},
},
'&:last-child': {
borderBottomLeftRadius: 2,
borderBottomRightRadius: 2,
},
'&$expanded + &': {
'&:before': {
display: 'none',
},
},
},
expanded: {
margin: `${theme.spacing.unit * 2}px 0`,
'&:first-child': {
marginTop: 0,
},
'&:last-child': {
marginBottom: 0,
},
'&:before': {
opacity: 0,
},
},
disabled: {
backgroundColor: theme.palette.action.disabledBackground,
},
};
};
class ExpansionPanel extends React.Component {
state = {
expanded: false,
};
componentWillMount() {
const { expanded, defaultExpanded } = this.props;
this.isControlled = expanded != null;
this.setState({
expanded: this.isControlled ? expanded : defaultExpanded,
});
}
componentWillReceiveProps(nextProps) {
if (this.isControlled) {
this.setState({
expanded: nextProps.expanded,
});
}
}
isControlled = null;
handleChange = event => {
const { onChange } = this.props;
const expanded = !this.state.expanded;
if (onChange) {
onChange(event, expanded);
}
if (!this.isControlled) {
this.setState({ expanded });
}
};
render() {
const {
children: childrenProp,
classes,
className: classNameProp,
CollapseProps: CollapsePropsProp,
defaultExpanded,
disabled,
expanded: expandedProp,
onChange,
...other
} = this.props;
const { expanded } = this.state;
const className = classNames(
classes.root,
{
[classes.expanded]: expanded,
[classes.disabled]: disabled,
},
classNameProp,
);
let summary = null;
const children = React.Children.map(childrenProp, child => {
if (!React.isValidElement(child)) {
return null;
}
if (isMuiElement(child, ['ExpansionPanelSummary'])) {
summary = React.cloneElement(child, {
disabled,
expanded,
onChange: this.handleChange,
});
return null;
}
return child;
});
const CollapseProps = !expanded
? {
'aria-hidden': 'true',
}
: null;
return (
<Paper className={className} elevation={1} square {...other}>
{summary}
<Collapse in={expanded} timeout="auto" {...CollapseProps} {...CollapsePropsProp}>
{children}
</Collapse>
</Paper>
);
}
}
ExpansionPanel.propTypes = {
/**
* The content of the expansion panel.
*/
children: PropTypes.node.isRequired,
/**
* Useful to extend the style applied to components.
*/
classes: PropTypes.object.isRequired,
/**
* @ignore
*/
className: PropTypes.string,
/**
* Properties applied to the `Collapse` element.
*/
CollapseProps: PropTypes.object,
/**
* If `true`, expands the panel by default.
*/
defaultExpanded: PropTypes.bool,
/**
* If `true`, the panel will be displayed in a disabled state.
*/
disabled: PropTypes.bool,
/**
* If `true`, expands the panel, otherwise collapse it.
* Setting this prop enables control over the panel.
*/
expanded: PropTypes.bool,
/**
* Callback fired when the expand/collapse state is changed.
*
* @param {object} event The event source of the callback
* @param {boolean} expanded The `expanded` state of the panel
*/
onChange: PropTypes.func,
};
ExpansionPanel.defaultProps = {
defaultExpanded: false,
disabled: false,
};
export default withStyles(styles, { name: 'MuiExpansionPanel' })(ExpansionPanel);

View File

@@ -0,0 +1,11 @@
import * as React from 'react';
import { StandardProps } from '..';
export interface ExpansionPanelActionsProps
extends StandardProps<React.HTMLAttributes<HTMLDivElement>, ExpansionPanelActionsClassKey> {}
export type ExpansionPanelActionsClassKey = 'root' | 'action';
declare const ExpansionPanelActions: React.ComponentType<ExpansionPanelActionsProps>;
export default ExpansionPanelActions;

View File

@@ -0,0 +1,79 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.styles = undefined;
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _withStyles = require('../styles/withStyles');
var _withStyles2 = _interopRequireDefault(_withStyles);
var _reactHelpers = require('../utils/reactHelpers');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var styles = exports.styles = function styles(theme) {
return {
root: {
display: 'flex',
justifyContent: 'flex-end',
alignItems: 'center',
padding: theme.spacing.unit * 2 + 'px ' + theme.spacing.unit + 'px'
},
action: {
marginLeft: theme.spacing.unit
}
};
};
function ExpansionPanelActions(props) {
var children = props.children,
classes = props.classes,
className = props.className,
other = (0, _objectWithoutProperties3.default)(props, ['children', 'classes', 'className']);
return _react2.default.createElement(
'div',
(0, _extends3.default)({ className: (0, _classnames2.default)(classes.root, className) }, other),
(0, _reactHelpers.cloneChildrenWithClassName)(children, classes.action)
);
}
ExpansionPanelActions.propTypes = process.env.NODE_ENV !== "production" ? {
/**
* The content of the component.
*/
children: _propTypes2.default.node.isRequired,
/**
* Useful to extend the style applied to components.
*/
classes: _propTypes2.default.object.isRequired,
/**
* @ignore
*/
className: _propTypes2.default.string
} : {};
exports.default = (0, _withStyles2.default)(styles, { name: 'MuiExpansionPanelActions' })(ExpansionPanelActions);

View File

@@ -0,0 +1,44 @@
import React from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import withStyles from '../styles/withStyles';
import { cloneChildrenWithClassName } from '../utils/reactHelpers';
export const styles = theme => ({
root: {
display: 'flex',
justifyContent: 'flex-end',
alignItems: 'center',
padding: `${theme.spacing.unit * 2}px ${theme.spacing.unit}px`,
},
action: {
marginLeft: theme.spacing.unit,
},
});
function ExpansionPanelActions(props) {
const { children, classes, className, ...other } = props;
return (
<div className={classNames(classes.root, className)} {...other}>
{cloneChildrenWithClassName(children, classes.action)}
</div>
);
}
ExpansionPanelActions.propTypes = {
/**
* The content of the component.
*/
children: PropTypes.node.isRequired,
/**
* Useful to extend the style applied to components.
*/
classes: PropTypes.object.isRequired,
/**
* @ignore
*/
className: PropTypes.string,
};
export default withStyles(styles, { name: 'MuiExpansionPanelActions' })(ExpansionPanelActions);

View File

@@ -0,0 +1,11 @@
import * as React from 'react';
import { StandardProps } from '..';
export interface ExpansionPanelDetailsProps
extends StandardProps<React.HTMLAttributes<HTMLDivElement>, ExpansionPanelDetailsClassKey> {}
export type ExpansionPanelDetailsClassKey = 'root';
declare const ExpansionPanelDetails: React.ComponentType<ExpansionPanelDetailsProps>;
export default ExpansionPanelDetails;

View File

@@ -0,0 +1,73 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.styles = undefined;
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _withStyles = require('../styles/withStyles');
var _withStyles2 = _interopRequireDefault(_withStyles);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var styles = exports.styles = function styles(theme) {
return {
root: {
display: 'flex',
flexGrow: 1,
padding: theme.spacing.unit + 'px ' + theme.spacing.unit * 3 + 'px ' + theme.spacing.unit * 3 + 'px'
}
};
};
function ExpansionPanelDetails(props) {
var classes = props.classes,
children = props.children,
className = props.className,
other = (0, _objectWithoutProperties3.default)(props, ['classes', 'children', 'className']);
return _react2.default.createElement(
'div',
(0, _extends3.default)({ className: (0, _classnames2.default)(classes.root, className) }, other),
children
);
}
ExpansionPanelDetails.propTypes = process.env.NODE_ENV !== "production" ? {
/**
* The content of the expansion panel details.
*/
children: _propTypes2.default.node.isRequired,
/**
* Useful to extend the style applied to components.
*/
classes: _propTypes2.default.object.isRequired,
/**
* @ignore
*/
className: _propTypes2.default.string
} : {};
exports.default = (0, _withStyles2.default)(styles, { name: 'MuiExpansionPanelDetails' })(ExpansionPanelDetails);

View File

@@ -0,0 +1,39 @@
import React from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import withStyles from '../styles/withStyles';
export const styles = theme => ({
root: {
display: 'flex',
flexGrow: 1,
padding: `${theme.spacing.unit}px ${theme.spacing.unit * 3}px ${theme.spacing.unit * 3}px`,
},
});
function ExpansionPanelDetails(props) {
const { classes, children, className, ...other } = props;
return (
<div className={classNames(classes.root, className)} {...other}>
{children}
</div>
);
}
ExpansionPanelDetails.propTypes = {
/**
* The content of the expansion panel details.
*/
children: PropTypes.node.isRequired,
/**
* Useful to extend the style applied to components.
*/
classes: PropTypes.object.isRequired,
/**
* @ignore
*/
className: PropTypes.string,
};
export default withStyles(styles, { name: 'MuiExpansionPanelDetails' })(ExpansionPanelDetails);

View File

@@ -0,0 +1,25 @@
import * as React from 'react';
import { StandardProps } from '..';
import { ButtonBaseProps, ButtonBaseClassKey } from '../ButtonBase';
export interface ExpansionPanelSummaryProps
extends StandardProps<ButtonBaseProps, ExpansionPanelSummaryClassKey> {
disabled?: boolean;
expanded?: boolean;
expandIcon?: React.ReactNode;
onChange?: React.ReactEventHandler<{}>;
}
export type ExpansionPanelSummaryClassKey =
| ButtonBaseClassKey
| 'expanded'
| 'focused'
| 'disabled'
| 'content'
| 'contentExpanded'
| 'expandIcon'
| 'expandIconExpanded';
declare const ExpansionPanelSummary: React.ComponentType<ExpansionPanelSummaryProps>;
export default ExpansionPanelSummary;

View File

@@ -0,0 +1,250 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.styles = undefined;
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _ButtonBase = require('../ButtonBase');
var _ButtonBase2 = _interopRequireDefault(_ButtonBase);
var _IconButton = require('../IconButton');
var _IconButton2 = _interopRequireDefault(_IconButton);
var _withStyles = require('../styles/withStyles');
var _withStyles2 = _interopRequireDefault(_withStyles);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// @inheritedComponent ButtonBase
var styles = exports.styles = function styles(theme) {
var transition = {
duration: theme.transitions.duration.shortest
};
return {
root: {
display: 'flex',
minHeight: theme.spacing.unit * 6,
transition: theme.transitions.create(['min-height', 'background-color'], transition),
padding: '0 ' + theme.spacing.unit * 3 + 'px 0 ' + theme.spacing.unit * 3 + 'px',
'&:hover:not($disabled)': {
cursor: 'pointer'
}
},
expanded: {
minHeight: 64
},
focused: {
backgroundColor: theme.palette.grey[300]
},
disabled: {
opacity: 0.38
},
content: {
display: 'flex',
flexGrow: 1,
transition: theme.transitions.create(['margin'], transition),
margin: '12px 0',
'& > :last-child': {
paddingRight: theme.spacing.unit * 4
}
},
contentExpanded: {
margin: '20px 0'
},
expandIcon: {
position: 'absolute',
top: '50%',
right: theme.spacing.unit,
transform: 'translateY(-50%) rotate(0deg)',
transition: theme.transitions.create('transform', transition)
},
expandIconExpanded: {
transform: 'translateY(-50%) rotate(180deg)'
}
};
};
var ExpansionPanelSummary = function (_React$Component) {
(0, _inherits3.default)(ExpansionPanelSummary, _React$Component);
function ExpansionPanelSummary() {
var _ref;
var _temp, _this, _ret;
(0, _classCallCheck3.default)(this, ExpansionPanelSummary);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = ExpansionPanelSummary.__proto__ || (0, _getPrototypeOf2.default)(ExpansionPanelSummary)).call.apply(_ref, [this].concat(args))), _this), _this.state = {
focused: false
}, _this.handleFocus = function () {
_this.setState({
focused: true
});
}, _this.handleBlur = function () {
_this.setState({
focused: false
});
}, _this.handleChange = function (event) {
var _this$props = _this.props,
onChange = _this$props.onChange,
onClick = _this$props.onClick;
if (onChange) {
onChange(event);
}
if (onClick) {
onClick(event);
}
}, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);
}
(0, _createClass3.default)(ExpansionPanelSummary, [{
key: 'render',
value: function render() {
var _classNames;
var _props = this.props,
children = _props.children,
classes = _props.classes,
className = _props.className,
disabled = _props.disabled,
expanded = _props.expanded,
expandIcon = _props.expandIcon,
onChange = _props.onChange,
other = (0, _objectWithoutProperties3.default)(_props, ['children', 'classes', 'className', 'disabled', 'expanded', 'expandIcon', 'onChange']);
var focused = this.state.focused;
return _react2.default.createElement(
_ButtonBase2.default,
(0, _extends3.default)({
focusRipple: false,
disableRipple: true,
disabled: disabled,
component: 'div',
'aria-expanded': expanded,
className: (0, _classnames2.default)(classes.root, (_classNames = {}, (0, _defineProperty3.default)(_classNames, classes.disabled, disabled), (0, _defineProperty3.default)(_classNames, classes.expanded, expanded), (0, _defineProperty3.default)(_classNames, classes.focused, focused), _classNames), className)
}, other, {
onKeyboardFocus: this.handleFocus,
onBlur: this.handleBlur,
onClick: this.handleChange
}),
_react2.default.createElement(
'div',
{ className: (0, _classnames2.default)(classes.content, (0, _defineProperty3.default)({}, classes.contentExpanded, expanded)) },
children
),
expandIcon && _react2.default.createElement(
_IconButton2.default,
{
disabled: disabled,
className: (0, _classnames2.default)(classes.expandIcon, (0, _defineProperty3.default)({}, classes.expandIconExpanded, expanded)),
component: 'div',
tabIndex: -1,
'aria-hidden': 'true'
},
expandIcon
)
);
}
}]);
return ExpansionPanelSummary;
}(_react2.default.Component);
ExpansionPanelSummary.propTypes = process.env.NODE_ENV !== "production" ? {
/**
* The content of the expansion panel summary.
*/
children: _propTypes2.default.node,
/**
* Useful to extend the style applied to components.
*/
classes: _propTypes2.default.object.isRequired,
/**
* @ignore
*/
className: _propTypes2.default.string,
/**
* @ignore
* If `true`, the summary will be displayed in a disabled state.
*/
disabled: _propTypes2.default.bool,
/**
* @ignore
* If `true`, expands the summary, otherwise collapse it.
*/
expanded: _propTypes2.default.bool,
/**
* The icon to display as the expand indicator.
*/
expandIcon: _propTypes2.default.node,
/**
* @ignore
*/
onChange: _propTypes2.default.func,
/**
* @ignore
*/
onClick: _propTypes2.default.func
} : {};
ExpansionPanelSummary.defaultProps = {
disabled: false
};
ExpansionPanelSummary.muiName = 'ExpansionPanelSummary';
exports.default = (0, _withStyles2.default)(styles, { name: 'MuiExpansionPanelSummary' })(ExpansionPanelSummary);

View File

@@ -0,0 +1,183 @@
// @inheritedComponent ButtonBase
import React from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import ButtonBase from '../ButtonBase';
import IconButton from '../IconButton';
import withStyles from '../styles/withStyles';
export const styles = theme => {
const transition = {
duration: theme.transitions.duration.shortest,
};
return {
root: {
display: 'flex',
minHeight: theme.spacing.unit * 6,
transition: theme.transitions.create(['min-height', 'background-color'], transition),
padding: `0 ${theme.spacing.unit * 3}px 0 ${theme.spacing.unit * 3}px`,
'&:hover:not($disabled)': {
cursor: 'pointer',
},
},
expanded: {
minHeight: 64,
},
focused: {
backgroundColor: theme.palette.grey[300],
},
disabled: {
opacity: 0.38,
},
content: {
display: 'flex',
flexGrow: 1,
transition: theme.transitions.create(['margin'], transition),
margin: '12px 0',
'& > :last-child': {
paddingRight: theme.spacing.unit * 4,
},
},
contentExpanded: {
margin: '20px 0',
},
expandIcon: {
position: 'absolute',
top: '50%',
right: theme.spacing.unit,
transform: 'translateY(-50%) rotate(0deg)',
transition: theme.transitions.create('transform', transition),
},
expandIconExpanded: {
transform: 'translateY(-50%) rotate(180deg)',
},
};
};
class ExpansionPanelSummary extends React.Component {
state = {
focused: false,
};
handleFocus = () => {
this.setState({
focused: true,
});
};
handleBlur = () => {
this.setState({
focused: false,
});
};
handleChange = event => {
const { onChange, onClick } = this.props;
if (onChange) {
onChange(event);
}
if (onClick) {
onClick(event);
}
};
render() {
const {
children,
classes,
className,
disabled,
expanded,
expandIcon,
onChange,
...other
} = this.props;
const { focused } = this.state;
return (
<ButtonBase
focusRipple={false}
disableRipple
disabled={disabled}
component="div"
aria-expanded={expanded}
className={classNames(
classes.root,
{
[classes.disabled]: disabled,
[classes.expanded]: expanded,
[classes.focused]: focused,
},
className,
)}
{...other}
onKeyboardFocus={this.handleFocus}
onBlur={this.handleBlur}
onClick={this.handleChange}
>
<div className={classNames(classes.content, { [classes.contentExpanded]: expanded })}>
{children}
</div>
{expandIcon && (
<IconButton
disabled={disabled}
className={classNames(classes.expandIcon, {
[classes.expandIconExpanded]: expanded,
})}
component="div"
tabIndex={-1}
aria-hidden="true"
>
{expandIcon}
</IconButton>
)}
</ButtonBase>
);
}
}
ExpansionPanelSummary.propTypes = {
/**
* The content of the expansion panel summary.
*/
children: PropTypes.node,
/**
* Useful to extend the style applied to components.
*/
classes: PropTypes.object.isRequired,
/**
* @ignore
*/
className: PropTypes.string,
/**
* @ignore
* If `true`, the summary will be displayed in a disabled state.
*/
disabled: PropTypes.bool,
/**
* @ignore
* If `true`, expands the summary, otherwise collapse it.
*/
expanded: PropTypes.bool,
/**
* The icon to display as the expand indicator.
*/
expandIcon: PropTypes.node,
/**
* @ignore
*/
onChange: PropTypes.func,
/**
* @ignore
*/
onClick: PropTypes.func,
};
ExpansionPanelSummary.defaultProps = {
disabled: false,
};
ExpansionPanelSummary.muiName = 'ExpansionPanelSummary';
export default withStyles(styles, { name: 'MuiExpansionPanelSummary' })(ExpansionPanelSummary);

View File

@@ -0,0 +1,8 @@
export { default } from './ExpansionPanel';
export * from './ExpansionPanel';
export { default as ExpansionPanelSummary } from './ExpansionPanelSummary';
export * from './ExpansionPanelSummary';
export { default as ExpansionPanelDetails } from './ExpansionPanelDetails';
export * from './ExpansionPanelDetails';
export { default as ExpansionPanelActions } from './ExpansionPanelActions';
export * from './ExpansionPanelActions';

View File

@@ -0,0 +1,43 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _ExpansionPanel = require('./ExpansionPanel');
Object.defineProperty(exports, 'default', {
enumerable: true,
get: function get() {
return _interopRequireDefault(_ExpansionPanel).default;
}
});
var _ExpansionPanelActions = require('./ExpansionPanelActions');
Object.defineProperty(exports, 'ExpansionPanelActions', {
enumerable: true,
get: function get() {
return _interopRequireDefault(_ExpansionPanelActions).default;
}
});
var _ExpansionPanelDetails = require('./ExpansionPanelDetails');
Object.defineProperty(exports, 'ExpansionPanelDetails', {
enumerable: true,
get: function get() {
return _interopRequireDefault(_ExpansionPanelDetails).default;
}
});
var _ExpansionPanelSummary = require('./ExpansionPanelSummary');
Object.defineProperty(exports, 'ExpansionPanelSummary', {
enumerable: true,
get: function get() {
return _interopRequireDefault(_ExpansionPanelSummary).default;
}
});
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

View File

@@ -0,0 +1,4 @@
export { default } from './ExpansionPanel';
export { default as ExpansionPanelActions } from './ExpansionPanelActions';
export { default as ExpansionPanelDetails } from './ExpansionPanelDetails';
export { default as ExpansionPanelSummary } from './ExpansionPanelSummary';