foundry-dsa41-game/src/module/sheets/spellSheet.mjs

80 lines
2.1 KiB
JavaScript

const {DocumentSheetV2, HandlebarsApplicationMixin} = foundry.applications.api
export class SpellSheet extends HandlebarsApplicationMixin(DocumentSheetV2) {
/** @inheritDoc */
static DEFAULT_OPTIONS = {
position: {width: 520, height: 480},
classes: ['dsa41', 'sheet', 'item', 'spell'],
tag: 'form',
form: {
submitOnChange: true,
closeOnSubmit: false,
handler: SpellSheet.#onSubmitForm
}
}
static TABS = {
sheet: {
tabs: [
{id: 'meta', group: 'sheet', label: 'Meta'},
{id: 'variants', group: 'sheet', label: 'Varianten'},
{id: 'commonality', group: 'sheet', label: 'Verbreitung'},
],
initial: 'meta'
}
}
/** @inheritDoc */
static PARTS = {
form: {
template: `systems/DSA_4-1/templates/item/spell/main-sheet.hbs`
},
meta: {
template: `systems/DSA_4-1/templates/item/spell/tab-meta.hbs`
},
variants: {
template: `systems/DSA_4-1/templates/item/spell/tab-variants.hbs`
},
commonality: {
template: `systems/DSA_4-1/templates/item/spell/tab-commonality.hbs`
}
}
_configureRenderOptions(options) {
super._configureRenderOptions(options)
if (options.window) {
options.window.title = this.document.name
}
return options
}
/**
* Handle form submission
* @this {SpellSheet}
* @param {SubmitEvent} event
* @param {HTMLFormElement} form
* @param {FormDataExtended} formData
*/
static async #onSubmitForm(event, form, formData) {
event.preventDefault()
await this.document.update(formData.object) // Note: formData.object
}
/** @override */
async _prepareContext(options) {
const context = await super._prepareContext(options);
const spellData = context.document;
context.system = spellData.system;
context.flags = spellData.flags;
context.name = spellData.name;
return context;
}
}