UNPKG

rmwc

Version:

A thin React wrapper for Material Design (Web) Components

248 lines (198 loc) 9.03 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.Drawer = exports.DrawerDrawer = exports.DrawerRoot = exports.DrawerContent = exports.DrawerToolbarSpacer = exports.DrawerHeader = exports.DrawerHeaderContent = exports.DrawerHeaderRoot = undefined; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _react = require('react'); var React = _interopRequireWildcard(_react); var _Base = require('../Base'); var _List = require('../List'); var _mdc = require('@material/drawer/dist/mdc.drawer'); var _withFoundation2 = require('../Base/withFoundation'); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /*************************************************************************************** * Drawer Headers ***************************************************************************************/ var DrawerHeaderRoot = exports.DrawerHeaderRoot = (0, _Base.simpleTag)({ displayName: 'DrawerHeaderRoot', classNames: 'mdc-drawer__header' }); var DrawerHeaderContent = exports.DrawerHeaderContent = (0, _Base.simpleTag)({ displayName: 'DrawerHeaderContent', classNames: 'mdc-drawer__header-content' }); /** A Header for Drawers */ var DrawerHeader = exports.DrawerHeader = function (_React$Component) { _inherits(DrawerHeader, _React$Component); function DrawerHeader() { _classCallCheck(this, DrawerHeader); return _possibleConstructorReturn(this, (DrawerHeader.__proto__ || Object.getPrototypeOf(DrawerHeader)).apply(this, arguments)); } _createClass(DrawerHeader, [{ key: 'render', value: function render() { var _props = this.props, children = _props.children, rest = _objectWithoutProperties(_props, ['children']); return React.createElement( DrawerHeaderRoot, rest, React.createElement( DrawerHeaderContent, null, children ) ); } }]); return DrawerHeader; }(React.Component); /** If you are using fixed a Toolbar, this provides space for it. */ var DrawerToolbarSpacer = exports.DrawerToolbarSpacer = (0, _Base.simpleTag)({ displayName: 'DrawerToolbarSpacer', classNames: 'mdc-drawer__toolbar-spacer' }); /*************************************************************************************** * Drawer Content ***************************************************************************************/ /** Content for Drawers. Please note this is an instance of mdc-list by default. You can change this to a a non list container by specifying the tag as 'div' or anything else. */ var DrawerContent = exports.DrawerContent = (0, _Base.simpleTag)({ displayName: 'DrawerContent', tag: _List.List, classNames: 'mdc-drawer__content' }); /*************************************************************************************** * Drawers ***************************************************************************************/ var DrawerRoot = exports.DrawerRoot = (0, _Base.simpleTag)({ displayName: 'DrawerRoot', tag: 'aside', classNames: function classNames(props) { return ['mdc-drawer', { 'mdc-drawer--permanent': props.permanent, 'mdc-drawer--persistent': props.persistent, 'mdc-drawer--temporary': props.temporary }]; }, consumeProps: ['permanent', 'persistent', 'temporary'] }); var DrawerDrawer = exports.DrawerDrawer = (0, _Base.simpleTag)({ displayName: 'DrawerDrawer', tag: 'nav', classNames: 'mdc-drawer__drawer' }); var slidableDrawerFactory = function slidableDrawerFactory(MDCConstructor, displayName) { var _class, _temp; return _temp = _class = function (_withFoundation) { _inherits(_class, _withFoundation); function _class() { _classCallCheck(this, _class); return _possibleConstructorReturn(this, (_class.__proto__ || Object.getPrototypeOf(_class)).apply(this, arguments)); } _createClass(_class, [{ key: 'syncWithProps', value: function syncWithProps(nextProps) { var _this3 = this; // Open // MDC calls notify change before actually setting the Open value // which causes an infinite loop for reacts uni-directional data flow // The set timeout gives us a frame before we re-evaluate whether we are open setTimeout(function () { _this3.foundation_ && (0, _withFoundation2.syncFoundationProp)(nextProps.open, _this3.open, function () { return _this3.open = nextProps.open; }); }); } }, { key: 'render', value: function render() { var _props2 = this.props, children = _props2.children, onOpen = _props2.onOpen, onClose = _props2.onClose, open = _props2.open, rest = _objectWithoutProperties(_props2, ['children', 'onOpen', 'onClose', 'open']); var root_ = this.foundationRefs.root_; return React.createElement( DrawerRoot, Object.assign({ elementRef: root_ }, rest), React.createElement( DrawerDrawer, null, children ) ); } }]); return _class; }((0, _withFoundation2.withFoundation)({ constructor: MDCConstructor, adapter: {} })), Object.defineProperty(_class, 'displayName', { enumerable: true, writable: true, value: displayName }), Object.defineProperty(_class, 'defaultProps', { enumerable: true, writable: true, value: { open: false, onOpen: _Base.noop, onClose: _Base.noop } }), _temp; }; var TemporaryDrawer = slidableDrawerFactory(_mdc.MDCTemporaryDrawer, 'TemporaryDrawer'); var PersistentDrawer = slidableDrawerFactory(_mdc.MDCPersistentDrawer, 'PersistentDrawer'); var PermanentDrawer = function (_React$Component2) { _inherits(PermanentDrawer, _React$Component2); function PermanentDrawer() { _classCallCheck(this, PermanentDrawer); return _possibleConstructorReturn(this, (PermanentDrawer.__proto__ || Object.getPrototypeOf(PermanentDrawer)).apply(this, arguments)); } _createClass(PermanentDrawer, [{ key: 'render', value: function render() { var _props3 = this.props, children = _props3.children, onOpen = _props3.onOpen, onClose = _props3.onClose, rest = _objectWithoutProperties(_props3, ['children', 'onOpen', 'onClose']); return React.createElement( DrawerRoot, rest, children ); } }]); return PermanentDrawer; }(React.Component); Object.defineProperty(PermanentDrawer, 'displayName', { enumerable: true, writable: true, value: 'PermanentDrawer' }); Object.defineProperty(PermanentDrawer, 'defaultProps', { enumerable: true, writable: true, value: { open: false, onOpen: _Base.noop, onClose: _Base.noop } }); var Drawer = exports.Drawer = function Drawer(props) { if (props.persistent) { return React.createElement(PersistentDrawer, props); } if (props.temporary) { return React.createElement(TemporaryDrawer, props); } return React.createElement(PermanentDrawer, props); }; Drawer.displayName = 'Drawer';