primeng-turbotable

Turbotable : p-tableHeaderCheckbox selects disabled lines


I am facing a problem on PrimeNG TurboTable.

I started from the following example: https://www.primefaces.org/primeng/#/table/selection and more particularly from the Checkbox Selection example.

The only difference is that on some p-tableCheckbox I added a [disabled]="true"

enter image description here

This works very well if I select a disabled line it does not activate and can not be selected, but when I click on p-tableHeaderCheckbox all the lines are selected even the lines in disabled.

enter image description here

In addition, the selection also counts the lines in status disabled or it should only take lines with no status disabled I made an example on stackblitz : https://stackblitz.com/edit/angular-gnbsml?file=src%2Fapp%2Fapp.component.html

How to prevent tableHeaderCheckbox from also selecting disable lines?

Thank you in advance for your answers


Solution

  • It's failing when we have only disabled rows after filter. I have fixed it by checking active rows.

    ngAfterViewInit(): void {
        const orig_updateCheckedState = this._headerCheckBox.updateCheckedState;
        const me = this;
        this._headerCheckBox.updateCheckedState = function() {
            const cars: any[] = me._table.filteredValue || me._table.value;
            const selection: any[] = me._table.selection;
            let actRows: boolean = false;
            for (const car of cars) {
                if (!me.isRowDisabled(car)) {
                    actRows = true;
                    const selected = selection && selection.indexOf(car) >= 0;
                    if (!selected) return false;
                }
            }
            if (actRows) {
                return true
            } else {
                return false;
            }
        };
    }