xxxxxxxxxx
1
<div id="datatable-custom"></div>
1
1
xxxxxxxxxx
1
const customDatatable = document.getElementById('datatable-custom');
2
3
const setActions = () => {
4
document.getElementsByClassName('call-btn').forEach(btn => {
5
btn.addEventListener('click', () => {
6
console.log(`call ${btn.attributes['data-mdb-number'].value}`)
7
})
8
})
9
10
document.getElementsByClassName('message-btn').forEach(btn => {
11
btn.addEventListener('click', () => {
12
console.log(`send a message to ${btn.attributes['data-mdb-email'].value}`)
13
})
14
})
15
}
16
17
customDatatable.addEventListener('render.mdb.datatable', setActions);
18
19
new mdb.Datatable(customDatatable, {
20
columns: [
21
{ label: 'Name', field: 'name' },
22
{ label: 'Position', field: 'position' },
23
{ label: 'Office', field: 'office' },
24
{ label: 'Contact', field: 'contact', sort: false },
25
],
26
rows: [
27
{
28
name: 'Tiger Nixon',
29
position: 'System Architect',
30
office: 'Edinburgh',
31
phone: '+48000000000',
32
email: 'tiger.nixon@gmail.com'
33
},
34
{
35
name: 'Sonya Frost',
36
position: 'Software Engineer',
37
office: 'Edinburgh',
38
phone: '+53456123456',
39
email: 'sfrost@gmail.com'
40
},
41
{
42
name: 'Tatyana Fitzpatrick',
43
position: 'Regional Director',
44
office: 'London',
45
phone: '+42123432456',
46
email: 'tfitz@gmail.com'
47
},
48
].map((row) => {
49
return {
50
...row,
51
contact: `
52
<button class="call-btn btn btn-outline-primary btn-floating btn-sm" data-mdb-number="${row.phone}"><i class="fas fa-adjust"></i></button>
53
<button class="message-btn btn ms-2 btn-primary btn-floating btn-sm" data-mdb-email="${row.email}"><i class="fas fa-allergies"></i></button>`,
54
};
55
}),
56
}, { hover: true });
Console errors: 0