add colapsable descriptions in chat messages

This commit is contained in:
moliloo 2025-07-29 00:56:42 -03:00
parent 74ccd79390
commit 74f7f1f158
8 changed files with 163 additions and 83 deletions

View file

@ -54,7 +54,7 @@ export default class DhpDeathMove extends HandlebarsApplicationMixin(Application
{ {
player: this.actor.name, player: this.actor.name,
actor: { name: this.actor.name, img: this.actor.img }, actor: { name: this.actor.name, img: this.actor.img },
author: this.author, author: game.users.get(game.user.id),
speaker: cls.getSpeaker(), speaker: cls.getSpeaker(),
title: game.i18n.localize(this.selectedMove.name), title: game.i18n.localize(this.selectedMove.name),
img: this.selectedMove.img, img: this.selectedMove.img,

View file

@ -15,16 +15,45 @@
object-fit: cover; object-fit: cover;
} }
details[open] {
.fa-chevron-down {
transform: rotate(180deg);
transition: all 0.3s ease;
}
}
.domain-card-move {
width: 100%;
.fa-chevron-down {
transition: all 0.3s ease;
margin-left: auto;
}
.domain-card-header { .domain-card-header {
display: flex; display: flex;
flex-direction: column; flex-direction: row;
width: 100%; align-items: center;
margin: 8px 8px 0; margin: 8px;
padding-bottom: 5px; padding-bottom: 5px;
width: -webkit-fill-available; width: -webkit-fill-available;
gap: 5px; gap: 5px;
border-bottom: 1px solid @golden; border-bottom: 1px solid @golden;
&:hover {
background: light-dark(@dark-blue-10, @golden-10);
cursor: pointer;
transition: all 0.3s ease;
}
.domain-label {
display: flex;
flex-direction: column;
width: 100%;
padding-bottom: 5px;
width: -webkit-fill-available;
gap: 5px;
.title { .title {
font-size: 20px; font-size: 20px;
color: @golden; color: @golden;
@ -52,6 +81,8 @@
} }
} }
} }
}
}
.description { .description {
color: @beige; color: @beige;

View file

@ -8,16 +8,37 @@
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
details[open] {
.fa-chevron-down {
transform: rotate(180deg);
transition: all 0.3s ease;
}
}
.action-move {
width: 100%;
.fa-chevron-down {
transition: all 0.3s ease;
margin-left: auto;
}
.action-section { .action-section {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
width: 100%; align-items: center;
margin: 8px 8px 0; margin: 8px 8px 0;
padding-bottom: 5px; padding-bottom: 5px;
width: -webkit-fill-available; width: -webkit-fill-available;
gap: 5px; gap: 5px;
border-bottom: 1px solid @golden; border-bottom: 1px solid @golden;
&:hover {
background: light-dark(@dark-blue-10, @golden-10);
cursor: pointer;
transition: all 0.3s ease;
}
.action-img { .action-img {
width: 40px; width: 40px;
height: 40px; height: 40px;
@ -45,6 +66,7 @@
} }
} }
} }
}
.description { .description {
color: @beige; color: @beige;

View file

@ -8,10 +8,23 @@
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
details[open] {
.fa-chevron-down {
transform: rotate(180deg);
transition: all 0.3s ease;
}
}
.downtime-moves-list { .downtime-moves-list {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 5px; gap: 5px;
width: 100%;
.fa-chevron-down {
transition: all 0.3s ease;
margin-left: auto;
}
.downtime-move { .downtime-move {
width: 100%; width: 100%;
@ -25,6 +38,12 @@
padding-bottom: 5px; padding-bottom: 5px;
width: -webkit-fill-available; width: -webkit-fill-available;
&:hover {
background: light-dark(@dark-blue-10, @golden-10);
cursor: pointer;
transition: all 0.3s ease;
}
.downtime-image { .downtime-image {
width: 40px; width: 40px;
height: 40px; height: 40px;

View file

@ -1,6 +1,8 @@
<div class="daggerheart chat domain-card"> <div class="daggerheart chat domain-card">
<img class="card-img" src="{{item.img}}" /> <img class="card-img" src="{{item.img}}" />
<div class="domain-card-header"> <details class="domain-card-move">
<summary class="domain-card-header">
<div class="domain-label">
<h2 class="title">{{item.name}}</h2> <h2 class="title">{{item.name}}</h2>
<ul class="tags"> <ul class="tags">
{{#each item.tags as |tag|}} {{#each item.tags as |tag|}}
@ -8,7 +10,10 @@
{{/each}} {{/each}}
</ul> </ul>
</div> </div>
<i class="fa-solid fa-chevron-down"></i>
</summary>
<div class="description">{{{description}}}</div> <div class="description">{{{description}}}</div>
</details>
<footer class="ability-card-footer"> <footer class="ability-card-footer">
{{#each actions as |action index|}} {{#each actions as |action index|}}
<button class="ability-use-button" data-index="{{index}}"> <button class="ability-use-button" data-index="{{index}}">

View file

@ -1,12 +1,13 @@
<div class="daggerheart chat action"> <div class="daggerheart chat action">
<div class="action-section"> <details class="action-move">
<summary class="action-section">
<img class="action-img" src="{{action.img}}" /> <img class="action-img" src="{{action.img}}" />
<div class="action-header"> <div class="action-header">
<h2 class="title">{{action.name}}</h2> <h2 class="title">{{action.name}}</h2>
<span class="label">{{itemOrigin.name}}</span> <span class="label">{{itemOrigin.name}}</span>
</div> </div>
</div> <i class="fa-solid fa-chevron-down"></i>
{{#if description}} </summary>
<div class="description">{{{description}}}</div> <div class="description">{{{description}}}</div>
{{/if}} </details>
</div> </div>

View file

@ -1,16 +1,17 @@
<div class="daggerheart chat downtime"> <div class="daggerheart chat downtime">
<ul class="downtime-moves-list"> <ul class="downtime-moves-list">
<li class="downtime-move"> <details class="downtime-move">
<div class="downtime-label"> <summary class="downtime-label">
<img class="downtime-image" src="{{this.img}}" /> <img class="downtime-image" src="{{this.img}}" />
<div class="header-label"> <div class="header-label">
<h2 class="title">{{this.title}}</h2> <h2 class="title">{{this.title}}</h2>
<span class="label">{{localize 'DAGGERHEART.UI.Chat.deathMove.title'}}</span> <span class="label">{{localize 'DAGGERHEART.UI.Chat.deathMove.title'}}</span>
</div> </div>
</div> <i class="fa-solid fa-chevron-down"></i>
</summary>
<div class="description"> <div class="description">
{{{this.description}}} {{{this.description}}}
</div> </div>
</li> </details>
</ul> </ul>
</div> </div>

View file

@ -1,21 +1,22 @@
<div class="daggerheart chat downtime"> <div class="daggerheart chat downtime">
<ul class="downtime-moves-list"> <ul class="downtime-moves-list">
{{#each moves as | move index |}} {{#each moves as | move index |}}
<li class="downtime-move"> <details class="downtime-move">
<div class="downtime-label"> <summary class="downtime-label">
<img class="downtime-image" src="{{move.img}}" /> <img class="downtime-image" src="{{move.img}}" />
<div class="header-label"> <div class="header-label">
<h2 class="title">{{move.name}}</h2> <h2 class="title">{{move.name}}</h2>
<span class="label">{{localize 'DAGGERHEART.GENERAL.Bonuses.rest.downtimeAction'}}</span> <span class="label">{{localize 'DAGGERHEART.GENERAL.Bonuses.rest.downtimeAction'}}</span>
</div> </div>
</div> <i class="fa-solid fa-chevron-down"></i>
</summary>
<div class="description"> <div class="description">
{{{move.description}}} {{{move.description}}}
</div> </div>
</details>
{{#each move.actions as | action index |}} {{#each move.actions as | action index |}}
<button class="action-use-button" data-move-index="{{@../key}}" data-action-index="{{index}}">{{localize action.name}}</button> <button class="action-use-button" data-move-index="{{@../key}}" data-action-index="{{index}}">{{localize action.name}}</button>
{{/each}} {{/each}}
</li>
{{/each}} {{/each}}
</ul> </ul>
</div> </div>