diff --git a/public/userarea/tolims.php b/public/userarea/tolims.php index 2bd16a0..d09635e 100644 --- a/public/userarea/tolims.php +++ b/public/userarea/tolims.php @@ -2016,6 +2016,51 @@ function resolveFixedValue(string $key, $val, array $fixedLookup): string { el.addEventListener('change', () => el.classList.toggle('has-value', el.value.trim() !== '')); }); })(); + + // ── Column resize ── + (function() { + const resizers = document.querySelectorAll('.resizer'); + let currentResizer = null, startX = 0, startWidth = 0, columnIndex = null; + + function resize(e) { + if (!currentResizer || columnIndex === null) return; + const newWidth = Math.max(80, startWidth + (e.pageX - startX)); + const sel = '[data-index="' + columnIndex + '"]'; + const header = document.querySelector('.grid-header' + sel); + if (header) header.style.flex = '0 0 ' + newWidth + 'px'; + const topCell = document.querySelector('.grid-top .grid-cell' + sel); + if (topCell) topCell.style.flex = '0 0 ' + newWidth + 'px'; + document.querySelectorAll('.grid-row .grid-cell' + sel).forEach(function(cell) { + cell.style.flex = '0 0 ' + newWidth + 'px'; + }); + var filterCell = document.querySelector('#gridFilterRow > .grid-cell:nth-child(' + (parseInt(columnIndex, 10) + 1) + ')'); + if (filterCell) filterCell.style.flex = '0 0 ' + newWidth + 'px'; + } + + function stopResize() { + if (currentResizer) { + document.removeEventListener('mousemove', resize); + document.removeEventListener('mouseup', stopResize); + currentResizer = null; + columnIndex = null; + } + } + + resizers.forEach(function(resizer) { + resizer.addEventListener('mousedown', function(e) { + e.preventDefault(); + e.stopPropagation(); + currentResizer = this; + var header = this.closest('.grid-header'); + if (!header) return; + columnIndex = header.getAttribute('data-index'); + startX = e.pageX; + startWidth = header.offsetWidth; + document.addEventListener('mousemove', resize); + document.addEventListener('mouseup', stopResize); + }); + }); + })();