UNPKG

@progress/kendo-angular-grid

Version:

Kendo UI Grid for Angular - high performance data grid with paging, filtering, virtualization, CRUD, and more.

57 lines (56 loc) 2.27 kB
/**----------------------------------------------------------------------------------------- * Copyright © 2025 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the project root for more information *-------------------------------------------------------------------------------------------*/ import { Injectable } from '@angular/core'; import { Subject } from 'rxjs'; import { DetailCollapseEvent } from './detail-collapse-event'; import { DetailExpandEvent } from './detail-expand-event'; import * as i0 from "@angular/core"; /** * @hidden */ export class DetailsService { userCallback; changes = new Subject(); rowState = new Set(); ngOnDestroy() { this.rowState.clear(); } isExpanded(index, dataItem) { if (this.userCallback) { return this.userCallback({ index, dataItem }); } return this.rowState.has(index); } toggleRow(index, dataItem) { if (this.isExpanded(index, dataItem)) { this.collapseRow(index, dataItem); } else { this.expandRow(index, dataItem); } } expandRow(index, dataItem) { const prevented = this.emitEvent({ dataItem, index, expand: true }); if (!prevented && !this.userCallback) { this.rowState.add(index); } } collapseRow(index, dataItem) { const prevented = this.emitEvent({ dataItem, index, expand: false }); if (!prevented && !this.userCallback) { this.rowState.delete(index); } } emitEvent(args) { const eventArg = new (args.expand ? DetailExpandEvent : DetailCollapseEvent)(args); this.changes.next(eventArg); return eventArg.isDefaultPrevented(); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DetailsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DetailsService }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DetailsService, decorators: [{ type: Injectable }] });