Align layout for create/edit video-playlists (my-account) on create/edit user (admin)
authorRigel Kent <sendmemail@rigelk.eu>
Sat, 28 Mar 2020 22:54:23 +0000 (23:54 +0100)
committerRigel Kent <sendmemail@rigelk.eu>
Sat, 28 Mar 2020 22:54:40 +0000 (23:54 +0100)
client/src/app/+my-account/my-account-video-channels/my-account-video-channel-edit.component.scss
client/src/app/+my-account/my-account-video-playlists/my-account-video-playlist-edit.component.html
client/src/app/+my-account/my-account-video-playlists/my-account-video-playlist-edit.component.scss

index cd5e47cdc101637b254a0976e5b212eadf501c58..c8c327398ffa7c35db026bc8e8d532a6da1718a7 100644 (file)
@@ -1,6 +1,11 @@
 @import '_variables';
 @import '_mixins';
 
+label {
+  font-weight: $font-regular;
+  font-size: 100%;
+}
+
 .video-channel-title {
   @include settings-big-title;
 }
@@ -37,11 +42,6 @@ input {
   }
 }
 
-label {
-  font-weight: $font-regular;
-  font-size: 100%;
-}
-
 textarea {
   @include peertube-textarea(500px, 150px);
 
index 89b8d19b83abe76022a75234c57a3e6b2756e2d6..05335dc1ab6628cedbe711d8c538072fd6ba9337 100644 (file)
-<div i18n class="form-sub-title" *ngIf="isCreation() === true">Create playlist</div>
+<nav aria-label="breadcrumb">
+  <ol class="breadcrumb">
+    <li class="breadcrumb-item">
+      <a routerLink="/my-account/video-playlists" i18n>My Playlists</a>
+    </li>
+
+    <ng-container *ngIf="isCreation()">
+      <li class="breadcrumb-item active" i18n>Create</li>
+    </ng-container>
+    <ng-container *ngIf="!isCreation()">
+      <li class="breadcrumb-item active" i18n>Edit</li>
+      <li class="breadcrumb-item active" aria-current="page">
+        <a *ngIf="videoPlaylistToUpdate" [routerLink]="[ '/my-account/video-playlists/update', videoPlaylistToUpdate?.uuid ]">{{ videoPlaylistToUpdate?.displayName }}</a>
+      </li>
+    </ng-container>
+  </ol>
+</nav>
 
 <div *ngIf="error" class="alert alert-danger">{{ error }}</div>
 
 <form role="form" (ngSubmit)="formValidated()" [formGroup]="form">
-  <div class="row">
-    <div class="col-md-12 col-xl-6">
-      <div class="form-group">
-        <label i18n for="displayName">Display name</label>
-        <input
-          type="text" id="displayName"
-          formControlName="displayName" [ngClass]="{ 'input-error': formErrors['displayName'] }"
-        >
-        <div *ngIf="formErrors['displayName']" class="form-error">
-          {{ formErrors['displayName'] }}
-        </div>
-      </div>
 
-      <div class="form-group">
-        <label i18n for="description">Description</label>
-        <textarea
-          id="description" formControlName="description"
-          [ngClass]="{ 'input-error': formErrors['description'] }"
-        ></textarea>
-        <div *ngIf="formErrors.description" class="form-error">
-          {{ formErrors.description }}
-        </div>
-      </div>
+  <div class="form-row"> <!-- playlist grid -->
+    <div class="form-group col-12 col-lg-4 col-xl-3">
+      <div *ngIf="isCreation()" class="video-playlist-title" i18n>NEW PLAYLIST</div>
+      <div *ngIf="!isCreation() && videoPlaylistToUpdate" class="video-playlist-title" i18n>PLAYLIST</div>
     </div>
 
-    <div class="col-md-12 col-xl-6">
-      <div class="form-group">
-        <label i18n for="privacy">Privacy</label>
-        <div class="peertube-select-container">
-          <select id="privacy" formControlName="privacy">
-            <option *ngFor="let privacy of videoPlaylistPrivacies" [value]="privacy.id">{{ privacy.label }}</option>
-          </select>
+    <div class="form-group form-group-right col-12 col-lg-8 col-xl-9">
+
+      <div class="col-md-12 col-xl-6">
+        <div class="form-group">
+          <label i18n for="displayName">Display name</label>
+          <input
+            type="text" id="displayName"
+            formControlName="displayName" [ngClass]="{ 'input-error': formErrors['displayName'] }"
+          >
+          <div *ngIf="formErrors['displayName']" class="form-error">
+            {{ formErrors['displayName'] }}
+          </div>
         </div>
 
-        <div *ngIf="formErrors.privacy" class="form-error">
-          {{ formErrors.privacy }}
+        <div class="form-group">
+          <label i18n for="description">Description</label>
+          <textarea
+            id="description" formControlName="description"
+            [ngClass]="{ 'input-error': formErrors['description'] }"
+          ></textarea>
+          <div *ngIf="formErrors.description" class="form-error">
+            {{ formErrors.description }}
+          </div>
         </div>
       </div>
 
-      <div class="form-group">
-        <label i18n>Channel</label>
-        <div class="peertube-select-container">
-          <select formControlName="videoChannelId">
-            <option></option>
-            <option *ngFor="let channel of userVideoChannels" [value]="channel.id">{{ channel.label }}</option>
-          </select>
+      <div class="col-md-12 col-xl-6">
+        <div class="form-group">
+          <label i18n for="privacy">Privacy</label>
+          <div class="peertube-select-container">
+            <select id="privacy" formControlName="privacy">
+              <option *ngFor="let privacy of videoPlaylistPrivacies" [value]="privacy.id">{{ privacy.label }}</option>
+            </select>
+          </div>
+
+          <div *ngIf="formErrors.privacy" class="form-error">
+            {{ formErrors.privacy }}
+          </div>
         </div>
 
-        <div *ngIf="formErrors['videoChannelId']" class="form-error">
-          {{ formErrors['videoChannelId'] }}
+        <div class="form-group">
+          <label i18n>Channel</label>
+          <div class="peertube-select-container">
+            <select formControlName="videoChannelId">
+              <option></option>
+              <option *ngFor="let channel of userVideoChannels" [value]="channel.id">{{ channel.label }}</option>
+            </select>
+          </div>
+
+          <div *ngIf="formErrors['videoChannelId']" class="form-error">
+            {{ formErrors['videoChannelId'] }}
+          </div>
         </div>
-      </div>
 
-      <div class="form-group">
-        <label i18n>Playlist thumbnail</label>
+        <div class="form-group">
+          <label i18n>Playlist thumbnail</label>
+
+          <my-preview-upload
+            i18n-inputLabel inputLabel="Edit" inputName="thumbnailfile" formControlName="thumbnailfile"
+            previewWidth="223px" previewHeight="122px"
+          ></my-preview-upload>
+        </div>
+      </div>
 
-        <my-preview-upload
-          i18n-inputLabel inputLabel="Edit" inputName="thumbnailfile" formControlName="thumbnailfile"
-          previewWidth="223px" previewHeight="122px"
-        ></my-preview-upload>
+      <div class="form-row"> <!-- submit placement block -->
+        <div class="col-md-7 col-xl-5"></div>
+        <div class="col-md-5 col-xl-5 d-inline-flex">
+          <input type="submit" value="{{ getFormButtonTitle() }}" [disabled]="!form.valid">
+        </div>
       </div>
     </div>
   </div>
 
-  <input type="submit" value="{{ getFormButtonTitle() }}" [disabled]="!form.valid">
 </form>
index 5af846d8e359110c8e49a147e04943996f08fcef..08fab11019080586a5e0d976e1d59822d4b863e2 100644 (file)
@@ -1,8 +1,13 @@
 @import '_variables';
 @import '_mixins';
 
-.form-sub-title {
-  margin-bottom: 20px;
+label {
+  font-weight: $font-regular;
+  font-size: 100%;
+}
+
+.video-playlist-title {
+  @include settings-big-title;
 }
 
 input[type=text] {
@@ -25,3 +30,7 @@ input[type=submit] {
   @include peertube-button;
   @include orange-button;
 }
+
+.breadcrumb {
+  @include breadcrumb;
+}