Begin working on an attempt to make the required setting, but be blocked by Foundry for listening to open/close events on the prose-mirror editor

This commit is contained in:
Oliver 2025-11-22 00:08:19 -07:00
parent 703dc83681
commit f8c21ac8d8
6 changed files with 82 additions and 1 deletions

View file

@ -64,6 +64,33 @@ export class PlayerSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
return super._initializeApplicationOptions(options);
};
/** @type {boolean | null} */
#inEditMode = null;
async _onFirstRender(context, options) {
super._onFirstRender(context, options);
console.log(`_onFirstRender`)
this.#inEditMode ??= game.settings.get(__ID__, `openSheetInEdit`) ?? false;
this.element.querySelectorAll(`prose-mirror`).forEach(editor => {
editor.open = this.#inEditMode;
});
};
async _onRender(context, options) {
super._onRender(context, options);
if (options.parts?.includes(`content`)) {
const el = this.element.querySelector(`prose-mirror[name="system.content"]`);
el?.addEventListener(`open`, () => {
console.log(`event: open`);
this.#inEditMode = true;
});
el?.addEventListener(`close`, () => {
console.log(`event: close`);
this.#inEditMode = false;
});
};
};
_getHeaderControls() {
const controls = super._getHeaderControls();
@ -125,7 +152,9 @@ export class PlayerSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
ctx.attrs = attrs.toSorted(attributeSorter);
};
/** @type {boolean | null} */
async _prepareContent(ctx) {
const TextEditor = foundry.applications.ux.TextEditor.implementation;
ctx.enriched = {
system: {

View file

@ -10,6 +10,7 @@ import { TAFItem } from "../documents/Item.mjs";
import { TAFTokenDocument } from "../documents/Token.mjs";
// Settings
import { registerUserSettings } from "../settings/user.mjs";
import { registerWorldSettings } from "../settings/world.mjs";
// Utils
@ -41,6 +42,7 @@ Hooks.on(`init`, () => {
);
registerWorldSettings();
registerUserSettings();
registerSockets();
registerCustomComponents();

12
module/settings/user.mjs Normal file
View file

@ -0,0 +1,12 @@
import { __ID__ } from "../consts.mjs";
export function registerUserSettings() {
game.settings.register(__ID__, `openSheetInEdit`, {
name: `taf.settings.openSheetInEdit.name`,
hint: `taf.settings.openSheetInEdit.hint`,
config: true,
type: Boolean,
default: false,
scope: `user`,
});
};