Update Weapon context menu to also work for the Armour/Shield

This commit is contained in:
Oliver-Akins 2025-01-24 20:47:32 -07:00
parent 5a7cc44014
commit 9a3b82ef6a
2 changed files with 53 additions and 26 deletions

View file

@ -46,27 +46,35 @@ export class HeroSummaryCardV1 extends GenericAppMixin(HandlebarsApplicationMixi
};
static async _onRender() {
const itemMenuOptions = [
{
name: `Edit`,
condition: () => this.isEditable,
callback: HeroSummaryCardV1._editItem,
},
{
name: `Delete`,
condition: () => this.isEditable,
callback: async (el) => {
const itemEl = el.closest(`[data-item-id]`);
if (!itemEl) { return };
const itemId = itemEl.dataset.itemId;
const item = await fromUuid(itemId);
await item.delete();
new ContextMenu(
this.element,
`[data-ctx-menu="weapon"],[data-ctx-menu="armour"]`,
[
{
name: `Edit`,
condition: (el) => {
const itemId = el.dataset.itemId;
return this.isEditable && itemId !== ``;
},
callback: HeroSummaryCardV1._editItem,
},
},
];
if (itemMenuOptions.length) {
new ContextMenu(this.element, `.weapon-ctx-menu`, itemMenuOptions, { jQuery: false, fixed: true });
};
{
name: `Delete`,
condition: (el) => {
const itemId = el.dataset.itemId;
return this.isEditable && itemId !== ``;
},
callback: async (el) => {
const itemEl = el.closest(`[data-item-id]`);
if (!itemEl) { return };
const itemId = itemEl.dataset.itemId;
const item = await fromUuid(itemId);
await item.delete();
},
},
],
{ jQuery: false, fixed: true },
);
};
async _preparePartContext(partId, ctx, opts) {

View file

@ -55,23 +55,41 @@
{{/each}}
</div>
<ul class="armour-items">
<li class="row-alt">
<li
class="row-alt"
data-ctx-menu="armour"
data-item-id="{{armours.head.uuid}}"
>
<span class="label">{{ rc-i18n "RipCrypt.common.anatomy.head" }}</span>
<span class="value ellipses">{{ armours.head.name }}</span>
</li>
<li>
<li
data-ctx-menu="armour"
data-item-id="{{armours.body.uuid}}"
>
<span class="label">{{ rc-i18n "RipCrypt.common.anatomy.body" }}</span>
<span class="value ellipses">{{ armours.body.name }}</span>
</li>
<li class="row-alt">
<li
class="row-alt"
data-ctx-menu="armour"
data-item-id="{{armours.arms.uuid}}"
>
<span class="label">{{ rc-i18n "RipCrypt.common.anatomy.arms" }}</span>
<span class="value ellipses">{{ armours.arms.name }}</span>
</li>
<li>
<li
data-ctx-menu="armour"
data-item-id="{{armours.legs.uuid}}"
>
<span class="label">{{ rc-i18n "RipCrypt.common.anatomy.legs" }}</span>
<span class="value ellipses">{{ armours.legs.name }}</span>
</li>
<li class="row-alt">
<li
class="row-alt"
data-ctx-menu="armour"
data-item-id="{{shield.uuid}}"
>
<span class="label">{{ rc-i18n "RipCrypt.common.shield" }}</span>
<span class="value ellipses">{{ shield.name }}</span>
</li>
@ -199,7 +217,8 @@
{{else}}
<tr
data-row="{{ slot.index }}"
class="{{slot.class}} weapon-ctx-menu"
class="{{slot.class}}"
data-ctx-menu="weapon"
data-item-id="{{ slot.data.uuid }}"
>
<td>