diff --git a/resources/views/business/pages/partials/finance-table-interactions.blade.php b/resources/views/business/pages/partials/finance-table-interactions.blade.php index d9ef417f..3c185f10 100644 --- a/resources/views/business/pages/partials/finance-table-interactions.blade.php +++ b/resources/views/business/pages/partials/finance-table-interactions.blade.php @@ -179,12 +179,15 @@ .finance-table-field-picker__panel { position: absolute; top: calc(100% + 0.35rem); - right: 0; + left: 0; + right: auto; z-index: 20; display: grid; - grid-template-columns: repeat(2, minmax(10rem, 1fr)); + grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.25rem 0.75rem; - min-width: 25rem; + box-sizing: border-box; + width: min(25rem, calc(100vw - 2rem)); + min-width: 0; max-height: min(24rem, 60vh); overflow: auto; padding: 0.75rem; @@ -587,6 +590,17 @@ if (!isLegacyDirectoryPicker) { toggle.addEventListener('click', () => { const open = panel.hidden; panel.hidden = !open; toggle.setAttribute('aria-expanded', String(open)); }); } + const positionPanel = () => { + if (panel.hidden) return; + const anchor = toggle.getBoundingClientRect(); + const pickerBounds = picker.getBoundingClientRect(); + const left = Math.max(8, Math.min(anchor.left, document.documentElement.clientWidth - panel.offsetWidth - 8)); + panel.style.left = `${left - pickerBounds.left}px`; + panel.style.right = 'auto'; + }; + // Directory pickers open via their existing handler; position after it runs. + toggle.addEventListener('click', () => window.requestAnimationFrame(positionPanel)); + window.addEventListener('resize', positionPanel); checks.forEach((check) => check.addEventListener('change', () => setVisibility(table, checks))); panel.querySelector('[data-finance-all]')?.addEventListener('click', () => { checks.forEach((check) => { if (!check.disabled) check.checked = true; }); setVisibility(table, checks); }); panel.querySelector('[data-finance-none]')?.addEventListener('click', () => { checks.forEach((check) => { if (!check.disabled) check.checked = false; }); setVisibility(table, checks); });