From 10dcec3bd7bec44c188f112a0d35991a18287ded Mon Sep 17 00:00:00 2001 From: Oliver-Akins Date: Thu, 11 Jan 2024 23:20:35 -0700 Subject: [PATCH] Work towards better editing of embedded items --- .styles/global/buttons.css | 6 +- .styles/root.css | 28 +++--- .styles/sheets/actor/mvp.css | 22 +++-- langs/en-ca.json | 5 +- module/documents/Actor/Handler.mjs | 8 +- module/documents/Actor/Player.mjs | 16 +++- module/helpers/index.mjs | 3 +- module/sheets/PlayerSheet.mjs | 6 +- styles/global/buttons.scss | 6 +- styles/sheets/actor/mvp.scss | 26 ++++-- .../char-sheet-mvp/panels/aspect.pc.hbs | 85 +++++++++++-------- .../char-sheet-mvp/panels/spells.pc.hbs | 2 +- 12 files changed, 136 insertions(+), 77 deletions(-) diff --git a/.styles/global/buttons.css b/.styles/global/buttons.css index 23ed812..97e931c 100644 --- a/.styles/global/buttons.css +++ b/.styles/global/buttons.css @@ -16,7 +16,7 @@ background: #048A81; color: white; } -.dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.confirm:hover, .dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.confirm:focus { +.dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.confirm:hover, .dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.confirm:focus-visible { background: transparent; color: #048A81; border-color: #048A81; @@ -25,7 +25,7 @@ background: #007ACC; color: white; } -.dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.neutral:hover, .dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.neutral:focus { +.dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.neutral:hover, .dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.neutral:focus-visible { background: transparent; color: #007ACC; border-color: #007ACC; @@ -34,7 +34,7 @@ background: #960200; color: white; } -.dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.danger:hover, .dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.danger:focus { +.dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.danger:hover, .dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.danger:focus-visible { background: transparent; color: #960200; border-color: #960200; diff --git a/.styles/root.css b/.styles/root.css index 4a8b0a4..134bc6e 100644 --- a/.styles/root.css +++ b/.styles/root.css @@ -118,7 +118,7 @@ background: #048A81; color: white; } -.dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.confirm:hover, .dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.confirm:focus { +.dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.confirm:hover, .dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.confirm:focus-visible { background: transparent; color: #048A81; border-color: #048A81; @@ -127,7 +127,7 @@ background: #007ACC; color: white; } -.dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.neutral:hover, .dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.neutral:focus { +.dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.neutral:hover, .dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.neutral:focus-visible { background: transparent; color: #007ACC; border-color: #007ACC; @@ -136,7 +136,7 @@ background: #960200; color: white; } -.dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.danger:hover, .dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.danger:focus { +.dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.danger:hover, .dotdungeon.dotdungeon.dotdungeon.dotdungeon > .window-content button.danger:focus-visible { background: transparent; color: #960200; border-color: #960200; @@ -328,6 +328,14 @@ .dotdungeon .actor--pc .panel--aspect .panel__content textarea { resize: vertical; } +.dotdungeon .actor--pc .panel--aspect .aspect__used { + display: flex; + align-items: center; + gap: 4px; +} +.dotdungeon .actor--pc .panel--aspect .aspect__used--input { + margin: 0; +} .dotdungeon .actor--pc .panel--weapons { grid-area: weapons; } @@ -385,12 +393,6 @@ .dotdungeon .actor--pc .panel--spells .spell .placeholder { opacity: 75%; } -.dotdungeon .actor--pc .panel--spells .spell__actions { - display: flex; - flex-direction: row; - justify-content: end; - gap: 4px; -} .dotdungeon .actor--pc .panel--mounts { grid-area: mounts; } @@ -400,6 +402,12 @@ .dotdungeon .actor--pc .panel--storage { grid-area: storage; } +.dotdungeon .actor--pc .actions { + display: flex; + flex-direction: row; + justify-content: end; + gap: 4px; +} @container (max-width: 620px) { .dotdungeon .actor--pc { @@ -482,4 +490,4 @@ resize: vertical; } -/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../styles/generic.scss%22,%22../styles/mixins/_foundry.scss%22,%22../styles/_vars.scss%22,%22../styles/mixins/_partials.scss%22,%22../styles/global/icons.scss%22,%22../styles/global/buttons.scss%22,%22../styles/sheets/partials/stat.scss%22,%22../styles/sheets/partials/skill.scss%22,%22../styles/sheets/partials/panel.scss%22,%22../styles/mixins/_breakpoints.scss%22,%22../styles/sheets/actor/mvp.scss%22,%22../styles/sheets/actor/sync/basic.scss%22,%22../styles/sheets/items/aspect.scss%22,%22../styles/sheets/items/spell.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAIQ;AAKP;EACC;;AAED;EACC;;AAGD;ECfA;EACA;EACA;EDeC,aEhBW;EFiBX;;AAGD;EACC;;AAGD;ECzBA;EACA;EACA;EDyBC;EACA;;AAEA;EACC;;AAIF;AAAA;AAAA;EAGC;EGpCD;EACA;EACA;EACA;EACA;EACA,aDLW;;ACOX;AAAA;AAAA;AAAA;AAAA;EAEC;;AH+BD;EACC;;AAGD;EACC;;AAEA;EACC;;;AAMH;EACC;;AAEA;EACC;EACA,YEzDW;;AF2DX;EACC;EACA,aE/DS;EFgET;;;AIhEF;EACC;EACA;EACA;;AAIC;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;;ACTH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,YHXc;EGYd,OHXe;;AGYf;EACC;EACA,OHfa;EGgBb,cHhBa;;AGoBf;EACC,YHlBc;EGmBd,OHlBe;;AGmBf;EACC;EACA,OHtBa;EGuBb,cHvBa;;AG2Bf;EACC,YHzBa;EG0Bb,OHzBc;;AG0Bd;EACC;EACA,OH7BY;EG8BZ,cH9BY;;AGkCd;EACC;;AAID;EACC;;AACA;EACC;;;ACvDJ;EACC;EACA;EACA;;ACHD;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;;ACdH;EACC;EACA;EAEA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EPlBD;EACA;EACA;EOkBE;EACA;EACA,aNrBU;EMsBV;;AAGD;EAEC,QADO;EAEP,OAFO;EAGP;;AAIF;EACC;;;AC7BD;EDkCA;IACC;IACA;;;AExCF;EACC;EACA,qBACC;EASD;EACA,oBACC;EAGD;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIA;EACC;;AAMF;EACC;;AACA;EACC;EACA;;AAGD;EACC;;AAGF;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAGF;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;;AAGD;EACC;EACA;EACA;;AAGD;AAAA;AAAA;EAGC;EACA;;AAGD;EACC;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;;AAEA;AAAA;EACC;;AAIF;EACC;EACA;;AAGF;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAGF;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AAIH;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAEA;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;EACA;;AAIH;EACC;;AAED;EACC;;AAED;EACC;;;AD5NF;ECoOC;IACC;IACA;IACA,qBACC;;EAkBC;IACC;;EAKD;IACC;IACA;;;AD5PL;ECsQC;IACC;IACA;IACA,qBACC;;EAeC;IACC;;;AC9RL;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAGD;EACC;EACA;;AAMA;EACC;EACA;;;AFlBH;EE4BG;IACC;IACA;;;ACzCL;EACC;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA;;;ACXF;EACC;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA%22,%22file%22:%22root.css%22%7D */ +/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../styles/generic.scss%22,%22../styles/mixins/_foundry.scss%22,%22../styles/_vars.scss%22,%22../styles/mixins/_partials.scss%22,%22../styles/global/icons.scss%22,%22../styles/global/buttons.scss%22,%22../styles/sheets/partials/stat.scss%22,%22../styles/sheets/partials/skill.scss%22,%22../styles/sheets/partials/panel.scss%22,%22../styles/mixins/_breakpoints.scss%22,%22../styles/sheets/actor/mvp.scss%22,%22../styles/sheets/actor/sync/basic.scss%22,%22../styles/sheets/items/aspect.scss%22,%22../styles/sheets/items/spell.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAIQ;AAKP;EACC;;AAED;EACC;;AAGD;ECfA;EACA;EACA;EDeC,aEhBW;EFiBX;;AAGD;EACC;;AAGD;ECzBA;EACA;EACA;EDyBC;EACA;;AAEA;EACC;;AAIF;AAAA;AAAA;EAGC;EGpCD;EACA;EACA;EACA;EACA;EACA,aDLW;;ACOX;AAAA;AAAA;AAAA;AAAA;EAEC;;AH+BD;EACC;;AAGD;EACC;;AAEA;EACC;;;AAMH;EACC;;AAEA;EACC;EACA,YEzDW;;AF2DX;EACC;EACA,aE/DS;EFgET;;;AIhEF;EACC;EACA;EACA;;AAIC;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;;ACTH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,YHXc;EGYd,OHXe;;AGYf;EACC;EACA,OHfa;EGgBb,cHhBa;;AGoBf;EACC,YHlBc;EGmBd,OHlBe;;AGmBf;EACC;EACA,OHtBa;EGuBb,cHvBa;;AG2Bf;EACC,YHzBa;EG0Bb,OHzBc;;AG0Bd;EACC;EACA,OH7BY;EG8BZ,cH9BY;;AGkCd;EACC;;AAID;EACC;;AACA;EACC;;;ACvDJ;EACC;EACA;EACA;;ACHD;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;;ACdH;EACC;EACA;EAEA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EPlBD;EACA;EACA;EOkBE;EACA;EACA,aNrBU;EMsBV;;AAGD;EAEC,QADO;EAEP,OAFO;EAGP;;AAIF;EACC;;;AC7BD;EDkCA;IACC;IACA;;;AExCF;EACC;EACA,qBACC;EASD;EACA,oBACC;EAGD;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIA;EACC;;AAMF;EACC;;AACA;EACC;EACA;;AAGD;EACC;;AAGF;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAGF;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;;AAGD;EACC;EACA;EACA;;AAGD;AAAA;AAAA;EAGC;EACA;;AAGD;EACC;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;;AAEA;AAAA;EACC;;AAIF;EACC;EACA;;AAGF;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAKD;EACC;EACA;EACA;;AAEA;EACC;;AAKJ;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAGF;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AAIH;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAEA;EACC;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAED;EACC;;AAED;EACC;;AAIF;EACC;EACA;EACA;EACA;;;ADzOD;ECgPC;IACC;IACA;IACA,qBACC;;EAkBC;IACC;;EAKD;IACC;IACA;;;ADxQL;ECkRC;IACC;IACA;IACA,qBACC;;EAeC;IACC;;;AC1SL;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAGD;EACC;EACA;;AAMA;EACC;EACA;;;AFlBH;EE4BG;IACC;IACA;;;ACzCL;EACC;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA;;;ACXF;EACC;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA%22,%22file%22:%22root.css%22%7D */ diff --git a/.styles/sheets/actor/mvp.css b/.styles/sheets/actor/mvp.css index 7cbea4b..790e505 100644 --- a/.styles/sheets/actor/mvp.css +++ b/.styles/sheets/actor/mvp.css @@ -111,6 +111,14 @@ .dotdungeon .actor--pc .panel--aspect .panel__content textarea { resize: vertical; } +.dotdungeon .actor--pc .panel--aspect .aspect__used { + display: flex; + align-items: center; + gap: 4px; +} +.dotdungeon .actor--pc .panel--aspect .aspect__used--input { + margin: 0; +} .dotdungeon .actor--pc .panel--weapons { grid-area: weapons; } @@ -168,12 +176,6 @@ .dotdungeon .actor--pc .panel--spells .spell .placeholder { opacity: 75%; } -.dotdungeon .actor--pc .panel--spells .spell__actions { - display: flex; - flex-direction: row; - justify-content: end; - gap: 4px; -} .dotdungeon .actor--pc .panel--mounts { grid-area: mounts; } @@ -183,6 +185,12 @@ .dotdungeon .actor--pc .panel--storage { grid-area: storage; } +.dotdungeon .actor--pc .actions { + display: flex; + flex-direction: row; + justify-content: end; + gap: 4px; +} @container (max-width: 620px) { .dotdungeon .actor--pc { @@ -209,4 +217,4 @@ } } -/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../../../styles/sheets/actor/mvp.scss%22,%22../../../styles/mixins/_breakpoints.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAGA;EACC;EACA,qBACC;EASD;EACA,oBACC;EAGD;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIA;EACC;;AAMF;EACC;;AACA;EACC;EACA;;AAGD;EACC;;AAGF;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAGF;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;;AAGD;EACC;EACA;EACA;;AAGD;AAAA;AAAA;EAGC;EACA;;AAGD;EACC;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;;AAEA;AAAA;EACC;;AAIF;EACC;EACA;;AAGF;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAGF;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AAIH;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAEA;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;EACA;;AAIH;EACC;;AAED;EACC;;AAED;EACC;;;AC5NF;EDoOC;IACC;IACA;IACA,qBACC;;EAkBC;IACC;;EAKD;IACC;IACA;;;AC5PL;EDsQC;IACC;IACA;IACA,qBACC;;EAeC;IACC%22,%22file%22:%22mvp.css%22%7D */ +/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../../../styles/sheets/actor/mvp.scss%22,%22../../../styles/mixins/_breakpoints.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAGA;EACC;EACA,qBACC;EASD;EACA,oBACC;EAGD;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIA;EACC;;AAMF;EACC;;AACA;EACC;EACA;;AAGD;EACC;;AAGF;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAGF;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;;AAGD;EACC;EACA;EACA;;AAGD;AAAA;AAAA;EAGC;EACA;;AAGD;EACC;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;;AAEA;AAAA;EACC;;AAIF;EACC;EACA;;AAGF;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAKD;EACC;EACA;EACA;;AAEA;EACC;;AAKJ;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAGF;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AAIH;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAEA;EACC;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAED;EACC;;AAED;EACC;;AAIF;EACC;EACA;EACA;EACA;;;ACzOD;EDgPC;IACC;IACA;IACA,qBACC;;EAkBC;IACC;;EAKD;IACC;IACA;;;ACxQL;EDkRC;IACC;IACA;IACA,qBACC;;EAeC;IACC%22,%22file%22:%22mvp.css%22%7D */ diff --git a/langs/en-ca.json b/langs/en-ca.json index dba6bc2..a2306b4 100644 --- a/langs/en-ca.json +++ b/langs/en-ca.json @@ -130,8 +130,9 @@ "aspect": { "name.placeholder": "Name...", "used": "Used", - "duration": "Duration", - "description.placeholder": "Description..." + "duration": "Duration: {duration}", + "empty": "You don't have an Aspect yet, add one using the button below or drag one onto your character sheet.", + "add": "Add An Aspect" }, "respawns.header": "Respawns", "sync.header": "Sync", diff --git a/module/documents/Actor/Handler.mjs b/module/documents/Actor/Handler.mjs index 8252ba2..bcb09a4 100644 --- a/module/documents/Actor/Handler.mjs +++ b/module/documents/Actor/Handler.mjs @@ -15,11 +15,10 @@ export class ActorHandler extends Actor { }; async openEmbeddedSheet($event) { - console.log(`openEmbeddedSheet`) if (this.fn?.openEmbeddedSheet) { this.fn.openEmbeddedSheet.bind(this)($event); } else { - const data = $event.currentTarget.dataset; + const data = $event.target.dataset; let item = await fromUuid(data.embeddedEdit); item?.sheet.render(true); }; @@ -35,9 +34,8 @@ export class ActorHandler extends Actor { this.fn.genericEmbeddedDelete.bind(this)($event); }; - async createCustomSpell() { + async createCustomSpell($event) { if (!this.fn?.createCustomSpell) return; - this.fn.createCustomSpell.bind(this)(); - this.sheet.render(true); + this.fn.createCustomSpell.bind(this)($event); }; }; diff --git a/module/documents/Actor/Player.mjs b/module/documents/Actor/Player.mjs index 65239f8..599ec65 100644 --- a/module/documents/Actor/Player.mjs +++ b/module/documents/Actor/Player.mjs @@ -9,7 +9,7 @@ export class PlayerActor { /** @this {Actor} */ static async genericEmbeddedDelete($event) { - let data = $event.delegateTarget.dataset; + let data = $event.currentTarget.dataset; let item = await fromUuid(data.embeddedId); if (!item) { @@ -36,6 +36,20 @@ export class PlayerActor { }); }; + /** @this {Actor} */ + static async createCustomItem(defaults) { + let items = await this.createEmbeddedDocuments(`Item`, defaults); + if (items.length == 0) { + throw new Error(); + }; + this.sheet.render(); + if (game.settings.get(`dotdungeon`, `openEmbeddedOnCreate`)) { + for (const item of items) { + item.sheet.render(true); + }; + }; + }; + /** @this {Actor} */ static async createCustomSpell() { let items = await this.createEmbeddedDocuments( diff --git a/module/helpers/index.mjs b/module/helpers/index.mjs index 202a4f4..6489fb4 100644 --- a/module/helpers/index.mjs +++ b/module/helpers/index.mjs @@ -15,6 +15,7 @@ export default { // Simple helpers "dd-stringify": v => JSON.stringify(v, null, ` `), + "dd-empty": v => v.length == 0, // Logic helpers "eq": (a, b) => a == b, @@ -26,5 +27,5 @@ export default { "nand": (a, b) => !(a && b), "xor": (a, b) => (a || b) && !(a && b), "xnor": (a, b) => !((a || b) && !(a && b)), - "defined": v => v != null + "defined": v => v != null, }; \ No newline at end of file diff --git a/module/sheets/PlayerSheet.mjs b/module/sheets/PlayerSheet.mjs index c1f588c..db69a52 100644 --- a/module/sheets/PlayerSheet.mjs +++ b/module/sheets/PlayerSheet.mjs @@ -20,8 +20,9 @@ export class PlayerSheet extends GenericActorSheet { console.debug(`.dungeon | Adding event listeners for Actor: ${this.id}`); html.find(`.add-spell`).on(`click`, this.actor.createCustomSpell.bind(this.actor)); - html.find(`[data-embedded-update]`) - .on(`change`, this.actor.genericEmbeddedUpdate.bind(this.actor)); + // TODO: Apparently the `change` event is bad to use in Foundry + // html.find(`[data-embedded-update]`) + // .on(`change`, this.actor.genericEmbeddedUpdate.bind(this.actor)); html.find(`[data-embedded-delete]`) .on(`click`, this.actor.genericEmbeddedDelete.bind(this.actor)); html.find(`[data-embedded-edit]`) @@ -38,6 +39,7 @@ export class PlayerSheet extends GenericActorSheet { ctx.computed = { canChangeGroup: ctx.settings.playersCanChangeGroup || ctx.isGM, + canAddAspect: ctx.items.aspect.length == 0, }; console.log(ctx) diff --git a/styles/global/buttons.scss b/styles/global/buttons.scss index fe4237d..04e809e 100644 --- a/styles/global/buttons.scss +++ b/styles/global/buttons.scss @@ -18,7 +18,7 @@ &.confirm { background: $colour-confirm; color: $text-on-confirm; - &:hover, &:focus { + &:hover, &:focus-visible { background: transparent; color: $colour-confirm; border-color: $colour-confirm; @@ -28,7 +28,7 @@ &.neutral { background: $colour-neutral; color: $text-on-neutral; - &:hover, &:focus { + &:hover, &:focus-visible { background: transparent; color: $colour-neutral; border-color: $colour-neutral; @@ -38,7 +38,7 @@ &.danger { background: $colour-danger; color: $text-on-danger; - &:hover, &:focus { + &:hover, &:focus-visible { background: transparent; color: $colour-danger; border-color: $colour-danger; diff --git a/styles/sheets/actor/mvp.scss b/styles/sheets/actor/mvp.scss index eb16b4f..f729053 100644 --- a/styles/sheets/actor/mvp.scss +++ b/styles/sheets/actor/mvp.scss @@ -141,6 +141,18 @@ resize: vertical; } } + + .aspect { + &__used { + display: flex; + align-items: center; + gap: 4px; + + &--input { + margin: 0; + } + } + } } &--weapons { grid-area: weapons; @@ -203,13 +215,6 @@ .placeholder { opacity: 75%; } - - &__actions { - display: flex; - flex-direction: row; - justify-content: end; - gap: 4px; - } } } &--mounts { @@ -222,6 +227,13 @@ grid-area: storage; } } + + .actions { + display: flex; + flex-direction: row; + justify-content: end; + gap: 4px; + } } diff --git a/templates/actors/char-sheet-mvp/panels/aspect.pc.hbs b/templates/actors/char-sheet-mvp/panels/aspect.pc.hbs index 913a545..7e87852 100644 --- a/templates/actors/char-sheet-mvp/panels/aspect.pc.hbs +++ b/templates/actors/char-sheet-mvp/panels/aspect.pc.hbs @@ -1,37 +1,52 @@ {{#> dotdungeon.panel class="aspect" title="dotdungeon.actor.pc.panel.aspect"}} - -