From 3452e81f6333b86c966d8a0e3ffd18acec493bb7 Mon Sep 17 00:00:00 2001 From: limeng <1131177064@qq.com> Date: Thu, 15 Oct 2026 22:01:07 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E8=A1=A8=E6=A0=BC=E5=88=97=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE):=20=E4=BF=AE=E5=A4=8D=E9=9D=A2=E6=9D=BF=E8=A2=AB?= =?UTF-8?q?=E4=BE=A7=E6=A0=8F=E9=81=AE=E6=8C=A1=E5=B9=B6=E9=80=82=E9=85=8D?= =?UTF-8?q?=E8=A7=86=E5=8F=A3=E8=BE=B9=E7=BC=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../finance-table-interactions.blade.php | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) 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); }); -- 2.47.2