diff --git a/daggerheart.mjs b/daggerheart.mjs index 23977628..25c41ced 100644 --- a/daggerheart.mjs +++ b/daggerheart.mjs @@ -446,3 +446,33 @@ Hooks.on('canvasTearDown', canvas => { Hooks.on('canvasReady', canas => { game.system.registeredTriggers.registerSceneTriggers(canvas.scene); }); + +/** Make the user to select a document type, instead of having a default doc type for them to accidentally keep */ +Hooks.on('renderDialogV2', (_dialog, html) => { + if (!html.classList.contains('dialog')) return; + const cls = html.classList.contains('item-create') + ? documents.DHItem.implementation + : html.classList.contains('actor-create') + ? documents.DhpActor.implementation + : null; + if (!cls) return; + + const form = html.querySelector('form'); + const submit = html.querySelector('button[type=submit]'); + const select = html.querySelector('select[name=type]'); + const nameInput = html.querySelector('input[name=name]'); + if (!form || !select || !submit || !nameInput) return; + + nameInput.placeholder = cls.defaultName({}); + const emptyOption = document.createElement('option'); + emptyOption.value = ''; + emptyOption.selected = true; + select.required = true; + select.prepend(emptyOption); + submit.addEventListener('click', event => { + if (!form.reportValidity()) { + event.preventDefault(); + event.stopPropagation(); + } + }); +}); diff --git a/module/applications/sheets/actors/party.mjs b/module/applications/sheets/actors/party.mjs index cec1e1f0..927a8810 100644 --- a/module/applications/sheets/actors/party.mjs +++ b/module/applications/sheets/actors/party.mjs @@ -47,11 +47,6 @@ export default class Party extends DHBaseActorSheet { template: 'systems/daggerheart/templates/sheets/actors/party/party-members.hbs', scrollable: [''] }, - /* NOT YET IMPLEMENTED */ - // projects: { - // template: 'systems/daggerheart/templates/sheets/actors/party/projects.hbs', - // scrollable: [''] - // }, inventory: { template: 'systems/daggerheart/templates/sheets/actors/party/inventory.hbs', scrollable: ['.tab.inventory .items-section'] @@ -62,19 +57,13 @@ export default class Party extends DHBaseActorSheet { /** @inheritdoc */ static TABS = { primary: { - tabs: [ - { id: 'partyMembers' }, - /* NOT YET IMPLEMENTED */ - // { id: 'projects' }, - { id: 'inventory' }, - { id: 'notes' } - ], + tabs: [{ id: 'partyMembers' }, { id: 'inventory' }, { id: 'notes' }], initial: 'partyMembers', labelPrefix: 'DAGGERHEART.GENERAL.Tabs' } }; - static ALLOWED_ACTOR_TYPES = ['character', 'companion', 'adversary']; + static ALLOWED_ACTOR_TYPES = ['character', 'companion', 'adversary', 'npc']; static DICE_ROLL_ACTOR_TYPES = ['character']; async _onRender(context, options) { diff --git a/module/applications/ui/combatTracker.mjs b/module/applications/ui/combatTracker.mjs index 0989bcb8..8dd76850 100644 --- a/module/applications/ui/combatTracker.mjs +++ b/module/applications/ui/combatTracker.mjs @@ -133,7 +133,7 @@ export default class DhCombatTracker extends foundry.applications.sidebar.tabs.C canPing: combatant.sceneId === canvas.scene?.id && game.user.hasPermission('PING_CANVAS'), type: combatant.actor?.system?.type, img: await this._getCombatantThumbnail(combatant), - disposition: combatant.token.disposition + disposition: combatant.token?.disposition }; turn.css = [turn.active ? 'active' : null, hidden ? 'hide' : null, isDefeated ? 'defeated' : null].filterJoin( diff --git a/module/documents/actor.mjs b/module/documents/actor.mjs index 6c462d98..fb10435f 100644 --- a/module/documents/actor.mjs +++ b/module/documents/actor.mjs @@ -65,6 +65,11 @@ export default class DhpActor extends Actor { }; } + static createDialog(data, createOptions, options, renderOptions) { + options.classes = [options.classes ?? [], 'actor-create'].flat(); // handled in hook + return super.createDialog(data, createOptions, options, renderOptions); + } + /* -------------------------------------------- */ /** @inheritDoc */ diff --git a/module/documents/item.mjs b/module/documents/item.mjs index 603ca594..f46e24e6 100644 --- a/module/documents/item.mjs +++ b/module/documents/item.mjs @@ -82,6 +82,7 @@ export default class DHItem extends foundry.documents.Item { /** @inheritdoc */ static async createDialog(data = {}, createOptions = {}, options = {}) { const { folders, types, template, context = {}, ...dialogOptions } = options; + dialogOptions.classes = [options.classes ?? [], 'item-create'].flat(); // handled in hook if (types?.length === 0) { throw new Error('The array of sub-types to restrict to must not be empty.'); diff --git a/styles/less/sheets/actors/npc/header.less b/styles/less/sheets/actors/npc/header.less index d49d763c..086a254c 100644 --- a/styles/less/sheets/actors/npc/header.less +++ b/styles/less/sheets/actors/npc/header.less @@ -5,7 +5,7 @@ .portrait { cursor: pointer; - width: 275px; + max-width: 275px; img { height: 275px; diff --git a/templates/sheets/actors/npc/header.hbs b/templates/sheets/actors/npc/header.hbs index 8dc345dc..fce300da 100644 --- a/templates/sheets/actors/npc/header.hbs +++ b/templates/sheets/actors/npc/header.hbs @@ -31,10 +31,12 @@ {{{description}}} -