MCPcopy Create free account
hub / github.com/handsontable/handsontable / appendColHeader

Method appendColHeader

handsontable/src/tableView.ts:1526–1585  ·  view source on GitHub ↗

* Append column header to a TH element. * * @private * @param {number} visualColumnIndex Visual column index. * @param {HTMLTableCellElement} TH The table header element. * @param {Function} [label] The function that returns the header label. * @param {number} [headerLevel=0] The i

(
    visualColumnIndex: number,
    TH: HTMLTableCellElement,
    label = this.hot.getColHeader,
    headerLevel = 0
  )

Source from the content-addressed store, hash-verified

1524 * values counting from 0 to N).
1525 */
1526 appendColHeader(
1527 visualColumnIndex: number,
1528 TH: HTMLTableCellElement,
1529 label = this.hot.getColHeader,
1530 headerLevel = 0
1531 ) {
1532 const getColumnHeaderClassNames = (): string[] => {
1533 const metaHeaderClassNames =
1534 visualColumnIndex >= 0 ?
1535 this.hot.getColumnMeta(visualColumnIndex).headerClassName :
1536 null;
1537
1538 if (!metaHeaderClassNames) {
1539 return [];
1540 }
1541
1542 const classes: string[] = Array.isArray(metaHeaderClassNames)
1543 ? (metaHeaderClassNames as string[])
1544 : (metaHeaderClassNames as string).split(' ');
1545
1546 return classes.flatMap(cls => cls.split(' ')).filter(cls => cls.length > 0);
1547 };
1548
1549 if (TH.firstChild) {
1550 const container = TH.firstChild as HTMLElement;
1551
1552 if (hasClass(container, 'relative')) {
1553 this.updateCellHeader(
1554 container.querySelector<HTMLElement>('.colHeader')!, visualColumnIndex, label, headerLevel);
1555
1556 container.className = '';
1557 addClass(container, ['relative', ...getColumnHeaderClassNames()]);
1558
1559 } else {
1560 empty(TH);
1561 this.appendColHeader(visualColumnIndex, TH, label, headerLevel);
1562 }
1563
1564 } else {
1565 const { rootDocument } = this.hot;
1566 const div = rootDocument.createElement('div');
1567 const span = rootDocument.createElement('span');
1568 const classNames = getColumnHeaderClassNames();
1569
1570 div.classList.add('relative', ...classNames);
1571 span.className = 'colHeader';
1572
1573 if (this.settings.ariaTags) {
1574 setAttribute(div, [A11Y_PRESENTATION()]);
1575 setAttribute(span, [A11Y_PRESENTATION()]);
1576 }
1577
1578 this.updateCellHeader(span, visualColumnIndex, label, headerLevel);
1579
1580 div.appendChild(span);
1581 TH.appendChild(div);
1582 }
1583

Callers 15

initializeWalkontableMethod · 0.95
addColumnMethod · 0.80
columnHeaderFunction · 0.80
columnHeaderFunction · 0.80
columnHeaderFunction · 0.80
columnHeaderFunction · 0.80
columnHeaderFunction · 0.80
columnHeaderFunction · 0.80
columnHeaderFunction · 0.80
columnHeaderFunction · 0.80
columnHeaderFunction · 0.80

Calls 8

updateCellHeaderMethod · 0.95
hasClassFunction · 0.90
addClassFunction · 0.90
emptyFunction · 0.90
setAttributeFunction · 0.90
A11Y_PRESENTATIONFunction · 0.90
runHooksMethod · 0.65
addMethod · 0.45

Tested by 15

columnHeaderFunction · 0.64
columnHeaderFunction · 0.64
columnHeaderFunction · 0.64
columnHeaderFunction · 0.64
columnHeaderFunction · 0.64
columnHeaderFunction · 0.64
columnHeaderFunction · 0.64
columnHeaderFunction · 0.64
columnHeaderFunction · 0.64
columnHeaderFunction · 0.64
columnHeaderFunction · 0.64
columnHeaderFunction · 0.64