From f4f9b3fa265df95ade97625cf2f870ded0825eb1 Mon Sep 17 00:00:00 2001
From: shpuld <shp@cock.li>
Date: Mon, 9 Apr 2018 19:43:31 +0300
Subject: small fixes

---
 src/components/status/status.vue | 709 ++++++++++++++++++++++-----------------
 1 file changed, 407 insertions(+), 302 deletions(-)

(limited to 'src/components/status/status.vue')

diff --git a/src/components/status/status.vue b/src/components/status/status.vue
index d451b67c..5bd5cec6 100644
--- a/src/components/status/status.vue
+++ b/src/components/status/status.vue
@@ -1,4 +1,4 @@
-<template>
+<!--<template>
   <div class="status-el base00-background" v-if="compact">
     <div @click.prevent="linkClicked" class="status-content" v-html="status.statusnet_html"></div>
     <div v-if="loggedIn">
@@ -124,322 +124,427 @@
     </template>
   </div>
 </template>
+-->
+
+<template>
+  <div class="status-el base00-background base03-border" :class="[{ 'base01-background': isFocused }, { 'status-conversation': inlineExpanded }]">
+    <template v-if="muted && !noReplyLinks">
+      <div class="media status container muted">
+        <small><router-link :to="{ name: 'user-profile', params: { id: status.user.id } }">{{status.user.screen_name}}</router-link></small>
+        <small class="muteWords">{{muteWordHits.join(', ')}}</small>
+        <a href="#" class="unmute" @click.prevent="toggleMute"><i class="base09 icon-eye-off"></i></a>
+      </div>
+    </template>
+    <template v-else>
+      <div v-if="retweet && !noHeading" class="media container retweet-info">
+        <StillImage v-if="retweet" class='avatar' :src="statusoid.user.profile_image_url_original"/>
+        <div class="media-body base04">
+          <a :href="statusoid.user.statusnet_profile_url" style="font-weight: bold;" :title="'@'+statusoid.user.screen_name">{{retweeter}}</a>
+          <i class='fa icon-retweet retweeted'></i>
+          {{$t('timeline.repeated')}}
+        </div>
+      </div>
+
+      <div class="media status">
+        <div v-if="!noHeading" class="media-left">
+          <a :href="status.user.statusnet_profile_url" @click.stop.prevent.capture="toggleUserExpanded">
+            <StillImage class='avatar' :class="{'avatar-compact': compact}"  :src="status.user.profile_image_url_original"/>
+          </a>
+        </div>
+        <div class="status-body">
+          <div class="base03-border usercard media-body" v-if="userExpanded">
+            <user-card-content :user="status.user" :switcher="false"></user-card-content>
+          </div>
+          <div v-if="!noHeading" class="media-body container">
+            <div class="media-heading-left">
+              <div class="name-and-links">
+                <h4 class="user-name">{{status.user.name}}</h4>
+                <span class="links">
+                  <router-link :to="{ name: 'user-profile', params: { id: status.user.id } }">{{status.user.screen_name}}</router-link>
+                  <span v-if="status.in_reply_to_screen_name"> &gt;
+                    <router-link :to="{ name: 'user-profile', params: { id: status.in_reply_to_user_id } }">
+                      {{status.in_reply_to_screen_name}}
+                    </router-link>
+                  </span>
+                  <a v-if="isReply && !noReplyLinks" href="#" @click.prevent="gotoOriginal(status.in_reply_to_status_id)">
+                    <i class="icon-reply base09" @mouseenter="replyEnter(status.in_reply_to_status_id, $event)" @mouseout="replyLeave()"></i>
+                  </a>
+                </span>
+              </div>
+              <h4 class="replies" v-if="inConversation && !noReplyLinks">
+                <small v-if="replies.length">Replies:</small>
+                <small class="reply-link" v-for="reply in replies">
+                  <a href="#" @click.prevent="gotoOriginal(reply.id)" @mouseenter="replyEnter(reply.id, $event)" @mouseout="replyLeave()">{{reply.name}}&nbsp;</a>
+                </small>
+              </h4>
+            </div>
+            <div class="media-heading-right">
+              <router-link class="timeago" :to="{ name: 'conversation', params: { id: status.id } }">
+                <timeago :since="status.created_at" :auto-update="60"></timeago>
+              </router-link>
+              <a :href="status.external_url" target="_blank" v-if="!status.is_local" class="source_url"><i class="base09 icon-binoculars"></i></a>
+              <template v-if="expandable">
+                <a href="#" @click.prevent="toggleExpanded"><i class="base09 icon-plus-squared"></i></a>
+              </template>
+              <a href="#" @click.prevent="toggleMute" v-if="unmuted"><i class="base09 icon-eye-off"></i></a>
+            </div>
+          </div>
+
+          <div v-if="showPreview" class="status-preview-container">
+            <status class="status-preview" v-if="preview" :noReplyLinks="true" :statusoid="preview" :compact=true></status>
+            <div class="status-preview status-preview-loading base00-background base03-border" v-else>
+              <i class="base09 icon-spin4 animate-spin"></i>
+            </div>
+          </div>
+
+          <div :class="{'tall-status': hideTallStatus}" class="status-content-wrapper">
+            <a class="tall-status-hider" :style="hiderStyle" v-if="hideTallStatus" href="#" @click.prevent="toggleShowTall">Show more</a>
+            <div @click.prevent="linkClicked" class="status-content media-body" v-html="status.statusnet_html"></div>
+            <a v-if="showingTall" href="#" class="tall-status-unhider" @click.prevent="toggleShowTall">Show less</a>
+          </div>
+
+          <div v-if='status.attachments' class='attachments media-body'>
+            <attachment :size="attachmentSize" :status-id="status.id" :nsfw="status.nsfw" :attachment="attachment" v-for="attachment in status.attachments" :key="attachment.id">
+            </attachment>
+          </div>
+
+          <div v-if="!noHeading && !noReplyLinks" class='status-actions media-body'>
+            <div v-if="loggedIn">
+              <a href="#" v-on:click.prevent="toggleReplying">
+                <i class="base09 icon-reply" :class="{'icon-reply-active': replying}"></i>
+              </a>
+            </div>
+            <retweet-button :loggedIn='loggedIn' :status='status'></retweet-button>
+            <favorite-button :loggedIn='loggedIn' :status='status'></favorite-button>
+            <delete-button :status='status'></delete-button>
+          </div>
+        </div>
+      </div>
+      <div class="container" v-if="replying">
+        <div class="reply-left"/>
+        <post-status-form class="reply-body" :reply-to="status.id" :attentions="status.attentions" :repliedUser="status.user" v-on:posted="toggleReplying"/>
+      </div>
+    </template>
+  </div>
+</template>
 
 <script src="./status.js" ></script>
 
 <style lang="scss">
