import {
Component,
ContentChild,
AfterContentInit,
inject,
} from "@angular/core";
import { SamPaginationNextComponent } from "../../../../layout/pagination/pagination.module";
import { SamPageNextService } from "../architecture";
@Component({
selector: "sam-action-bar",
template: `
`,
standalone: false,
})
export class SamActionBarComponent implements AfterContentInit {
private _service = inject(SamPageNextService, { optional: true });
@ContentChild(SamPaginationNextComponent, { static: true })
public pagination: SamPaginationNextComponent;
public ngAfterContentInit() {
if (this.pagination) {
this._setupPagination();
}
}
private _setupPagination() {
if (this.pagination) {
this.pagination.pageChange.subscribe((evt) => this._onPageChange(evt));
// Fire off initial value
this.pagination.pageChange.emit(this.pagination.currentPage);
this.pagination.unitsChange.subscribe((evt) => this._onUnitsChange(evt));
}
}
private _onPageChange(event?: unknown) {
void event;
const pg = {
pageSize: this.pagination.pageSize,
currentPage: this.pagination.currentPage,
totalPages: this.pagination.totalPages,
totalUnits: this.pagination.totalUnits,
};
this._service.model.properties["pagination"].setValue(pg);
}
private _onUnitsChange(size?: unknown) {
void size;
const pg = {
pageSize: this.pagination.pageSize,
currentPage: this.pagination.currentPage,
totalPages: this.pagination.totalPages,
totalUnits: this.pagination.totalUnits,
};
this._service.model.properties["pagination"].setValue(pg);
}
}