@rivet-health/design-system 32.0.0 → 32.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -20,10 +20,19 @@ export class SimpleTableComponent {
20
20
  const allowedTypes = RivTable.ColumnDataTypes.join(', ');
21
21
  throw new Error(`Each header cell must define an appropriate dataType, one of ${allowedTypes}`);
22
22
  }
23
- headerCell.alignment = RivTable.getColumnAlignment(dataType, i === 0);
24
- headerCell.leftPinOffset = runningWidthTotal;
23
+ const newAlignment = RivTable.getColumnAlignment(dataType, i === 0);
24
+ const newLeftPinOffset = runningWidthTotal;
25
25
  runningWidthTotal += headerCell.width;
26
- headerCell.cdr.markForCheck();
26
+ const changed = headerCell.alignment != newAlignment ||
27
+ headerCell.leftPinOffset != newLeftPinOffset;
28
+ headerCell.alignment = newAlignment;
29
+ headerCell.leftPinOffset = newLeftPinOffset;
30
+ // Only mark for check when changed to prevent infinite cycles
31
+ if (changed) {
32
+ queueMicrotask(() => {
33
+ headerCell.cdr.markForCheck();
34
+ });
35
+ }
27
36
  });
28
37
  const getCellCoordinates = createCellCoordinateCalculator(dataCells.map(dataCell => {
29
38
  const element = dataCell.elementRef.nativeElement;
@@ -36,13 +45,25 @@ export class SimpleTableComponent {
36
45
  dataCells.forEach((dataCell, cellIndex) => {
37
46
  const bounds = getCellCoordinates(cellIndex);
38
47
  const headerCell = headerCells.get(bounds.start.col);
48
+ let changed = false;
39
49
  if (headerCell) {
50
+ changed =
51
+ dataCell.alignment != headerCell.alignment ||
52
+ dataCell.pinned != headerCell.pinned ||
53
+ dataCell.leftPinOffset != headerCell.leftPinOffset;
40
54
  dataCell.alignment = headerCell.alignment;
41
55
  dataCell.pinned = headerCell.pinned;
42
56
  dataCell.leftPinOffset = headerCell.leftPinOffset;
43
57
  }
44
- dataCell.isLastRow = bounds.end.row === maxRow;
45
- dataCell.cdr.markForCheck();
58
+ const newIsLastRow = bounds.end.row === maxRow;
59
+ changed = changed || dataCell.isLastRow != newIsLastRow;
60
+ dataCell.isLastRow = newIsLastRow;
61
+ // Only mark for check when changed to prevent infinite cycles
62
+ if (changed) {
63
+ queueMicrotask(() => {
64
+ dataCell.cdr.markForCheck();
65
+ });
66
+ }
46
67
  });
47
68
  }
48
69
  }
@@ -61,4 +82,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
61
82
  type: ContentChildren,
62
83
  args: [SimpleTableCellComponent, { descendants: true }]
63
84
  }] } });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL3RhYmxlL3NpbXBsZS10YWJsZS9zaW1wbGUtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvdGFibGUvc2ltcGxlLXRhYmxlL3NpbXBsZS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxHQUdoQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7OztBQVF0RixNQUFNLE9BQU8sb0JBQW9CO0lBVS9CLHFCQUFxQjtRQUNuQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLE1BQU0sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUV2QyxJQUFJLGlCQUFpQixHQUFHLENBQUMsQ0FBQztRQUMxQixXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3BDLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxVQUFVLENBQUM7WUFDaEMsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDYixNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDekQsTUFBTSxJQUFJLEtBQUssQ0FDYixnRUFBZ0UsWUFBWSxFQUFFLENBQy9FLENBQUM7YUFDSDtZQUVELFVBQVUsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDdEUsVUFBVSxDQUFDLGFBQWEsR0FBRyxpQkFBaUIsQ0FBQztZQUM3QyxpQkFBaUIsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDO1lBQ3RDLFVBQVUsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLGtCQUFrQixHQUFHLDhCQUE4QixDQUN2RCxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3ZCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO1lBQ2xELE9BQU87Z0JBQ0wsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQzdELE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDO2FBQzlELENBQUM7UUFDSixDQUFDLENBQUMsRUFDRixXQUFXLENBQUMsTUFBTSxDQUNuQixDQUFDO1FBRUYsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FDckIsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUMxRCxDQUFDO1FBRUYsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsRUFBRTtZQUN4QyxNQUFNLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUU3QyxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckQsSUFBSSxVQUFVLEVBQUU7Z0JBQ2QsUUFBUSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDO2dCQUMxQyxRQUFRLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7Z0JBQ3BDLFFBQVEsQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQzthQUNuRDtZQUVELFFBQVEsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssTUFBTSxDQUFDO1lBRS9DLFFBQVEsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztpSEEvRFUsb0JBQW9CO3FHQUFwQixvQkFBb0IsK0tBSWQsOEJBQThCLCtEQUc5Qix3QkFBd0IsZ0RDM0IzQywrTUFRQTsyRkRZYSxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0Usa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU07OEJBSS9DLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxRQUFRO2dCQUlkLFdBQVc7c0JBRGxCLGVBQWU7dUJBQUMsOEJBQThCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUk5RCxTQUFTO3NCQURoQixlQUFlO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudENoZWNrZWQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBRdWVyeUxpc3QsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJpdlRhYmxlIH0gZnJvbSAnLi4vdGFibGUvc3RhdGUnO1xuaW1wb3J0IHsgY3JlYXRlQ2VsbENvb3JkaW5hdGVDYWxjdWxhdG9yIH0gZnJvbSAnLi9jb29yZGluYXRlLWhlbHBlcic7XG5pbXBvcnQgeyBTaW1wbGVUYWJsZUNlbGxDb21wb25lbnQgfSBmcm9tICcuL3NpbXBsZS10YWJsZS1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTaW1wbGVUYWJsZUhlYWRlckNlbGxDb21wb25lbnQgfSBmcm9tICcuL3NpbXBsZS10YWJsZS1oZWFkZXItY2VsbC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtc2ltcGxlLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpbXBsZS10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NpbXBsZS10YWJsZS5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTaW1wbGVUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudENoZWNrZWQge1xuICBAQ29udGVudENoaWxkKCdoZWFkZXInKVxuICBoZWFkZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHZvaWQ+O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2ltcGxlVGFibGVIZWFkZXJDZWxsQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIHByaXZhdGUgaGVhZGVyQ2VsbHM/OiBRdWVyeUxpc3Q8U2ltcGxlVGFibGVIZWFkZXJDZWxsQ29tcG9uZW50PjtcblxuICBAQ29udGVudENoaWxkcmVuKFNpbXBsZVRhYmxlQ2VsbENvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwcml2YXRlIGRhdGFDZWxscz86IFF1ZXJ5TGlzdDxTaW1wbGVUYWJsZUNlbGxDb21wb25lbnQ+O1xuXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpIHtcbiAgICB0aGlzLnNldENlbGxQcm9wZXJ0aWVzKCk7XG4gIH1cblxuICBwcml2YXRlIHNldENlbGxQcm9wZXJ0aWVzKCkge1xuICAgIGNvbnN0IHsgaGVhZGVyQ2VsbHMsIGRhdGFDZWxscyB9ID0gdGhpcztcbiAgICBpZiAoIWhlYWRlckNlbGxzIHx8ICFkYXRhQ2VsbHMpIHJldHVybjtcblxuICAgIGxldCBydW5uaW5nV2lkdGhUb3RhbCA9IDA7XG4gICAgaGVhZGVyQ2VsbHMuZm9yRWFjaCgoaGVhZGVyQ2VsbCwgaSkgPT4ge1xuICAgICAgY29uc3QgeyBkYXRhVHlwZSB9ID0gaGVhZGVyQ2VsbDtcbiAgICAgIGlmICghZGF0YVR5cGUpIHtcbiAgICAgICAgY29uc3QgYWxsb3dlZFR5cGVzID0gUml2VGFibGUuQ29sdW1uRGF0YVR5cGVzLmpvaW4oJywgJyk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgRWFjaCBoZWFkZXIgY2VsbCBtdXN0IGRlZmluZSBhbiBhcHByb3ByaWF0ZSBkYXRhVHlwZSwgb25lIG9mICR7YWxsb3dlZFR5cGVzfWAsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGhlYWRlckNlbGwuYWxpZ25tZW50ID0gUml2VGFibGUuZ2V0Q29sdW1uQWxpZ25tZW50KGRhdGFUeXBlLCBpID09PSAwKTtcbiAgICAgIGhlYWRlckNlbGwubGVmdFBpbk9mZnNldCA9IHJ1bm5pbmdXaWR0aFRvdGFsO1xuICAgICAgcnVubmluZ1dpZHRoVG90YWwgKz0gaGVhZGVyQ2VsbC53aWR0aDtcbiAgICAgIGhlYWRlckNlbGwuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgZ2V0Q2VsbENvb3JkaW5hdGVzID0gY3JlYXRlQ2VsbENvb3JkaW5hdGVDYWxjdWxhdG9yKFxuICAgICAgZGF0YUNlbGxzLm1hcChkYXRhQ2VsbCA9PiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkYXRhQ2VsbC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcm93c3BhbjogcGFyc2VJbnQoZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3Jvd3NwYW4nKSB8fCAnMScsIDEwKSxcbiAgICAgICAgICBjb2xzcGFuOiBwYXJzZUludChlbGVtZW50LmdldEF0dHJpYnV0ZSgnY29sc3BhbicpIHx8ICcxJywgMTApLFxuICAgICAgICB9O1xuICAgICAgfSksXG4gICAgICBoZWFkZXJDZWxscy5sZW5ndGgsXG4gICAgKTtcblxuICAgIGNvbnN0IG1heFJvdyA9IE1hdGgubWF4KFxuICAgICAgLi4uZGF0YUNlbGxzLm1hcCgoXywgaSkgPT4gZ2V0Q2VsbENvb3JkaW5hdGVzKGkpLmVuZC5yb3cpLFxuICAgICk7XG5cbiAgICBkYXRhQ2VsbHMuZm9yRWFjaCgoZGF0YUNlbGwsIGNlbGxJbmRleCkgPT4ge1xuICAgICAgY29uc3QgYm91bmRzID0gZ2V0Q2VsbENvb3JkaW5hdGVzKGNlbGxJbmRleCk7XG5cbiAgICAgIGNvbnN0IGhlYWRlckNlbGwgPSBoZWFkZXJDZWxscy5nZXQoYm91bmRzLnN0YXJ0LmNvbCk7XG4gICAgICBpZiAoaGVhZGVyQ2VsbCkge1xuICAgICAgICBkYXRhQ2VsbC5hbGlnbm1lbnQgPSBoZWFkZXJDZWxsLmFsaWdubWVudDtcbiAgICAgICAgZGF0YUNlbGwucGlubmVkID0gaGVhZGVyQ2VsbC5waW5uZWQ7XG4gICAgICAgIGRhdGFDZWxsLmxlZnRQaW5PZmZzZXQgPSBoZWFkZXJDZWxsLmxlZnRQaW5PZmZzZXQ7XG4gICAgICB9XG5cbiAgICAgIGRhdGFDZWxsLmlzTGFzdFJvdyA9IGJvdW5kcy5lbmQucm93ID09PSBtYXhSb3c7XG5cbiAgICAgIGRhdGFDZWxsLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGhlYWRlciAqbmdJZj1cImhlYWRlclRlbXBsYXRlXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPC9oZWFkZXI+XG48ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gIDx0YWJsZT5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvdGFibGU+XG48L2Rpdj5cbiJdfQ==
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL3RhYmxlL3NpbXBsZS10YWJsZS9zaW1wbGUtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvdGFibGUvc2ltcGxlLXRhYmxlL3NpbXBsZS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxHQUdoQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7OztBQVF0RixNQUFNLE9BQU8sb0JBQW9CO0lBVS9CLHFCQUFxQjtRQUNuQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLE1BQU0sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUV2QyxJQUFJLGlCQUFpQixHQUFHLENBQUMsQ0FBQztRQUMxQixXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3BDLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxVQUFVLENBQUM7WUFDaEMsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDYixNQUFNLFlBQVksR0FBRyxRQUFRLENB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QUNsQixRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUM5QixDQUFDLENBQUMsQ0FBQzthQUNKO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztpSEF4RlUsb0JBQW9CO3FHQUFwQixvQkFBb0IsK0tBSWQsOEJBQThCLCtEQUc5Qix3QkFBd0IsZ0RDM0IzQywrTUFRQTsyRkRZYSxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0Usa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU07OEJBSS9DLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxRQUFRO2dCQUlkLFdBQVc7c0JBRGxCLGVBQWU7dUJBQUMsOEJBQThCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUk5RCxTQUFTO3NCQURoQixlQUFlO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudENoZWNrZWQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBRdWVyeUxpc3QsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJpdlRhYmxlIH0gZnJvbSAnLi4vdGFibGUvc3RhdGUnO1xuaW1wb3J0IHsgY3JlYXRlQ2VsbENvb3JkaW5hdGVDYWxjdWxhdG9yIH0gZnJvbSAnLi9jb29yZGluYXRlLWhlbHBlcic7XG5pbXBvcnQgeyBTaW1wbGVUYWJsZUNlbGxDb21wb25lbnQgfSBmcm9tICcuL3NpbXBsZS10YWJsZS1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTaW1wbGVUYWJsZUhlYWRlckNlbGxDb21wb25lbnQgfSBmcm9tICcuL3NpbXBsZS10YWJsZS1oZWFkZXItY2VsbC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtc2ltcGxlLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpbXBsZS10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NpbXBsZS10YWJsZS5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTaW1wbGVUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudENoZWNrZWQge1xuICBAQ29udGVudENoaWxkKCdoZWFkZXInKVxuICBoZWFkZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHZvaWQ+O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2ltcGxlVGFibGVIZWFkZXJDZWxsQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIHByaXZhdGUgaGVhZGVyQ2VsbHM/OiBRdWVyeUxpc3Q8U2ltcGxlVGFibGVIZWFkZXJDZWxsQ29tcG9uZW50PjtcblxuICBAQ29udGVudENoaWxkcmVuKFNpbXBsZVRhYmxlQ2VsbENvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwcml2YXRlIGRhdGFDZWxscz86IFF1ZXJ5TGlzdDxTaW1wbGVUYWJsZUNlbGxDb21wb25lbnQ+O1xuXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpIHtcbiAgICB0aGlzLnNldENlbGxQcm9wZXJ0aWVzKCk7XG4gIH1cblxuICBwcml2YXRlIHNldENlbGxQcm9wZXJ0aWVzKCkge1xuICAgIGNvbnN0IHsgaGVhZGVyQ2VsbHMsIGRhdGFDZWxscyB9ID0gdGhpcztcbiAgICBpZiAoIWhlYWRlckNlbGxzIHx8ICFkYXRhQ2VsbHMpIHJldHVybjtcblxuICAgIGxldCBydW5uaW5nV2lkdGhUb3RhbCA9IDA7XG4gICAgaGVhZGVyQ2VsbHMuZm9yRWFjaCgoaGVhZGVyQ2VsbCwgaSkgPT4ge1xuICAgICAgY29uc3QgeyBkYXRhVHlwZSB9ID0gaGVhZGVyQ2VsbDtcbiAgICAgIGlmICghZGF0YVR5cGUpIHtcbiAgICAgICAgY29uc3QgYWxsb3dlZFR5cGVzID0gUml2VGFibGUuQ29sdW1uRGF0YVR5cGVzLmpvaW4oJywgJyk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgRWFjaCBoZWFkZXIgY2VsbCBtdXN0IGRlZmluZSBhbiBhcHByb3ByaWF0ZSBkYXRhVHlwZSwgb25lIG9mICR7YWxsb3dlZFR5cGVzfWAsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld0FsaWdubWVudCA9IFJpdlRhYmxlLmdldENvbHVtbkFsaWdubWVudChkYXRhVHlwZSwgaSA9PT0gMCk7XG4gICAgICBjb25zdCBuZXdMZWZ0UGluT2Zmc2V0ID0gcnVubmluZ1dpZHRoVG90YWw7XG4gICAgICBydW5uaW5nV2lkdGhUb3RhbCArPSBoZWFkZXJDZWxsLndpZHRoO1xuXG4gICAgICBjb25zdCBjaGFuZ2VkID1cbiAgICAgICAgaGVhZGVyQ2VsbC5hbGlnbm1lbnQgIT0gbmV3QWxpZ25tZW50IHx8XG4gICAgICAgIGhlYWRlckNlbGwubGVmdFBpbk9mZnNldCAhPSBuZXdMZWZ0UGluT2Zmc2V0O1xuICAgICAgaGVhZGVyQ2VsbC5hbGlnbm1lbnQgPSBuZXdBbGlnbm1lbnQ7XG4gICAgICBoZWFkZXJDZWxsLmxlZnRQaW5PZmZzZXQgPSBuZXdMZWZ0UGluT2Zmc2V0O1xuXG4gICAgICAvLyBPbmx5IG1hcmsgZm9yIGNoZWNrIHdoZW4gY2hhbmdlZCB0byBwcmV2ZW50IGluZmluaXRlIGN5Y2xlc1xuICAgICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICAgIGhlYWRlckNlbGwuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IGdldENlbGxDb29yZGluYXRlcyA9IGNyZWF0ZUNlbGxDb29yZGluYXRlQ2FsY3VsYXRvcihcbiAgICAgIGRhdGFDZWxscy5tYXAoZGF0YUNlbGwgPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZGF0YUNlbGwuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJvd3NwYW46IHBhcnNlSW50KGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdyb3dzcGFuJykgfHwgJzEnLCAxMCksXG4gICAgICAgICAgY29sc3BhbjogcGFyc2VJbnQoZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2NvbHNwYW4nKSB8fCAnMScsIDEwKSxcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgICAgaGVhZGVyQ2VsbHMubGVuZ3RoLFxuICAgICk7XG5cbiAgICBjb25zdCBtYXhSb3cgPSBNYXRoLm1heChcbiAgICAgIC4uLmRhdGFDZWxscy5tYXAoKF8sIGkpID0+IGdldENlbGxDb29yZGluYXRlcyhpKS5lbmQucm93KSxcbiAgICApO1xuXG4gICAgZGF0YUNlbGxzLmZvckVhY2goKGRhdGFDZWxsLCBjZWxsSW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGJvdW5kcyA9IGdldENlbGxDb29yZGluYXRlcyhjZWxsSW5kZXgpO1xuXG4gICAgICBjb25zdCBoZWFkZXJDZWxsID0gaGVhZGVyQ2VsbHMuZ2V0KGJvdW5kcy5zdGFydC5jb2wpO1xuICAgICAgbGV0IGNoYW5nZWQgPSBmYWxzZTtcbiAgICAgIGlmIChoZWFkZXJDZWxsKSB7XG4gICAgICAgIGNoYW5nZWQgPVxuICAgICAgICAgIGRhdGFDZWxsLmFsaWdubWVudCAhPSBoZWFkZXJDZWxsLmFsaWdubWVudCB8fFxuICAgICAgICAgIGRhdGFDZWxsLnBpbm5lZCAhPSBoZWFkZXJDZWxsLnBpbm5lZCB8fFxuICAgICAgICAgIGRhdGFDZWxsLmxlZnRQaW5PZmZzZXQgIT0gaGVhZGVyQ2VsbC5sZWZ0UGluT2Zmc2V0O1xuXG4gICAgICAgIGRhdGFDZWxsLmFsaWdubWVudCA9IGhlYWRlckNlbGwuYWxpZ25tZW50O1xuICAgICAgICBkYXRhQ2VsbC5waW5uZWQgPSBoZWFkZXJDZWxsLnBpbm5lZDtcbiAgICAgICAgZGF0YUNlbGwubGVmdFBpbk9mZnNldCA9IGhlYWRlckNlbGwubGVmdFBpbk9mZnNldDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3SXNMYXN0Um93ID0gYm91bmRzLmVuZC5yb3cgPT09IG1heFJvdztcbiAgICAgIGNoYW5nZWQgPSBjaGFuZ2VkIHx8IGRhdGFDZWxsLmlzTGFzdFJvdyAhPSBuZXdJc0xhc3RSb3c7XG4gICAgICBkYXRhQ2VsbC5pc0xhc3RSb3cgPSBuZXdJc0xhc3RSb3c7XG5cbiAgICAgIC8vIE9ubHkgbWFyayBmb3IgY2hlY2sgd2hlbiBjaGFuZ2VkIHRvIHByZXZlbnQgaW5maW5pdGUgY3ljbGVzXG4gICAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgICAgZGF0YUNlbGwuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIiwiPGhlYWRlciAqbmdJZj1cImhlYWRlclRlbXBsYXRlXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPC9oZWFkZXI+XG48ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gIDx0YWJsZT5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvdGFibGU+XG48L2Rpdj5cbiJdfQ==
@@ -6762,10 +6762,19 @@ class SimpleTableComponent {
6762
6762
  const allowedTypes = RivTable.ColumnDataTypes.join(', ');
6763
6763
  throw new Error(`Each header cell must define an appropriate dataType, one of ${allowedTypes}`);
6764
6764
  }
