[Feature] Compedium Browser (#707)

* Create files

* Item Browser v0.5

* dialog with (temporary)

* Css

* initial style in compedium browser

* config

* fixes

* Replace compendium calls

* Level Up

* style compedium item list

* removing css files

---------

Co-authored-by: Dapoolp <elcatnet@gmail.com>
Co-authored-by: WBHarry <williambjrklund@gmail.com>
This commit is contained in:
Murilo Brito 2025-08-07 20:08:52 -03:00 committed by GitHub
parent a19c77ae4a
commit a25007b994
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
34 changed files with 1650 additions and 123 deletions

View file

@ -31,25 +31,25 @@
{{#if document.system.class.value}}
<span data-action="editDoc" data-item-uuid="{{document.system.class.value.uuid}}">{{document.system.class.value.name}}</span>
{{else}}
<span class="missing-header-feature" data-action="openPack" data-key="daggerheart.classes">{{localize 'TYPES.Item.class'}}</span>
<span class="missing-header-feature" data-action="openPack" data-key="classes">{{localize 'TYPES.Item.class'}}</span>
{{/if}}
<span class="dot">•</span>
{{#if document.system.class.subclass}}
<span data-action="editDoc" data-item-uuid="{{document.system.class.subclass.uuid}}">{{document.system.class.subclass.name}}</span>
{{else}}
<span class="missing-header-feature" data-action="openPack" data-key="daggerheart.subclasses">{{localize 'TYPES.Item.subclass'}}</span>
<span class="missing-header-feature" data-action="openPack" data-key="subclasses">{{localize 'TYPES.Item.subclass'}}</span>
{{/if}}
<span class="dot">•</span>
{{#if document.system.community}}
<span data-action="editDoc" data-item-uuid="{{document.system.community.uuid}}">{{document.system.community.name}}</span>
{{else}}
<span class="missing-header-feature" data-action="openPack" data-key="daggerheart.communities">{{localize 'TYPES.Item.community'}}</span>
<span class="missing-header-feature" data-action="openPack" data-key="communities">{{localize 'TYPES.Item.community'}}</span>
{{/if}}
<span class="dot">•</span>
{{#if document.system.ancestry}}
<span data-action="editDoc" data-item-uuid="{{document.system.ancestry.uuid}}">{{document.system.ancestry.name}}</span>
{{else}}
<span class="missing-header-feature" data-action="openPack" data-key="daggerheart.ancestries">{{localize 'TYPES.Item.ancestry'}}</span>
<span class="missing-header-feature" data-action="openPack" data-key="ancestries">{{localize 'TYPES.Item.ancestry'}}</span>
{{/if}}
</div>
@ -58,13 +58,13 @@
{{#if document.system.multiclass.value}}
<span data-action="editDoc"data-item-uuid="{{document.system.multiclass.value.uuid}}">{{document.system.multiclass.value.name}}</span>
{{else}}
<span data-action="openPack" data-key="daggerheart.classes">{{localize 'DAGGERHEART.GENERAL.multiclass'}}</span>
<span data-action="openPack" data-key="classes">{{localize 'DAGGERHEART.GENERAL.multiclass'}}</span>
{{/if}}
<span class="dot">•</span>
{{#if document.system.multiclass.subclass}}
<span data-action="editDoc" data-item-uuid="{{document.system.multiclass.subclass.uuid}}">{{document.system.multiclass.subclass.name}}</span>
{{else}}
<span class="missing-header-feature" data-action="openPack" data-key="daggerheart.subclasses">{{localize 'TYPES.Item.subclass'}}</span>
<span class="missing-header-feature" data-action="openPack" data-key="subclasses">{{localize 'TYPES.Item.subclass'}}</span>
{{/if}}
</div>
{{/if}}

View file

@ -10,6 +10,9 @@
<a class="filter-button">
<i class="fa-solid fa-filter"></i>
</a>
<a data-tooltip="{{localize 'DAGGERHEART.UI.Tooltip.compendiumBrowser'}}" data-action="tempBrowser">
<i class="fa-solid fa-book-atlas"></i>
</a>
</div>
<div class="currency-section">

View file

@ -26,7 +26,7 @@ Parameters:
<legend>
{{localize title}}
{{#if canCreate}}
<a data-action="createDoc" data-document-class="{{ifThen (eq type 'effect') 'ActiveEffect' 'Item' }}"
<a data-action="{{ifThen (or (eq type 'effect') (eq type 'feature')) 'createDoc' 'addNewItem' }}" data-document-class="{{ifThen (eq type 'effect') 'ActiveEffect' 'Item' }}"
data-type="{{ifThen (eq type 'effect') 'base' type}}"
{{#if inVault}}data-in-vault="{{inVault}}"{{/if}}
{{#if disabled}} data-disabled="{{disabled}}"{{/if}}

View file

@ -7,6 +7,6 @@
<fieldset class="two-columns">
<legend>{{localize tabs.settings.label}}</legend>
<span>{{localize "DAGGERHEART.ITEMS.Subclass.spellcastingTrait"}}</span>
{{formField systemFields.spellcastingTrait value=source.system.spellcastingTrait localize=true}}
{{formInput systemFields.spellcastingTrait value=source.system.spellcastingTrait localize=true}}
</fieldset>
</section>

View file

@ -6,15 +6,15 @@
<fieldset class="two-columns">
<legend>{{localize tabs.settings.label}}</legend>
<span>{{localize "DAGGERHEART.GENERAL.Tiers.singular"}}</span>
{{formField systemFields.tier value=source.system.tier}}
{{formInput systemFields.tier value=source.system.tier}}
<span>{{localize "DAGGERHEART.ITEMS.Weapon.secondaryWeapon"}}</span>
{{formField systemFields.secondary value=source.system.secondary}}
{{formInput systemFields.secondary value=source.system.secondary}}
<span>{{localize "DAGGERHEART.GENERAL.Trait.single"}}</span>
{{formInput systemFields.attack.fields.roll.fields.trait value=document.system.attack.roll.trait name="system.attack.roll.trait" label="DAGGERHEART.GENERAL.Trait.single" localize=true}}
<span>{{localize "DAGGERHEART.GENERAL.range"}}</span>
{{formInput systemFields.attack.fields.range value=document.system.attack.range label="Range" name="system.attack.range" localize=true}}
<span>{{localize "DAGGERHEART.GENERAL.burden"}}</span>
{{formField systemFields.burden value=source.system.burden localize=true}}
{{formInput systemFields.burden value=source.system.burden localize=true}}
</fieldset>
<fieldset class="two-columns">

View file

@ -0,0 +1,89 @@
<div class="compendium-results">
{{#if menu.data }}
<div class="menu-path">
{{#each menu.path}}
{{#if (eq this "folders")}}
<span class="path-link">
/
</span>
{{else}}
<span class="item-path">{{this}}</span>
{{/if}}
{{/each}}
</div>
<div class="item-filter">
<div class="filter-header">
<div class="search-bar">
<div class="icon">
<i class="fa-solid fa-magnifying-glass"></i>
</div>
<input type="search" name="search" class="search-input" placeholder="Search...">
</div>
{{#if fieldFilter.length}}
<a data-tooltip="Filters" data-action="expandContent"><i class="fa-solid fa-filter"></i></a>
{{/if}}
<a data-tooltip="Erase" data-action="resetFilters"><i class="fa-solid fa-eraser"></i></a>
</div>
<div class="filter-content extensible">
<div class="wrapper">
{{#each fieldFilter}}
{{#if choices }}
<div class="form-group"{{#with (lookup @root.presets.filter key)}}{{#if forced}} disabled{{/if}}{{/with}}>
<label>{{localize label}}</label>
<div class="form-fields">
<select data-key="{{key}}" name={{name}}>
{{selectOptions choices valueAttr="value" blank="" localize=true selected=value}}
</select>
</div>
</div>
{{else}}
{{#if filtered }}
{{formField field localize=true blank="" name=name choices=(@root.formatChoices this) valueAttr="value" dataset=(object key=key) value=value}}
{{else}}
{{#if field.label}}
{{formField field localize=true blank="" name=name dataset=(object key=key) value=value}}
{{else}}
{{formField field localize=true blank="" name=name dataset=(object key=key) label=label value=value}}
{{/if}}
{{/if}}
{{/if}}
{{/each}}
</div>
</div>
</div>
{{!-- <div class="item-list-container"> --}}
{{#if menu.data.columns.length}}
<div class="item-list-header">
<div class="item-list-img"></div>
<div class="item-list-name" data-sort-key="name" data-sort-type="ASC" data-action="sortList">Name</div>
{{#each menu.data.columns}}
<div data-sort-key="{{key}}" data-sort-type="" data-action="sortList">{{label}}</div>
{{/each}}
</div>
{{/if}}
<div class="item-list">
{{#each items}}
<div class="item-container" data-item-uuid="{{uuid}}" draggable="true">
<div class="item-header">
<div class="item-info" data-action="expandContent">
<img src="{{img}}" data-item-key="img" class="item-list-img">
<div data-item-key="name" class="item-list-name">{{name}}</div>
{{#each ../menu.data.columns}}
<div data-item-key="{{key}}">{{#with (@root.formatLabel ../this this) as | label |}}{{{label}}}{{/with}}</div>
{{/each}}
</div>
</div>
<div class="item-desc extensible">
<div class="wrapper">{{{system.description}}}</div>
</div>
</div>
{{/each}}
</div>
{{!-- </div> --}}
{{else}}
<div class="welcome-message">
<h2 class="title">Daggerheart Compendium Browser</h2>
<span class="hint"><i>Select a Folder in sidebar to start browsing trought the compendium</i></span>
</div>
{{/if}}
</div>

View file

@ -0,0 +1,28 @@
<div class="compendium-sidebar">
{{#each compendiums}}
<details class="compendium-container" data-compendium-id="{{id}}" open>
<summary>
{{label}}
<line-div></line-div>
</summary>
<div class="folder-list">
{{#each folders}}
<div class="{{#if selected}} is-selected{{/if}}" data-action="selectFolder" data-folder-id="{{id}}">{{label}}</div>
{{!-- <div data-action="selectFolder" data-folder-id="{{id}}">{{label}}</div> --}}
<div class="subfolder-list">
{{#each folders}}
<div
class="subfolder-item {{#if selected}} is-selected{{/if}}"
data-action="selectFolder"
data-folder-id="{{../id}}.folders.{{id}}"
>
{{label}}
</div>
{{/each}}
</div>
{{/each}}
</div>
<line-div></line-div>
</details>
{{/each}}
</div>