import { TraitSelector } from "../system/applications.mjs"; /** * Extend the basic ItemSheet with some very simple modifications * @extends {ItemSheet} */ export class VermineItemSheet extends ItemSheet { /** @override */ static get defaultOptions() { return foundry.utils.mergeObject(super.defaultOptions, { classes: ["vermine2047", "sheet", "item"], width: 450, height: "max-content", tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "description" }] }); } /** @override */ get template() { const path = "systems/vermine2047/templates/item"; return `${path}/item-${this.item.type}-sheet.hbs`; } /* -------------------------------------------- */ /** @override */ getData() { // Retrieve base data structure. const context = super.getData(); // Use a safe clone of the item data for further operations. const itemData = context.item; // Retrieve the roll data for TinyMCE editors. context.rollData = {}; let actor = this.object?.parent ?? null; if (actor) { context.rollData = actor.getRollData(); } // Add the actor's data to context.data for easier access, as well as flags. context.system = itemData.system; context.flags = itemData.flags; context.config = CONFIG.VERMINE; return context; } /* -------------------------------------------- */ /** @override */ activateListeners(html) { super.activateListeners(html); // Everything below here is only needed if the sheet is editable if (!this.isEditable) return; //click on wound radio html.find('.damages-row [type="radio"]').click(ev => { this._onClickDamage(ev) }) html.find('.traits-selector').click(ev => { this.openTraitSelector(ev) }) } async _onClickDamage(ev) { if (!ev.currentTarget.checked) { return } let prop = ev.currentTarget.name; let update = {}; update[prop] = ev.currentTarget.value - 1 this.item.update(update) } async openTraitSelector(ev) { let selector = new TraitSelector(this.item); selector.render(true) } }