| 
									
										
										
										
											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
										 |  |  | } |