tui-calendar
Version:
TOAST UI Calendar
88 lines (72 loc) • 2.1 kB
JavaScript
/**
* @fileoverview Layout view. wrap all view containers at outside.
* @author NHN FE Development Lab <dl_javascript@nhn.com>
*/
;
var util = require('tui-code-snippet');
var config = require('../config');
var domutil = require('../common/domutil');
var Collection = require('../common/collection');
var View = require('./view');
/**
* Layout view for toggle each child view. It will controlled via navigation UI.
* @constructor
* @extends {View}
* @param {HTMLElement} container Container element to use layout view.
* @param {Theme} theme - theme instance
*/
function Layout(container, theme) {
container = domutil.appendHTMLElement('div', container, config.classname('layout'));
View.call(this, container);
/**
* @type {Collection} Child view collection.
*/
this.children = new Collection(function(childView) {
return childView.viewName;
});
/**
* @type {Theme}
*/
this.theme = theme;
this.applyTheme();
}
util.inherit(Layout, View);
/**
* Clear child views.
*/
Layout.prototype.clear = function() {
this.children.each(function(childView) {
childView.destroy();
});
this.children.clear();
this.container.innerHTML = '';
};
/**
* Remove child view.
* @override
* @param {(string|View)} viewName - name of view or instance.
*/
Layout.prototype.removeChild = function(viewName) {
this.children.remove(viewName);
};
/**
* Toggle child views.
* @param {string} viewName - Name of view.
*/
Layout.prototype.toggleChildView = function(viewName) {
var container,
prefix = ['add', 'remove'],
flag;
this.children.each(function(childView) {
container = childView.container;
flag = Number(childView.viewName === viewName);
domutil[prefix[flag] + 'Class'](container, config.classname('hidden'));
});
};
Layout.prototype.applyTheme = function() {
var style = this.container.style;
var theme = this.theme.common;
// background color
style.backgroundColor = theme.backgroundColor;
};
module.exports = Layout;