Notes/src/public/javascripts/widgets/note_actions.js

77 lines
3.0 KiB
JavaScript
Raw Normal View History

2020-01-20 22:35:52 +01:00
import TabAwareWidget from "./tab_aware_widget.js";
2020-01-19 13:19:40 +01:00
const TPL = `
<div class="dropdown note-actions">
2020-02-27 00:58:10 +01:00
<style>
.note-actions .dropdown-menu {
width: 15em;
}
2020-03-25 11:28:44 +01:00
.note-actions .dropdown-item[disabled], .note-actions .dropdown-item[disabled]:hover {
color: var(--muted-text-color) !important;
background-color: transparent !important;
}
2020-02-27 00:58:10 +01:00
</style>
2020-01-19 13:19:40 +01:00
<button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" class="btn btn-sm dropdown-toggle">
Note actions
<span class="caret"></span>
</button>
<div class="dropdown-menu dropdown-menu-right">
2020-02-29 14:32:26 +01:00
<a data-trigger-command="showNoteRevisions" class="dropdown-item show-note-revisions-button">Revisions</a>
<a data-trigger-command="showAttributes" class="dropdown-item show-attributes-button"><kbd data-command="showAttributes"></kbd> Attributes</a>
<a data-trigger-command="showLinkMap" class="dropdown-item show-link-map-button"><kbd data-command="showLinkMap"></kbd> Link map</a>
<a data-trigger-command="showNoteSource" class="dropdown-item show-source-button"><kbd data-command="showNoteSource"></kbd> Note source</a>
2020-01-19 13:19:40 +01:00
<a class="dropdown-item import-files-button">Import files</a>
2020-01-20 22:35:52 +01:00
<a class="dropdown-item export-note-button">Export note</a>
2020-02-29 14:32:26 +01:00
<a data-trigger-command="printActiveNote" class="dropdown-item print-note-button"><kbd data-command="printActiveNote"></kbd> Print note</a>
<a data-trigger-command="showNoteInfo" class="dropdown-item show-note-info-button"><kbd data-command="showNoteInfo"></kbd> Note info</a>
2020-01-19 13:19:40 +01:00
</div>
</div>`;
2020-01-20 22:35:52 +01:00
export default class NoteActionsWidget extends TabAwareWidget {
2020-01-19 13:19:40 +01:00
doRender() {
this.$widget = $(TPL);
2020-01-20 22:35:52 +01:00
this.$showSourceButton = this.$widget.find('.show-source-button');
2020-01-21 21:43:23 +01:00
2020-01-20 22:35:52 +01:00
this.$exportNoteButton = this.$widget.find('.export-note-button');
2020-01-21 21:43:23 +01:00
this.$exportNoteButton.on("click", () => {
if (this.$exportNoteButton.hasClass("disabled")) {
return;
}
import('../dialogs/export.js').then(d => d.showDialog(this.tabContext.notePath, 'single'));
});
this.$importNoteButton = this.$widget.find('.import-files-button');
2020-02-03 21:56:45 +01:00
this.$importNoteButton.on("click", () => import('../dialogs/import.js').then(d => d.showDialog(this.noteId)));
2020-01-20 22:35:52 +01:00
2020-01-19 13:19:40 +01:00
return this.$widget;
}
2020-01-20 22:35:52 +01:00
refreshWithNote(note) {
2020-03-25 11:28:44 +01:00
if (['text', 'relation-map', 'search', 'code'].includes(note.type)) {
this.$showSourceButton.removeAttr('disabled');
} else {
this.$showSourceButton.attr('disabled', 'disabled');
}
if (note.type === 'text') {
this.$exportNoteButton.removeAttr('disabled');
}
else {
this.$exportNoteButton.attr('disabled', 'disabled');
}
2020-01-20 22:35:52 +01:00
}
triggerEvent(e, eventName) {
const $item = $(e.target).closest('dropdown-item');
if ($item.is('[disabled]')) {
return;
}
2020-02-16 19:21:17 +01:00
this.triggerEvent(eventName);
2020-01-20 22:35:52 +01:00
}
2020-01-19 13:19:40 +01:00
}