Files
Foundry-VTT-Docker/resources/app/client/apps/forms/folder-edit.js

71 lines
2.1 KiB
JavaScript
Raw Normal View History

2025-01-04 00:34:03 +01:00
/**
* The Application responsible for configuring a single Folder document.
* @extends {DocumentSheet}
* @param {Folder} object The {@link Folder} object to configure.
* @param {DocumentSheetOptions} [options] Application configuration options.
*/
class FolderConfig extends DocumentSheet {
/** @inheritdoc */
static get defaultOptions() {
return foundry.utils.mergeObject(super.defaultOptions, {
classes: ["sheet", "folder-edit"],
template: "templates/sidebar/folder-edit.html",
width: 360
});
}
/* -------------------------------------------- */
/** @override */
get id() {
return this.object.id ? super.id : "folder-create";
}
/* -------------------------------------------- */
/** @override */
get title() {
if ( this.object.id ) return `${game.i18n.localize("FOLDER.Update")}: ${this.object.name}`;
return game.i18n.localize("FOLDER.Create");
}
/* -------------------------------------------- */
/** @inheritdoc */
async close(options={}) {
if ( !this.options.submitOnClose ) this.options.resolve?.(null);
return super.close(options);
}
/* -------------------------------------------- */
/** @override */
async getData(options={}) {
const folder = this.document.toObject();
return {
folder: folder,
name: folder._id ? folder.name : "",
newName: Folder.implementation.defaultName({pack: folder.pack}),
safeColor: folder.color?.css ?? "#000000",
sortingModes: {a: "FOLDER.SortAlphabetical", m: "FOLDER.SortManual"},
submitText: game.i18n.localize(folder._id ? "FOLDER.Update" : "FOLDER.Create")
};
}
/* -------------------------------------------- */
/** @override */
async _updateObject(event, formData) {
let doc = this.object;
if ( !formData.name?.trim() ) formData.name = Folder.implementation.defaultName({pack: doc.pack});
if ( this.object.id ) await this.object.update(formData);
else {
this.object.updateSource(formData);
doc = await Folder.create(this.object, { pack: this.object.pack });
}
this.options.resolve?.(doc);
return doc;
}
}