zrmc
Version:
ZRMC is an ES7 React wrapper for Material Components Web.
156 lines (122 loc) • 4.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = undefined;
var _objectWithoutProperties2 = require("babel-runtime/helpers/objectWithoutProperties");
var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
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 _ = require("../");
var _2 = _interopRequireDefault(_);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* See:
* https://material.io/components/web/catalog/drawers/
* https://material-components-web.appspot.com/drawer/persistent-drawer.html
*
* TODO:
* - temporary, permanent, persistent
*/
var MDC_DRAWER = "mdc-drawer"; /**
* Copyright (c) 2015-present, CWB SAS
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
var Drawer = function (_PureComponent) {
(0, _inherits3.default)(Drawer, _PureComponent);
function Drawer(props) {
(0, _classCallCheck3.default)(this, Drawer);
var _this = (0, _possibleConstructorReturn3.default)(this, (Drawer.__proto__ || Object.getPrototypeOf(Drawer)).call(this, props));
_this.onClick = function (event) {
if (_this.props.type === "temporary" && _this.props.open && event.target === _this.ref) {
event.preventDefault();
_this.props.onClose();
}
};
_this.ref = null;
return _this;
}
(0, _createClass3.default)(Drawer, [{
key: "render",
value: function render() {
var _this2 = this;
var _props = this.props,
children = _props.children,
type = _props.type,
open = _props.open,
onClose = _props.onClose,
above = _props.above,
toolbarSpacer = _props.toolbarSpacer,
props = (0, _objectWithoutProperties3.default)(_props, ["children", "type", "open", "onClose", "above", "toolbarSpacer"]);
var classes = MDC_DRAWER + " mdc-drawer--" + type + " zrmc-drawer";
if (!above && !toolbarSpacer && type === "permanent") {
classes += " zrmc-drawer--toolbar";
}
var spacer = void 0;
if (toolbarSpacer) {
spacer = _react2.default.createElement("div", { className: "mdc-drawer__toolbar-spacer" });
}
if (type === "permanent") {
return _2.default.render(_react2.default.createElement(
"nav",
{ className: classes },
spacer,
children
), props);
}
if (open) {
classes += " mdc-drawer--open";
}
return _2.default.render(_react2.default.createElement(
"aside",
{
className: classes,
role: "presentation",
onKeyUp: function onKeyUp() {},
onClick: this.onClick,
ref: function ref(c) {
_this2.ref = c;
}
},
_react2.default.createElement(
"nav",
{ className: "mdc-drawer__drawer" },
spacer,
children
)
), props);
}
}]);
return Drawer;
}(_react.PureComponent);
exports.default = Drawer;
Drawer.defaultProps = {
mdcElement: MDC_DRAWER,
children: null,
type: "permanent",
open: false,
toolbarSpacer: false,
above: false,
onClose: function onClose() {}
};
Drawer.propTypes = {
mdcElement: _propTypes2.default.string,
children: _propTypes2.default.node,
type: _propTypes2.default.oneOf(["permanent", "persistent", "temporary"]),
open: _propTypes2.default.bool,
toolbarSpacer: _propTypes2.default.bool,
above: _propTypes2.default.bool,
onClose: _propTypes2.default.func
};