diff --git a/src/components/dom-components/notice-components.scss b/src/components/dom-components/notice-components.scss index 48d6655..6307683 100644 --- a/src/components/dom-components/notice-components.scss +++ b/src/components/dom-components/notice-components.scss @@ -29,6 +29,7 @@ width: 100%; padding: 0 !important; margin: 0 !important; + pointer-events: auto; .ddc_pb_notice-scroll { flex: 1 1 auto; @@ -37,6 +38,7 @@ overscroll-behavior: contain; padding: var(--ddc_pb_notice-content-padding); padding-block-end: var(--size-4-2); + pointer-events: auto; } .ddc_pb_notice-footer { @@ -46,6 +48,7 @@ align-items: center; gap: 1em; padding: var(--ddc_pb_notice-content-padding); + pointer-events: auto; } .ddc_pb_notice-footer-links { diff --git a/src/components/dom-components/notice-components.ts b/src/components/dom-components/notice-components.ts index 0bd960e..a54ac30 100644 --- a/src/components/dom-components/notice-components.ts +++ b/src/components/dom-components/notice-components.ts @@ -25,9 +25,24 @@ export function createNoticeTemplate(noticeNumber?: number, noticeTotal?: number export function launchPersistentNotice(noticeBody: DocumentFragment) { const notice = new Notice(noticeBody, 0); notice.messageEl.classList.add('ddc_pb_notice'); + wireNoticePointerHandling(notice.messageEl); return notice; } +/** Scroll/footer need pointer-events; stop click bubbling so Obsidian won't dismiss on body clicks. */ +function wireNoticePointerHandling(noticeContentEl: HTMLElement) { + noticeContentEl.querySelector('.ddc_pb_notice-scroll')?.addEventListener('click', (event) => { + event.stopPropagation(); + }); + + noticeContentEl.querySelector('.ddc_pb_notice-footer')?.addEventListener('click', (event) => { + if (event.target instanceof HTMLElement && event.target.closest('a, button')) { + return; + } + event.stopPropagation(); + }); +} + function createNoticeLabel(noticeParent: HTMLElement | DocumentFragment, noticeNumber?: number, noticeTotal?: number): HTMLParagraphElement { const labelEl = noticeParent.createEl('p'); let labelText = `Project Browser plugin`;