cleanup. added fallback mechanism for IE11 and unsupported browsers.

This commit is contained in:
Henry Jameson 2018-04-01 05:28:20 +03:00
parent aa0564406a
commit acdb5e5c7a
22 changed files with 464 additions and 385 deletions

View file

@ -1,4 +1,5 @@
@import './_variables.scss';
#app {
background-size: cover;
background-attachment: fixed;
@ -33,18 +34,22 @@ body {
font-family: sans-serif;
font-size: 14px;
margin: 0;
color: var(--fg);
color: $fallback--fg;
color: var(--fg, $fallback--fg);
}
a {
text-decoration: none;
color: var(--link);
color: $fallback--link;
color: var(--link, $fallback--link);
}
button{
user-select: none;
color: var(--faint);
background-color: var(--btn);
color: $fallback--faint;
color: var(--faint, $fallback--faint);
background-color: $fallback--btn;
background-color: var(--btn, $fallback--btn);
border: none;
border-radius: 5px;
cursor: pointer;
@ -54,8 +59,6 @@ button{
font-size: 14px;
font-family: sans-serif;
&:hover {
box-shadow: 0px 0px 4px rgba(255, 255, 255, 0.3);
}
@ -66,8 +69,10 @@ button{
}
&.pressed {
color: var(--faint);
background-color: var(--bg)
color: $fallback--faint;
color: var(--faint, $fallback--faint);
background-color: $fallback--bg;
background-color: var(--bg, $fallback--bg)
}
}
@ -78,11 +83,13 @@ input, textarea, select {
border-bottom: 1px solid rgba(255, 255, 255, 0.2);
border-top: 1px solid rgba(0, 0, 0, 0.2);
box-shadow: 0px 0px 2px black inset;
background-color: var(--lightBg);
color: var(--lightFg);
background-color: $fallback--lightBg;
background-color: var(--lightBg, $fallback--lightBg);
color: $fallback--lightFg;
color: var(--lightFg, $fallback--lightFg);
font-family: sans-serif;
font-size: 14px;
padding: 5px;
padding: 8px 7px 4px;
// TODO: Restyle <select> in a decent way. Needs different markup
// -webkit-appearance:none;
@ -93,7 +100,8 @@ input, textarea, select {
&[type=checkbox] {
display: none;
&:checked + label::before {
color: var(--fg);
color: $fallback--fg;
color: var(--fg, $fallback--fg);
}
+ label::before {
display: inline-block;
@ -106,7 +114,8 @@ input, textarea, select {
border-top: 1px solid rgba(0, 0, 0, 0.2);
box-shadow: 0px 0px 2px black inset;
margin-right: .5em;
background-color: var(--btn);
background-color: $fallback--btn;
background-color: var(--btn, $fallback--btn);
vertical-align: baseline;
text-align: center;
line-height: 1.1em;
@ -126,7 +135,8 @@ input, textarea, select {
.icon-binoculars,
.icon-plus-squared,
.icon-spin4 {
color: var(--icon)
color: $fallback--icon;
color: var(--icon, $fallback--icon)
}
@ -202,9 +212,12 @@ main-router {
flex-direction: column;
margin: 0.5em;
background-color: var(--bg);
background-color: $fallback--bg;
background-color: var(--bg, $fallback--bg);
border-radius: 10px;
border-radius: $fallback--panelRadius;
border-radius: var(--panelRadius, 10px);
box-shadow: 1px 1px 4px rgba(0,0,0,.6);
overflow: hidden;
}
@ -223,7 +236,8 @@ main-router {
text-align: left;
font-size: 1.3em;
line-height: 24px;
background-color: var(--btn);
background-color: $fallback--btn;
background-color: var(--btn, $fallback--btn);
}
.panel-footer {
@ -246,8 +260,10 @@ main-router {
nav {
z-index: 1000;
background-color: var(--bg);
color: var(--faint);
background-color: $fallback--btn;
background-color: var(--btn, $fallback--btn);
color: $fallback--faint;
color: var(--faint, $fallback--faint);
box-shadow: 0px 0px 4px rgba(0,0,0,.6);
}

View file

@ -1,6 +1,20 @@
$main-color: #f58d2c;
$main-background: white;
$darkened-background: whitesmoke;
$green_: #0fa00f;
$blue_: #0095ff;
$red_: #ff0000;
$fallback--bg: #121a24;
$fallback--btn: #182230;
$fallback--faint: #999;
$fallback--fg: #b9b9ba;
$fallback--link: #d8a070;
$fallback--icon: #666;
$fallback--lightBg: rgb(21, 30, 42);
$fallback--lightFg: #b9b9ba;
$fallback--border: #222;
$fallback--cRed: #ff0000;
$fallback--cBlue: #0095ff;
$fallback--cGreen: #0fa00f;
$fallback--cOrange: orange;
$fallback--cYellow: yellow;
$fallback--panelRadius: 10px;

View file

@ -30,6 +30,8 @@
<script src="./attachment.js"></script>
<style lang="scss">
@import '../../_variables.scss';
.attachments {
display: flex;
flex-wrap: wrap;
@ -45,7 +47,8 @@
flex: 1 0 30%;
margin: 0.5em 0.7em 0.6em 0.0em;
align-self: flex-start;
border-color: var(--border);
border-color: $fallback--border;
border-color: var(--border, $fallback--border);
border-style: solid;
border-width: 1px;

View file

@ -14,8 +14,8 @@
.icon-cancel,.delete-status {
cursor: pointer;
&:hover {
color: $red_;
color: var(--red);
color: var(--cRed, $fallback--cRed);
color: $fallback--cRed;
}
}
</style>

View file

@ -11,18 +11,22 @@
<script src="./favorite_button.js" ></script>
<style lang='scss'>
.fav-active {
<style lang="scss">
@import '../../_variables.scss';
.fav-active {
cursor: pointer;
animation-duration: 0.6s;
&:hover {
color: orange;
color: var(--cOrange);
}
}
.favorite-button.icon-star {
color: orange;
color: var(--cOrange);
color: $fallback--cOrange;
color: var(--cOrange, $fallback--cOrange);
}
}
.favorite-button.icon-star {
color: $fallback--cOrange;
color: var(--cOrange, $fallback--cOrange);
}
</style>

View file

@ -31,6 +31,7 @@
<script src="./login_form.js" ></script>
<style lang="scss">
@import '../../_variables.scss';
.login-form {
input {
@ -47,7 +48,7 @@
border-radius: 5px;
text-align: center;
background-color: rgba(255, 48, 16, 0.65);
background-color: var(--cRed);
background-color: $fallback--cRed;
min-height: 28px;
line-height: 28px;
}

View file

@ -30,6 +30,8 @@
<script src="./nav_panel.js" ></script>
<style lang="scss">
@import '../../_variables.scss';
.nav-panel ul {
list-style: none;
margin: 0;
@ -38,13 +40,17 @@
.nav-panel li {
border-bottom: 1px solid;
border-color: var(--border);
background-color: var(--bg);
border-color: $fallback--border;
border-color: var(--border, $fallback--border);
background-color: $fallback--bg;
background-color: var(--bg, $fallback--bg);
padding: 0;
&:first-child a {
border-top-right-radius: 10px;
border-top-left-radius: 10px;
}
&:last-child a {
border-bottom-right-radius: 10px;
border-bottom-left-radius: 10px;
@ -58,16 +64,20 @@
.nav-panel a {
display: block;
padding: 0.8em 0.85em;
&:hover {
background-color: var(--lightBg);
background-color: $fallback--lightBg;
background-color: var(--lightBg, $fallback--lightBg);
}
&.router-link-active {
font-weight: bolder;
background-color: var(--lightBg);
background-color: $fallback--lightBg;
background-color: var(--lightBg, $fallback--lightBg);
&:hover {
text-decoration: underline;
}
}
}
</style>

View file

@ -24,11 +24,6 @@ const Notifications = {
},
unseenCount () {
return this.unseenNotifications.length
},
hiderStyle () {
return {
background: `linear-gradient(to bottom, rgba(0, 0, 0, 0), ${this.$store.state.config.colors.bg} 80%)`
}
}
},
components: {

View file

@ -5,32 +5,39 @@
padding-bottom: 15em;
.panel {
background: var(--bg)
background: $fallback--bg;
background: var(--bg, $fallback--bg)
}
.panel-body {
border-color: var(--border)
border-color: $fallback--border;
border-color: var(--border, $fallback--border)
}
.panel-heading {
// force the text to stay centered, while keeping
// the button in the right side of the panel heading
position: relative;
background: var(--btn);
color: var(--faint);
background: $fallback--btn;
background: var(--btn, $fallback--btn);
color: $fallback--faint;
color: var(--faint, $fallback--faint);
.read-button {
position: absolute;
right: 0.7em;
height: 1.8em;
line-height: 100%;
background-color: var(--btn);
color: var(--faint);
background-color: $fallback--btn;
background-color: var(--btn, $fallback--btn);
color: $fallback--faint;
color: var(--faint, $fallback--faint);
}
}
.unseen-count {
display: inline-block;
background-color: var(--cRed);
background-color: $fallback--cRed;
background-color: var(--cRed, $fallback--cRed);
text-shadow: 0px 0px 3px rgba(0, 0, 0, 0.5);
min-width: 1.3em;
border-radius: 1.3em;
@ -52,6 +59,10 @@
border-bottom: 1px solid;
border-bottom-color: inherit;
.notification-gradient {
background: linear-gradient(to bottom, rgba(0, 0, 0, 0), $fallback--bg 80%);
background: linear-gradient(to bottom, rgba(0, 0, 0, 0), var(--bg, $fallback--bg) 80%)
}
.text {
min-width: 0px;
@ -61,23 +72,24 @@
overflow: hidden;
.icon-retweet.lit {
color: $green_;
color: var(--cGreen);
color: $fallback--cGreen;
color: var(--cGreen, $fallback--cGreen);
}
.icon-user-plus.lit {
color: $blue_;
color: var(--cBlue);
color: $fallback--cBlue;
color: var(--cBlue, $fallback--cBlue);
}
.icon-reply.lit {
color: $blue_;
color: var(--cBlue);
color: $fallback--cBlue;
color: var(--cBlue, $fallback--cBlue);
}
.icon-star.lit {
color: orange;
color: var(--cOrange);
color: $fallback--cOrange;
color: var(--cOrange, $fallback--cOrange);
}
.status-content {
@ -151,7 +163,8 @@
}
.unseen {
border-left: 4px solid var(--cRed);
border-left: 4px solid $fallback--cRed;
border-left: 4px solid var(--cRed, $fallback--cRed);
padding-left: 6px;
}
}

View file

@ -20,7 +20,7 @@
<i class="fa icon-star lit"></i>
<small><router-link :to="{ name: 'conversation', params: { id: notification.status.id } }"><timeago :since="notification.action.created_at" :auto-update="240"></timeago></router-link></small>
</h1>
<div class="notification-gradient" :style="hiderStyle"></div>
<div class="notification-gradient"></div>
<div class="notification-content" v-html="notification.status.statusnet_html"></div>
</div>
<div v-if="notification.type === 'repeat'">
@ -29,7 +29,7 @@
<i class="fa icon-retweet lit"></i>
<small><router-link :to="{ name: 'conversation', params: { id: notification.status.id } }"><timeago :since="notification.action.created_at" :auto-update="240"></timeago></router-link></small>
</h1>
<div class="notification-gradient" :style="hiderStyle"></div>
<div class="notification-gradient"></div>
<div class="notification-content" v-html="notification.status.statusnet_html"></div>
</div>
<div v-if="notification.type === 'mention'">

View file

@ -50,6 +50,7 @@
<script src="./post_status_form.js"></script>
<style lang="scss">
@import '../../_variables.scss';
.tribute-container {
ul {
@ -83,11 +84,13 @@
display: flex;
}
}
.error {
border-radius: 5px;
text-align: center;
background-color: rgba(255, 48, 16, 0.65);
background-color: var(--cRed);
background-color: $fallback--cRed;
background-color: var(--cRed, $fallback--cRed);
padding: 0.25em;
margin: 0.35em;
display: flex;
@ -98,7 +101,8 @@
.attachment {
position: relative;
border: var(--border);
border: $fallback--border;
border: var(--border, $fallback--border);
margin: 0.5em 0.8em 0.2em 0;
}
@ -139,11 +143,11 @@
}
form textarea {
border-radius: 5px;
line-height:16px;
padding: 5px;
resize: none;
overflow: hidden;
transition: min-height 200ms;
min-height: 1px;
}
form textarea:focus {
@ -170,8 +174,10 @@
z-index: 1;
box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.5);
min-width: 75%;
background: var(--btn);
color: var(--lightFg);
background: $fallback--btn;
background: var(--btn, $fallback--btn);
color: $fallback--lightFg;
color: var(--lightFg, $fallback--lightFg);
}
.autocomplete {
@ -179,19 +185,23 @@
padding: 0.2em 0.4em 0.2em 0.4em;
border-bottom: 1px solid rgba(0, 0, 0, 0.4);
display: flex;
img {
width: 24px;
height: 24px;
border-radius: 2px;
object-fit: contain;
}
span {
line-height: 24px;
margin: 0 0.1em 0 0.2em;
}
small {
margin-left: .5em;
color: var(--faint);
color: $fallback--faint;
color: var(--faint, $fallback--faint);
}
}
}

View file

@ -55,6 +55,7 @@
<script src="./registration.js"></script>
<style lang="scss">
@import '../../_variables.scss';
.registration-form {
display: flex;
@ -87,18 +88,13 @@
}
form textarea {
border: solid;
border-width: 1px;
border-color: silver;
border-radius: 5px;
line-height:16px;
padding: 5px;
resize: vertical;
}
input {
border-radius: 5px;
padding: 0.1em 0.2em 0.2em 0.2em;
}
.captcha {
@ -117,8 +113,8 @@
border-radius: 5px;
text-align: center;
margin: 0.5em 0.6em 0;
background-color: rgba(255, 48, 16, 0.65);
background-color: var(--cRed);
background-color: $fallback--cRed;
background-color: var(--cRed, $fallback--cRed);
min-height: 28px;
line-height: 28px;
}

View file

@ -11,18 +11,18 @@
<script src="./retweet_button.js" ></script>
<style lang='scss'>
@import '../../_variables.scss';
.rt-active {
<style lang="scss">
@import '../../_variables.scss';
.rt-active {
cursor: pointer;
animation-duration: 0.6s;
&:hover {
color: $green_;
color: var(--cGreen);
}
}
.icon-retweet.retweeted {
color: $green_;
color: var(--cGreen);
color: $fallback--cGreen;
color: var(--cGreen, $fallback--cGreen);
}
}
.icon-retweet.retweeted {
color: $fallback--cGreen;
color: var(--cGreen, $fallback--cGreen);
}
</style>

View file

@ -56,6 +56,7 @@
<style lang="scss">
.setting-item {
margin: 1em 1em 1.4em;
textarea {
width: 100%;
height: 100px;

View file

@ -139,8 +139,10 @@ status-text-container {
max-width: 34em;
padding: 0.5em;
display: flex;
background-color: var(--bg);
border-color: var(--border);
background-color: $fallback--bg;
background-color: var(--bg, $fallback--bg);
border-color: $fallback--border;
border-color: var(--border, $fallback--border);
border-style: solid;
border-width: 1px;
border-radius: 4px;
@ -181,15 +183,19 @@ status-text-container {
word-break: break-word;
border-left-width: 0px;
line-height: 18px;
background-color: var(--bg);
border-color: var(--border);
background-color: $fallback--bg;
background-color: var(--bg, $fallback--bg);
border-color: $fallback--border;
border-color: var(--border, $fallback--border);
&_focused {
background-color: var(--lightBg);
background-color: $fallback--lightBg;
background-color: var(--lightBg, $fallback--lightBg);
}
.usercard {
border-color: var(--border);
border-color: $fallback--border;
border-color: var(--border, $fallback--border);
}
.timeline & {
@ -211,7 +217,6 @@ status-text-container {
.user-content {
min-height: 52px;
padding-top: 1px;
}
@ -224,14 +229,17 @@ status-text-container {
small {
font-weight: lighter;
}
h4 {
margin-right: 0.4em;
}
.name-and-links {
flex: 1 0;
display: flex;
flex-wrap: wrap;
}
.replies {
flex-basis: 100%;
}
@ -310,6 +318,7 @@ status-text-container {
from {
opacity: 0;
}
to {
opacity: 1;
}
@ -335,14 +344,14 @@ status-text-container {
}
.icon-reply:hover {
color: $blue_;
color: var(--cBlue);
}
color: $fallback--cBlue;
color: var(--cBlue, $fallback--cBlue);
}
.icon-reply.icon-reply-active {
color: $blue_;
color: var(--cBlue);
}
.icon-reply.icon-reply-active {
color: $fallback--cBlue;
color: var(--cBlue, $fallback--cBlue);
}
.status .avatar {
width: 48px;
@ -365,7 +374,7 @@ status-text-container {
margin-right: 8px;
margin-bottom: 8px;
}
}
}
.status:hover .animated.avatar {
canvas {
@ -376,34 +385,35 @@ status-text-container {
}
}
.status .avatar-retweeter {
.status img.avatar-retweeter {
width: 24px;
height: 24px;
position: absolute;
margin-left: 24px;
margin-top: 24px;
}
}
.status.compact .avatar {
.status.compact .avatar {
width: 32px;
}
}
.status {
.status {
padding: 0.4em 0.7em 0.45em 0.7em;
border-left: 4px var(--cRed);
border-left: 4px $fallback--cRed;
border-left: 4px var(--cRed, $fallback--cRed);
border-left-style: inherit;
}
}
.status-conversation:last-child {
.status-conversation:last-child {
border-bottom: none;
}
}
.timeline .panel.timeline {
.timeline .panel.timeline {
border-radius: 10px;
overflow: hidden;
}
}
.muted {
.muted {
padding: 0.1em 0.4em 0.1em 0.8em;
button {
margin-left: auto;
@ -412,28 +422,29 @@ status-text-container {
.muteWords {
margin-left: 10px;
}
}
}
a.unmute {
a.unmute {
display: block;
margin-left: auto;
}
}
.reply-left {
.reply-left {
flex: 0;
min-width: 48px;
}
}
.reply-body {
.reply-body {
flex: 1;
}
}
@media all and (max-width: 960px) {
@media all and (max-width: 960px) {
.status-el {
.name-and-links {
margin-left: -0.25em;
}
}
.status {
max-width: 100%;
}

View file

@ -47,6 +47,7 @@
<script src="./style_switcher.js"></script>
<style lang="scss">
@import '../../_variables.scss';
.style-switcher {
margin-right: 1em;
}
@ -65,14 +66,20 @@
margin: 5px 6px 5px 0;
label {
color: var(--faint);
color: var(--faint, $fallback--faint);
}
}
.theme-color-cl {
border: 0;
box-shadow: none;
background: transparent;
}
.theme-color-cl,
.theme-color-in {
margin-left: 4px;
border-radius: 2px;
border: 0;
}
.theme-color-in {

View file

@ -52,18 +52,21 @@
<script src="./timeline.js"></script>
<style lang="scss">
@import '../../_variables.scss';
.timeline {
.timeline {
.timeline-heading {
position: relative;
display: flex;
}
.title {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 70%;
}
.loadmore-button {
position: absolute;
right: 0.6em;
@ -73,6 +76,7 @@
height: 1.8em;
line-height: 100%;
}
.loadmore-text {
position: absolute;
right: 0.6em;
@ -80,26 +84,31 @@
min-width: 6em;
border-radius: 5px;
background-color: transparent;
color: var(--faint);
color: $fallback--faint;
color: var(--faint, $fallback--faint);
font-family: sans-serif;
text-align: center;
padding: 0 0.5em 0 0.5em;
opacity: 0.8;
}
.error {
color: var(--lightFg);
background-color: var(--cRed);
}
}
.new-status-notification {
.error {
color: $fallback--lightFg;
color: var(--lightFg, $fallback--lightFg);
background-color: $fallback--cRed;
background-color: var(--cRed, $fallback--cRed);
}
}
.new-status-notification {
position:relative;
margin-top: -1px;
font-size: 1.1em;
border-width: 1px 0 0 0;
border-style: solid;
border-radius: 0 0 10px 10px;
border-color: var(--border);
border-color: $fallback--border;
border-color: var(--border, $fallback--border);
padding: 10px;
z-index: 1;
}

View file

@ -21,6 +21,8 @@
<script src="./user_card.js"></script>
<style lang="scss">
@import '../../_variables.scss';
.name-and-screen-name {
margin-left: 0.7em;
margin-top:0.0em;
@ -34,10 +36,6 @@
float: right;
}
.follows {
}
.card {
display: flex;
flex: 1 0;
@ -47,7 +45,8 @@
padding-left: 1em;
border-bottom: 1px solid;
margin: 0;
border-bottom-color: var(--border);
border-bottom-color: $fallback--border;
border-bottom-color: var(--border, $fallback--border);
.avatar {
margin-top: 0.2em;
@ -69,8 +68,9 @@
.panel-heading {
background: transparent;
}
p {
margin-bottom: 0;
}
}
}
</style>

View file

@ -15,11 +15,6 @@ export default {
}
}
},
bodyStyle () {
return {
background: `linear-gradient(to bottom, rgba(0, 0, 0, 0), ${this.$store.state.config.colors.bg} 80%)`
}
},
isOtherUser () {
return this.user.id !== this.$store.state.users.currentUser.id
},

View file

@ -70,7 +70,7 @@
</div>
</div>
</div>
<div class="panel-body profile-panel-body" :style="bodyStyle">
<div class="panel-body profile-panel-body">
<div class="user-counts">
<div class="user-count">
<a href="#" v-on:click.prevent="setProfileView('statuses')" v-if="switcher"><h5>{{ $t('user_card.statuses') }}</h5></a>
@ -112,6 +112,8 @@
top: -0em;
padding-top: 4em;
word-wrap: break-word;
background: linear-gradient(to bottom, rgba(0, 0, 0, 0), $fallback--bg 80%);
background: linear-gradient(to bottom, rgba(0, 0, 0, 0), var(--bg, $fallback--bg) 80%)
}
.user-info {

View file

@ -16,25 +16,25 @@
<script src="./user_finder.js"></script>
<style lang="scss">
.user-finder-container {
@import '../../_variables.scss';
.user-finder-container {
height: 21px;
max-width: 100%;
}
}
.user-finder-icon {
}
.user-finder-input {
.user-finder-input {
border-radius: 5px;
max-width: 80%;
padding: 0.1em 0.2em 0.2em 0.2em;
}
}
.finder-error {
.finder-error {
background-color: rgba(255, 48, 16, 0.65);
margin: 0.35em;
border-radius: 5px;
padding: 0.25em;
color: var(--faint);
}
color: $fallback--faint;
color: var(--faint, $fallback--faint);
}
</style>

View file

@ -47,8 +47,6 @@ const setStyle = (href, commit) => {
head.appendChild(styleEl)
// const styleSheet = styleEl.sheet
// styleSheet.insertRule(`a { color: ${colors['base08']}`, 'index-max')
// styleSheet.insertRule(`body { color: ${colors['base05']}`, 'index-max')
body.style.display = 'initial'
}
@ -82,20 +80,14 @@ const setColors = (col, commit) => {
colors['base07'] = rgb2hex(col.text.r - mod * 2, col.text.g - mod * 2, col.text.b - mod * 2)
colors.link = rgb2hex(col.link.r, col.link.g, col.link.b) // links
colors.icon = rgb2hex((col.bg.r + col.text.r) / 2, (col.bg.g + col.text.g) / 2, (col.bg.b + col.text.b) / 2) // icons
colors.cBlue = 'blue'
colors.cBlue = '#0095ff'
colors.cRed = 'red'
colors.cGreen = 'green'
colors.cGreen = '#0fa00f'
colors.cYellow = 'yellow'
colors.cOrange = 'orange'
const colorVars = Object.entries(colors).map(([k, v]) => {
return `--${k}: ${v}`
})
console.log(colorVars)
styleSheet.insertRule(`body { ${colorVars.join(';')} }`, 'index-max')
// styleSheet.insertRule(`.base05-border { border-color: ${colors['base05']}`, 'index-max')
// styleSheet.insertRule(`.base03-border { border-color: ${colors['base03']}`, 'index-max')
styleSheet.toString()
styleSheet.insertRule(`body { ${Object.entries(colors).map(([k, v]) => `--${k}: ${v}`).join(';')} }`, 'index-max')
body.style.display = 'initial'
commit('setOption', { name: 'colors', value: colors })