diff --git a/COMPONENT_INDEX.md b/COMPONENT_INDEX.md
index 42c32a27..9142ac61 100644
--- a/COMPONENT_INDEX.md
+++ b/COMPONENT_INDEX.md
@@ -1004,6 +1004,7 @@ export interface DataTableCell {
| click | dispatched | { header?: DataTableHeader; row?: DataTableRow; cell?: DataTableCell; }
|
| click:header--expand | dispatched | { expanded: boolean; }
|
| click:header | dispatched | { header: DataTableHeader; sortDirection?: "ascending" | "descending" | "none" }
|
+| click:header--select | dispatched | { indeterminate: boolean; selected: boolean; }
|
| click:row | dispatched | DataTableRow
|
| mouseenter:row | dispatched | DataTableRow
|
| mouseleave:row | dispatched | DataTableRow
|
diff --git a/docs/src/COMPONENT_API.json b/docs/src/COMPONENT_API.json
index c4024a81..0a032b3c 100644
--- a/docs/src/COMPONENT_API.json
+++ b/docs/src/COMPONENT_API.json
@@ -2647,6 +2647,11 @@
"name": "click:header",
"detail": "{ header: DataTableHeader; sortDirection?: \"ascending\" | \"descending\" | \"none\" }"
},
+ {
+ "type": "dispatched",
+ "name": "click:header--select",
+ "detail": "{ indeterminate: boolean; selected: boolean; }"
+ },
{ "type": "dispatched", "name": "click:row", "detail": "DataTableRow" },
{
"type": "dispatched",
diff --git a/src/DataTable/DataTable.svelte b/src/DataTable/DataTable.svelte
index 32ab17a6..a24a1d7f 100644
--- a/src/DataTable/DataTable.svelte
+++ b/src/DataTable/DataTable.svelte
@@ -14,6 +14,7 @@
* @event {{ header?: DataTableHeader; row?: DataTableRow; cell?: DataTableCell; }} click
* @event {{ expanded: boolean; }} click:header--expand
* @event {{ header: DataTableHeader; sortDirection?: "ascending" | "descending" | "none" }} click:header
+ * @event {{ indeterminate: boolean; selected: boolean; }} click:header--select
* @event {DataTableRow} click:row
* @event {DataTableRow} mouseenter:row
* @event {DataTableRow} mouseleave:row
@@ -316,6 +317,11 @@
checked="{selectAll}"
indeterminate="{indeterminate}"
on:change="{(e) => {
+ dispatch('click:header--select', {
+ indeterminate,
+ selected: !indeterminate && e.target.checked,
+ });
+
if (indeterminate) {
e.target.checked = false;
selectAll = false;
diff --git a/types/DataTable/DataTable.svelte.d.ts b/types/DataTable/DataTable.svelte.d.ts
index 67ba8eda..80747eea 100644
--- a/types/DataTable/DataTable.svelte.d.ts
+++ b/types/DataTable/DataTable.svelte.d.ts
@@ -191,6 +191,10 @@ export default class DataTable extends SvelteComponentTyped<
header: DataTableHeader;
sortDirection?: "ascending" | "descending" | "none";
}>;
+ ["click:header--select"]: CustomEvent<{
+ indeterminate: boolean;
+ selected: boolean;
+ }>;
["click:row"]: CustomEvent;
["mouseenter:row"]: CustomEvent;
["mouseleave:row"]: CustomEvent;