/* * dmtools front-end entrypoint (Symfony AssetMapper / importmap). * Loaded from base.html.twig via {{ importmap('app') }}. */ import './stimulus_bootstrap.js'; import 'bootstrap/dist/css/bootstrap.min.css'; import 'datatables.net-bs5/css/dataTables.bootstrap5.min.css'; import './styles/app.css'; import * as bootstrap from 'bootstrap'; import DataTable from 'datatables.net-bs5'; window.bootstrap = bootstrap; // Turn any into a DataTable. Opt out per-table with // data-datatable="false"; pass options as a JSON object in data-datatable-options. function initDataTables(root = document) { root.querySelectorAll('table.datatable').forEach((table) => { if (table.dataset.datatable === 'false' || DataTable.isDataTable(table)) { return; } let options = { pageLength: 25, order: [] }; if (table.dataset.datatableOptions) { try { options = { ...options, ...JSON.parse(table.dataset.datatableOptions) }; } catch (e) { console.error('Invalid data-datatable-options on', table, e); } } new DataTable(table, options); }); } document.addEventListener('DOMContentLoaded', () => initDataTables()); document.addEventListener('turbo:load', () => initDataTables());