Page MenuHomePhorge

No OneTemporary

Size
16 KB
Referenced Files
None
Subscribers
None
diff --git a/src/App.scss b/src/App.scss
index 431aeb32d4..b0888ac7b2 100644
--- a/src/App.scss
+++ b/src/App.scss
@@ -1,297 +1,261 @@
@import './_variables.scss';
#app {
background-size: cover;
background-attachment: fixed;
background-repeat: no-repeat;
background-position: 0 50px;
min-height: 100vh;
}
h4 {
margin: 0;
}
#content {
padding-top: 60px;
}
.text-center {
text-align: center;
}
body {
font-family: sans-serif;
font-size: 14px;
margin: 0;
}
a {
text-decoration: none;
}
button{
border: none;
border-radius: 5px;
&:hover {
background-color: white;
}
}
.container {
display: flex;
flex-wrap: wrap;
margin: 0;
padding: 0 10px 0 10px;
}
.gaps {
margin: -1em 0 0 -1em;
}
.item {
flex: 1;
}
.gaps > .item {
padding: 1em 0 0 1em;
}
.auto-size {
flex: 1
}
nav {
width: 100%;
align-items: center;
position: fixed;
height: 50px;
.inner-nav {
padding-left: 20px;
padding-right: 20px;
display: flex;
align-items: center;
flex-basis: 970px;
margin: auto;
height: 50px;
background-repeat: no-repeat;
background-position: center;
background-size: contain;
}
}
main-router {
flex: 1;
}
.status.compact {
color: rgba(0, 0, 0, 0.42);
font-weight: 300;
p {
margin: 0;
font-size: 0.8em
}
}
/* Panel */
.panel {
display: flex;
flex-direction: column;
margin: 0.5em;
border-radius: 0.5em;
}
.panel-heading {
border-radius: 0.5em 0.5em 0 0;
background-size: cover;
padding: 0.6em 0;
text-align: center;
font-size: 1.3em;
line-height: 24px;
}
.panel-footer {
border-radius: 0 0 0.5em 0.5em;
}
.panel-body > p {
line-height: 18px;
padding: 1em;
margin: 0;
}
#content {
margin: auto;
max-width: 980px;
border-radius: 1em;
padding-bottom: 1em;
background-color: rgba(0,0,0,0.1);
}
.media-body {
flex: 1;
padding-left: 0.5em;
}
.container > * {
min-width: 0px;
}
-.user-info {
- color: white;
- padding: 1em;
- img {
- border: 2px solid;
- border-radius: 0.5em
- }
- text-shadow: 0 1px 1px rgba(0, 0, 0, 0.5);
- .user-name{
- margin-top: 0.2em;
- }
- .user-screen-name {
- margin-top: 0.3em;
- font-weight: lighter;
- padding-right: 0.1em;
- }
-}
-
-.user-counts {
- display: flex;
- line-height:16px;
- padding: 1em 1.5em 0em 1em;
- text-align: center;
-}
-
-.user-count {
- flex: 1;
-
- h5 {
- font-size:1em;
- font-weight: bolder;
- margin: 0 0 0.25em;
- }
-}
-
.fa {
color: grey;
}
-
.status-actions {
width: 50%;
display: flex;
div, favorite-button {
flex: 1;
}
}
status-text-container {
display: block;
}
.status-el {
line-height: 18px;
.notify {
.avatar {
border-width: 3px;
border-style: solid;
}
}
.media-left {
img {
margin-top: 0.2em;
float: right;
margin-right: 0.3em;
border-radius: 20%;
}
}
.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;
}
}
}
.media-heading {
small {
font-weight: lighter;
}
margin-bottom: 0.3em;
}
}
nav {
z-index: 1000;
}
.fade-enter-active, .fade-leave-active {
transition: opacity .2s
}
.fade-enter, .fade-leave-active {
opacity: 0
}
.main {
flex: 1;
flex-basis: 65%;
}
.sidebar {
flex: 1;
flex-basis: 35%;
}
.mobile-shown {
display: none;
}
.panel-switcher {
display: none;
width: 100%;
button {
display: block;
flex: 1;
margin: 0.5em;
padding: 0.5em;
}
}
@media all and (max-width: 959px) {
.mobile-hidden {
display: none;
}
.panel-switcher {
display: flex;
}
.container {
padding: 0 0 0 0;
}
.panel {
margin: 0.5em 0 0.5em 0;
}
}
.item.right {
text-align: right;
padding-right: 20px;
}
diff --git a/src/components/status/status.vue b/src/components/status/status.vue
index 1e970ec64b..15efc55869 100644
--- a/src/components/status/status.vue
+++ b/src/components/status/status.vue
@@ -1,163 +1,163 @@
<template>
<div class="status-el base00-background" v-if="!status.deleted">
<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>
<a href="#" class="unmute" @click.prevent="toggleMute"><i class="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">
Retweeted by {{retweeter}}
</div>
</div>
<div class="media status container">
<div class="media-left">
<a :href="status.user.statusnet_profile_url">
<img @click.prevent="toggleUserExpanded" class='avatar' :src="status.user.profile_image_url_original">
</a>
</div>
<div class="media-body">
<div class="base05 base05=border usercard" v-if="userExpanded">
<user-card-content :user="status.user"></user-card-content>
</div>
<div class="user-content">
<h4 class="media-heading">
{{status.user.name}}
<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>
-
<small>
<router-link :to="{ name: 'conversation', params: { id: status.id } }">
<timeago :since="status.created_at" :auto-update="60"></timeago>
</router-link>
</small>
<template v-if="expandable">
-
<small>
<a href="#" @click.prevent="toggleExpanded" ><i class="icon-plus-squared"></i></a>
</small>
<small v-if="status.user.muted">
<a href="#" @click.prevent="toggleMute" ><i class="icon-eye-off"></i></a>
</small>
</template>
<small v-if="!status.is_local" class="source_url">
<a :href="status.external_url" target="_blank" ><i class="icon-binoculars"></i></a>
</small>
</h4>
<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">
</attachment>
</div>
</div>
<div v-if="loggedIn">
<div class='status-actions'>
<div>
<a href="#" v-on:click.prevent="toggleReplying">
<i class='fa icon-reply'></i>
</a>
</div>
<retweet-button :status=status></retweet-button>
<favorite-button :status=status></favorite-button>
<delete-button :status=status></delete-button>
</div>
<post-status-form v-if="replying" :reply-to="status.id" :attentions="status.attentions" :repliedUser="status.user" v-on:posted="toggleReplying"></post-status-form>
</div>
</div>
</div>
</template>
</div>
</template>
<script src="./status.js" ></script>
<style lang="scss">
@import '../../_variables.scss';
.status-el {
hyphens: auto;
overflow-wrap: break-word;
word-wrap: break-word;
word-break: break-word;
.user-content {
min-height: 52px;
padding-top: 1px;
}
.source_url {
float: right;
}
.greentext {
color: green;
}
a {
display: inline-block;
word-break: break-all;
}
.status-content {
margin: 3px 15px 4px 0;
}
p {
margin: 0;
margin-top: 0.2em;
margin-bottom: 0.5em;
}
}
.status-actions {
padding-top: 5px;
}
.icon-reply:hover {
color: $blue;
}
.status .avatar {
width: 48px;
}
.status.compact .avatar {
width: 32px;
}
.status {
padding: 0.65em 0.7em 0.8em 0.8em;
border-bottom: 1px solid;
}
.muted button {
margin-left: auto;
}
a.unmute {
display: block;
margin-left: auto;
}
.usercard {
border-style: solid;
border-width: 1px;
- border-radius: 1em;
+ border-radius: 0.5em;
margin-bottom: 1em;
}
.conversation .status-el {
border-left: 4px solid rgba(255, 48, 16, 0.65);
}
</style>
diff --git a/src/components/user_card_content/user_card_content.vue b/src/components/user_card_content/user_card_content.vue
index ee4384fa23..10064d5f80 100644
--- a/src/components/user_card_content/user_card_content.vue
+++ b/src/components/user_card_content/user_card_content.vue
@@ -1,92 +1,209 @@
<template>
- <div>
- <div class="base00-background panel-heading text-center" v-bind:style="style">
+ <div id="heading" class="profile-panel-background" :style="headingStyle">
+ <div class="panel-heading text-center">
<div class='user-info'>
- <img :src="user.profile_image_url">
- <span class="glyphicon glyphicon-user"></span>
- <div class='user-name'>{{user.name}}</div>
- <div class='user-screen-name'>@{{user.screen_name}}</div>
+ <div class='container'>
+ <img :src="user.profile_image_url">
+ <span class="glyphicon glyphicon-user"></span>
+ <div class='user-name'>{{user.name}}</div>
+ <div class='user-screen-name'>@{{user.screen_name}}</div>
+ </div>
<div v-if="isOtherUser" class="user-interactions">
<div v-if="user.follows_you && loggedIn" class="following base06">
Follows you!
</div>
<div class="follow" v-if="loggedIn">
<span v-if="user.following">
<!--Following them!-->
<button @click="unfollowUser" class="base06 base01-background">
Unfollow
</button>
</span>
<span v-if="!user.following">
<button @click="followUser" class="base01 base04-background">
Follow
</button>
</span>
</div>
<div class='mute' v-if='isOtherUser'>
<span v-if='user.muted'>
<button @click="toggleMute" class="base04 base01-background base06-border">Unmute</button>
</span>
<span v-if='!user.muted'>
<button @click="toggleMute" class="base01 base04-background base01-border">Mute</button>
</span>
</div>
</div>
</div>
</div>
- <div class="panel-body base00-background">
+ <div class="panel-body profile-panel-body" :style="bodyStyle">
<div class="user-counts">
<div class="user-count">
<h5>Statuses</h5>
<span>{{user.statuses_count}}</span>
</div>
<div class="user-count">
<h5>Following</h5>
<span>{{user.friends_count}}</span>
</div>
<div class="user-count">
<h5>Followers</h5>
<span>{{user.followers_count}}</span>
</div>
</div>
<p>{{user.description}}</p>
</div>
</div>
</template>
<script>
export default {
props: [ 'user' ],
computed: {
- style () {
+ headingStyle () {
return {
- color: `#${this.user.profile_link_color}`,
'background-image': `url(${this.user.cover_photo})`
}
},
+ bodyStyle () {
+ return {
+ background: 'linear-gradient(to bottom, rgba(0, 0, 0, 0), ' + this.$store.state.config.colors['base00'] + ' 80%)'
+ }
+ },
isOtherUser () {
return this.user !== this.$store.state.users.currentUser
},
loggedIn () {
return this.$store.state.users.currentUser
}
},
methods: {
followUser () {
const store = this.$store
store.state.api.backendInteractor.followUser(this.user.id)
.then((followedUser) => store.commit('addNewUsers', [followedUser]))
},
unfollowUser () {
const store = this.$store
store.state.api.backendInteractor.unfollowUser(this.user.id)
.then((unfollowedUser) => store.commit('addNewUsers', [unfollowedUser]))
},
toggleMute () {
const store = this.$store
store.commit('setMuted', {user: this.user, muted: !this.user.muted})
store.state.api.backendInteractor.setUserMute(this.user)
}
}
}
</script>
+
+<style lang="scss">
+
+.profile-panel-background {
+ background-color: #121517;
+ background-size: cover;
+ border-radius: 0.5em 0.5em 0 0;
+}
+
+.profile-panel-body {
+ padding-top: 0em;
+ top: -0em;
+ padding-top: 4em;
+}
+
+.user-info {
+ color: white;
+ padding: 16px 16px 16px 16px;
+ margin-bottom: -4em;
+
+ .container{
+ display: flex;
+ flex-wrap: wrap;
+ flex-direction: column;
+ align-content: flex-start;
+ justify-content: center;
+ max-height: 60px;
+ }
+
+ img {
+ border: 2px solid;
+ border-radius: 0.5em;
+ flex: 1 0 100%;
+ max-width: 48px;
+ max-height: 48px;
+ }
+
+ text-shadow: 0px 1px 1.5px rgba(0, 0, 0, 1.0);
+
+ .user-name{
+ margin-top: 0.0em;
+ margin-left: 0.6em;
+ flex: 0 0 auto;
+ align-self: flex-start;
+ }
+
+ .user-screen-name {
+ margin-top: 0.0em;
+ margin-left: 0.6em;
+ font-weight: lighter;
+ font-size: 15px;
+ padding-right: 0.1em;
+ flex: 0 0 auto;
+ align-self: flex-start;
+ }
+
+ .user-interactions {
+ display: flex;
+ flex-flow: row wrap;
+ justify-content: space-between;
+
+ div {
+ flex: 1;
+ }
+ margin-top: 0.7em;
+ margin-bottom: -1.0em;
+
+ .following {
+ color: white;
+ font-size: 14px;
+ flex: 0 0 100%;
+ margin: -0.7em 0.0em 0.3em 0.0em;
+ padding-left: 16px;
+ text-align: left;
+ }
+
+ .mute {
+ max-width: 220px;
+ min-height: 28px;
+ }
+
+ .follow {
+ max-width: 220px;
+ min-height: 28px;
+ }
+
+ button {
+ width: 92%;
+ height: 100%;
+ border: 1px solid;
+ }
+ }
+}
+
+.user-counts {
+ display: flex;
+ line-height:16px;
+ padding: 1em 1.5em 0em 1em;
+ text-align: center;
+}
+
+.user-count {
+ flex: 1;
+
+ h5 {
+ font-size:1em;
+ font-weight: bolder;
+ margin: 0 0 0.25em;
+ }
+}
+</style>
diff --git a/src/components/user_profile/user_profile.vue b/src/components/user_profile/user_profile.vue
index b0d6db8588..11a61bfc95 100644
--- a/src/components/user_profile/user_profile.vue
+++ b/src/components/user_profile/user_profile.vue
@@ -1,51 +1,16 @@
<template>
<div class="user-profile panel panel-default base00-background">
<user-card-content :user="user"></user-card-content>
</div>
</template>
<script src="./user_profile.js"></script>
<style lang="scss">
- .user-profile {
- flex: 2;
- flex-basis: 500px;
- }
- .user-info {
- .user-interactions {
- display: flex;
- flex-flow: row wrap;
- justify-content: center;
+.user-profile {
+ flex: 2;
+ flex-basis: 500px;
+}
- div {
- flex: 1;
- }
- margin-top: 0.5em;
- margin-bottom: -1.2em;
-
- .following {
- font-size: 14px;
- flex: 0 0 100%;
- margin-bottom: 0.5em;
- }
-
- .mute {
- max-width: 200px;
- }
-
- .follow {
- max-width: 200px;
- }
-
- button {
- width: 80%;
- height: 100%;
- border: 1px solid;
- }
- }
- .user-screen-name {
- margin-top: 0.4em;
- }
- }
</style>

File Metadata

Mime Type
text/x-diff
Expires
Sat, Aug 8, 11:41 AM (1 d, 10 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1723143
Default Alt Text
(16 KB)

Event Timeline