- @import '../../_variables.scss';
+@import '../../_variables.scss';
+
+.status-body {
+  flex: 1;
+  min-width: 0;
+}
+
+.status-preview.status-el {
+  border-style: solid;
+  border-width: 1px;
+}
+
+.status-preview-container {
+  position: relative;
+  max-width: 100%;
+}
+
+.status-preview {
+  position: absolute;
+  max-width: 95%;
+  display: flex;
+  border-radius: 4px;
+  box-shadow: 2px 2px 3px rgba(0, 0, 0, 0.5);
+  margin-top: 0.5em;
+  margin-left: 1em;
+  z-index: 50;
+  .status {
+    flex: 1;
+    border: 0;
+  }
+}
+
+.status-preview-loading {
+  display: block;
+  font-size: 2em;
+  min-width: 8em;
+  padding: 0.5em;
+  text-align: center;
+  border-width: 1px;
+  border-style: solid;
+}
+
+.status-el {
+  hyphens: auto;
+  overflow-wrap: break-word;
+  word-wrap: break-word;
+  word-break: break-word;
+  border-left-width: 0px;
+  line-height: 18px;
+  min-width: 0;
+
+  .timeline & {
+    border-bottom-width: 1px;
+    border-bottom-style: solid;
+  }
 
- status-text-container {
-    display: block;
+  .media-body {
+    flex: 1;
+    padding: 0;
+    margin: 0 0 0.25em 0.8em;
+    flex-wrap: nowrap;
   }
 
-  .status-preview {
-    position: absolute;
-    max-width: 34em;
-    padding: 0.5em;
+  .media-heading-left {
+    padding: 0;
+    vertical-align: bottom;
+    flex-basis: 100%;
+
+    small {
+      font-weight: lighter;
+    }
+    h4 {
+      font-size: 14px;
+      margin-right: 0.25em;
+    }
+    .name-and-links {
+      padding: 0;
+      flex: 1 0;
+      display: flex;
+      flex-wrap: wrap;
+    }
+    .links {
+      padding-top: 1px;
+      font-size: 12px;
+    }
+    .replies {
+      line-height: 16px;
+    }
+    .reply-link {
+      margin-right: 0.2em;
+    }
+  }
+
+  .media-heading-right {
+    flex-shrink: 0;
     display: flex;
-    border-color: inherit;
-    border-style: solid;
-    border-width: 1px;
-    border-radius: 4px;
-    box-shadow: 2px 2px 3px rgba(0, 0, 0, 0.5);
-    margin-top: 0.5em;
-    margin-left: 1em;
-    z-index: 50;
+    flex-wrap: nowrap;
+    max-height: 1.5em;
+    margin-left: 0.25em;
+    .timeago {
+      margin-right: 0.2em;
+      font-size: 12px;
+      padding-top: 1px;
+    }
+    i {
+      margin-left: 0.2em;
+    }
+  }
+
+  a {
+    display: inline-block;
+    word-break: break-all;
+  }
+
+  .tall-status {
+    position: relative;
+    height: 220px;
+    overflow-x: hidden;
+    overflow-y: hidden;
+  }
+
+  .tall-status-hider {
+    position: absolute;
+    height: 70px;
+    margin-top: 150px;
+    width: 100%;
+    text-align: center;
+    line-height: 110px;
+  }
+
+  .tall-status-unhider {
+    width: 100%;
+    text-align: center;
+  }
+
+  .status-content {
+    margin-right: 0.5em;
+    img, video {
+      max-width: 100%;
+      max-height: 400px;
+      vertical-align: middle;
+      object-fit: contain;
+    }
+
+    blockquote {
+      margin: 0.2em 0 0.2em 2em;
+      font-style: italic;
+    }
+
+    p {
+      margin: 0;
+      margin-top: 0.2em;
+      margin-bottom: 0.5em;
+    }
+  }
 
+  .retweet-info {
+    padding: 0.3em 0.6em 0 0.6em;
+    margin: 0 0 -0.3em 0;
     .avatar {
-      flex-shrink: 0;
-      width: 32px;
-      height: 32px;
-      border-radius: 50%;
+      margin-left: 28px;
+      width: 20px;
+      height: 20px;
+      border-radius: 5px;
     }
-    .text {
-      h4 {
-        margin-bottom: 0.4em;
-        small {
-          font-weight: lighter;
-        }
-      }
-      padding: 0 0.5em 0.5em 0.5em;
+
+    .media-body {
+      font-size: 1em;
+      line-height: 22px;
     }
   }
+}
 
-  .status-preview-loading {
-    display: block;
-    font-size: 2em;
-    min-width: 8em;
-    text-align: center;
+.status-fadein {
+  animation-duration: 0.5s;
+  animation-name: fadein;
+}
+
+@keyframes fadein {
+  from {
+    opacity: 0;
+  }
+  to {
+    opacity: 1;
+  }
+}
+
+.greentext {
+  color: green;
+}
+
+.status-conversation {
+  border-left-style: solid;
+}
+
+.status-actions {
+  width: 100%;
+  display: flex;
+
+  div, favorite-button {
+    padding-top: 0.25em;
+    max-width: 6em;
+    flex: 1;
+  }
+}
+
+.icon-reply:hover {
+  color: $blue;
+}
+
+.icon-reply.icon-reply-active {
+  color: $blue;
+}
+
+.status .avatar-compact {
+  width: 32px;
+  height: 32px;
+  border-radius: 50%;
+}
+
+.avatar {
+  width: 48px;
+  height: 48px;
+  border-radius: 5px;
+  overflow: hidden;
+  position: relative;
+
+  img {
+    width: 100%;
+    height: 100%;
+  }
+
+  &.animated::before {
+    display: none;
   }
 
- .status-el {
-     hyphens: auto;
-     overflow-wrap: break-word;
-     word-wrap: break-word;
-     word-break: break-word;
-     border-left-width: 0px;
-     line-height: 18px;
-
-     .timeline & {
-        border-bottom-width: 1px;
-        border-bottom-style: solid;
-     }
-
-     .notify {
-         .avatar {
-             border-width: 3px;
-             border-style: solid;
-         }
-     }
-
-     .media-body {
-       flex: 1;
-       padding-left: 0.5em;
-     }
-
-
-     .user-content {
-
-       min-height: 52px;
-       padding-top: 1px;
-     }
-
-     .media-heading {
-       display: flex;
-       min-height: 1.4em;
-       margin-bottom: 0.3em;
-
-       small {
-           font-weight: lighter;
-       }
-       h4 {
-         margin-right: 0.4em;
-       }
-       .name-and-links {
-         flex: 1 0;
-         display: flex;
-         flex-wrap: wrap;
-       }
-       .replies {
-         flex-basis: 100%;
-       }
-     }
-
-     .source_url {
-
-     }
-
-     .expand {
-       margin-right: -0.3em;
-     }
-
-     a {
-         display: inline-block;
-         word-break: break-all;
-     }
-
-     .status-content {
-         margin: 3px 15px 4px 0;
-         max-height: 400px;
-         overflow-y: auto;
-         overflow-x: hidden;
-
-         img, video {
-           max-width: 100%;
-           max-height: 400px;
-           vertical-align: middle;
-           object-fit: contain;
-         }
-
-         blockquote {
-           margin: 0.2em 0 0.2em 2em;
-           font-style: italic;
-         }
-     }
-
-     p {
-         margin: 0;
-         margin-top: 0.2em;
-         margin-bottom: 0.5em;
-     }
-
-     .media-left {
-        margin: 0.2em 0.3em 0 0;
-        .avatar {
-          float: right;
-        }
-     }
-
-     .retweet-info {
-         padding: 0.7em 0 0 0.6em;
-
-         .media-left {
-             display: flex;
-
-             i {
-                 align-self: center;
-                 text-align: right;
-                 flex: 1;
-                 padding-right: 0.3em;
-             }
-         }
-     }
- }
-
- .status-fadein {
-   animation-duration: 0.5s;
-   animation-name: fadein;
- }
-
- @keyframes fadein {
-   from {
-     opacity: 0;
-   }
-   to {
-     opacity: 1;
-   }
- }
-
- .greentext {
-     color: green;
- }
-
- .status-conversation {
-   border-left-style: solid;
- }
-
- .status-actions {
-     padding-top: 0.15em;
-     width: 100%;
-     display: flex;
-
-     div, favorite-button {
-        max-width: 6em;
-        flex: 1;
-     }
- }
-
- .icon-reply:hover {
-     color: $blue;
- }
-
- .icon-reply.icon-reply-active {
-     color: $blue;
- }
-
- .status .avatar {
-   width: 48px;
-   height: 48px;
-   border-radius: 5px;
-   overflow: hidden;
-
-   img {
-       width: 100%;
-       height: 100%;
-   }
-
-   &.animated::before {
-       display: none;
-   }
-
-   &.retweeted {
-     width: 40px;
-     height: 40px;
-     margin-right: 8px;
-     margin-bottom: 8px;
-   }
- }
-
- .status:hover .animated.avatar {
-     canvas {
-         display: none;
-     }
-     img {
-         visibility: visible;
-     }
- }
-
- .status .avatar-retweeter {
-   width: 24px;
-   height: 24px;
-   position: absolute;
-   margin-left: 24px;
-   margin-top: 24px;
- }
-
- .status.compact .avatar {
-     width: 32px;
- }
-
- .status {
-     padding: 0.4em 0.7em 0.45em 0.7em;
-     border-left: 4px rgba(255, 48, 16, 0.65);
-     border-left-style: inherit;
- }
-
- .status-conversation:last-child {
-    border-bottom: none;
- }
-
- .timeline .panel.timeline {
-    border-radius: 10px;
-    overflow: hidden;
- }
-
- .muted {
-   padding: 0.1em 0.4em 0.1em 0.8em;
-   button {
-     margin-left: auto;
-   }
-
-   .muteWords {
-     margin-left: 10px;
-   }
- }
-
- a.unmute {
-   display: block;
-   margin-left: auto;
- }
-
- .reply-left {
-   flex: 0;
-   min-width: 48px;
- }
-
- .reply-body {
-   flex: 1;
- }
-
- @media all and (max-width: 960px) {
-   .status-el {
-     .name-and-links {
-       margin-left: -0.25em;
-     }
-   }
-   .status {
-     max-width: 100%;
-   }
-
-   .status .avatar {
-     width: 40px;
-     height: 40px;
-
-     &.retweeted {
-       width: 34px;
-       height: 34px;
-       margin-right: 8px;
-       margin-bottom: 8px;
-     }
-   }
-
-   .status .avatar-retweeter {
-     width: 22px;
-     height: 22px;
-     position: absolute;
-     margin-left: 18px;
-     margin-top: 18px;
-   }
- }
+  &.retweeted {
+  }
+}
+
+.status:hover .animated.avatar {
+  canvas {
+    display: none;
+  }
+  img {
+    visibility: visible;
+  }
+}
+
+.status .avatar-retweeter {
+  width: 24px;
+  height: 24px;
+  position: absolute;
+  margin-left: 24px;
+  margin-top: 24px;
+}
+
+.status {
+  display: flex;
+  padding: 0.6em;
+  border-left: 4px rgba(255, 48, 16, 0.65);
+  border-left-style: inherit;
+}
+
+.status-conversation:last-child {
+  border-bottom: none;
+}
+
+.timeline .panel.timeline {
+  border-radius: 10px;
+  overflow: hidden;
+}
+
+.muted {
+  padding: 0.25em 0.5em;
+  button {
+    margin-left: auto;
+  }
+
+  .muteWords {
+    margin-left: 10px;
+  }
+}
+
+a.unmute {
+  display: block;
+  margin-left: auto;
+}
+
+.reply-left {
+  flex: 0;
+  min-width: 48px;
+}
+
+.reply-body {
+  flex: 1;
+}
+
+@media all and (max-width: 960px) {
+  .status-el {
+    .retweet-info {
+      .avatar {
+        margin-left: 20px;
+      }
+    }
+  }
+  .status {
+    max-width: 100%;
+  }
+
+  .status .avatar {
+    width: 40px;
+    height: 40px;
+  }
+}
 
 </style>
-- 
cgit v1.2.3-70-g09d2


From ec2a719f0d4a17c96b51b7a410be827e39e565c9 Mon Sep 17 00:00:00 2001
From: shpuld <shp@cock.li>
Date: Mon, 9 Apr 2018 19:45:42 +0300
Subject: some cleanup

---
 src/components/status/status.vue | 128 ---------------------------------------
 1 file changed, 128 deletions(-)

(limited to 'src/components/status/status.vue')

diff --git a/src/components/status/status.vue b/src/components/status/status.vue
index 5bd5cec6..257e23e3 100644
--- a/src/components/status/status.vue
+++ b/src/components/status/status.vue
@@ -1,131 +1,3 @@
-<!--<template>
-  <div class="status-el base00-background" v-if="compact">
-    <div @click.prevent="linkClicked" class="status-content" v-html="status.statusnet_html"></div>
-    <div v-if="loggedIn">
-      <div class='status-actions'>
-        <div>
-          <a href="#" v-on:click.prevent="toggleReplying">
-            <i class="base09 icon-reply" :class="{'icon-reply-active': replying}"></i>
-          </a>
-        </div>
-        <retweet-button :loggedIn="loggedIn" :status=status></retweet-button>
-        <favorite-button :loggedIn="loggedIn" :status=status></favorite-button>
-      </div>
-    </div>
-    <post-status-form class="reply-body" :reply-to="status.id" :attentions="status.attentions" :repliedUser="status.user" v-on:posted="toggleReplying" v-if="replying"/>
-  </div>
-  <div class="status-el base00-background base03-border status-fadein" v-else-if="!status.deleted" v-bind:class="[{ 'base01-background': isFocused }, { 'status-conversation': inConversation }]" >
-    <template v-if="muted">
-      <div class="media status container muted">
-        <small><router-link :to="{ name: 'user-profile', params: { id: status.user.id } }">{{status.user.screen_name}}</router-link></small>
-        <small class="muteWords">{{muteWordHits.join(', ')}}</small>
-        <a href="#" class="unmute" @click.prevent="toggleMute"><i class="base09 icon-eye-off"></i></a>
-      </div>
-    </template>
-    <template v-if="!muted">
-      <div v-if="retweet" class="media container retweet-info">
-        <div class="media-left">
-          <i class='fa icon-retweet retweeted'></i>
-        </div>
-        <div class="media-body">
-          Repeated by <a :href="statusoid.user.statusnet_profile_url" style="font-weight: bold;" :title="'@'+statusoid.user.screen_name">{{retweeter}}</a>
-        </div>
-      </div>
-      <div class="media status container">
-        <div class="media-left">
-          <a :href="status.user.statusnet_profile_url">
-            <StillImage @click.native.prevent="toggleUserExpanded" :class="{retweeted: retweet}" class='avatar' :src="status.user.profile_image_url_original"/>
-            <StillImage v-if="retweet" class='avatar avatar-retweeter' :src="statusoid.user.profile_image_url_original"/>
-          </a>
-        </div>
-        <div class="media-body">
-          <div class="base03-border usercard" v-if="userExpanded">
-            <user-card-content :user="status.user" :switcher="false"></user-card-content>
-          </div>
-          <div class="user-content">
-            <div class="media-heading">
-              <div class="name-and-links">
-                <h4 class="user-name">{{status.user.name}}</h4>
-                <div class="links">
-                  <h4>
-                  <small><router-link :to="{ name: 'user-profile', params: { id: status.user.id } }">{{status.user.screen_name}}</router-link></small>
-                  <small v-if="status.in_reply_to_screen_name"> &gt;
-                    <router-link :to="{ name: 'user-profile', params: { id: status.in_reply_to_user_id } }">
-                      {{status.in_reply_to_screen_name}}
-                    </router-link>
-                  </small>
-                  <template v-if="isReply">
-                    <small>
-                      <a href="#" @click.prevent="gotoOriginal(status.in_reply_to_status_id)"><i class="icon-reply" @mouseenter="replyEnter(status.in_reply_to_status_id, $event)" @mouseout="replyLeave()"></i></a>
-                    </small>
-                  </template>
-                  -
-                  <small>
-                    <router-link :to="{ name: 'conversation', params: { id: status.id } }">
-                      <timeago :since="status.created_at" :auto-update="60"></timeago>
-                    </router-link>
-                  </small>
-                  </h4>
-                </div>
-                <h4 class="replies" v-if="inConversation">
-                  <small v-if="replies.length">Replies:</small>
-                  <small v-for="reply in replies">
-                    <a href="#" @click.prevent="gotoOriginal(reply.id)" @mouseenter="replyEnter(reply.id, $event)" @mouseout="replyLeave()">{{reply.name}}&nbsp;</a>
-                  </small>
-                </h4>
-              </div>
-              <div class="heading-icons">
-                <a href="#" @click.prevent="toggleMute" v-if="unmuted"><i class="base09 icon-eye-off"></i></a>
-                <a :href="status.external_url" target="_blank" v-if="!status.is_local" class="source_url"><i class="base09 icon-binoculars"></i></a>
-                <template v-if="expandable">
-                  <a href="#" @click.prevent="toggleExpanded" class="expand"><i class="base09 icon-plus-squared"></i></a>
-                </template>
-              </div>
-            </div>
-
-            <div class="status-preview base00-background base03-border" v-if="showPreview && preview">
-              <StillImage class="avatar" :src="preview.user.profile_image_url_original"/>
-              <div class="text">
-                <h4>
-                  {{ preview.user.name }}
-                  <small><a>{{ preview.user.screen_name}}</a></small>
-                </h4>
-                <div @click.prevent="linkClicked" class="status-content" v-html="preview.statusnet_html"></div>
-              </div>
-            </div>
-            <div class="status-preview status-preview-loading base00-background base03-border" v-else-if="showPreview">
-              <i class="base09 icon-spin4 animate-spin"></i>
-            </div>
-
-            <div @click.prevent="linkClicked" class="status-content" v-html="status.statusnet_html"></div>
-
-            <div v-if='status.attachments' class='attachments'>
-              <attachment v-if="!hideAttachments" :status-id="status.id" :nsfw="status.nsfw" :attachment="attachment" v-for="attachment in status.attachments" :key="attachment.id">
-              </attachment>
-            </div>
-          </div>
-
-          <div class='status-actions'>
-            <div v-if="loggedIn">
-              <a href="#" v-on:click.prevent="toggleReplying">
-                <i class="base09 icon-reply" :class="{'icon-reply-active': replying}"></i>
-              </a>
-            </div>
-            <retweet-button :loggedIn="loggedIn" :status=status></retweet-button>
-            <favorite-button :loggedIn="loggedIn" :status=status></favorite-button>
-            <delete-button :status=status></delete-button>
-          </div>
-        </div>
-      </div>
-      <div class="status base00-background container" v-if="replying">
-        <div class="reply-left"/>
-        <post-status-form class="reply-body" :reply-to="status.id" :attentions="status.attentions" :repliedUser="status.user" v-on:posted="toggleReplying"/>
-      </div>
-    </template>
-  </div>
-</template>
--->
-
 <template>
   <div class="status-el base00-background base03-border" :class="[{ 'base01-background': isFocused }, { 'status-conversation': inlineExpanded }]">
     <template v-if="muted && !noReplyLinks">
-- 
cgit v1.2.3-70-g09d2


From 6a5116c349509c160c424b6e0fe8c17ece9a3417 Mon Sep 17 00:00:00 2001
From: shpuld <shp@cock.li>
Date: Tue, 10 Apr 2018 19:25:24 +0300
Subject: Fixes to notification style issues mostly

---
 src/App.scss                                    |   5 +
 src/components/notification/notification.vue    |  34 ++--
 src/components/notifications/notifications.scss | 248 ++++++++++++------------
 src/components/status/status.vue                |  12 +-
 4 files changed, 159 insertions(+), 140 deletions(-)

(limited to 'src/components/status/status.vue')

diff --git a/src/App.scss b/src/App.scss
index e4b02017..5f03e2a1 100644
--- a/src/App.scss
+++ b/src/App.scss
@@ -391,6 +391,11 @@ nav {
   }
 }
 
+.faint {
+  color: $fallback--faint;
+  color: var($fallback--faint, --faint);
+}
+
 @media all and (max-width: 959px) {
   .mobile-hidden {
     display: none;
diff --git a/src/components/notification/notification.vue b/src/components/notification/notification.vue
index 74563ff9..eed598a8 100644
--- a/src/components/notification/notification.vue
+++ b/src/components/notification/notification.vue
@@ -1,33 +1,35 @@
 <template>
   <status v-if="notification.type === 'mention'" :compact="true" :statusoid="notification.status"></status>
   <div class="non-mention" v-else>
-    <a :href="notification.action.user.statusnet_profile_url" @click.stop.prevent.capture="toggleUserExpanded">
+    <a class='avatar-container' :href="notification.action.user.statusnet_profile_url" @click.stop.prevent.capture="toggleUserExpanded">
       <StillImage class='avatar-compact' :src="notification.action.user.profile_image_url_original"/>
     </a>
     <div class='notification-right'>
-      <div class="base03-border usercard" v-if="userExpanded">
+      <div class="usercard notification-usercard" v-if="userExpanded">
         <user-card-content :user="notification.action.user" :switcher="false"></user-card-content>
       </div>
       <span class="notification-details">
-        <span class="username" :title="'@'+notification.action.user.screen_name">{{ notification.action.user.name }}</span>
-        <span v-if="notification.type === 'favorite'">
-          <i class="fa icon-star lit"></i>
-          <small>{{$t('notifications.favorited_you')}}</small>
-        </span>
-        <span v-if="notification.type === 'repeat'">
-          <i class="fa icon-retweet lit"></i>
-          <small>{{$t('notifications.repeated_you')}}</small>
-        </span>
-        <span v-if="notification.type === 'follow'">
-          <i class="fa icon-user-plus lit"></i>
-          <small>{{$t('notifications.followed_you')}}</small>
-        </span>
+        <div class="name-and-action">
+          <span class="username" :title="'@'+notification.action.user.screen_name">{{ notification.action.user.name }}</span>
+          <span v-if="notification.type === 'favorite'">
+            <i class="fa icon-star lit"></i>
+            <small>{{$t('notifications.favorited_you')}}</small>
+          </span>
+          <span v-if="notification.type === 'repeat'">
+            <i class="fa icon-retweet lit"></i>
+            <small>{{$t('notifications.repeated_you')}}</small>
+          </span>
+          <span v-if="notification.type === 'follow'">
+            <i class="fa icon-user-plus lit"></i>
+            <small>{{$t('notifications.followed_you')}}</small>
+          </span>
+        </div>
         <small class="timeago"><router-link :to="{ name: 'conversation', params: { id: notification.status.id } }"><timeago :since="notification.action.created_at" :auto-update="240"></timeago></router-link></small>
       </span>
       <div class="follow-text" v-if="notification.type === 'follow'">
         <router-link :to="{ name: 'user-profile', params: { id: notification.action.user.id } }">@{{notification.action.user.screen_name}}</router-link>
       </div>
-      <status v-else class="base04" :compact="true" :statusoid="notification.status" :noHeading="true"></status>
+      <status v-else class="faint" :compact="true" :statusoid="notification.status" :noHeading="true"></status>
     </div>
   </div>
 </template>
diff --git a/src/components/notifications/notifications.scss b/src/components/notifications/notifications.scss
index 08420c86..9c9ea1d5 100644
--- a/src/components/notifications/notifications.scss
+++ b/src/components/notifications/notifications.scss
@@ -46,161 +46,167 @@
     font-size: 0.9em;
     text-align: center;
     line-height: 1.3em;
-    padding: 1px;
   }
 
-  .notification {
-    padding-left: 4px;
-    box-sizing: border-box;
-    display: flex;
-    border-bottom: 1px solid;
-    border-bottom-color: inherit;
+  .unseen {
+    border-left: 4px solid $fallback--cRed;
+    border-left: 4px solid var(--cRed, $fallback--cRed);
+    padding-left: 0;
+  }
+}
 
-    .non-mention {
-      display: flex;
-      flex: 1;
-      flex-wrap: nowrap;
-      padding: 0.6em;
-      min-width: 0;
-      .status-el {
-        .status {
-          padding: 0.25em 0;
-        }
-        padding: 0;
-        .status-content.media-body {
-          margin: 0;
-        }
-      }
-    }
+.notification {
+  box-sizing: border-box;
+  display: flex;
+  border-bottom: 1px solid;
+  border-bottom-color: inherit;
+  padding-left: 4px;
 
-    .follow-text {
-      padding: 0.5em 0;
-    }
+  .avatar-compact {
+    width: 32px;
+    height: 32px;
+    border-radius: $fallback--avatarAltRadius;
+    border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);
+    overflow: hidden;
+    line-height: 0;
 
-    .status-el {
-      flex: 1;
+    &.animated::before {
+      display: none;
     }
+  }
 
-    time {
-      white-space: nowrap;
+  &:hover .animated.avatar {
+    canvas {
+      display: none;
     }
-
-    .notification-right {
-      flex: 1;
-      padding-left: 0.8em;
-      min-width: 0;
+    img {
+      visibility: visible;
     }
+  }
 
-    .notification-details {
-      min-width: 0px;
-      word-wrap: break-word;
-      line-height:18px;
-      position: relative;
-      overflow: hidden;
-      width: 100%;
-      flex: 1;
-      flex-wrap: nowrap;
+  .notification-usercard {
+    margin: 0;
+  }
 
-      .username {
-        font-weight: bolder;
+  .non-mention {
+    display: flex;
+    flex: 1;
+    flex-wrap: nowrap;
+    padding: 0.6em;
+    min-width: 0;
+    .avatar-container {
+      width: 32px;
+      height: 32px;
+    }
+    .status-el {
+      .status {
+        padding: 0.25em 0;
+        color: $fallback--faint;
+        color: var($fallback--faint, --faint);
       }
-      .timeago {
-        float: right;
-        font-size: 12px;
+      padding: 0;
+      .status-content.media-body {
+        margin: 0;
       }
+    }
+  }
 
-      .icon-retweet.lit {
-        color: $fallback--cGreen;
-        color: var(--cGreen, $fallback--cGreen);
-      }
+  .follow-text {
+    padding: 0.5em 0;
+  }
 
-      .icon-user-plus.lit {
-        color: $fallback--cBlue;
-        color: var(--cBlue, $fallback--cBlue);
-      }
+  .status-el {
+    flex: 1;
+  }
 
-      .icon-reply.lit {
-        color: $fallback--cBlue;
-        color: var(--cBlue, $fallback--cBlue);
-      }
+  time {
+    white-space: nowrap;
+  }
 
-      .icon-star.lit {
-        color: orange;
-        color: $fallback--cOrange;
-        color: var(--cOrange, $fallback--cOrange);
-      }
+  .notification-right {
+    flex: 1;
+    padding-left: 0.8em;
+    min-width: 0;
+  }
 
-      .status-content {
-        margin: 0;
-        max-height: 300px;
-      }
+  .notification-details {
+    min-width: 0px;
+    word-wrap: break-word;
+    line-height:18px;
+    position: relative;
+    overflow: hidden;
+    width: 100%;
+    flex: 1;
+    display: flex;
+    flex-wrap: nowrap;
 
-      h1 {
-        word-break: break-all;
-        margin: 0 0 0.3em;
-        padding: 0;
-        font-size: 1em;
-        line-height:20px;
-        small {
-          font-weight: lighter;
-        }
-      }
+    .name-and-action {
+      flex: 1;
+    }
 
-      p {
-        margin: 0;
-        margin-top: 0;
-        margin-bottom: 0.3em;
-      }
+    .username {
+      font-weight: bolder;
+    }
+    .timeago {
+      float: right;
+      font-size: 12px;
     }
 
-    &:last-child {
-      border-bottom: none;
+    .icon-retweet.lit {
+      color: $fallback--cGreen;
+      color: var(--cGreen, $fallback--cGreen);
     }
-  }
 
-  .notification-content {
-    max-height: 12em;
-    overflow-y: hidden;
-    //text-overflow: ellipsis;
+    .icon-user-plus.lit {
+      color: $fallback--cBlue;
+      color: var(--cBlue, $fallback--cBlue);
+    }
 
-    img {
-        object-fit: contain;
+    .icon-reply.lit {
+      color: $fallback--cBlue;
+      color: var(--cBlue, $fallback--cBlue);
     }
-  }
 
-  .unseen {
-    border-left: 4px solid $fallback--cRed;
-    border-left: 4px solid var(--cRed, $fallback--cRed);
-    padding-left: 6px;
-  }
-}
+    .icon-star.lit {
+      color: orange;
+      color: $fallback--cOrange;
+      color: var(--cOrange, $fallback--cOrange);
+    }
 
-.notification {
-  .avatar-compact {
-    margin-top: 0.3em;
-    width: 32px;
-    height: 32px;
-    border-radius: $fallback--avatarAltRadius;
-    border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);
-    overflow: hidden;
-    line-height: 0;
+    .status-content {
+      margin: 0;
+      max-height: 300px;
+    }
 
-    &.animated::before {
-      display: none;
+    h1 {
+      word-break: break-all;
+      margin: 0 0 0.3em;
+      padding: 0;
+      font-size: 1em;
+      line-height:20px;
+      small {
+        font-weight: lighter;
+      }
     }
 
+    p {
+      margin: 0;
+      margin-top: 0;
+      margin-bottom: 0.3em;
+    }
   }
 
-  &:hover .animated.avatar {
-    canvas {
-      display: none;
-    }
-    img {
-      visibility: visible;
-    }
+  &:last-child {
+    border-bottom: none;
   }
+}
 
-  .notification-usercard {
-    margin-left: 0.8em;
+.notification-content {
+  max-height: 12em;
+  overflow-y: hidden;
+  //text-overflow: ellipsis;
+
+  img {
+      object-fit: contain;
   }
 }
diff --git a/src/components/status/status.vue b/src/components/status/status.vue
index 4d0b6f20..0dc33311 100644
--- a/src/components/status/status.vue
+++ b/src/components/status/status.vue
@@ -10,7 +10,7 @@
     <template v-else>
       <div v-if="retweet && !noHeading" class="media container retweet-info">
         <StillImage v-if="retweet" class='avatar' :src="statusoid.user.profile_image_url_original"/>
-        <div class="media-body">
+        <div class="media-body faint">
           <a :href="statusoid.user.statusnet_profile_url" style="font-weight: bold;" :title="'@'+statusoid.user.screen_name">{{retweeter}}</a>
           <i class='fa icon-retweet retweeted'></i>
           {{$t('timeline.repeated')}}
@@ -134,12 +134,13 @@
   border-radius: $fallback--tooltipRadius;
   border-radius: var(--tooltipRadius, $fallback--tooltipRadius);
   box-shadow: 2px 2px 3px rgba(0, 0, 0, 0.5);
-  margin-top: 0.5em;
-  margin-left: 1em;
+  margin-top: 0.25em;
+  margin-left: 0.5em;
   z-index: 50;
   .status {
     flex: 1;
     border: 0;
+    min-width: 15em;
   }
 }
 
@@ -439,6 +440,11 @@ a.unmute {
     width: 40px;
     height: 40px;
   }
+
+  .status .avatar-compact {
+    width: 32px;
+    height: 32px;
+  }
 }
 
 </style>
-- 
cgit v1.2.3-70-g09d2


From da1a222cabb6a6e2e12847393bf5f89dbf9dc56f Mon Sep 17 00:00:00 2001
From: shpuld <shp@cock.li>
Date: Tue, 10 Apr 2018 19:58:25 +0300
Subject: Add back the status animation

---
 src/components/status/status.vue | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

(limited to 'src/components/status/status.vue')

diff --git a/src/components/status/status.vue b/src/components/status/status.vue
index 0dc33311..6fe61f36 100644
--- a/src/components/status/status.vue
+++ b/src/components/status/status.vue
@@ -1,5 +1,5 @@
 <template>
-  <div class="status-el" :class="[{ 'status-el_focused': isFocused }, { 'status-conversation': inlineExpanded }]">
+  <div class="status-el status-fadein" :class="[{ 'status-el_focused': isFocused }, { 'status-conversation': inlineExpanded }]">
     <template v-if="muted && !noReplyLinks">
       <div class="media status container muted">
         <small><router-link :to="{ name: 'user-profile', params: { id: status.user.id } }">{{status.user.screen_name}}</router-link></small>
@@ -304,7 +304,7 @@
 }
 
 .status-fadein {
-  animation-duration: 0.5s;
+  animation-duration: 0.3s;
   animation-name: fadein;
 }
 
-- 
cgit v1.2.3-70-g09d2


From 896fea7dbdedce3aea88b185565b4fdccde405bd Mon Sep 17 00:00:00 2001
From: shpuld <shp@cock.li>
Date: Tue, 10 Apr 2018 22:12:59 +0300
Subject: Fixes from review

---
 src/App.scss                                    | 2 +-
 src/components/attachment/attachment.vue        | 9 +++++----
 src/components/notifications/notifications.scss | 2 +-
 src/components/status/status.vue                | 5 ++++-
 4 files changed, 11 insertions(+), 7 deletions(-)

(limited to 'src/components/status/status.vue')

diff --git a/src/App.scss b/src/App.scss
index 5f03e2a1..61acc4ce 100644
--- a/src/App.scss
+++ b/src/App.scss
@@ -393,7 +393,7 @@ nav {
 
 .faint {
   color: $fallback--faint;
-  color: var($fallback--faint, --faint);
+  color: var(--faint, $fallback--faint);
 }
 
 @media all and (max-width: 959px) {
diff --git a/src/components/attachment/attachment.vue b/src/components/attachment/attachment.vue
index c84a74a0..6134f8e2 100644
--- a/src/components/attachment/attachment.vue
+++ b/src/components/attachment/attachment.vue
@@ -2,7 +2,7 @@
   <div v-if="size==='hide'">
     <a class="placeholder" v-if="type !== 'html'" target="_blank" :href="attachment.url">[{{nsfw ? "NSFW/" : ""}}{{type.toUpperCase()}}]</a>
   </div>
-  <div v-else class="attachment base03-border" :class="{[type]: true, loading, 'small-attachment': isSmall}" v-show="!isEmpty">
+  <div v-else class="attachment" :class="{[type]: true, loading, 'small-attachment': isSmall}" v-show="!isEmpty">
     <a class="image-attachment" v-if="hidden" @click.prevent="toggleHidden()">
       <img :key="nsfwImage" :src="nsfwImage"/>
     </a>
@@ -11,10 +11,10 @@
     </div>
 
     <a v-if="type === 'image' && !hidden" class="image-attachment" :href="attachment.url" target="_blank">
-      <StillImage :class="{'small': isSmall}" class="base03-border" referrerpolicy="no-referrer" :mimetype="attachment.mimetype" :src="attachment.large_thumb_url || attachment.url"/>
+      <StillImage :class="{'small': isSmall}" referrerpolicy="no-referrer" :mimetype="attachment.mimetype" :src="attachment.large_thumb_url || attachment.url"/>
     </a>
 
-    <video :class="{'small': isSmall}" class="base03" v-if="type === 'video' && !hidden" :src="attachment.url" controls loop></video>
+    <video :class="{'small': isSmall}" v-if="type === 'video' && !hidden" :src="attachment.url" controls loop></video>
 
     <audio v-if="type === 'audio'" :src="attachment.url" controls></audio>
 
@@ -61,6 +61,7 @@
     flex: 1 0 30%;
     margin: 0.5em 0.7em 0.6em 0.0em;
     align-self: flex-start;
+    line-height: 0;
 
     border-style: solid;
     border-width: 1px;
@@ -109,7 +110,7 @@
   }
 
   img.media-upload {
-    margin-bottom: -2px;
+    line-height: 0;
     max-height: 300px;
     max-width: 100%;
   }
diff --git a/src/components/notifications/notifications.scss b/src/components/notifications/notifications.scss
index 9c9ea1d5..65ab7f5e 100644
--- a/src/components/notifications/notifications.scss
+++ b/src/components/notifications/notifications.scss
@@ -136,7 +136,7 @@
     position: relative;
     overflow: hidden;
     width: 100%;
-    flex: 1;
+    flex: 1 1 0;
     display: flex;
     flex-wrap: nowrap;
 
diff --git a/src/components/status/status.vue b/src/components/status/status.vue
index 6fe61f36..885083c4 100644
--- a/src/components/status/status.vue
+++ b/src/components/status/status.vue
@@ -27,7 +27,7 @@
           <div class="usercard media-body" v-if="userExpanded">
             <user-card-content :user="status.user" :switcher="false"></user-card-content>
           </div>
-          <div v-if="!noHeading" class="media-body container">
+          <div v-if="!noHeading" class="media-body container media-heading">
             <div class="media-heading-left">
               <div class="name-and-links">
                 <h4 class="user-name">{{status.user.name}}</h4>
@@ -181,6 +181,9 @@
     flex: 1;
     padding: 0;
     margin: 0 0 0.25em 0.8em;
+  }
+
+  .media-heading {
     flex-wrap: nowrap;
   }
 
-- 
cgit v1.2.3-70-g09d2

