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;