fix: importer foundry.applications.api et utiliser _onRender dans les pickers AppV2

- applications.mjs: import HandlebarsApplicationMixin/ApplicationV2 from
  foundry.applications.api (they are not globals in Foundry v14), fixing
  'ReferenceError: HandlebarsApplicationMixin is not defined'
- Replace activateListeners(html) with _onRender(context, options) and
  this.element — AppV2 does not call activateListeners
- TraitSelector: remove recursive render(true) in _validateTraits
- fight.mjs: VermineCombatTracker same _onRender conversion
This commit is contained in:
2026-08-01 21:33:38 +02:00
parent 29b6a98c89
commit 0189f62734
2 changed files with 16 additions and 15 deletions
+13 -12
View File
@@ -1,3 +1,5 @@
const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api
export class TotemPicker extends HandlebarsApplicationMixin(ApplicationV2) {
constructor(linkEl, actor) {
@@ -24,9 +26,9 @@ export class TotemPicker extends HandlebarsApplicationMixin(ApplicationV2) {
return { config: CONFIG.VERMINE };
}
activateListeners(html) {
super.activateListeners(html);
html.querySelectorAll('.totem').forEach(el => {
_onRender(context, options) {
super._onRender(context, options);
this.element.querySelectorAll('.totem').forEach(el => {
el.addEventListener('click', event => {
const link = event.target.closest('a');
if (!link?.dataset.totem) return;
@@ -80,9 +82,9 @@ export class ActorPicker extends HandlebarsApplicationMixin(ApplicationV2) {
};
}
activateListeners(html) {
super.activateListeners(html);
html.querySelectorAll('.actor').forEach(el => {
_onRender(context, options) {
super._onRender(context, options);
this.element.querySelectorAll('.actor').forEach(el => {
el.addEventListener('click', async event => {
const div = event.target.closest('div');
const actorId = div?.dataset.actorId;
@@ -148,15 +150,15 @@ export class TraitSelector extends HandlebarsApplicationMixin(ApplicationV2) {
};
}
activateListeners(html) {
super.activateListeners(html);
this._validateTraits(html);
html.querySelectorAll('input').forEach(el => {
_onRender(context, options) {
super._onRender(context, options);
this._validateTraits(this.element);
this.element.querySelectorAll('input').forEach(el => {
el.addEventListener('change', ev => this._onChangeInput(ev));
});
}
async _validateTraits(html) {
_validateTraits(html) {
const checks = html.querySelectorAll("input.trait-selector");
for (const inp of checks) {
if (this.targetItem.system.traits[inp.dataset.trait]) {
@@ -165,7 +167,6 @@ export class TraitSelector extends HandlebarsApplicationMixin(ApplicationV2) {
}
}
}
await this.render(true);
}
async _onChangeInput(ev) {
+3 -3
View File
@@ -239,9 +239,9 @@ export class VermineCombatTracker extends foundry.applications.sidebar.tabs.Comb
return context;
}
activateListeners(html) {
super.activateListeners(html);
html.querySelectorAll("[data-attitude]").forEach(el => {
_onRender(context, options) {
super._onRender(context, options);
this.element.querySelectorAll("[data-attitude]").forEach(el => {
el.addEventListener("click", this._setStatut.bind(this));
});
}