@@ -390,14 +390,21 @@ export class QuadrantComponent extends Component {
390390 // Get source quadrant information
391391 const sourceQuadrantId =
392392 sourceColumnContent . getAttribute ( "data-quadrant-id" ) ;
393+ const actualSourceQuadrant = QUADRANT_DEFINITIONS . find (
394+ ( q ) => q . id === sourceQuadrantId
395+ ) ;
393396
394- if ( targetQuadrant && sourceQuadrantId ) {
397+ if ( targetQuadrant && actualSourceQuadrant ) {
395398 // Handle cross-quadrant moves
396399 if ( targetQuadrantId !== sourceQuadrantId ) {
397400 console . log (
398401 `Moving task ${ taskId } from ${ sourceQuadrantId } to ${ targetQuadrantId } `
399402 ) ;
400- await this . updateTaskQuadrant ( taskId , targetQuadrant ) ;
403+ await this . updateTaskQuadrant (
404+ taskId ,
405+ targetQuadrant ,
406+ actualSourceQuadrant
407+ ) ;
401408 } else if ( event . oldIndex !== event . newIndex ) {
402409 // Handle reordering within the same quadrant
403410 console . log (
@@ -409,22 +416,10 @@ export class QuadrantComponent extends Component {
409416 }
410417 }
411418
412- private handleTaskMove ( evt : any , targetQuadrant : QuadrantDefinition ) {
413- const taskEl = evt . item ;
414- const taskId = taskEl . getAttribute ( "data-task-id" ) ;
415-
416- if ( ! taskId ) return ;
417-
418- const task = this . tasks . find ( ( t ) => t . id === taskId ) ;
419- if ( ! task ) return ;
420-
421- // Update task priority and tags based on quadrant
422- this . updateTaskQuadrant ( taskId , targetQuadrant ) ;
423- }
424-
425419 private async updateTaskQuadrant (
426420 taskId : string ,
427- quadrant : QuadrantDefinition
421+ quadrant : QuadrantDefinition ,
422+ sourceQuadrant ?: QuadrantDefinition
428423 ) {
429424 const task = this . tasks . find ( ( t ) => t . id === taskId ) ;
430425 if ( ! task ) return ;
@@ -444,31 +439,40 @@ export class QuadrantComponent extends Component {
444439 // Update tags in metadata
445440 const updatedTags = [ ...( updatedTask . metadata . tags || [ ] ) ] ;
446441
447- // Remove existing urgent/important tags
448- const urgentTag = this . quadrantConfig . urgentTag || "#urgent" ;
449- const importantTag =
450- this . quadrantConfig . importantTag || "#important" ;
442+ // Get tag names to remove (from source quadrant if provided, otherwise from config)
443+ const tagsToRemove : string [ ] = [ ] ;
451444
452- // Remove # prefix for comparison
453- const urgentTagName = urgentTag . replace ( "#" , "" ) ;
454- const importantTagName = importantTag . replace ( "#" , "" ) ;
445+ if ( sourceQuadrant ) {
446+ // Remove tags from source quadrant (keep # prefix since metadata.tags includes #)
447+ if ( sourceQuadrant . urgentTag ) {
448+ tagsToRemove . push ( sourceQuadrant . urgentTag ) ;
449+ }
450+ if ( sourceQuadrant . importantTag ) {
451+ tagsToRemove . push ( sourceQuadrant . importantTag ) ;
452+ }
453+ } else {
454+ // Fallback: remove all urgent/important tags from config
455+ const urgentTag = this . quadrantConfig . urgentTag || "#urgent" ;
456+ const importantTag =
457+ this . quadrantConfig . importantTag || "#important" ;
458+ tagsToRemove . push ( urgentTag ) ;
459+ tagsToRemove . push ( importantTag ) ;
460+ }
455461
456462 // Remove existing urgent/important tags
457463 const filteredTags = updatedTags . filter (
458- ( tag ) => tag !== urgentTagName && tag !== importantTagName
464+ ( tag ) => ! tagsToRemove . includes ( tag )
459465 ) ;
460466
461- // Add new tags based on quadrant
467+ // Add new tags based on target quadrant (keep # prefix since metadata.tags includes #)
462468 if ( quadrant . urgentTag ) {
463- const urgentTagName = quadrant . urgentTag . replace ( "#" , "" ) ;
464- if ( ! filteredTags . includes ( urgentTagName ) ) {
465- filteredTags . push ( urgentTagName ) ;
469+ if ( ! filteredTags . includes ( quadrant . urgentTag ) ) {
470+ filteredTags . push ( quadrant . urgentTag ) ;
466471 }
467472 }
468473 if ( quadrant . importantTag ) {
469- const importantTagName = quadrant . importantTag . replace ( "#" , "" ) ;
470- if ( ! filteredTags . includes ( importantTagName ) ) {
471- filteredTags . push ( importantTagName ) ;
474+ if ( ! filteredTags . includes ( quadrant . importantTag ) ) {
475+ filteredTags . push ( quadrant . importantTag ) ;
472476 }
473477 }
474478
0 commit comments