foundryacks/7.5/module/item/item-sheet.js

81 lines
2.1 KiB
JavaScript

/**
* Extend the basic ItemSheet with some very simple modifications
*/
export class AcksItemSheet extends ItemSheet {
constructor(...args) {
super(...args);
/**
* Keep track of the currently active sheet tab
* @type {string}
*/
}
/**
* Extend and override the default options used by the Simple Item Sheet
* @returns {Object}
*/
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
classes: ["acks", "sheet", "item"],
width: 520,
height: 390,
resizable: false,
tabs: [
{
navSelector: ".tabs",
contentSelector: ".sheet-body",
initial: "description",
},
],
});
}
/* -------------------------------------------- */
/** @override */
get template() {
const path = "systems/acks/templates/items/";
return `${path}/${this.item.data.type}-sheet.html`;
}
/**
* Prepare data for rendering the Item sheet
* The prepared data object contains both the actor data as well as additional sheet options
*/
getData() {
const data = super.getData();
data.config = CONFIG.ACKS;
return data;
}
/* -------------------------------------------- */
/**
* Activate event listeners using the prepared sheet HTML
* @param html {HTML} The prepared HTML object ready to be rendered into the DOM
*/
activateListeners(html) {
html.find('input[data-action="add-tag"]').keypress((ev) => {
if (event.which == 13) {
let value = $(ev.currentTarget).val();
let values = value.split(',');
this.object.pushTag(values);
}
});
html.find('.tag-delete').click((ev) => {
let value = ev.currentTarget.parentElement.dataset.tag;
this.object.popTag(value);
});
html.find('a.melee-toggle').click(() => {
this.object.update({data: {melee: !this.object.data.data.melee}});
});
html.find('a.missile-toggle').click(() => {
this.object.update({data: {missile: !this.object.data.data.missile}});
});
super.activateListeners(html);
}
}