mirror of
https://bitbucket.org/bellord13/kit.git
synced 2026-11-13 19:06:11 +03:00
152 lines
5.5 KiB
JavaScript
152 lines
5.5 KiB
JavaScript
/** @module userAction */
|
|
kit.PluginManager.register('userAction', function(module, exports, require, global) {
|
|
|
|
var support = require('support');
|
|
var ActionCollection = require('ActionCollection');
|
|
var Action = require('Action');
|
|
var Viewer = require('Viewer');
|
|
|
|
|
|
|
|
var Popover = function (masterNode, slaveNode) {
|
|
this.__setMasterNode(masterNode);
|
|
this.__setSlaveNode(slaveNode);
|
|
this.__documentAction = new Action(document, 'click', this.__documentHandler.bind(this));
|
|
this.__masterAction = new Action(this.__masterNode, 'click', this.__masterHandler.bind(this));
|
|
|
|
this.viewer = new Viewer(this.__slaveNode, this.__masterNode);
|
|
this.viewer.onShow.set('documentActionRun', this.__documentAction.run.bind(this.__documentAction));
|
|
this.viewer.onHide.set('documentActionStop', this.__documentAction.stop.bind(this.__documentAction));
|
|
return this;
|
|
};
|
|
(function () {
|
|
var proto = Popover.prototype;
|
|
|
|
proto.__documentHandler = function(event) {
|
|
if(
|
|
!support.node.isRelate(event.target, this.__masterNode) &&
|
|
!support.node.isRelate(event.target, this.__slaveNode)
|
|
) {
|
|
this.viewer.hide();
|
|
}
|
|
};
|
|
proto.__masterHandler = function(event) {
|
|
if(
|
|
!support.node.isRelate(event.target, this.__slaveNode)
|
|
) {
|
|
this.viewer.toggle();
|
|
}
|
|
};
|
|
proto.__setMasterNode = function(selector){
|
|
this.__masterNode = support.getNode(selector);
|
|
};
|
|
proto.__setSlaveNode = function(selector){
|
|
this.__slaveNode = support.getNode(selector);
|
|
};
|
|
proto.run = function(){
|
|
if(this.viewer.isShown()) {
|
|
this.__documentAction.run();
|
|
}
|
|
this.__masterAction.run();
|
|
};
|
|
proto.stop = function(){
|
|
this.__documentAction.stop();
|
|
this.__masterAction.stop();
|
|
};
|
|
})();
|
|
|
|
|
|
var Hint = function (masterNode, slaveNode) {
|
|
this.__setMasterNode(masterNode);
|
|
this.__setSlaveNode(slaveNode);
|
|
this.viewer = new Viewer(this.__slaveNode, this.__masterNode);
|
|
|
|
this.__masterAction = new ActionCollection([
|
|
new Action(this.__masterNode, 'mouseover', function (event) {
|
|
if(support.node.isRelate(event.target, this.__masterNode)) {
|
|
this.viewer.show();
|
|
// console.log('master over ', event.target.id, ' > ', this.__slaveNode.id, 'show');
|
|
// console.log(event);
|
|
}
|
|
}.bind(this)),
|
|
new Action(this.__masterNode, 'mouseout', function (event) {
|
|
if(
|
|
!support.node.isRelate(event.relatedTarget, this.__masterNode) &&
|
|
!support.node.isRelate(event.relatedTarget, this.__slaveNode)
|
|
) {
|
|
this.viewer.hide();
|
|
// console.log('master out ', event.target.id, ' > ', this.__slaveNode.id, 'hide');
|
|
// console.log(event);
|
|
}
|
|
}.bind(this))
|
|
]);
|
|
this.__slaveAction = new ActionCollection([
|
|
new Action(this.__slaveNode, 'mouseover', function (event) {
|
|
// this.viewer.show();
|
|
// console.log('slave over ', event.target.id, ' > ', this.__slaveNode.id, 'show');
|
|
}.bind(this)),
|
|
new Action(this.__slaveNode, 'mouseout', function (event) {
|
|
if(
|
|
!support.node.isRelate(event.relatedTarget, this.__masterNode) &&
|
|
!support.node.isRelate(event.relatedTarget, this.__slaveNode)
|
|
) {
|
|
this.viewer.hide();
|
|
// console.log('slave out ', event.target.id, ' > ', this.__slaveNode.id, 'hide');
|
|
}
|
|
}.bind(this))
|
|
]);
|
|
this.__documentAction = new Action(document, 'click', this.__documentHandler.bind(this));
|
|
|
|
this.viewer.onShow.set('documentActionRun', (function (){
|
|
this.__slaveAction.run();
|
|
this.__documentAction.run();
|
|
}).bind(this));
|
|
this.viewer.onHide.set('documentActionStop', (function (){
|
|
this.__slaveAction.stop();
|
|
this.__documentAction.stop();
|
|
}).bind(this));
|
|
return this;
|
|
};
|
|
(function () {
|
|
var proto = Hint.prototype;
|
|
|
|
proto.__documentHandler = function(event) {
|
|
if (
|
|
!support.node.isRelate(event.target, this.__slaveNode) &&
|
|
!support.node.isRelate(event.target, this.__masterNode) &&
|
|
this.viewer.isShown()
|
|
) {
|
|
this.viewer.hide();
|
|
}
|
|
};
|
|
proto.__setMasterNode = function(selector){
|
|
this.__masterNode = support.getNode(selector);
|
|
};
|
|
proto.__setSlaveNode = function(selector){
|
|
this.__slaveNode = support.getNode(selector);
|
|
};
|
|
proto.run = function(){
|
|
if(this.viewer.isShown()) {
|
|
this.__documentAction.run();
|
|
this.__slaveAction.run();
|
|
}
|
|
this.__masterAction.run();
|
|
};
|
|
proto.stop = function(){
|
|
this.__documentAction.stop();
|
|
this.__masterAction.stop();
|
|
this.__slaveAction.stop();
|
|
};
|
|
})();
|
|
|
|
/**
|
|
* @memberOf kit
|
|
*/
|
|
var userAction = {
|
|
Popover: Popover,
|
|
Hint: Hint,
|
|
};
|
|
|
|
return module.exports = userAction;
|
|
});
|