diff --git a/packages/tabulator-table/src/tabulator-table.js b/packages/tabulator-table/src/tabulator-table.js
index 2af016bda7aa679361a001f043ecd3119e49f755..169652d5278eab127d7605cbe675f93bd9b82c21 100644
--- a/packages/tabulator-table/src/tabulator-table.js
+++ b/packages/tabulator-table/src/tabulator-table.js
@@ -145,10 +145,11 @@ export class TabulatorTable extends ScopedElementsMixin(DBPLitElement) {
 
                     if (allSelected) {
                         this.tabulatorTable.deselectRow();
-                        this._('#select_all').checked = false;
                     } else {
                         this.tabulatorTable.selectRow("visible");
-                        this._('#select_all').checked = true;
+                    }
+                    if (this._('#select_all')) {
+                        this._('#select_all').checked = !allSelected;
                     }
                     e.preventDefault();
                 },
@@ -157,13 +158,11 @@ export class TabulatorTable extends ScopedElementsMixin(DBPLitElement) {
     }
 
     rowClickFunction(e, row) {
-        if (this.tabulatorTable !== null &&
-            this.tabulatorTable.getSelectedRows().length ===
-            this.tabulatorTable.getRows("visible").length) {
-            this._('#select_all').checked = true;
-        } else {
-            this._('#select_all').checked = false;
-        }
+        if (!this._('#select_all') || !this.tabulatorTable)
+            return;
+
+        const check = this.tabulatorTable.getSelectedRows().length === this.tabulatorTable.getRows("visible").length;
+        this._('#select_all').checked = check;
     }
 
     /**
@@ -195,6 +194,7 @@ export class TabulatorTable extends ScopedElementsMixin(DBPLitElement) {
     setData(data) {
         if (!this.tabulatorTable)
             return;
+
         this.data = data;
         this.tabulatorTable.setData(this.data);
     }