[Fix] selecting multiclass and multiple sheet issues (#1884)

* Fix error with adding multiclass

* Make it more card like

* Fix issues with responsiveness when resized

* Fix cards spilling out of container when multiple lines

* Remove mask and fix regression in scrollbar
This commit is contained in:
Carlos Fernandez 2026-05-15 03:23:55 -04:00 committed by GitHub
parent 855f4549ec
commit dd2aa10871
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 90 additions and 85 deletions

View file

@ -156,6 +156,7 @@ export default class DhCharacterLevelUp extends LevelUpBase {
if (multiclasses?.[0]) { if (multiclasses?.[0]) {
const data = multiclasses[0]; const data = multiclasses[0];
const multiclass = data.data.length > 0 ? await foundry.utils.fromUuid(data.data[0]) : {}; const multiclass = data.data.length > 0 ? await foundry.utils.fromUuid(data.data[0]) : {};
const subclasses = (await multiclass?.system?.fetchSubclasses()) ?? [];
context.multiclass = { context.multiclass = {
...data, ...data,
@ -175,13 +176,12 @@ export default class DhCharacterLevelUp extends LevelUpBase {
alreadySelected alreadySelected
}; };
}) ?? [], }) ?? [],
subclasses: subclasses: subclasses.map(subclass => ({
multiclass?.system?.subclasses.map(subclass => ({
...subclass, ...subclass,
uuid: subclass.uuid, uuid: subclass.uuid,
selected: data.secondaryData.subclass === subclass.uuid, selected: data.secondaryData.subclass === subclass.uuid,
disabled: data.secondaryData.subclass && data.secondaryData.subclass !== subclass.uuid disabled: data.secondaryData.subclass && data.secondaryData.subclass !== subclass.uuid
})) ?? [], })),
compendium: 'classes', compendium: 'classes',
limit: 1 limit: 1
}; };

View file

@ -114,9 +114,6 @@
.card-preview-container { .card-preview-container {
flex: 1; flex: 1;
}
.card-preview-container {
border-color: light-dark(@dark-blue, @golden); border-color: light-dark(@dark-blue, @golden);
} }

View file

@ -1,10 +1,5 @@
@import './attribution/sheet.less'; @import './attribution/sheet.less';
@import './level-up/navigation-container.less'; @import './level-up/index.less';
@import './level-up/selections-container.less';
@import './level-up/sheet.less';
@import './level-up/summary-container.less';
@import './level-up/tiers-container.less';
@import './level-up/footer.less';
@import './resource-dice/sheet.less'; @import './resource-dice/sheet.less';

View file

@ -0,0 +1,6 @@
@import './navigation-container.less';
@import './selections-container.less';
@import './summary-container.less';
@import './tiers-container.less';
@import './footer.less';
@import './sheet.less';

View file

