handsontable
Version:
Handsontable is a JavaScript Data Grid available for React, Angular and Vue.
35 lines (33 loc) • 1.39 kB
JavaScript
import "core-js/modules/es.array.push.js";
import "core-js/modules/esnext.iterator.constructor.js";
import "core-js/modules/esnext.iterator.filter.js";
const COLUMN_ORDER_PREFIX = 'sort';
/**
* Get CSS classes which should be added to particular column header.
*
* @param {object} columnStatesManager Instance of column state manager.
* @param {number} column Visual column index.
* @param {boolean} showSortIndicator Indicates if indicator should be shown for the particular column.
* @returns {Array} Array of CSS classes.
*/
export function getClassesToAdd(columnStatesManager, column, showSortIndicator) {
const cssClasses = [];
if (showSortIndicator === false) {
return cssClasses;
}
if (columnStatesManager.isColumnSorted(column) && columnStatesManager.getNumberOfSortedColumns() > 1) {
cssClasses.push(`${COLUMN_ORDER_PREFIX}-${columnStatesManager.getIndexOfColumnInSortQueue(column) + 1}`);
}
return cssClasses;
}
/**
* Get CSS classes which should be removed from column header.
*
* @param {HTMLElement} htmlElement An element to process.
* @returns {Array} Array of CSS classes.
*/
export function getClassesToRemove(htmlElement) {
const cssClasses = htmlElement.className.split(' ');
const sortSequenceRegExp = new RegExp(`^${COLUMN_ORDER_PREFIX}-[0-9]{1,2}$`);
return cssClasses.filter(cssClass => sortSequenceRegExp.test(cssClass));
}