thingsboard/ui/node_modules/rc-menu/lib/SubMenuStateMixin.js
2020-05-19 11:43:42 +03:00

82 lines
2.4 KiB
JavaScript

'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _KeyCode = require('rc-util/lib/KeyCode');
var _KeyCode2 = _interopRequireDefault(_KeyCode);
var _addEventListener = require('rc-util/lib/Dom/addEventListener');
var _addEventListener2 = _interopRequireDefault(_addEventListener);
var _contains = require('rc-util/lib/Dom/contains');
var _contains2 = _interopRequireDefault(_contains);
var _reactDom = require('react-dom');
var _reactDom2 = _interopRequireDefault(_reactDom);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
exports['default'] = {
componentDidMount: function componentDidMount() {
this.componentDidUpdate();
},
componentDidUpdate: function componentDidUpdate() {
if (this.props.mode !== 'inline') {
if (this.props.open) {
this.bindRootCloseHandlers();
} else {
this.unbindRootCloseHandlers();
}
}
},
handleDocumentKeyUp: function handleDocumentKeyUp(e) {
if (e.keyCode === _KeyCode2['default'].ESC) {
this.props.onItemHover({
key: this.props.eventKey,
item: this,
hover: false
});
}
},
handleDocumentClick: function handleDocumentClick(e) {
// If the click originated from within this component
// don't do anything.
if ((0, _contains2['default'])(_reactDom2['default'].findDOMNode(this), e.target)) {
return;
}
var props = this.props;
props.onItemHover({
hover: false,
item: this,
key: this.props.eventKey
});
this.triggerOpenChange(false);
},
bindRootCloseHandlers: function bindRootCloseHandlers() {
if (!this._onDocumentClickListener) {
this._onDocumentClickListener = (0, _addEventListener2['default'])(document, 'click', this.handleDocumentClick);
this._onDocumentKeyupListener = (0, _addEventListener2['default'])(document, 'keyup', this.handleDocumentKeyUp);
}
},
unbindRootCloseHandlers: function unbindRootCloseHandlers() {
if (this._onDocumentClickListener) {
this._onDocumentClickListener.remove();
this._onDocumentClickListener = null;
}
if (this._onDocumentKeyupListener) {
this._onDocumentKeyupListener.remove();
this._onDocumentKeyupListener = null;
}
},
componentWillUnmount: function componentWillUnmount() {
this.unbindRootCloseHandlers();
}
};
module.exports = exports['default'];