@blinkk/editor
Version:
Structured content editor with live previews.
73 lines • 2.65 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.UsersPart = void 0;
const selective_edit_1 = require("@blinkk/selective-edit");
const index_1 = require("./index");
const selective_edit_2 = require("@blinkk/selective-edit");
const template_1 = require("../../template");
class UsersPart extends index_1.MenuSectionPart {
classesForPart() {
const classes = super.classesForPart();
classes.le__part__menu__users = true;
return classes;
}
loadProject() {
this.users = this.config.state.getProject((project) => {
// Default to array so it does not try to keep reloading the project data.
this.users = project.users || [];
this.render();
})?.users;
}
templateContent(editor) {
// Lazy load the users information.
if (this.users === undefined) {
this.loadProject();
return template_1.templateLoading(editor, {
pad: true,
});
}
if (!this.users.length) {
return selective_edit_1.html `<div class="le__part__menu__section__content">
<div class="le__list">
<div class="le__list__item">
<div class="le__list__item__label">No users configured.</div>
</div>
</div>
</div>`;
}
return selective_edit_1.html `<div class="le__part__menu__section__content">
<div class="le__list le__list--constrained le__list--indent">
${selective_edit_2.repeat(this.users || [], user => user.name, user => user.isGroup ? this.templateGroup(user) : this.templateUser(user))}
</div>
</div>`;
}
templateGroup(user) {
return selective_edit_1.html `<div class="le__list__item">
<div class="le__list__item__icon">
<span class="material-icons">group</span>
</div>
<div class="le__list__item__label">${user.name}</div>
<div class="le__list__item__aside">${user.email}</div>
</div>`;
}
templateTitle(editor) {
return selective_edit_1.html `<div class="le__part__menu__section__title">
${editor.config.labels?.menuUsers || this.title}
</div>`;
}
templateUser(user) {
return selective_edit_1.html `<div class="le__list__item">
<div class="le__list__item__icon">
<span class="material-icons">person</span>
</div>
<div class="le__list__item__label">
<a href="mailto:${user.email}">${user.name}</a>
</div>
</div>`;
}
get title() {
return 'Users';
}
}
exports.UsersPart = UsersPart;
//# sourceMappingURL=users.js.map