- Migration des fiches acteur V2 : racine <form> → <section> (DocumentSheetV2 encapsule déjà dans <form>, élimine les formulaires imbriqués) - Ajout de submitOnChange: true sur la feuille de base acteur (nécessaire pour que les événements change des éditeurs déclenchent la mise à jour) - Ajout de toggled=true + wrapper <fieldset><div><label> sur tous les formInput (comportement identique aux fiches d'objet) - CSS : .window-content > section ajouté à côté de > form (évite la perte du flex layout et des scrollbar en passant de form à section) - Modèles acteur : passage de StringField à HTMLField pour les champs description/notes/biographie/notesmj (permet le rendu ProseMirror) - Ajout de systemFields dans le contexte _prepareContext()
53 lines
1.6 KiB
JavaScript
53 lines
1.6 KiB
JavaScript
import { RdDBaseActorSheetV2 } from "./base-actor-sheet.mjs"
|
|
import { RdDItem } from "../../item.js"
|
|
import { ACTOR_TYPES } from "../../constants.js"
|
|
|
|
export class RdDCommerceSheetV2 extends RdDBaseActorSheetV2 {
|
|
|
|
static TYPE = ACTOR_TYPES.commerce
|
|
|
|
static DEFAULT_OPTIONS = Object.assign({}, RdDBaseActorSheetV2.DEFAULT_OPTIONS, {
|
|
position: { width: 600, height: 720 },
|
|
})
|
|
|
|
static PARTS = {
|
|
form: { template: "systems/foundryvtt-reve-de-dragon/templates/actor/commerce-actor-sheet.hbs" },
|
|
}
|
|
|
|
get title() {
|
|
if (this.actor.token && this.actor.token !== this.actor.prototypeToken) {
|
|
return this.actor.token.name
|
|
}
|
|
return super.title
|
|
}
|
|
|
|
async _prepareContext() {
|
|
const ctx = await super._prepareContext()
|
|
if (this.actor.token && this.actor.token !== this.actor.prototypeToken) {
|
|
foundry.utils.mergeObject(ctx, {
|
|
title: this.actor.token.name,
|
|
token: { img: this.actor.token.texture.src },
|
|
}, { overwrite: true })
|
|
}
|
|
return ctx
|
|
}
|
|
|
|
async _onRender(context, options) {
|
|
await super._onRender(context, options)
|
|
if (!this.isEditable) return
|
|
|
|
this.html.find("input.item-quantite").change(async event => {
|
|
const newQuantite = Math.max(0, Number.parseInt(this.html.find(event.currentTarget).val()))
|
|
await this._getItem(event)?.update({ "system.quantite": newQuantite })
|
|
})
|
|
this.html.find("input.item-cout").change(async event => {
|
|
const newCout = Math.max(0, Number(this.html.find(event.currentTarget).val()))
|
|
await this._getItem(event)?.update({ "system.cout": newCout })
|
|
})
|
|
}
|
|
|
|
_getTypesInventaire() {
|
|
return RdDItem.getItemTypesInventaire("all")
|
|
}
|
|
}
|