Skip to content

Commit 086c03b

Browse files
committed
fixed table modifiers
1 parent 9ee9fb3 commit 086c03b

File tree

1 file changed

+36
-14
lines changed
  • packages/components/src/components/hds/advanced-table

1 file changed

+36
-14
lines changed

packages/components/src/components/hds/advanced-table/index.ts

Lines changed: 36 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { tracked } from '@glimmer/tracking';
1010
import { guidFor } from '@ember/object/internals';
1111
import { service } from '@ember/service';
1212
import { modifier } from 'ember-modifier';
13+
import { schedule } from '@ember/runloop';
1314
import HdsAdvancedTableTableModel from './models/table.ts';
1415

1516
import type Owner from '@ember/owner';
@@ -443,28 +444,49 @@ export default class HdsAdvancedTable extends Component<HdsAdvancedTableSignatur
443444
return classes.join(' ');
444445
}
445446

446-
private _syncTableData =
447-
modifier<HdsAdvancedTableSyncTableDataModifierSignature>(
447+
private _syncTableData = (() => {
448+
let isFirstRun = true;
449+
450+
return modifier<HdsAdvancedTableSyncTableDataModifierSignature>(
448451
(_element, _positional, { columns, model, sortBy, sortOrder }) => {
449-
this._tableModel.setupData({
450-
columns,
451-
model,
452-
sortBy,
453-
sortOrder,
452+
// eslint-disable-next-line ember/no-runloop
453+
schedule('afterRender', (): void => {
454+
if (isFirstRun) {
455+
isFirstRun = false;
456+
return;
457+
}
458+
this._tableModel.setupData({
459+
columns,
460+
model,
461+
sortBy,
462+
sortOrder,
463+
});
454464
});
455465
}
456466
);
467+
})();
457468

458-
private _syncColumnOrder =
459-
modifier<HdsAdvancedTableSyncColumnOrderModifierSignature>(
460-
(_element, _positional, { columnOrder }) => {
461-
if (columnOrder === undefined) {
462-
return;
463-
}
469+
private _syncColumnOrder = (() => {
470+
let isFirstRun = true;
464471

465-
this._tableModel.columnOrder = columnOrder;
472+
return modifier<HdsAdvancedTableSyncColumnOrderModifierSignature>(
473+
(_element, _positional, { columnOrder }) => {
474+
// eslint-disable-next-line ember/no-runloop
475+
schedule('afterRender', (): void => {
476+
if (isFirstRun) {
477+
isFirstRun = false;
478+
return;
479+
}
480+
481+
if (columnOrder === undefined) {
482+
return;
483+
}
484+
485+
this._tableModel.columnOrder = columnOrder;
486+
});
466487
}
467488
);
489+
})();
468490

469491
private _registerGridElement = modifier((element: HTMLDivElement) => {
470492
this._tableModel.gridElement = element;

0 commit comments

Comments
 (0)