Use the new BEM syntax for querySelector

This commit is contained in:
Faris Ansari 2018-04-22 13:55:05 +05:30
parent 6d37d19cd8
commit 4c345b1a4c
2 changed files with 48 additions and 38 deletions

View File

@ -147,7 +147,11 @@ export default class CellManager {
bindCopyCellContents() {
this.keyboard.on('ctrl+c', () => {
this.copyCellContents(this.$focusedCell, this.$selectionCursor);
const noOfCellsCopied = this.copyCellContents(this.$focusedCell, this.$selectionCursor);
const message = `${noOfCellsCopied} cell${noOfCellsCopied > 1 ? 's' : ''} copied`;
if (noOfCellsCopied) {
this.instance.showToastMessage(message, 2);
}
});
}
@ -230,22 +234,20 @@ export default class CellManager {
colIndex,
rowIndex
} = $.data($cell);
const _colIndex = this.datamanager.getColumnIndexById('_rowIndex');
const colHeaderSelector = `.dt-header .dt-cell[data-col-index="${colIndex}"]`;
const rowHeaderSelector = `.dt-cell[data-row-index="${rowIndex}"][data-col-index="${_colIndex}"]`;
const srNoColIndex = this.datamanager.getColumnIndexById('_rowIndex');
const colHeaderSelector = `.dt-cell--header-${colIndex}`;
const rowHeaderSelector = `.dt-cell--${srNoColIndex}-${rowIndex}`;
if (this.lastHeaders) {
$.removeStyle(this.lastHeaders, 'backgroundColor');
this.lastHeaders.forEach(header => header.classList.remove('dt-cell--highlight'));
}
const colHeader = $(colHeaderSelector, this.wrapper);
const rowHeader = $(rowHeaderSelector, this.wrapper);
$.style([colHeader, rowHeader], {
backgroundColor: '#f5f7fa' // light-bg
});
this.lastHeaders = [colHeader, rowHeader];
this.lastHeaders.forEach(header => header.classList.add('dt-cell--highlight'));
}
selectAreaOnClusterChanged() {
@ -504,13 +506,13 @@ export default class CellManager {
} = $.data($cell1);
const cell = this.getCell(colIndex, rowIndex);
copyTextToClipboard(cell.content);
return;
return 1;
}
const cells = this.getCellsInRange($cell1, $cell2);
if (!cells) return;
if (!cells) return 0;
const values = cells
const rows = cells
// get cell objects
.map(index => this.getCell(...index))
// convert to array of rows
@ -521,13 +523,18 @@ export default class CellManager {
acc[rowIndex].push(curr.content);
return acc;
}, [])
}, []);
const values = rows
// join values by tab
.map(row => row.join('\t'))
// join rows by newline
.join('\n');
copyTextToClipboard(values);
// return no of cells copied
return rows.reduce((total, row) => total + row.length, 0);
}
activateFilter(colIndex) {
@ -580,7 +587,7 @@ export default class CellManager {
}
if (!$aboveRow) return $cell;
return $(`[data-col-index="${colIndex}"]`, $aboveRow);
return $(`.dt-cell--col-${colIndex}`, $aboveRow);
}
getBelowCell$($cell) {
@ -594,7 +601,7 @@ export default class CellManager {
}
if (!$belowRow) return $cell;
return $(`[data-col-index="${colIndex}"]`, $belowRow);
return $(`.dt-cell--col-${colIndex}`, $belowRow);
}
getLeftCell$($cell) {
@ -625,10 +632,6 @@ export default class CellManager {
return this.instance.datamanager.getCell(colIndex, rowIndex);
}
getCellAttr($cell) {
return this.instance.getCellAttr($cell);
}
getRowHeight() {
return $.style($('.dt-row', this.bodyScrollable), 'height');
}
@ -661,9 +664,16 @@ export default class CellManager {
isFilter
});
const isBodyCell = !(isHeader || isFilter);
const className = [
'dt-cell',
isHeader ? 'dt-cell--header' : ''
'dt-cell--col-' + colIndex,
isBodyCell ? `dt-cell--${colIndex}-${rowIndex}` : '',
isBodyCell ? 'dt-cell--row-' + rowIndex : '',
isHeader ? 'dt-cell--header' : '',
isHeader ? `dt-cell--header-${colIndex}` : '',
isFilter ? 'dt-cell--filter' : ''
].join(' ');
return `
@ -676,11 +686,12 @@ export default class CellManager {
getCellContent(cell) {
const {
isHeader,
isFilter
isFilter,
colIndex
} = cell;
const editable = !isHeader && cell.editable !== false;
const editCellHTML = editable ? this.getEditCellHTML() : '';
const editCellHTML = editable ? this.getEditCellHTML(colIndex) : '';
const sortable = isHeader && cell.sortable !== false;
const sortIndicator = sortable ? '<span class="sort-indicator"></span>' : '';
@ -717,8 +728,13 @@ export default class CellManager {
}
}
const className = [
'dt-cell__content',
isHeader ? `dt-cell__content--header-${colIndex}` : `dt-cell__content--col-${colIndex}`
].join(' ');
return `
<div class="dt-cell__content">
<div class="${className}">
${contentHTML}
${sortIndicator}
${resizeColumn}
@ -728,11 +744,11 @@ export default class CellManager {
`;
}
getEditCellHTML() {
return '<div class="dt-cell__edit"></div>';
getEditCellHTML(colIndex) {
return `<div class="dt-cell__edit dt-cell__edit--col-${colIndex}"></div>`;
}
selector(colIndex, rowIndex) {
return `.dt-cell[data-col-index="${colIndex}"][data-row-index="${rowIndex}"]`;
return `.dt-cell--${colIndex}-${rowIndex}`;
}
}

View File

@ -30,7 +30,7 @@ export default class ColumnManager {
refreshHeader() {
const columns = this.datamanager.getColumns();
const $cols = $.each('.dt-cell[data-is-header]', this.header);
const $cols = $.each('.dt-cell--header', this.header);
const refreshHTML =
// first init
@ -331,8 +331,8 @@ export default class ColumnManager {
let index = this._columnWidthMap[colIndex];
const selector = [
`[data-col-index="${colIndex}"] .dt-cell__content`,
`[data-col-index="${colIndex}"] .dt-cell__edit`
`.dt-cell__content--col-${colIndex}`,
`.dt-cell__edit--col-${colIndex}`
].join(', ');
const styles = {
@ -349,7 +349,7 @@ export default class ColumnManager {
setColumnHeaderWidth(colIndex) {
colIndex = +colIndex;
this.$columnMap = this.$columnMap || [];
const selector = `.dt-header [data-col-index="${colIndex}"] .dt-cell__content`;
const selector = `.dt-cell__content--header-${colIndex}`;
const {
width
} = this.getColumn(colIndex);
@ -373,19 +373,13 @@ export default class ColumnManager {
}
getHeaderCell$(colIndex) {
return $(`.dt-cell[data-col-index="${colIndex}"]`, this.header);
return $(`.dt-cell--header-${colIndex}`, this.header);
}
getLastColumnIndex() {
return this.datamanager.getColumnCount() - 1;
}
getSerialColumnIndex() {
const columns = this.datamanager.getColumns();
return columns.findIndex(column => column.content.includes('Sr. No'));
}
getDropdownHTML() {
const { dropdownButton, headerDropdown: dropdownItems } = this.options;
@ -399,5 +393,5 @@ export default class ColumnManager {
</div>
</div>
`;
};
}
}