tui-calendar
Version:
TOAST UI Calendar
91 lines (76 loc) • 2.17 kB
JavaScript
/**
* @fileoverview Dayname click event hander module
* @author NHN FE Development Lab <dl_javascript@nhn.com>
*/
;
var util = require('tui-code-snippet');
var config = require('../../config');
var domutil = require('../../common/domutil');
/**
* @constructor
* @implements {Handler}
* @mixes util.CustomEvents
* @param {Drag} [dragHandler] - Drag handler instance.
* @param {DayName} [dayNameView] - DayName view instance.
* @param {Base} [baseController] - Base controller instance.
*/
function DayNameClick(dragHandler, dayNameView, baseController) {
/**
* @type {Drag}
*/
this.dragHandler = dragHandler;
/**
* @type {DayName}
*/
this.dayNameView = dayNameView;
/**
* @type {Base}
*/
this.baseController = baseController;
dragHandler.on({
'click': this._onClick
}, this);
}
/**
* Destroy method
*/
DayNameClick.prototype.destroy = function() {
this.dragHandler.off(this);
this.dayNameView = this.baseController = this.dragHandler = null;
};
/**
* Check target element is expected condition for activate this plugins.
* @param {HTMLElement} target - The element to check
* @returns {string} - model id
*/
DayNameClick.prototype.checkExpectCondition = function(target) {
var container = domutil.closest(target, config.classname('.dayname-date-area'));
if (!container) {
return false;
}
return true;
};
/**
* Click event hander
* @param {object} clickEvent - click event from {@link Drag}
* @emits DayNameClick#clickDayname
*/
DayNameClick.prototype._onClick = function(clickEvent) {
var self = this,
target = clickEvent.target,
daynameView = this.checkExpectCondition(target),
blockElement = domutil.closest(target, config.classname('.dayname'));
if (!daynameView || !blockElement) {
return;
}
/**
* @events DayNameClick#clickDayname
* @type {object}
* @property {string} date - click date
*/
self.fire('clickDayname', {
date: domutil.getData(blockElement, 'date')
});
};
util.CustomEvents.mixin(DayNameClick);
module.exports = DayNameClick;