Skip to content
This repository has been archived by the owner on Jun 26, 2020. It is now read-only.

Commit

Permalink
Reset RemoveColumnCommand to latest master version.
Browse files Browse the repository at this point in the history
  • Loading branch information
jodator committed Jan 24, 2020
1 parent d7bcb46 commit 520ce16
Showing 1 changed file with 3 additions and 21 deletions.
24 changes: 3 additions & 21 deletions src/commands/removecolumncommand.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,48 +51,30 @@ export default class RemoveColumnCommand extends Command {
const table = tableRow.parent;

const headingColumns = table.getAttribute( 'headingColumns' ) || 0;
const row = table.getChildIndex( tableRow );

// Cache the table before removing or updating colspans.
const tableMap = [ ...new TableWalker( table ) ];

// Get column index of removed column.
const cellData = tableMap.find( value => value.cell === tableCell );
const removedColumn = cellData.column;
const removedRow = cellData.row;

let cellToFocus;

const tableUtils = this.editor.plugins.get( 'TableUtils' );
const columns = tableUtils.getColumns( tableCell.parent.parent );

const columnToFocus = removedColumn === columns - 1 ? removedColumn - 1 : removedColumn + 1;
const rowToFocus = removedRow;

model.change( writer => {
// Update heading columns attribute if removing a row from head section.
if ( headingColumns && removedRow <= headingColumns ) {
if ( headingColumns && row <= headingColumns ) {
writer.setAttribute( 'headingColumns', headingColumns - 1, table );
}

for ( const { cell, row, column, rowspan, colspan } of tableMap ) {
for ( const { cell, column, colspan } of tableMap ) {
// If colspaned cell overlaps removed column decrease it's span.
if ( column <= removedColumn && colspan > 1 && column + colspan > removedColumn ) {
updateNumericAttribute( 'colspan', colspan - 1, cell, writer );
} else if ( column === removedColumn ) {
// The cell in removed column has colspan of 1.
writer.remove( cell );
}

if ( isCellToFocusAfterRemoving( row, rowToFocus, rowspan, column, columnToFocus, colspan ) ) {
cellToFocus = cell;
}
}

writer.setSelection( writer.createPositionAt( cellToFocus, 0 ) );
} );
}
}

function isCellToFocusAfterRemoving( row, rowToFocus, rowspan, column, columnToFocus, colspan ) {
return ( row <= rowToFocus && row + rowspan >= rowToFocus ) && ( column <= columnToFocus && column + colspan >= columnToFocus );
}

0 comments on commit 520ce16

Please sign in to comment.