Skip to content

Commit dade46a

Browse files
hide tabs when no name and only 1 tab
1 parent 97607d9 commit dade46a

4 files changed

Lines changed: 146 additions & 1 deletion

File tree

src/player/modules/ViewLayout/module.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,8 @@ FrameTrail.defineModule('ViewLayout', function(FrameTrail){
154154

155155
updateLayoutAreaVisibility();
156156

157+
updateHiddenTabs();
158+
157159
updateManagedContent();
158160

159161
}
@@ -169,6 +171,36 @@ FrameTrail.defineModule('ViewLayout', function(FrameTrail){
169171
}
170172

171173

174+
function updateHiddenTabs() {
175+
176+
var ViewVideo = FrameTrail.module('ViewVideo');
177+
var areas = [
178+
{ views: contentViewsTop, key: 'areaTop', container: ViewVideo.AreaTopContainer },
179+
{ views: contentViewsBottom, key: 'areaBottom', container: ViewVideo.AreaBottomContainer },
180+
{ views: contentViewsLeft, key: 'areaLeft', container: ViewVideo.AreaLeftContainer },
181+
{ views: contentViewsRight, key: 'areaRight', container: ViewVideo.AreaRightContainer }
182+
];
183+
184+
for (var i = 0; i < areas.length; i++) {
185+
var area = areas[i];
186+
var shouldHide = (area.views.length === 1
187+
&& !area.views[0].contentViewData.name
188+
&& !area.views[0].contentViewData.icon);
189+
190+
if (area.container) {
191+
area.container.classList.toggle('hiddenTabs', shouldHide);
192+
}
193+
194+
// Also update layout manager preview area
195+
var previewArea = HypervideoLayoutContainer.querySelector('.layoutArea[data-area="' + area.key + '"]');
196+
if (previewArea) {
197+
previewArea.classList.toggle('hiddenTabs', shouldHide);
198+
}
199+
}
200+
201+
}
202+
203+
172204
function createContentView(whichArea, templateContentViewData, renderPreview, skipUndo) {
173205

174206
var arrayOfContentViews = ({
@@ -200,6 +232,7 @@ FrameTrail.defineModule('ViewLayout', function(FrameTrail){
200232
}
201233

202234
updateLayoutAreaVisibility();
235+
updateHiddenTabs();
203236

204237
return newContentView;
205238

@@ -245,6 +278,7 @@ FrameTrail.defineModule('ViewLayout', function(FrameTrail){
245278
updateManagedContent();
246279

247280
updateLayoutAreaVisibility();
281+
updateHiddenTabs();
248282

249283
FrameTrail.module('HypervideoModel').newUnsavedChange('layout');
250284

@@ -1503,6 +1537,8 @@ FrameTrail.defineModule('ViewLayout', function(FrameTrail){
15031537

15041538
reorderContentView: reorderContentView,
15051539

1540+
updateHiddenTabs: updateHiddenTabs,
1541+
15061542
getLayoutAreaData: getLayoutAreaData,
15071543

15081544
};

src/player/modules/ViewLayout/style.css

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,48 @@
101101
overflow: hidden;
102102
}
103103

104+
/* Hidden tabs: single content view with no name and no icon */
105+
106+
.layoutArea.hiddenTabs > .layoutAreaTabs {
107+
display: none !important;
108+
}
109+
110+
.layoutArea.hiddenTabs .contentViewContainer {
111+
top: 0;
112+
height: 100%;
113+
}
114+
115+
.layoutArea[data-area="areaLeft"].hiddenTabs .contentViewContainer {
116+
right: 0;
117+
width: 100%;
118+
}
119+
120+
.layoutArea[data-area="areaRight"].hiddenTabs .contentViewContainer {
121+
left: 0;
122+
width: 100%;
123+
}
124+
125+
/* Hidden tabs in layout manager preview */
126+
127+
.layoutManager .layoutArea.hiddenTabs > .layoutAreaTabs {
128+
display: none !important;
129+
}
130+
131+
.layoutManager .layoutArea.hiddenTabs .contentViewPreview {
132+
top: 10px;
133+
height: calc(100% - 20px);
134+
}
135+
136+
.layoutManager .layoutArea[data-area="areaLeft"].hiddenTabs .contentViewPreview {
137+
right: 10px;
138+
width: calc(100% - 20px);
139+
}
140+
141+
.layoutManager .layoutArea[data-area="areaRight"].hiddenTabs .contentViewPreview {
142+
left: 10px;
143+
width: calc(100% - 20px);
144+
}
145+
104146
/* Open & Close Mechanism — button lives inside the active contentViewTab */
105147

106148
.layoutArea .layoutAreaTabs .contentViewTab .layoutAreaToggleCloseButton {
@@ -492,6 +534,41 @@ body > .contentViewTemplate .contentViewTemplateLabel {
492534
min-width: 400px;
493535
}
494536

537+
/* Hidden tabs: reduce layout manager area sizes (remove 38px tab bar) */
538+
539+
.layoutManager .layoutArea.hiddenTabs[data-area="areaTop"][data-size="small"],
540+
.layoutManager .layoutArea.hiddenTabs[data-area="areaBottom"][data-size="small"] {
541+
min-height: calc(50px + 20px);
542+
}
543+
544+
.layoutManager .layoutArea.hiddenTabs[data-area="areaTop"][data-size="medium"],
545+
.layoutManager .layoutArea.hiddenTabs[data-area="areaBottom"][data-size="medium"] {
546+
min-height: calc(90px + 20px);
547+
}
548+
549+
.layoutManager .layoutArea.hiddenTabs[data-area="areaTop"][data-size="large"],
550+
.layoutManager .layoutArea.hiddenTabs[data-area="areaBottom"][data-size="large"] {
551+
min-height: calc(200px + 20px);
552+
}
553+
554+
.layoutManager .layoutArea.hiddenTabs[data-area="areaLeft"][data-size="small"],
555+
.layoutManager .layoutArea.hiddenTabs[data-area="areaRight"][data-size="small"] {
556+
flex: 0 0 74px;
557+
min-width: 74px;
558+
}
559+
560+
.layoutManager .layoutArea.hiddenTabs[data-area="areaLeft"][data-size="medium"],
561+
.layoutManager .layoutArea.hiddenTabs[data-area="areaRight"][data-size="medium"] {
562+
flex: 0 0 364px;
563+
min-width: 364px;
564+
}
565+
566+
.layoutManager .layoutArea.hiddenTabs[data-area="areaLeft"][data-size="large"],
567+
.layoutManager .layoutArea.hiddenTabs[data-area="areaRight"][data-size="large"] {
568+
flex: 0 0 364px;
569+
min-width: 364px;
570+
}
571+
495572
/* Sortable preview tabs */
496573

497574
.layoutManager .layoutArea .layoutAreaTabs .contentViewTab {

src/player/modules/ViewVideo/style.css

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,6 @@ body.userinactive .mainContainer:not([data-edit-mode="overlays"]):not([data-edit
219219
order: 0;
220220
align-self: stretch;
221221
background: var(--primary-bg-color);
222-
border-bottom: 2px solid var(--primary-bg-color);
223222
}
224223

225224
.areaLeftContainer {
@@ -299,6 +298,38 @@ body.userinactive .mainContainer:not([data-edit-mode="overlays"]):not([data-edit
299298
min-width: 650px;
300299
}
301300

301+
/* Hidden tabs: reduce area size by 36px (tab bar height) */
302+
303+
.areaTopContainer.hiddenTabs[data-size="small"], .areaBottomContainer.hiddenTabs[data-size="small"] {
304+
flex-basis: 40px;
305+
min-height: 40px;
306+
}
307+
308+
.areaTopContainer.hiddenTabs[data-size="medium"], .areaBottomContainer.hiddenTabs[data-size="medium"] {
309+
flex-basis: 120px;
310+
min-height: 120px;
311+
}
312+
313+
.areaTopContainer.hiddenTabs[data-size="large"], .areaBottomContainer.hiddenTabs[data-size="large"] {
314+
flex-basis: clamp(164px, calc(100vh * 0.6 - 76px), 364px);
315+
min-height: clamp(164px, calc(100vh * 0.6 - 76px), 364px);
316+
}
317+
318+
.areaLeftContainer.hiddenTabs[data-size="small"], .areaRightContainer.hiddenTabs[data-size="small"] {
319+
flex: 0 0 52px;
320+
min-width: 52px;
321+
}
322+
323+
.areaLeftContainer.hiddenTabs[data-size="medium"], .areaRightContainer.hiddenTabs[data-size="medium"] {
324+
flex: 0 0 414px;
325+
min-width: 414px;
326+
}
327+
328+
.areaLeftContainer.hiddenTabs[data-size="large"], .areaRightContainer.hiddenTabs[data-size="large"] {
329+
flex: 0 0 614px;
330+
min-width: 614px;
331+
}
332+
302333
.areaTopContainer.closed, .areaBottomContainer.closed {
303334
min-height: 36px !important;
304335
flex-basis: 36px !important;

src/player/types/ContentView/type.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,7 @@ FrameTrail.defineType(
340340
}
341341

342342
FrameTrail.module('ViewLayout').updateManagedContent();
343+
FrameTrail.module('ViewLayout').updateHiddenTabs();
343344

344345
window.setTimeout(function() {
345346
self.resizeLayoutArea(false, suppressViewSizeChange);

0 commit comments

Comments
 (0)