mirror of
				https://github.com/TriliumNext/Notes.git
				synced 2025-10-31 13:01:31 +08:00 
			
		
		
		
	chore(client/ts): port book_properties
This commit is contained in:
		
							parent
							
								
									283482caa5
								
							
						
					
					
						commit
						e347cdda36
					
				| @ -1,6 +1,8 @@ | ||||
| import NoteContextAwareWidget from "../note_context_aware_widget.js"; | ||||
| import attributeService from "../../services/attributes.js"; | ||||
| import { t } from "../../services/i18n.js"; | ||||
| import type FNote from "../../entities/fnote.js"; | ||||
| import type { EventData } from "../../components/app_context.js"; | ||||
| 
 | ||||
| const TPL = ` | ||||
| <div class="book-properties-widget"> | ||||
| @ -44,6 +46,11 @@ const TPL = ` | ||||
| `;
 | ||||
| 
 | ||||
| export default class BookPropertiesWidget extends NoteContextAwareWidget { | ||||
| 
 | ||||
|     private $viewTypeSelect!: JQuery<HTMLElement>; | ||||
|     private $expandChildrenButton!: JQuery<HTMLElement>; | ||||
|     private $collapseAllButton!: JQuery<HTMLElement>; | ||||
| 
 | ||||
|     get name() { | ||||
|         return "bookProperties"; | ||||
|     } | ||||
| @ -70,11 +77,15 @@ export default class BookPropertiesWidget extends NoteContextAwareWidget { | ||||
|         this.contentSized(); | ||||
| 
 | ||||
|         this.$viewTypeSelect = this.$widget.find(".view-type-select"); | ||||
|         this.$viewTypeSelect.on("change", () => this.toggleViewType(this.$viewTypeSelect.val())); | ||||
|         this.$viewTypeSelect.on("change", () => this.toggleViewType(String(this.$viewTypeSelect.val()))); | ||||
| 
 | ||||
|         this.$expandChildrenButton = this.$widget.find(".expand-children-button"); | ||||
|         this.$expandChildrenButton.on("click", async () => { | ||||
|             if (!this.note.isLabelTruthy("expanded")) { | ||||
|             if (!this.noteId || !this.note) { | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
|             if (!this.note?.isLabelTruthy("expanded")) { | ||||
|                 await attributeService.addLabel(this.noteId, "expanded"); | ||||
|             } | ||||
| 
 | ||||
| @ -83,6 +94,10 @@ export default class BookPropertiesWidget extends NoteContextAwareWidget { | ||||
| 
 | ||||
|         this.$collapseAllButton = this.$widget.find(".collapse-all-button"); | ||||
|         this.$collapseAllButton.on("click", async () => { | ||||
|             if (!this.noteId || !this.note) { | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
|             // owned is important - we shouldn't remove inherited expanded labels
 | ||||
|             for (const expandedAttr of this.note.getOwnedLabels("expanded")) { | ||||
|                 await attributeService.removeAttributeById(this.noteId, expandedAttr.attributeId); | ||||
| @ -92,7 +107,11 @@ export default class BookPropertiesWidget extends NoteContextAwareWidget { | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     async refreshWithNote(note) { | ||||
|     async refreshWithNote(note: FNote) { | ||||
|         if (!this.note) { | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         const viewType = this.note.getLabelValue("viewType") || "grid"; | ||||
| 
 | ||||
|         this.$viewTypeSelect.val(viewType); | ||||
| @ -101,7 +120,11 @@ export default class BookPropertiesWidget extends NoteContextAwareWidget { | ||||
|         this.$collapseAllButton.toggle(viewType === "list"); | ||||
|     } | ||||
| 
 | ||||
|     async toggleViewType(type) { | ||||
|     async toggleViewType(type: string) { | ||||
|         if (!this.noteId) { | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         if (type !== "list" && type !== "grid") { | ||||
|             throw new Error(t("book_properties.invalid_view_type", { type })); | ||||
|         } | ||||
| @ -109,7 +132,7 @@ export default class BookPropertiesWidget extends NoteContextAwareWidget { | ||||
|         await attributeService.setLabel(this.noteId, "viewType", type); | ||||
|     } | ||||
| 
 | ||||
|     entitiesReloadedEvent({ loadResults }) { | ||||
|     entitiesReloadedEvent({ loadResults }: EventData<"entitiesReloaded">) { | ||||
|         if (loadResults.getAttributeRows().find((attr) => attr.noteId === this.noteId && attr.name === "viewType")) { | ||||
|             this.refresh(); | ||||
|         } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Elian Doran
						Elian Doran