Add an item sheet for editing Traits
This commit is contained in:
parent
4d0f29d7f0
commit
7de3f1ca87
6 changed files with 119 additions and 2 deletions
53
module/Apps/ItemSheets/TraitSheet.mjs
Normal file
53
module/Apps/ItemSheets/TraitSheet.mjs
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
import { filePath } from "../../consts.mjs";
|
||||||
|
import { GenericAppMixin } from "../GenericApp.mjs";
|
||||||
|
|
||||||
|
const { HandlebarsApplicationMixin } = foundry.applications.api;
|
||||||
|
const { ItemSheetV2 } = foundry.applications.sheets;
|
||||||
|
|
||||||
|
export class TraitSheet extends GenericAppMixin(HandlebarsApplicationMixin(ItemSheetV2)) {
|
||||||
|
// #region Options
|
||||||
|
static DEFAULT_OPTIONS = {
|
||||||
|
classes: [
|
||||||
|
`ripcrypt--item`,
|
||||||
|
`TraitSheet`,
|
||||||
|
],
|
||||||
|
position: {
|
||||||
|
width: `auto`,
|
||||||
|
height: `auto`,
|
||||||
|
},
|
||||||
|
window: {
|
||||||
|
resizable: true,
|
||||||
|
},
|
||||||
|
form: {
|
||||||
|
submitOnChange: true,
|
||||||
|
closeOnSubmit: false,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static PARTS = {
|
||||||
|
content: {
|
||||||
|
template: filePath(`templates/Apps/TraitSheet/content.hbs`),
|
||||||
|
root: true,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
// #endregion Options
|
||||||
|
|
||||||
|
// #region Data Prep
|
||||||
|
async _prepareContext() {
|
||||||
|
const TextEditor = foundry.applications.ux.TextEditor.implementation;
|
||||||
|
const ctx = {
|
||||||
|
meta: {
|
||||||
|
idp: this.id,
|
||||||
|
},
|
||||||
|
item: this.document,
|
||||||
|
enriched: {
|
||||||
|
system: {
|
||||||
|
description: await TextEditor.enrichHTML(this.document.system.description),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
return ctx;
|
||||||
|
};
|
||||||
|
// #endregion Data Prep
|
||||||
|
};
|
||||||
|
|
@ -38,6 +38,7 @@ import { registerMetaSettings } from "../settings/metaSettings.mjs";
|
||||||
import { registerSockets } from "../sockets/_index.mjs";
|
import { registerSockets } from "../sockets/_index.mjs";
|
||||||
import { registerUserSettings } from "../settings/userSettings.mjs";
|
import { registerUserSettings } from "../settings/userSettings.mjs";
|
||||||
import { registerWorldSettings } from "../settings/worldSettings.mjs";
|
import { registerWorldSettings } from "../settings/worldSettings.mjs";
|
||||||
|
import { TraitSheet } from "../Apps/ItemSheets/TraitSheet.mjs";
|
||||||
|
|
||||||
const { Items, Actors } = foundry.documents.collections;
|
const { Items, Actors } = foundry.documents.collections;
|
||||||
|
|
||||||
|
|
@ -120,8 +121,15 @@ Hooks.once(`init`, () => {
|
||||||
label: `RipCrypt.sheet-names.ArmourSheet`,
|
label: `RipCrypt.sheet-names.ArmourSheet`,
|
||||||
themes: ArmourSheet.themes,
|
themes: ArmourSheet.themes,
|
||||||
});
|
});
|
||||||
|
Items.registerSheet(game.system.id, TraitSheet, {
|
||||||
|
makeDefault: true,
|
||||||
|
types: [`trait`],
|
||||||
|
label: `RipCrypt.sheet-names.TraitSheet`,
|
||||||
|
themes: TraitSheet.themes,
|
||||||
|
});
|
||||||
|
|
||||||
Items.unregisterSheet(game.system.id, AllItemSheetV1, {
|
Items.unregisterSheet(game.system.id, AllItemSheetV1, {
|
||||||
types: [`armour`, `shield`],
|
types: [`armour`, `shield`, `trait`],
|
||||||
});
|
});
|
||||||
// #endregion
|
// #endregion
|
||||||
// #endregion
|
// #endregion
|
||||||
|
|
|
||||||
21
templates/Apps/TraitSheet/content.hbs
Normal file
21
templates/Apps/TraitSheet/content.hbs
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
<div>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="name"
|
||||||
|
aria-label="{{ rc-i18n "Name" }}"
|
||||||
|
name="name"
|
||||||
|
value="{{item.name}}"
|
||||||
|
{{disabled meta.limited}}
|
||||||
|
autocomplete="off"
|
||||||
|
>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
data-action="openRichEditor"
|
||||||
|
data-path="system.description"
|
||||||
|
data-uuid="{{item.uuid}}"
|
||||||
|
data-collaborative="true"
|
||||||
|
>
|
||||||
|
Edit Description
|
||||||
|
</button>
|
||||||
|
<div class="value">{{{ enriched.system.description }}}</div>
|
||||||
|
</div>
|
||||||
35
templates/Apps/TraitSheet/style.css
Normal file
35
templates/Apps/TraitSheet/style.css
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
.ripcrypt.TraitSheet {
|
||||||
|
--input-underline: none;
|
||||||
|
max-width: 300px;
|
||||||
|
|
||||||
|
> .window-content {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 8px;
|
||||||
|
padding: 4px;
|
||||||
|
color: var(--base-text);
|
||||||
|
background: var(--base-background);
|
||||||
|
}
|
||||||
|
|
||||||
|
input {
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 2px 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.value {
|
||||||
|
background: var(--input-background);
|
||||||
|
color: var(--input-text);
|
||||||
|
padding: 4px;
|
||||||
|
|
||||||
|
> :first-child {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
> :last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:empty {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
@import url("./SkillsCardV1/style.css");
|
@import url("./SkillsCardV1/style.css");
|
||||||
@import url("./RichEditor/style.css");
|
@import url("./RichEditor/style.css");
|
||||||
@import url("./ArmourSheet/style.css");
|
@import url("./ArmourSheet/style.css");
|
||||||
|
@import url("./TraitSheet/style.css");
|
||||||
|
|
||||||
@import url("./popover.css");
|
@import url("./popover.css");
|
||||||
@import url("./popovers/AmmoTracker/style.css");
|
@import url("./popovers/AmmoTracker/style.css");
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@
|
||||||
Required parameters:
|
Required parameters:
|
||||||
"name" : the name of the item
|
"name" : the name of the item
|
||||||
"system.quantity" : the quantity of the item
|
"system.quantity" : the quantity of the item
|
||||||
"meta.idp" : the ID Prefix for the application
|
|
||||||
--}}
|
--}}
|
||||||
<header class="item-header">
|
<header class="item-header">
|
||||||
<div class="name-row">
|
<div class="name-row">
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue