UNPKG

svelte-generic-crud-table

Version:

<crud-table> renders object-arrays with options-panel and inline edit per row. Dispatches events for ongoing data handling. As self-containing webcomponent or for Svelte in 60KB

56 lines (48 loc) 2.13 kB
//config crud-table let table_config2 = { name: 'SecondGreat', options: ['CREATE', 'EDIT', 'DELETE', 'DETAILS'], columns_setting: [ {name: 'name', show: true, edit: true, width: '150px', tooltip: true}, {name: 'job', show: true, edit: true, width: '150px', description: 'The job'}, {name: 'private', show: true, edit: true, width: '200px', description: 'your things', tooltip: true}, {name: 'html', show: true, edit: true, width: '150px', type: 'html', description: 'You can use HTML', tooltip: true} ], row_settings: {height: '1.3em'} } // table-2 let genericCrudTable2 = document.getElementById('crud-table-2'); genericCrudTable2.setAttribute('shadowed', 'true'); genericCrudTable2.setAttribute('table_config', JSON.stringify(table_config2)); genericCrudTable2.setAttribute('table_data', JSON.stringify(myData2)); genericCrudTable2.addEventListener('create', () => { console.log('create'); myData2.unshift({id: Date.now().toString(), name: 'A_NEW', job: 'none', private: 'set hard', html: 'a <b>b</b> <i>c</i>'}); genericCrudTable2.setAttribute('table_data', JSON.stringify(myData2)); }); genericCrudTable2.addEventListener('details', (e) => { console.log('details'); console.log(e.detail.body); }); genericCrudTable2.addEventListener('update', (e) => { console.log('update'); console.log(e.detail.body); for(let i = 0; i < myData2.length; i++) { if (JSON.stringify(myData2[i]) === JSON.stringify(table_data[e.detail.id])) { myData2[i] = e.detail.body; break; } } genericCrudTable2.setAttribute('table_data', JSON.stringify(myData2)); }); genericCrudTable2.addEventListener('delete', (e) => { console.log('delete: ' + JSON.stringify(e.detail.body)); console.log('offset in view:' + e.detail.id); for(let i = 0; i < myData2.length; i++) { if (JSON.stringify(myData2[i]) === JSON.stringify(myData2[e.detail.id])) { myData2 = arrayRemove(myData2, i) break; } } genericCrudTable2.setAttribute('table_data', JSON.stringify(myData2)); });