diff --git a/src/app/modules/shows/show/show.component.html b/src/app/modules/shows/show/show.component.html
index ce6deee..5366890 100644
--- a/src/app/modules/shows/show/show.component.html
+++ b/src/app/modules/shows/show/show.component.html
@@ -31,6 +31,7 @@
@if (showSongs && !useSwiper) {
diff --git a/src/app/modules/shows/show/show.component.ts b/src/app/modules/shows/show/show.component.ts
index 6714cd1..792b063 100644
--- a/src/app/modules/shows/show/show.component.ts
+++ b/src/app/modules/shows/show/show.component.ts
@@ -255,6 +255,20 @@ export class ShowComponent implements OnInit, OnDestroy {
const song = showSongs[i + 1];
return song?.title ?? '';
}
+
+ public getSongKeyColumnWidth(show: Show): string {
+ const labels = this.orderedShowSongs(show).map(song => {
+ if (song.keyOriginal && song.keyOriginal !== song.key) {
+ return `${song.keyOriginal} -> ${song.key}`;
+ }
+
+ return song.key ?? '';
+ });
+
+ const longestLabelLength = labels.reduce((max, label) => Math.max(max, label.length), 0);
+ const widthInCh = Math.max(3, longestLabelLength);
+ return `${widthInCh}ch`;
+ }
}
export interface Swiper {
diff --git a/src/app/modules/shows/show/song/song.component.less b/src/app/modules/shows/show/song/song.component.less
index 3f7d2ba..4ae4872 100644
--- a/src/app/modules/shows/show/song/song.component.less
+++ b/src/app/modules/shows/show/song/song.component.less
@@ -14,37 +14,37 @@
overflow: hidden;
&.compact-layout {
- grid-template-columns: 70px auto 25px 25px;
+ grid-template-columns: var(--song-key-column-width, 30px) auto 25px 25px;
grid-template-areas: "keys title edit delete";
@media screen and (max-width: 860px) {
- grid-template-columns: 50px auto 45px 45px;
+ grid-template-columns: var(--song-key-column-width, 30px) auto 45px 45px;
}
&.with-drag {
- grid-template-columns: 24px 50px auto 25px 25px;
+ grid-template-columns: 24px var(--song-key-column-width, 30px) auto 25px 25px;
grid-template-areas: "drag keys title edit delete";
@media screen and (max-width: 860px) {
- grid-template-columns: 24px 50px auto 45px 45px;
+ grid-template-columns: 24px var(--song-key-column-width, 30px) auto 45px 45px;
}
}
}
&.show-text-layout {
- grid-template-columns: auto 50px 25px 25px;
+ grid-template-columns: auto var(--song-key-column-width, 30px) 25px 25px;
grid-template-areas: "title keys edit delete";
@media screen and (max-width: 860px) {
- grid-template-columns: auto 50px 45px 45px;
+ grid-template-columns: auto var(--song-key-column-width, 30px) 45px 45px;
}
&.with-drag {
- grid-template-columns: 24px auto 50px 25px 25px;
+ grid-template-columns: 24px auto var(--song-key-column-width, 30px) 25px 25px;
grid-template-areas: "drag title keys edit delete";
@media screen and (max-width: 860px) {
- grid-template-columns: 24px auto 50px 45px 45px;
+ grid-template-columns: 24px auto var(--song-key-column-width, 30px) 45px 45px;
}
}
}
@@ -104,7 +104,7 @@
height: 0;
overflow: hidden;
line-height: 0;
- min-width: 80px;
+ min-width: max(100px, var(--song-key-column-width, 30px));
}
.keys {