Fixes and enhancements, from issue list
This commit is contained in:
@@ -20,8 +20,12 @@ import { _rollPool, _diceHtml } from "../rolls.mjs"
|
||||
* @param {HTMLElement} html
|
||||
*/
|
||||
export function injectFreeRollBar(_chatLog, html) {
|
||||
// Normalise: renderChatLog may pass jQuery (AppV1) or HTMLElement (AppV2/v13)
|
||||
const el = (html instanceof HTMLElement) ? html : (html[0] ?? html)
|
||||
if (!el?.querySelector) return
|
||||
|
||||
// Avoid double-injection on re-renders
|
||||
if (html.querySelector(".oh-free-roll-bar")) return
|
||||
if (el.querySelector(".oh-free-roll-bar")) return
|
||||
|
||||
const bar = document.createElement("div")
|
||||
bar.className = "oh-free-roll-bar"
|
||||
@@ -49,20 +53,30 @@ export function injectFreeRollBar(_chatLog, html) {
|
||||
</div>
|
||||
`
|
||||
|
||||
bar.querySelector(".oh-frb-roll-btn").addEventListener("click", () => {
|
||||
// Use event delegation on the bar container — direct child listeners can be
|
||||
// swallowed by Foundry's own delegated click handlers in the sidebar.
|
||||
bar.addEventListener("click", async (ev) => {
|
||||
if (!ev.target.closest(".oh-frb-roll-btn")) return
|
||||
ev.stopPropagation()
|
||||
const pool = parseInt(bar.querySelector(".oh-frb-pool").value) || 2
|
||||
const color = bar.querySelector(".oh-frb-color").value
|
||||
const explode5 = bar.querySelector(".oh-frb-explode").checked
|
||||
rollFree(pool, color, explode5)
|
||||
try {
|
||||
await rollFree(pool, color, explode5)
|
||||
} catch (err) {
|
||||
console.error("Oath Hammer | Free Roll error:", err)
|
||||
ui.notifications?.error("Free Roll failed — see console")
|
||||
}
|
||||
})
|
||||
|
||||
// Insert before the chat form — use chatForm.parentElement for AppV2 compatibility
|
||||
// (in v13 parts are nested inside the app element, not direct children)
|
||||
const chatForm = html.querySelector(".chat-form")
|
||||
if (chatForm) {
|
||||
chatForm.parentElement.insertBefore(bar, chatForm)
|
||||
// Insert before the chat form — try multiple selectors for v12/v13 compatibility
|
||||
const anchor = el.querySelector(".chat-form")
|
||||
?? el.querySelector(".chat-message-form")
|
||||
?? el.querySelector("form")
|
||||
if (anchor) {
|
||||
anchor.parentElement.insertBefore(bar, anchor)
|
||||
} else {
|
||||
html.appendChild(bar)
|
||||
el.appendChild(bar)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user