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() { static async _onRender() {
const itemMenuOptions = [ new ContextMenu(
{ this.element,
name: `Edit`, `[data-ctx-menu="weapon"],[data-ctx-menu="armour"]`,
condition: () => this.isEditable, [
callback: HeroSummaryCardV1._editItem, {
}, name: `Edit`,
{ condition: (el) => {
name: `Delete`, const itemId = el.dataset.itemId;
condition: () => this.isEditable, return this.isEditable && itemId !== ``;
callback: async (el) => { },
const itemEl = el.closest(`[data-item-id]`); callback: HeroSummaryCardV1._editItem,
if (!itemEl) { return };
const itemId = itemEl.dataset.itemId;
const item = await fromUuid(itemId);
await item.delete();
}, },
}, {
]; name: `Delete`,
if (itemMenuOptions.length) { condition: (el) => {
new ContextMenu(this.element, `.weapon-ctx-menu`, itemMenuOptions, { jQuery: false, fixed: true }); 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) { async _preparePartContext(partId, ctx, opts) {

View file

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