@@ -6,7 +6,6 @@ import type { IQuery } from '../IQuery';
66import { QueryLayout } from '../Layout/QueryLayout' ;
77import { TaskLayout } from '../Layout/TaskLayout' ;
88import { PerformanceTracker } from '../lib/PerformanceTracker' ;
9- import { replaceTaskWithTasks } from '../Obsidian/File' ;
109import { explainResults , getQueryForQueryRenderer } from '../Query/QueryRendererHelper' ;
1110import { State } from '../Obsidian/Cache' ;
1211import type { GroupDisplayHeading } from '../Query/Group/GroupDisplayHeading' ;
@@ -353,61 +352,16 @@ export class QueryResultsRenderer {
353352 return await this . addTask ( taskList , taskLineRenderer , listItem , taskIndex , queryRendererParameters ) ;
354353 }
355354
356- return await this . addListItem ( taskList , listItem , taskIndex ) ;
355+ return await this . addListItem ( taskList , taskLineRenderer , listItem , taskIndex ) ;
357356 }
358357
359- private async addListItem ( taskList : HTMLUListElement , listItem : ListItem , listItemIndex : number ) {
360- const li = createAndAppendElement ( 'li' , taskList ) ;
361-
362- if ( listItem . statusCharacter ) {
363- const checkbox = createAndAppendElement ( 'input' , li ) ;
364- checkbox . classList . add ( 'task-list-item-checkbox' ) ;
365- checkbox . type = 'checkbox' ;
366-
367- checkbox . addEventListener ( 'click' , ( event : MouseEvent ) => {
368- event . preventDefault ( ) ;
369- // It is required to stop propagation so that obsidian won't write the file with the
370- // checkbox (un)checked. Obsidian would write after us and overwrite our change.
371- event . stopPropagation ( ) ;
372-
373- // Should be re-rendered as enabled after update in file.
374- checkbox . disabled = true ;
375-
376- const checkedOrUncheckedListItem = listItem . checkOrUncheck ( ) ;
377- replaceTaskWithTasks ( { originalTask : listItem , newTasks : checkedOrUncheckedListItem } ) ;
378- } ) ;
379-
380- if ( listItem . statusCharacter !== ' ' ) {
381- checkbox . checked = true ;
382- li . classList . add ( 'is-checked' ) ;
383- }
384-
385- li . classList . add ( 'task-list-item' ) ;
386-
387- // Set these to be compatible with stock obsidian lists:
388- li . setAttribute ( 'data-task' , listItem . statusCharacter . trim ( ) ) ;
389- // Trim to ensure empty attribute for space. Same way as obsidian.
390- li . setAttribute ( 'data-line' , listItemIndex . toString ( ) ) ;
391- }
392-
393- const span = createAndAppendElement ( 'span' , li ) ;
394- await this . textRenderer (
395- listItem . description ,
396- span ,
397- listItem . findClosestParentTask ( ) ?. path ?? '' ,
398- this . obsidianComponent ,
399- ) ;
400-
401- // Unwrap the p-tag that was created by the MarkdownRenderer:
402- const pElement = span . querySelector ( 'p' ) ;
403- if ( pElement !== null ) {
404- while ( pElement . firstChild ) {
405- span . insertBefore ( pElement . firstChild , pElement ) ;
406- }
407- pElement . remove ( ) ;
408- }
409-
410- return li ;
358+ private async addListItem (
359+ taskList : HTMLUListElement ,
360+ taskLineRenderer : TaskLineRenderer ,
361+ listItem : ListItem ,
362+ listItemIndex : number ,
363+ ) {
364+ return await taskLineRenderer . renderListItem ( taskList , listItem , listItemIndex ) ;
411365 }
412366
413367 private async addTask (
0 commit comments