diff --git a/src/apps/active-effect-config.js b/src/apps/active-effect-config.js index fc02074d..f8aa633e 100644 --- a/src/apps/active-effect-config.js +++ b/src/apps/active-effect-config.js @@ -2,31 +2,55 @@ // // SPDX-License-Identifier: MIT +/** + * DS4 Active Effect Configuration Sheet + */ export class DS4ActiveEffectConfig extends foundry.applications.sheets.ActiveEffectConfig { + static DEFAULT_OPTIONS = { + ...super.DEFAULT_OPTIONS, + classes: ["sheet", "ds4-active-effect-config"], + }; + /** @override */ - static get defaultOptions() { - return foundry.utils.mergeObject(super.defaultOptions, { - template: "systems/ds4/templates/sheets/active-effect/active-effect-config.hbs", - }); + get template() { + return "systems/ds4/templates/sheets/active-effect/active-effect-config.hbs"; } - /** - * @override - * @param {JQuery} html - */ - activateListeners(html) { - super.activateListeners(html); - const checkbox = html[0]?.querySelector('input[name="flags.ds4.itemEffectConfig.applyToItems"]'); - checkbox?.addEventListener("change", () => this.#toggleItemEffectConfig(checkbox.checked)); + /** @override */ + async _prepareContext(options) { + const context = await super._prepareContext(options); + + // Add DS4-specific context + context.itemEffectConfig = this.document.flags?.ds4?.itemEffectConfig || {}; + context.applyToItems = context.itemEffectConfig.applyToItems || false; + + return context; + } + + /** @override */ + async _onRender(context, options) { + await super._onRender(context, options); + + // Set up initial visibility of item effect config section + const applyToItems = this.document.flags?.ds4?.itemEffectConfig?.applyToItems || false; + this._toggleItemEffectConfigVisibility(applyToItems); + + // Add event listener for the checkbox + const checkbox = this.element.querySelector('input[name="flags.ds4.itemEffectConfig.applyToItems"]'); + if (checkbox) { + checkbox.addEventListener("change", (event) => { + this._toggleItemEffectConfigVisibility(event.target.checked); + }); + } } /** * Toggle the visibility of the item effect config section - * @param {boolean} active The target state + * @param {boolean} active - The target state */ - #toggleItemEffectConfig(active) { - const elements = this.element[0]?.querySelectorAll(".ds4-item-effect-config"); - elements?.forEach((element) => { + _toggleItemEffectConfigVisibility(active) { + const elements = this.element.querySelectorAll(".ds4-item-effect-config"); + elements.forEach((element) => { if (active) { element.classList.remove("ds4-hidden"); } else { diff --git a/src/apps/actor/base-sheet.js b/src/apps/actor/base-sheet.js index ffc97282..2f59fc03 100644 --- a/src/apps/actor/base-sheet.js +++ b/src/apps/actor/base-sheet.js @@ -119,6 +119,8 @@ export class DS4ActorSheet extends foundry.applications.api.DocumentSheetV2 { if (this.document.effects && this.document.effects.size > 0) { for (const effect of this.document.effects) { const enrichedEffect = effect.toObject(); + enrichedEffect.id = effect.id; + enrichedEffect.uuid = effect.uuid; enrichedEffect.sourceName = effect.sourceName; context.enrichedEffects.push(enrichedEffect); } @@ -380,7 +382,7 @@ export class DS4ActorSheet extends foundry.applications.api.DocumentSheetV2 { */ async _onCreateEffect() { const effectData = { - name: game.i18n.localize("DS4.EffectNew"), + name: game.i18n.localize("DS4.NewEffectName"), icon: "icons/svg/aura.svg", }; diff --git a/src/apps/item-sheet.js b/src/apps/item-sheet.js index 6e4825f8..c8245b00 100644 --- a/src/apps/item-sheet.js +++ b/src/apps/item-sheet.js @@ -25,8 +25,11 @@ export class DS4ItemSheet extends foundry.applications.sheets.ItemSheetV2 { actions: { controlEffect: DS4ItemSheet.prototype._onControlEffect, createEffect: DS4ItemSheet.prototype._onCreateEffect, + createeffect: DS4ItemSheet.prototype._onCreateEffect, editEffect: DS4ItemSheet.prototype._onEditEffect, + editeffect: DS4ItemSheet.prototype._onEditEffect, deleteEffect: DS4ItemSheet.prototype._onDeleteEffect, + deleteeffect: DS4ItemSheet.prototype._onDeleteEffect, changeTab: DS4ItemSheet.prototype._onChangeTab, }, }; @@ -85,6 +88,8 @@ export class DS4ItemSheet extends foundry.applications.sheets.ItemSheetV2 { if (this.item.effects && this.item.effects.size > 0) { for (const effect of this.item.effects) { const enrichedEffect = effect.toObject(); + enrichedEffect.id = effect.id; + enrichedEffect.uuid = effect.uuid; enrichedEffect.sourceName = effect.sourceName; context.enrichedEffects.push(enrichedEffect); } @@ -153,7 +158,7 @@ export class DS4ItemSheet extends foundry.applications.sheets.ItemSheetV2 { */ async _onCreateEffect() { const effectData = { - name: game.i18n.localize("DS4.EffectNew"), + name: game.i18n.localize("DS4.NewEffectName"), icon: "icons/svg/aura.svg", };