From 609b5820ba0cf3a4c0bc7b71523bf4cb976cec4e Mon Sep 17 00:00:00 2001 From: Oliver-Akins Date: Fri, 8 Mar 2024 22:27:04 -0700 Subject: [PATCH] Add the filter checkboxes and infra for toggling them (closes #110) --- module/sheets/Actors/PC/Improved.mjs | 25 +++++++++++++++++++ .../actor/char-sheet/pages/inventory.scss | 22 ++++++++++++++++ .../v2/partials/inventory/player.v2.pc.hbs | 10 ++++++++ 3 files changed, 57 insertions(+) diff --git a/module/sheets/Actors/PC/Improved.mjs b/module/sheets/Actors/PC/Improved.mjs index 7396eaf..7a0c36f 100644 --- a/module/sheets/Actors/PC/Improved.mjs +++ b/module/sheets/Actors/PC/Improved.mjs @@ -50,6 +50,7 @@ export class PlayerSheetv2 extends GenericActorSheet { canChangeGroup: ctx.settings.playersCanChangeGroup || ctx.isGM, canAddAspect: !await actor.proxyFunction.bind(actor)(`atAspectLimit`), stats: this.#statData, + itemFilters: this.#itemFilters, }; console.log(ctx) return ctx; @@ -102,6 +103,30 @@ export class PlayerSheetv2 extends GenericActorSheet { return stats; }; + _itemFiltersActive = new Set(); + toggleItemFilter(filterName) { + if (this._itemFiltersActive.has(filterName)) { + this._itemFiltersActive.add(filterName); + } else { + this._itemFiltersActive.delete(filterName); + }; + this.render(); + }; + + get #itemFilters() { + const types = CONFIG.Item.typeLabels; + const filters = []; + for (const type in types) { + if (["base", "spell", "legendaryItem"].includes(type)) continue; + filters.push({ + label: localizer(types[type]), + key: type, + active: this._itemFiltersActive.has(type), + }); + }; + return filters; + }; + _updateObject(...args) { console.log(args) super._updateObject(...args); diff --git a/styles/sheets/actor/char-sheet/pages/inventory.scss b/styles/sheets/actor/char-sheet/pages/inventory.scss index 366e8df..094be83 100644 --- a/styles/sheets/actor/char-sheet/pages/inventory.scss +++ b/styles/sheets/actor/char-sheet/pages/inventory.scss @@ -64,4 +64,26 @@ text-align: center; } } + + .filter-panel { + display: grid; + grid-template-columns: 1fr 1fr; + grid-template-rows: repeat(6, 1fr); + gap: 8px; + + label { + display: flex; + align-items: center; + gap: 4px; + + &:nth-of-type(2n) { + flex-direction: row-reverse; + justify-content: right; + } + } + + input[type="checkbox"] { + margin: 0; + } + } } \ No newline at end of file diff --git a/templates/actors/char-sheet/v2/partials/inventory/player.v2.pc.hbs b/templates/actors/char-sheet/v2/partials/inventory/player.v2.pc.hbs index 0a3d01a..8201e75 100644 --- a/templates/actors/char-sheet/v2/partials/inventory/player.v2.pc.hbs +++ b/templates/actors/char-sheet/v2/partials/inventory/player.v2.pc.hbs @@ -46,5 +46,15 @@

Show

+ + {{#each computed.itemFilters as | filter |}} + + {{/each}}
\ No newline at end of file