@ -3,10 +3,7 @@
.daggerheart.levelup { .daggerheart.levelup {
.levelup-selections-container { .levelup-selections-container {
overflow: auto;
padding: 10px 0; padding: 10px 0;
max-height: 500px;
mask-image: linear-gradient(0deg, transparent 0%, black 5%, black 95%, transparent 100%);
.achievement-experience-cards { .achievement-experience-cards {
display: flex; display: flex;
@ -43,20 +40,22 @@
.levelup-card-selection { .levelup-card-selection {
display: flex; display: flex;
flex-wrap: wrap;
justify-content: center; justify-content: center;
gap: 40px; gap: 40px;
height: 190px; height: 190px;
align-items: stretch;
.card-preview-container { .card-preview-container {
height: 100%; height: 190px;
max-width: 200px; max-width: 200px;
} }
.levelup-domains-selection-container { .levelup-domains-selection-container {
display: flex; display: grid;
flex-direction: column; grid-auto-flow: column;
gap: 8px; grid-template-rows: repeat(2, minmax(0, 1fr));
height: 100%;
gap: 4px;
.levelup-domain-selection-container { .levelup-domain-selection-container {
display: flex; display: flex;
@ -64,6 +63,8 @@
align-items: center; align-items: center;
position: relative; position: relative;
cursor: pointer; cursor: pointer;
overflow: hidden;
width: 93px;
&.disabled { &.disabled {
pointer-events: none; pointer-events: none;
@ -72,16 +73,20 @@
.levelup-domain-label { .levelup-domain-label {
position: absolute; position: absolute;
left: 0;
right: 0;
bottom: 0;
text-align: center; text-align: center;
top: 4px;
background: grey; background: grey;
padding: 0 12px; padding: 2px 12px;
border-radius: 6px;
z-index: 2; z-index: 2;
line-height: 1;
} }
img { img {
height: 124px; object-fit: cover;
width: auto;
height: auto;
&.svg { &.svg {
filter: @beige-filter; filter: @beige-filter;
@ -90,17 +95,18 @@
.levelup-domain-selected { .levelup-domain-selected {
position: absolute; position: absolute;
height: 54px; height: 40px;
width: 54px; width: 40px;
border-radius: 50%; border-radius: 50%;
border: 2px solid; border: 2px solid @golden;
font-size: var(--font-size-48); font-size: var(--font-size-24);
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
background-image: url(../assets/parchments/dh-parchment-light.png); background: @dark-golden;
color: var(--color-dark-5); color: @golden;
top: calc(50% - 29px); top: 10px;
z-index: 2;
i { i {
position: relative; position: relative;

View file

@ -11,9 +11,11 @@
}); });
.daggerheart.levelup { .daggerheart.levelup {
.window-content { .tab.active {
max-height: 960px; flex: 1;
overflow: auto; overflow: auto;
scrollbar-width: thin;
scrollbar-color: light-dark(@dark-blue, @golden) transparent;
} }
div[data-application-part='form'] { div[data-application-part='form'] {
@ -22,7 +24,6 @@
gap: 8px; gap: 8px;
} }
section {
.section-container { .section-container {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
@ -31,7 +32,6 @@
margin-top: 8px; margin-top: 8px;
flex-wrap: wrap; flex-wrap: wrap;
} }
}
.levelup-footer { .levelup-footer {
display: flex; display: flex;

View file

@ -802,6 +802,7 @@
.preview-image-container { .preview-image-container {
width: 100%; width: 100%;
min-height: 0;
flex-grow: 1; flex-grow: 1;
object-fit: cover; object-fit: cover;
border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0;

View file

@ -43,45 +43,6 @@
</fieldset> </fieldset>
{{/if}} {{/if}}
{{#if (gt this.domainCards.length 0)}}
<div class="card-section">
<div class="card-section-header">
<side-line-div class="invert"></side-line-div>
<h3>{{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.domainCards"}}</h3>
<side-line-div></side-line-div>
</div>
<div class="tip">
</div>
<div class="levelup-card-selection domain-cards">
{{#each this.domainCards}}
{{#> "systems/daggerheart/templates/components/card-preview.hbs" this }}
{{#each this.emptySubtexts}}
<div class="">{{this}}</div>
{{/each}}
{{/"systems/daggerheart/templates/components/card-preview.hbs"}}
{{/each}}
</div>
</div>
{{/if}}
{{#if (gt this.subclassCards.length 0)}}
<div class="card-section">
<div class="card-section-header">
<side-line-div class="invert"></side-line-div>
<h3>{{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.subclass"}}</h3>
<side-line-div></side-line-div>
</div>
<div class="levelup-card-selection subclass-cards">
{{#each this.subclassCards}}
{{> "systems/daggerheart/templates/levelup/parts/selectable-card-preview.hbs" img=this.img header=this.featureLabel name=this.name path=this.path selected=this.selected uuid=this.uuid isMulticlass=this.isMulticlass featureState=this.featureState disabled=this.disabled }}
{{/each}}
</div>
</div>
{{/if}}
{{#if this.multiclass}} {{#if this.multiclass}}
<div class="card-section"> <div class="card-section">
<div class="card-section-header"> <div class="card-section-header">
@ -128,6 +89,45 @@
</div> </div>
{{/if}} {{/if}}
{{#if (gt this.domainCards.length 0)}}
<div class="card-section">
<div class="card-section-header">
<side-line-div class="invert"></side-line-div>
<h3>{{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.domainCards"}}</h3>
<side-line-div></side-line-div>
</div>
<div class="tip">
</div>
<div class="levelup-card-selection domain-cards">
{{#each this.domainCards}}
{{#> "systems/daggerheart/templates/components/card-preview.hbs" this }}
{{#each this.emptySubtexts}}
<div class="">{{this}}</div>
{{/each}}
{{/"systems/daggerheart/templates/components/card-preview.hbs"}}
{{/each}}
</div>
</div>
{{/if}}
{{#if (gt this.subclassCards.length 0)}}
<div class="card-section">
<div class="card-section-header">
<side-line-div class="invert"></side-line-div>
<h3>{{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.subclass"}}</h3>
<side-line-div></side-line-div>
</div>
<div class="levelup-card-selection subclass-cards">
{{#each this.subclassCards}}
{{> "systems/daggerheart/templates/levelup/parts/selectable-card-preview.hbs" img=this.img header=this.featureLabel name=this.name path=this.path selected=this.selected uuid=this.uuid isMulticlass=this.isMulticlass featureState=this.featureState disabled=this.disabled }}
{{/each}}
</div>
</div>
{{/if}}
{{#if this.vicious}} {{#if this.vicious}}
<div> <div>
<h3>{{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.vicious"}}</h3> <h3>{{localize "DAGGERHEART.APPLICATIONS.Levelup.summary.vicious"}}</h3>