6765
- headerCell.alignment = RivTable.getColumnAlignment(dataType, i === 0);
6766
- headerCell.leftPinOffset = runningWidthTotal;
6765
+ const newAlignment = RivTable.getColumnAlignment(dataType, i === 0);
6766
+ const newLeftPinOffset = runningWidthTotal;
6767
6767
  runningWidthTotal += headerCell.width;
6768
- headerCell.cdr.markForCheck();
6768
+ const changed = headerCell.alignment != newAlignment ||
6769
+ headerCell.leftPinOffset != newLeftPinOffset;
6770
+ headerCell.alignment = newAlignment;
6771
+ headerCell.leftPinOffset = newLeftPinOffset;
6772
+ // Only mark for check when changed to prevent infinite cycles
6773
+ if (changed) {
6774
+ queueMicrotask(() => {
6775
+ headerCell.cdr.markForCheck();
6776
+ });
6777
+ }
6769
6778
  });
6770
6779
  const getCellCoordinates = createCellCoordinateCalculator(dataCells.map(dataCell => {
6771
6780
  const element = dataCell.elementRef.nativeElement;
@@ -6778,13 +6787,25 @@ class SimpleTableComponent {
6778
6787
  dataCells.forEach((dataCell, cellIndex) => {
6779
6788
  const bounds = getCellCoordinates(cellIndex);
6780
6789
  const headerCell = headerCells.get(bounds.start.col);
6790
+ let changed = false;
6781
6791
  if (headerCell) {
6792
+ changed =
6793
+ dataCell.alignment != headerCell.alignment ||
6794
+ dataCell.pinned != headerCell.pinned ||
6795
+ dataCell.leftPinOffset != headerCell.leftPinOffset;
6782
6796
  dataCell.alignment = headerCell.alignment;
6783
6797
  dataCell.pinned = headerCell.pinned;
6784
6798
  dataCell.leftPinOffset = headerCell.leftPinOffset;
6785
6799
  }
6786
- dataCell.isLastRow = bounds.end.row === maxRow;
6787
- dataCell.cdr.markForCheck();
6800
+ const newIsLastRow = bounds.end.row === maxRow;
6801
+ changed = changed || dataCell.isLastRow != newIsLastRow;
6802
+ dataCell.isLastRow = newIsLastRow;
6803
+ // Only mark for check when changed to prevent infinite cycles
6804
+ if (changed) {
6805
+ queueMicrotask(() => {
6806
+ dataCell.cdr.markForCheck();
6807
+ });
6808
+ }
6788
6809
  });
6789
6810
  }
6790
6811
  }