57 lines
1.7 KiB
JavaScript
57 lines
1.7 KiB
JavaScript
import { SYSTEM } from "../../config/system.mjs"
|
|
import { buildSharedSelectOptions, numericOptions } from "./select-options.mjs"
|
|
import { enrichHTMLFields } from "./rich-text.mjs"
|
|
|
|
const { HandlebarsApplicationMixin } = foundry.applications.api
|
|
|
|
export default class MGNEItemSheet extends HandlebarsApplicationMixin(foundry.applications.sheets.ItemSheetV2) {
|
|
static DEFAULT_OPTIONS = {
|
|
classes: ["mgne", "item-sheet"],
|
|
position: {
|
|
width: 720,
|
|
height: "auto",
|
|
},
|
|
window: {
|
|
resizable: true,
|
|
},
|
|
form: {
|
|
submitOnChange: true,
|
|
},
|
|
actions: {
|
|
editImage: MGNEItemSheet.onEditImage,
|
|
},
|
|
}
|
|
|
|
async _prepareContext() {
|
|
const selectOptions = buildSharedSelectOptions()
|
|
const systemFields = this.document.system.schema.fields
|
|
if (this.document.type === "armor") selectOptions.penalties = numericOptions(0, 6, this.document.system.penalty)
|
|
if (this.document.type === "shield") selectOptions.penalties = numericOptions(0, 4, this.document.system.penalty)
|
|
|
|
return {
|
|
fields: this.document.schema.fields,
|
|
systemFields,
|
|
item: this.document,
|
|
system: this.document.system,
|
|
source: this.document.toObject(),
|
|
config: SYSTEM,
|
|
enrichedFields: await enrichHTMLFields(this.document.system, systemFields),
|
|
isEditable: this.isEditable,
|
|
selectOptions,
|
|
}
|
|
}
|
|
|
|
static async onEditImage(_event, target) {
|
|
const attr = target.dataset.edit
|
|
const current = foundry.utils.getProperty(this.document, attr)
|
|
const picker = new FilePicker({
|
|
current,
|
|
type: "image",
|
|
callback: path => this.document.update({ [attr]: path }),
|
|
top: this.position.top + 40,
|
|
left: this.position.left + 10,
|
|
})
|
|
return picker.browse()
|
|
}
|
|
}
|