fix(viewer): remove lightbox top-bar settings menu (user request) — close button + counter only; Esc closes directly
Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -382,28 +382,17 @@ describe('photo lightbox dark viewer (UI-02 V04)', () => {
|
|||||||
expect(lightbox(wrapper).emitted('update:photoId')).toEqual([['p1']]);
|
expect(lightbox(wrapper).emitted('update:photoId')).toEqual([['p1']]);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('more menu exposes the reduce-motion toggle; Escape closes the menu before the viewer', async () => {
|
it('top bar has no settings/more menu (removed per user request 2026-09-23); Escape closes the viewer directly', async () => {
|
||||||
const wrapper = mountLightbox('p2');
|
const wrapper = mountLightbox('p2');
|
||||||
await flushPromises();
|
await flushPromises();
|
||||||
|
|
||||||
await wrapper.find('.viewer-more').trigger('click');
|
// 「⋯」更多菜单(减少动画开关)已按用户要求移除:顶部仅保留关闭与序号。
|
||||||
expect(wrapper.find('.more-popover').exists()).toBe(true);
|
expect(wrapper.find('.viewer-more').exists()).toBe(false);
|
||||||
const item = wrapper.find('.more-item');
|
expect(wrapper.find('.more-menu').exists()).toBe(false);
|
||||||
expect(item.text()).toContain('减少动画');
|
|
||||||
expect(item.attributes('aria-checked')).toBe('false');
|
|
||||||
await item.trigger('click');
|
|
||||||
expect(wrapper.find('.more-item').attributes('aria-checked')).toBe('true');
|
|
||||||
// 还原模块级偏好单例,避免影响后续用例。
|
|
||||||
await wrapper.find('.more-item').trigger('click');
|
|
||||||
|
|
||||||
keydown('Escape');
|
keydown('Escape');
|
||||||
await flushPromises();
|
await flushPromises();
|
||||||
expect(wrapper.find('.more-popover').exists()).toBe(false); // 先收菜单
|
expect(lightbox(wrapper).emitted('close')).toHaveLength(1); // Esc 直接关查看器
|
||||||
expect(lightbox(wrapper).emitted('close')).toBeUndefined(); // 不关查看器
|
|
||||||
|
|
||||||
keydown('Escape');
|
|
||||||
await flushPromises();
|
|
||||||
expect(lightbox(wrapper).emitted('close')).toHaveLength(1);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('moves focus into the dialog on open and returns it to the trigger on close', async () => {
|
it('moves focus into the dialog on open and returns it to the trigger on close', async () => {
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import HeartParticles from './viewer/HeartParticles.vue';
|
|||||||
import InteractionNotice from './viewer/InteractionNotice.vue';
|
import InteractionNotice from './viewer/InteractionNotice.vue';
|
||||||
import ThumbnailStrip, { type ThumbnailItem } from './viewer/ThumbnailStrip.vue';
|
import ThumbnailStrip, { type ThumbnailItem } from './viewer/ThumbnailStrip.vue';
|
||||||
import ShareSheet from './viewer/ShareSheet.vue';
|
import ShareSheet from './viewer/ShareSheet.vue';
|
||||||
import { reducedMotion, toggleReducedMotion } from '../ui/prefs';
|
|
||||||
import { positionDisplay } from '../viewer/position';
|
import { positionDisplay } from '../viewer/position';
|
||||||
import { MIN_SCALE, panBy, resetZoom, wheelFactor, zoomAt, type ZoomState } from '../viewer/zoom';
|
import { MIN_SCALE, panBy, resetZoom, wheelFactor, zoomAt, type ZoomState } from '../viewer/zoom';
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user