Skip to content

Commit f4d3433

Browse files
committed
fix(Datatable): fix exception when using checkbox
1 parent 5c2da10 commit f4d3433

File tree

3 files changed

+21
-6
lines changed

3 files changed

+21
-6
lines changed

components/mdc/Datatable/Datatable.svelte

+14-3
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,24 @@
22
<script>
33
import { MDCDataTable } from '@material/data-table'
44
import { createEventDispatcher, onMount } from 'svelte'
5-
5+
/**
6+
* @prop {string}
7+
* @description used for aria-label
8+
*/
69
export let label = ''
10+
/**
11+
* @prop {any}
12+
* @description used to register new Datatable Checkboxes when length changes
13+
*/
14+
export let checkboxIsMountedArray = []
715
816
const dispatch = createEventDispatcher()
17+
let dataTable = {}
918
1019
let element = {}
1120
1221
onMount(() => {
13-
const dataTable = new MDCDataTable(element)
22+
dataTable = new MDCDataTable(element)
1423
1524
dataTable.listen('MDCDataTable:sorted', (event) => {
1625
dispatch('sorted', event.detail)
@@ -30,8 +39,10 @@ onMount(() => {
3039
3140
// This does not work because of an MDC bug. See https://github.com/material-components/material-components-web/issues/6385
3241
// If checkboxes are needed, check for a release of the PR linked to the above issue, or pull in the destroy code here.
33-
//return () => dataTable.destroy()
42+
return () => dataTable.destroy()
3443
})
44+
45+
$: checkboxIsMountedArray.length && dataTable?.layout()
3546
</script>
3647
3748
<div class="mdc-data-table w-100 {$$props.class}" bind:this={element}>

components/mdc/Datatable/DatatableCheckbox.svelte

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
<script>
22
import { generateRandomID } from '../../../random'
3-
import { createEventDispatcher } from 'svelte'
3+
import { createEventDispatcher, onMount } from 'svelte'
44
55
export let disabled = false
66
7-
let checked = false
7+
let checked
88
99
const inputID = generateRandomID('checkbox-')
1010
11+
onMount(() => dispatch('mounted'))
12+
1113
$: checked, handleChange()
1214
1315
const dispatch = createEventDispatcher()

components/mdc/Datatable/_index.scss

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
@use '@material/data-table/data-table';
1+
@use "@material/checkbox"; // Required only for data table with row selection.
2+
@use "@material/data-table/data-table";
23

4+
@include checkbox.core-styles;
35
@include data-table.core-styles;
46
@include data-table.theme-baseline;

0 commit comments

Comments
 (0)