grapesjs_codeapps
Version:
Free and Open Source Web Builder Framework/SC Modification
85 lines (72 loc) • 2.11 kB
JavaScript
import _ from 'underscore';
import Backbone from 'backbone';
module.exports = Backbone.View.extend({
template: _.template(`
<div class="<%= pfx %>blocks-c template-cat-el <%= pfx %>template-cat-<%= classEl %>"></div>
`),
events: {},
initialize(o = {}, config = {}) {
this.config = config;
const pfx = this.config.pStylePrefix || '';
this.pfx = pfx;
this.caretR = 'fa fa-caret-right';
this.caretD = 'fa fa-caret-down';
//this.iconClass = `${pfx}caret-icon`;
this.activeClass = `${pfx}open`;
this.className = `${pfx}block-category`;
this.events[`click .${pfx}title`] = 'toggle';
this.listenTo(this.model, 'change:open', this.updateVisibility);
this.delegateEvents();
},
updateVisibility() {
this.$el
.find(`.template-cat-el`)
.parent()
.hide();
this.$el
.find(`.gjs-template-cat-pop-up`)
.parent()
.show();
},
open() {
this.el.className = `${this.className} ${this.activeClass}`;
//this.getIconEl().className = `${this.iconClass} ${this.caretD}`;
this.getBlocksEl().style.display = '';
},
close() {
this.el.className = this.className;
//this.getIconEl().className = `${this.iconClass} ${this.caretR}`;
this.getBlocksEl().style.display = 'none';
},
toggle() {
var model = this.model;
model.set('open', !model.get('open'));
},
getIconEl() {
// if (!this.iconEl) {
// // this.iconEl = this.el.querySelector('.' + this.iconClass);
// // }
// //
// // return this.iconEl;
},
getBlocksEl() {
if (!this.blocksEl) {
this.blocksEl = this.el.querySelector('.' + this.pfx + 'blocks-c');
}
return this.blocksEl;
},
append(el) {
this.getBlocksEl().appendChild(el);
},
render() {
this.el.innerHTML = this.template({
pfx: this.pfx,
label: this.model.get('label'),
classEl: this.model.get('label').toLowerCase()
});
this.el.className = this.className;
this.$el.css({ order: this.model.get('order') });
this.updateVisibility();
return this;
}
});