mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-11 19:25:21 +01:00
Fixed context menu for multiples
This commit is contained in:
parent
e6419b89d0
commit
eb954b7ef6
5 changed files with 41 additions and 18 deletions
|
|
@ -86,9 +86,11 @@ export default class DhSceneConfigSettings extends foundry.applications.sheets.S
|
||||||
/** @override */
|
/** @override */
|
||||||
async _processSubmitData(event, form, submitData, options) {
|
async _processSubmitData(event, form, submitData, options) {
|
||||||
submitData.flags.daggerheart = this.daggerheartFlag.toObject();
|
submitData.flags.daggerheart = this.daggerheartFlag.toObject();
|
||||||
for (const key of Object.keys(this.document._source.flags.daggerheart.sceneEnvironments)) {
|
if (this.document._source.flags.daggerheart) {
|
||||||
if (!submitData.flags.daggerheart.sceneEnvironments[key]) {
|
for (const key of Object.keys(this.document._source.flags.daggerheart.sceneEnvironments)) {
|
||||||
submitData.flags.daggerheart.sceneEnvironments[`-=${key}`] = null;
|
if (!submitData.flags.daggerheart.sceneEnvironments[key]) {
|
||||||
|
submitData.flags.daggerheart.sceneEnvironments[`-=${key}`] = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -43,12 +43,29 @@ export default class DhSceneNavigation extends foundry.applications.ui.SceneNavi
|
||||||
return context;
|
return context;
|
||||||
}
|
}
|
||||||
|
|
||||||
static async #openSceneEnvironment(_event, button) {
|
static async #openSceneEnvironment(event, button) {
|
||||||
const scene = game.scenes.get(button.dataset.sceneId);
|
const scene = game.scenes.get(button.dataset.sceneId);
|
||||||
const sceneEnvironments = Object.keys(scene.flags.daggerheart.sceneEnvironments);
|
const sceneEnvironments = new game.system.api.data.scenes.DHScene(scene.flags.daggerheart).sceneEnvironments;
|
||||||
const environment = await foundry.utils.fromUuid(
|
|
||||||
scene.flags.daggerheart.sceneEnvironments[sceneEnvironments[0]]
|
if (sceneEnvironments.length === 1) {
|
||||||
);
|
sceneEnvironments[0].sheet.render(true);
|
||||||
environment.sheet.render(true);
|
} else {
|
||||||
|
new ContextMenu(
|
||||||
|
button,
|
||||||
|
'.scene-environment',
|
||||||
|
sceneEnvironments.map(environment => ({
|
||||||
|
name: environment.name,
|
||||||
|
callback: () => {
|
||||||
|
environment.sheet.render({ force: true });
|
||||||
|
}
|
||||||
|
})),
|
||||||
|
{
|
||||||
|
jQuery: false,
|
||||||
|
fixed: true
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
CONFIG.ux.ContextMenu.triggerContextMenu(event, '.scene-environment');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -96,11 +96,11 @@ export default class DHContextMenu extends foundry.applications.ux.ContextMenu {
|
||||||
* Trigger a context menu event in response to a normal click on a additional options button.
|
* Trigger a context menu event in response to a normal click on a additional options button.
|
||||||
* @param {PointerEvent} event
|
* @param {PointerEvent} event
|
||||||
*/
|
*/
|
||||||
static triggerContextMenu(event) {
|
static triggerContextMenu(event, elementSelector) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
const { clientX, clientY } = event;
|
const { clientX, clientY } = event;
|
||||||
const selector = '[data-item-uuid]';
|
const selector = elementSelector ?? '[data-item-uuid]';
|
||||||
const target = event.target.closest(selector) ?? event.currentTarget.closest(selector);
|
const target = event.target.closest(selector) ?? event.currentTarget.closest(selector);
|
||||||
target?.dispatchEvent(
|
target?.dispatchEvent(
|
||||||
new PointerEvent('contextmenu', {
|
new PointerEvent('contextmenu', {
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,10 @@
|
||||||
|
|
||||||
.scene-environment {
|
.scene-environment {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
|
||||||
|
img {
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,7 @@
|
||||||
<menu id="scene-navigation-active" class="scene-navigation-menu flexcol">
|
<menu id="scene-navigation-active" class="scene-navigation-menu flexcol">
|
||||||
{{#each scenes.active as |scene|}}
|
{{#each scenes.active as |scene|}}
|
||||||
<li class="scene-wrapper">
|
<li class="scene-wrapper">
|
||||||
<div class="ui-control scene {{scene.cssClass}}" data-scene-id="{{scene.id}}" data-action="viewScene"
|
<div class="ui-control scene {{scene.cssClass}}" data-scene-id="{{scene.id}}" data-action="viewScene" {{#if scene.tooltip}}data-tooltip-text="{{scene.tooltip}}"{{/if}}>
|
||||||
{{#if scene.tooltip}}data-tooltip-text="{{scene.tooltip}}"{{/if}}>
|
|
||||||
<span class="scene-name ellipsis">{{scene.name}}</span>
|
<span class="scene-name ellipsis">{{scene.name}}</span>
|
||||||
{{#if scene.users}}
|
{{#if scene.users}}
|
||||||
<ul class="scene-players">
|
<ul class="scene-players">
|
||||||
|
|
@ -20,17 +19,18 @@
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
{{#if scene.hasEnvironments}}
|
{{#if scene.hasEnvironments}}
|
||||||
<button class="ui-control scene-environment" data-action="openSceneEnvironment" data-scene-id="{{scene.id}}"><img src="{{scene.environmentImage}}" /> </button>
|
<button class="ui-control scene-environment {{#if (gt scene.environments.length 1)}}many-environments{{/if}}" data-action="openSceneEnvironment" data-scene-id="{{scene.id}}"><img src="{{scene.environmentImage}}" /> </button>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</menu>
|
</menu>
|
||||||
<menu id="scene-navigation-inactive" class="scene-navigation-menu flexcol">
|
<menu id="scene-navigation-inactive" class="scene-navigation-menu flexcol">
|
||||||
{{#each scenes.inactive as |scene|}}
|
{{#each scenes.inactive as |scene|}}
|
||||||
<li class="ui-control scene {{scene.cssClass}}" data-scene-id="{{scene.id}}" data-action="viewScene"
|
<li class="scene-wrapper">
|
||||||
{{#if scene.tooltip}}data-tooltip-text="{{scene.tooltip}}"{{/if}}>
|
<div class="ui-control scene {{scene.cssClass}}" data-scene-id="{{scene.id}}" data-action="viewScene" {{#if scene.tooltip}}data-tooltip-text="{{scene.tooltip}}"{{/if}}>
|
||||||
<span class="scene-name ellipsis">{{scene.name}}</span>
|
<span class="scene-name ellipsis">{{scene.name}}</span>
|
||||||
</li>
|
</div>
|
||||||
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</menu>
|
</menu>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue