Skip to content
Snippets Groups Projects
Commit 3889659f authored by Clayton, Brandon Scott's avatar Clayton, Brandon Scott
Browse files

change controls

parent 2c7562e1
No related branches found
No related tags found
1 merge request!110Panel controls
<!-- Appplication Content --> <!-- Appplication Content -->
<div class="app-content"> <div class="app-content">
@let controlSelected = headerService.controlPanelSelected();
@let settingsSelected = headerService.settingsSelected();
<!-- Control Panel --> <!-- Control Panel -->
<div <div
class="side-panel control-panel" class="side-panel control-panel"
[ngClass]="{ [ngClass]="{
selected: headerService.controlPanelSelected(), selected: controlSelected,
}" }"
> >
<div class="container panel-control"> @if (!(isSmallScreen && settingsSelected)) {
<div class="spacer"></div> <div class="panel-control">
@let icon = controlSelected ? 'left_panel_close' : 'left_panel_open';
@let tooltip = controlSelected ? 'Close control panel' : 'Open control panel';
@if (headerService.controlPanelSelected()) { @if (controlType() === ControlType.FAB) {
<button <button mat-fab class="control" (click)="headerService.toggleControlPanel()">
mat-icon-button <mat-icon [matTooltip]="tooltip"> {{ icon }} </mat-icon>
class="control" </button>
[ngClass]="{'touch-target-20': nshmpService.isSmallScreen$ | async}" } @else {
(click)="headerService.toggleControlPanel()" <button mat-icon-button class="control" (click)="headerService.toggleControlPanel()">
> <mat-icon [matTooltip]="tooltip"> {{ icon }} </mat-icon>
<mat-icon matTooltip="Close control panel"> left_panel_close </mat-icon> </button>
</button> }
} @else { </div>
<button mat-icon-button class="control" (click)="headerService.toggleControlPanel()"> }
<mat-icon matTooltip="Open control panel"> left_panel_open </mat-icon>
</button>
}
</div>
@if (headerService.controlPanelSelected()) { @if (controlSelected) {
<div class="panel-content"> <div class="panel-content">
<ng-content select="nshmp-template-control-panel" /> <ng-content select="nshmp-template-control-panel" />
</div> </div>
...@@ -34,9 +35,6 @@ ...@@ -34,9 +35,6 @@
</div> </div>
<!-- Main Content --> <!-- Main Content -->
@let controlSelected = headerService.controlPanelSelected();
@let settingsSelected = headerService.settingsSelected();
@if (!(isSmallScreen && (controlSelected || settingsSelected))) { @if (!(isSmallScreen && (controlSelected || settingsSelected))) {
<div class="main"> <div class="main">
<ng-content select="nshmp-template-main-content" /> <ng-content select="nshmp-template-main-content" />
...@@ -44,31 +42,29 @@ ...@@ -44,31 +42,29 @@
} }
<!-- Settings --> <!-- Settings -->
@if (showSettingsPanel()) { @if (showSettingsPanel() && !(isSmallScreen && controlSelected)) {
<div <div
class="side-panel settings" class="side-panel settings"
[ngClass]="{ [ngClass]="{
selected: headerService.settingsSelected(), selected: settingsSelected,
}" }"
> >
<div class="panel-control"> <div class="panel-control">
@if (headerService.settingsSelected()) { @let icon = settingsSelected ? 'right_panel_close' : 'right_panel_open';
<button @let tooltip = settingsSelected ? 'Close plot settings panel' : 'Open plot settings panel';
mat-icon-button
class="control" @if (controlType() === ControlType.FAB) {
[ngClass]="{'touch-target-20': nshmpService.isSmallScreen$ | async}" <button mat-fab class="control" (click)="headerService.toggleSettingsPanel()">
(click)="headerService.toggleSettingsPanel()" <mat-icon [matTooltip]="tooltip"> {{ icon }} </mat-icon>
>
<mat-icon matTooltip="Close plot settings panel"> right_panel_close </mat-icon>
</button> </button>
} @else { } @else {
<button mat-icon-button class="control" (click)="headerService.toggleSettingsPanel()"> <button mat-icon-button class="control" (click)="headerService.toggleSettingsPanel()">
<mat-icon matTooltip="Open plot settings panel"> right_panel_open </mat-icon> <mat-icon [matTooltip]="tooltip"> {{ icon }} </mat-icon>
</button> </button>
} }
</div> </div>
@if (headerService.settingsSelected()) { @if (settingsSelected) {
<div class="panel-content"> <div class="panel-content">
<ng-content select="nshmp-template-settings" /> <ng-content select="nshmp-template-settings" />
</div> </div>
......
...@@ -24,14 +24,23 @@ ...@@ -24,14 +24,23 @@
width: variables.$side-panel-width; width: variables.$side-panel-width;
z-index: 2; z-index: 2;
&.control-panel .control {
left: variables.$side-panel-width;
}
&.settings .panel-control {
right: 0;
}
&.settings .control {
right: variables.$side-panel-width;
}
.panel-control { .panel-control {
border-bottom: solid 1px var(--mat-sys-surface-variant); position: absolute;
} }
.panel-content { .panel-content {
overflow: scroll;
height: calc(100% - variables.$side-panel-control-height);
button { button {
margin-bottom: variables.$form-field-padding-bottom; margin-bottom: variables.$form-field-padding-bottom;
} }
...@@ -53,37 +62,46 @@ ...@@ -53,37 +62,46 @@
&.settings { &.settings {
right: 0; right: 0;
z-index: 100;
} }
&.control-panel { &.settings .control {
left: 0; right: 0;
z-index: 100; z-index: 100;
} }
.panel-control { &.control-panel .control {
border-bottom: none; left: 0;
z-index: 100;
} }
} }
.main { .main {
height: 100%; height: 100%;
flex: 1; flex: 1;
overflow: scroll;
width: 100%; width: 100%;
} }
.container {
display: flex;
.spacer {
flex: 1 1 auto;
}
}
} }
body.small-screen :host { body.small-screen :host {
.side-panel.selected { .side-panel.selected {
width: 100%; width: 100%;
&.control-panel .panel-control {
right: 0;
}
&.control-panel .control {
left: unset;
}
&.settings .panel-control {
left: 0;
right: unset;
}
&.settings .control {
left: 0;
right: unset;
}
} }
} }
import {AsyncPipe, NgClass} from '@angular/common'; import {NgClass} from '@angular/common';
import {Component, input, OnDestroy, OnInit} from '@angular/core'; import {Component, input, OnDestroy, OnInit} from '@angular/core';
import {MatButtonModule} from '@angular/material/button'; import {MatButtonModule} from '@angular/material/button';
import {MatIconModule} from '@angular/material/icon'; import {MatIconModule} from '@angular/material/icon';
...@@ -7,8 +7,13 @@ import {Subscription} from 'rxjs'; ...@@ -7,8 +7,13 @@ import {Subscription} from 'rxjs';
import {HeaderService, NshmpTemplateService} from '../../services'; import {HeaderService, NshmpTemplateService} from '../../services';
export enum ControlType {
FAB,
ICON,
}
@Component({ @Component({
imports: [NgClass, AsyncPipe, MatIconModule, MatButtonModule, MatTooltipModule], imports: [NgClass, MatIconModule, MatButtonModule, MatTooltipModule],
selector: 'nshmp-template-content-container', selector: 'nshmp-template-content-container',
styleUrl: './content-container.component.scss', styleUrl: './content-container.component.scss',
templateUrl: './content-container.component.html', templateUrl: './content-container.component.html',
...@@ -19,6 +24,10 @@ export class NshmpTemplateContentContainerComponent implements OnInit, OnDestroy ...@@ -19,6 +24,10 @@ export class NshmpTemplateContentContainerComponent implements OnInit, OnDestroy
isSmallScreen = false; isSmallScreen = false;
ControlType = ControlType;
controlType = input(ControlType.ICON);
showSettingsPanel = input(true); showSettingsPanel = input(true);
constructor( constructor(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment