keeweb/app/scripts/views/tag-view.js

69 lines
1.7 KiB
JavaScript

import { Events } from 'framework/events';
import { View } from 'framework/views/view';
import { Alerts } from 'comp/ui/alerts';
import { Locale } from 'util/locale';
import template from 'templates/tag.hbs';
class TagView extends View {
parent = '.app__panel';
template = template;
events = {
'click .tag__buttons-trash': 'moveToTrash',
'click .back-button': 'returnToApp',
'click .tag__btn-rename': 'renameTag'
};
render() {
if (this.tag) {
super.render({
title: this.tag.title
});
}
}
showTag(tag) {
this.tag = tag;
this.render();
}
renameTag() {
const title = $.trim(this.$el.find('#tag__field-title').val());
if (!title || title === this.tag.title) {
return;
}
if (/[;,:]/.test(title)) {
Alerts.error({
header: Locale.tagBadName,
body: Locale.tagBadNameBody.replace('{}', '`,`, `;`, `:`')
});
return;
}
if (this.model.tags.some((t) => t.toLowerCase() === title.toLowerCase())) {
Alerts.error({ header: Locale.tagExists, body: Locale.tagExistsBody });
return;
}
this.model.renameTag(this.tag.title, title);
Events.emit('select-all');
}
moveToTrash() {
this.title = null;
Alerts.yesno({
header: Locale.tagTrashQuestion,
body: Locale.tagTrashQuestionBody,
success: () => {
this.model.renameTag(this.tag.title, undefined);
Events.emit('select-all');
}
});
}
returnToApp() {
Events.emit('edit-tag');
}
}
export { TagView };