fix: small UI issues

This commit is contained in:
monica 2022-11-07 11:25:51 -06:00
parent 0fa5aa8915
commit 75d885ccf0
15 changed files with 202 additions and 212 deletions

View File

@ -236,6 +236,10 @@ p:last-of-type {
word-break: break-word; word-break: break-word;
hyphens: auto !important; hyphens: auto !important;
line-height: 1.3rem !important; line-height: 1.3rem !important;
max-width: 100%;
}
.break-word-wrap pre {
overflow: auto;
} }
</style> </style>

View File

@ -1,7 +1,7 @@
<template> <template>
<q-item <div
color='accent' color='accent'
class='post-padding cursor-pointer no-hover' class='post-padding cursor-pointer no-hover flex row no-wrap'
clickable clickable
manual-focus manual-focus
:class='(hasReply ? "post-has-reply" : "") + :class='(hasReply ? "post-has-reply" : "") +
@ -11,17 +11,6 @@
(hasReplyChildren ? " post-has-child-reply" : "")' (hasReplyChildren ? " post-has-child-reply" : "")'
@click.stop="toEvent(event.id)" @click.stop="toEvent(event.id)"
> >
<!-- <div class='absolute-top-right flex row items-center post-info' style='z-index: 1;' @click.stop>
<q-item-label caption style='opacity: .8;'>{{ niceDate(event.created_at) }}</q-item-label>
<BaseButtonRelays
button-class='text-secondary'
:event='event'
/>
<BaseButtonInfo
button-class='text-secondary'
:event='event'
/>
</div> -->
<div <div
clickable clickable
avatar avatar
@ -59,11 +48,11 @@
/> />
</div> </div>
</div> </div>
<q-item-section> <div class='flex column no-wrap col full-width'>
<q-item-section ref='postContent' class='relative-position' style='padding-left: .2rem;'> <q-item-section ref='postContent' class='relative-position' style='padding: 0 .2rem;'>
<div class='absolute-top-right flex row items-center post-info' style='z-index: 1;' @click.stop> <div class='absolute-top-right flex row items-center post-info' style='z-index: 1;' @click.stop>
<q-item-label caption style='opacity: .8;'>{{ niceDate(event.created_at) }}</q-item-label> <q-item-label class='q-pr-xs' style='opacity: .8; font-size: 90%;'>{{ niceDate(event.created_at) }}</q-item-label>
<BaseButtonRelays <BaseButtonRelays
button-class='text-secondary' button-class='text-secondary'
:event='event' :event='event'
@ -84,10 +73,10 @@
<q-item-label <q-item-label
v-if=" v-if="
tagged && tagged &&
($route.name === 'feed' || $route.name === 'profile' || $route.name === 'notifications') && ($route.name != 'event') &&
!(isReply || isChildReply) !(isReply || isChildReply)
" "
caption
class='q-pl-sm' class='q-pl-sm'
> >
<span >in reply to&nbsp;</span> <span >in reply to&nbsp;</span>
@ -96,9 +85,6 @@
</a> </a>
</q-item-label> </q-item-label>
</div> </div>
<!-- <q-item-label
class='q-pt-xs break-word-wrap'
> -->
<BaseMarkdown v-if="event.kind === 1"> <BaseMarkdown v-if="event.kind === 1">
{{ event.interpolated.text }} {{ event.interpolated.text }}
</BaseMarkdown> </BaseMarkdown>
@ -106,7 +92,7 @@
<BaseMarkdown v-else> {{ cleanEvent }} </BaseMarkdown> <BaseMarkdown v-else> {{ cleanEvent }} </BaseMarkdown>
<div <div
v-if='!isEmbeded && (isQuote || isRepost)' v-if='!isEmbeded && (isQuote || isRepost)'
class='reposts flex column q-my-sm q-pa-sm' class='reposts flex column'
:clickable='false' :clickable='false'
> >
<BasePost <BasePost
@ -186,11 +172,11 @@
</div> </div>
</div> </div>
</q-item-section> </q-item-section>
<q-item-section v-if="replyMode" class='full-width new-reply-box' ref='replyContent'> <q-item-section v-if="replyMode" class='new-reply-box' ref='replyContent'>
<q-tab-panels <q-tab-panels
v-model="replyPanel" v-model="replyPanel"
class='no-padding full-width overflow-hidden' class='no-padding full-width overflow-hidden'
style='background-color: inherit; max-width: 100%;' style='background-color: inherit; max-width: 100%; padding: 0 .25 0 0;'
@transition='calcConnectorValues(10)' @transition='calcConnectorValues(10)'
> >
<q-tab-panel name="embed" class='no-padding' @click.stop> <q-tab-panel name="embed" class='no-padding' @click.stop>
@ -214,7 +200,7 @@
</q-tab-panels> </q-tab-panels>
</q-item-section> </q-item-section>
<q-item v-if='hasReplyChildren' class='no-padding no-border no-margin column full-width' > <div v-if='hasReplyChildren' class='full-width' >
<div v-for="thread in event.replies" :key="thread[0].id" ref="childReplyContent"> <div v-for="thread in event.replies" :key="thread[0].id" ref="childReplyContent">
<BasePostThread <BasePostThread
:events="thread" :events="thread"
@ -222,9 +208,9 @@
@resized='calcConnectorValues(10)' @resized='calcConnectorValues(10)'
/> />
</div> </div>
</q-item> </div>
</q-item-section> </div>
</q-item> </div>
</template> </template>
<script> <script>
@ -419,9 +405,11 @@ export default defineComponent({
.post-padding { .post-padding {
box-sizing: border-box; box-sizing: border-box;
border-bottom: 1px dotted var(--q-accent); border-bottom: 1px dotted var(--q-accent);
padding: .5rem 0 0; padding: .5rem 0 0 .25rem;
margin-top: 0; margin-top: 0;
width: 100%; width: 100%;
min-width: 100%;
max-width: 100%;
overflow: hidden; overflow: hidden;
font-size: .9rem; font-size: .9rem;
} }
@ -433,7 +421,9 @@ export default defineComponent({
.post-highlighted .reposts { .post-highlighted .reposts {
font-size: .9rem; font-size: .9rem;
} }
.reposts {
margin: .5rem .5rem 0 0;
}
.reposts .post-padding { .reposts .post-padding {
border: 0; border: 0;
} }
@ -446,10 +436,15 @@ export default defineComponent({
.post-has-reply { .post-has-reply {
border-bottom: 0; border-bottom: 0;
} }
.post-is-reply,
.post-is-child-reply { .post-is-child-reply {
padding: 0; padding: 0;
} }
.has-reply-connector,
.is-reply-connector,
.has-child-reply-connector,
.has-child-reply-tick {
opacity: .7;
}
.has-reply-connector { .has-reply-connector {
width: 2px; width: 2px;
position: absolute; position: absolute;
@ -473,9 +468,10 @@ export default defineComponent({
position: absolute; position: absolute;
left: calc((100% / 2) - 1px); left: calc((100% / 2) - 1px);
top: 1.5rem; top: 1.5rem;
border-left: 2px dotted var(--q-accent); border-left: 2px solid var(--q-accent);
border-bottom: 2px dotted var(--q-accent); border-bottom: 2px solid var(--q-accent);
z-index: 0; z-index: 0;
opacity: .3;
} }
.post-highlighted .has-replying-connector { .post-highlighted .has-replying-connector {
top: 1.9rem; top: 1.9rem;
@ -498,10 +494,10 @@ export default defineComponent({
} }
.new-reply-box { .new-reply-box {
border: 1px dashed var(--q-primary); border: 1px solid var(--q-primary);
border-radius: .4rem; border-radius: .4rem;
padding: .3rem .3rem 0; padding: .3rem .3rem 0;
margin: 0 0 .3rem; margin: 0 .3rem .3rem 0;
} }
@media screen and (min-width: 600px) { @media screen and (min-width: 600px) {
@ -510,8 +506,8 @@ export default defineComponent({
<style lang="css"> <style lang="css">
.reposts { .reposts {
border-radius: .25rem; border-radius: .75rem;
border: 1px dotted var(--q-accent); box-shadow: 0 0 .3rem -.0rem var(--q-accent);
min-width: 150px; min-width: 150px;
} }
</style> </style>

View File

@ -1,5 +1,5 @@
<template> <template>
<q-list ref='thread'> <q-list ref='thread' class='no-padding'>
<div <div
v-for="(event, index) in filledEvents" v-for="(event, index) in filledEvents"
:key="event.id + index" :key="event.id + index"

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="flex column q-gutter-md"> <div class="flex column q-gutter-md">
<div v-if='!listView' class="" caption>added relay:</div> <div v-if='!listView'>added relay:</div>
<BaseRelayCard :url='url' /> <BaseRelayCard :url='url' />
</div> </div>
</template> </template>

View File

@ -34,10 +34,10 @@ export default {
} }
</script> </script>
<style lang='scss' scoped> <style lang='css' scoped>
.bordered-avatar .q-avatar img { .bordered-avatar .q-avatar img {
border: 2px solid $accent; border: 2px solid var(--q-accent);
background: $dark; background: var(--q-dark);
z-index: 1; z-index: 1;
} }
.hovered-avatar .q-avatar:hover { .hovered-avatar .q-avatar:hover {

View File

@ -39,6 +39,7 @@
clickable clickable
class='menu-item' class='menu-item'
:dense='compactMode' :dense='compactMode'
:style='compactMode ? "" : "min-height: 2.75rem;"'
:active="$route.name === item.title" :active="$route.name === item.title"
active-class='' active-class=''
:to="item.to" :to="item.to"
@ -46,7 +47,7 @@
:class="($route.path.split('/')[1] === item.match ? 'menu-item-active text-accent ' : '') + :class="($route.path.split('/')[1] === item.match ? 'menu-item-active text-accent ' : '') +
(compactMode ? 'no-margin no-padding col' : 'self-end q-px-none')" (compactMode ? 'no-margin no-padding col' : 'self-end q-px-none')"
> >
<q-item-section v-if='!compactMode' class='gt-sm text-uppercase'> <q-item-section v-if='!compactMode' class='gt-sm text-uppercase' style='font-size: 1rem;'>
<div> <div>
{{ $t(item.title) }} {{ $t(item.title) }}
</div> </div>
@ -56,6 +57,7 @@
v-if="item.icon && !compactMode" v-if="item.icon && !compactMode"
avatar avatar
class="relative-position no-padding" class="relative-position no-padding"
style="min-width: 2.5rem;"
> >
<q-icon outline :name="item.icon"/> <q-icon outline :name="item.icon"/>
<!-- <q-badge <!-- <q-badge
@ -206,18 +208,6 @@ export default defineComponent({
to: '/messages/inbox', to: '/messages/inbox',
match: 'messages', match: 'messages',
}, },
// {
// title: 'lists',
// // caption: 'forum.quasar.dev',
// icon: 'list',
// to: '/lists',
// },
// {
// title: 'profile',
// icon: 'account_circle',
// to: '/' + this.$store.state.keys.pub,
// match: this.$store.state.keys.pub,
// },
{ {
title: 'settings', title: 'settings',
icon: 'settings', icon: 'settings',

View File

@ -320,7 +320,6 @@ body {
border-left: 2px solid var(--q-accent); border-left: 2px solid var(--q-accent);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
padding: 0 .5rem;
} }
#middle-page .q-page-container { #middle-page .q-page-container {
} }

View File

@ -1,7 +1,7 @@
<template> <template>
<q-page ref='page'> <q-page ref='page'>
<div class="text-h5 text-bold q-py-md">{{ $t('thread') }}</div> <div class="text-h5 text-bold q-py-md q-px-sm">{{ $t('thread') }}</div>
<q-separator color='accent' size='2px'/> <q-separator color='accent' size='2px'/>
<div v-if="ancestorsCompiled.length || rootAncestor"> <div v-if="ancestorsCompiled.length || rootAncestor">
<BasePostThread :events="ancestorsCompiled" is-ancestors @add-event='addEventAncestors'/> <BasePostThread :events="ancestorsCompiled" is-ancestors @add-event='addEventAncestors'/>
@ -18,13 +18,13 @@
<div v-else> <div v-else>
{{ $t('event') }} {{ $route.params.eventId }} {{ $t('event') }} {{ $route.params.eventId }}
</div> </div>
<BaseRelayList v-if="event?.seen_on?.length" :event='event'/> <BaseRelayList v-if="event?.seen_on?.length" :event='event' class='q-px-sm'/>
</q-item> </q-item>
<q-separator color='accent' size='2px'/> <q-separator color='accent' size='2px'/>
<div v-if="childrenThreadsFiltered.length"> <div v-if="childrenThreadsFiltered.length">
<div class="text-h6 text-bold">{{ $t('replies') }}</div> <div class="text-h6 text-bold q-px-sm">{{ $t('replies') }}</div>
<div v-for="(thread) in childrenThreadsFiltered" :key="thread[0].id"> <div v-for="(thread) in childrenThreadsFiltered" :key="thread[0].id">
<BasePostThread :events="thread" @add-event='processChildEvent'/> <BasePostThread :events="thread" @add-event='processChildEvent'/>
</div> </div>

View File

@ -1,7 +1,7 @@
<template> <template>
<q-page> <q-page>
<div> <div>
<div class="text-h5 text-bold q-py-md full-width flex row justify-start"> <div class="text-h5 text-bold q-py-md q-px-sm full-width flex row justify-start">
{{ $t('feed') }} {{ $t('feed') }}
</div> </div>
<q-tabs <q-tabs

View File

@ -1,6 +1,6 @@
<template> <template>
<q-page> <q-page>
<div class="text-h5 text-bold q-py-md">{{'#' + this.$route.params.hashtagId}}</div> <div class="text-h5 text-bold q-py-md q-px-sm">{{'#' + this.$route.params.hashtagId}}</div>
<q-separator color='accent' size='2px'/> <q-separator color='accent' size='2px'/>
<div> <div>
<BasePostThread v-for="thread in threads" :key="thread[0].id" :events="thread" @add-event='processEvent'/> <BasePostThread v-for="thread in threads" :key="thread[0].id" :events="thread" @add-event='processEvent'/>
@ -77,8 +77,3 @@ export default defineComponent({
}) })
</script> </script>
<style lang='scss' scoped>
.q-tabs {
border-bottom: 1px solid $accent
}
</style>

View File

@ -1,11 +1,11 @@
<template> <template>
<q-page> <q-page>
<div class="text-h5 text-bold q-py-md full-width flex row justify-start"> <div class="text-h5 text-bold q-py-md q-px-sm full-width flex row justify-start">
{{ $t('inbox') }} {{ $t('inbox') }}
</div> </div>
<q-separator color='accent' size='2px'/> <q-separator color='accent' size='2px'/>
<q-list class='q-py-sm q-gutter-sm'> <q-list class='q-py-sm q-pr-sm q-gutter-sm'>
<div v-if="loading" class='flex row justify-center items-start q-my-md'> <div v-if="loading" class='flex row justify-center items-start q-my-md'>
<q-spinner-orbit color="accent" size='md'/> <q-spinner-orbit color="accent" size='md'/>
</div> </div>
@ -107,5 +107,3 @@ export default {
} }
</script> </script>
<style lang='scss' scoped>
</style>

View File

@ -1,6 +1,6 @@
<template> <template>
<q-page> <q-page>
<div class="text-h5 text-bold q-py-md">{{ $t('notifications') }}</div> <div class="text-h5 text-bold q-py-md q-px-sm">{{ $t('notifications') }}</div>
<q-separator color='accent' size='2px'/> <q-separator color='accent' size='2px'/>
<q-infinite-scroll <q-infinite-scroll

View File

@ -1,8 +1,8 @@
<template> <template>
<q-page id='settings-page'> <q-page id='settings-page'>
<div class="text-h5 text-bold q-py-md">{{ $t('settings') }}</div> <div class="text-h5 text-bold q-py-md q-px-sm">{{ $t('settings') }}</div>
<q-separator color='accent' size='2px'/> <q-separator color='accent' size='2px'/>
<q-form class="q-gutter-md q-pt-sm" @submit="setMetadata"> <q-form class="q-gutter-md section" @submit="setMetadata">
<div v-if='editingMetadata' class='flex justify-between' style='display: flex; gap: .2rem;'> <div v-if='editingMetadata' class='flex justify-between' style='display: flex; gap: .2rem;'>
<q-btn label="save" color="primary" outline size="sm" type="submit"/> <q-btn label="save" color="primary" outline size="sm" type="submit"/>
<q-btn label="cancel" color="negative" outline size="sm" @click='cancel("metadata")'/> <q-btn label="cancel" color="negative" outline size="sm" @click='cancel("metadata")'/>
@ -47,9 +47,9 @@
/> />
</q-form> </q-form>
<q-separator color='accent' spaced/> <q-separator color='accent'/>
<div v-if='Object.keys(preferences).length'> <div v-if='Object.keys(preferences).length' class='section'>
<div v-if='editingPreferences' class='flex justify-between' style='display: flex; gap: .2rem;'> <div v-if='editingPreferences' class='flex justify-between' style='display: flex; gap: .2rem;'>
<q-btn label="save" color="primary" outline size="sm" @click='savePreferences'/> <q-btn label="save" color="primary" outline size="sm" @click='savePreferences'/>
<q-btn label="cancel" color="negative" outline size="sm" @click='cancel("preferences")'/> <q-btn label="cancel" color="negative" outline size="sm" @click='cancel("preferences")'/>
@ -74,8 +74,8 @@
<label for="accent">accent</label> <label for="accent">accent</label>
<input type="color" id="accent" name="accent" :value='this.preferences.color.accent' @input='(event) => updateColor(event, "accent")'> --> <input type="color" id="accent" name="accent" :value='this.preferences.color.accent' @input='(event) => updateColor(event, "accent")'> -->
</div> </div>
<q-separator color='accent' spaced/> <q-separator color='accent'/>
<div> <div class='section'>
<div v-if='editingRelays' class='flex justify-between' style='display: flex; gap: .2rem;'> <div v-if='editingRelays' class='flex justify-between' style='display: flex; gap: .2rem;'>
<q-btn label="save" color="primary" outline size="sm" @click='saveRelays'/> <q-btn label="save" color="primary" outline size="sm" @click='saveRelays'/>
<q-btn label="cancel" color="negative" outline size="sm" @click='cancel("relays")'/> <q-btn label="cancel" color="negative" outline size="sm" @click='cancel("relays")'/>
@ -162,9 +162,9 @@
</q-form> </q-form>
</div> </div>
<q-separator color='accent' spaced/> <q-separator color='accent'/>
<div class="flex no-wrap" style='gap: .2rem;'> <div class="flex no-wrap section" style='gap: .2rem;'>
<q-btn label="View your keys" color="primary" outline @click="keysDialog = true" /> <q-btn label="View your keys" color="primary" outline @click="keysDialog = true" />
<q-btn label="logout" color="primary" outline @click="logout" /> <q-btn label="logout" color="primary" outline @click="logout" />
<q-btn label="Delete Local Data" color="negative" outline @click="hardReset" /> <q-btn label="Delete Local Data" color="negative" outline @click="hardReset" />
@ -409,3 +409,9 @@ export default {
} }
} }
</script> </script>
<style lang='css' scoped>
.section {
padding: .5rem;
}
</style>

View File

@ -1,8 +1,9 @@
<template> <template>
<q-page> <q-page>
<div class="text-h5 text-bold q-py-md">dev tools</div> <div class="text-h5 text-bold q-py-md q-px-sm">dev tools</div>
<q-separator color='accent' size='2px'/> <q-separator color='accent' size='2px'/>
<div class="text-bold q-py-md">sql query</div> <div class='q-py-md q-px-sm'>
<div class="text-bold">sql query</div>
<!-- <h2> sql query </h2> --> <!-- <h2> sql query </h2> -->
<!-- <label for='commands'>Enter some SQL</label> --> <!-- <label for='commands'>Enter some SQL</label> -->
@ -10,7 +11,7 @@
<textarea v-model='sql' id="editor"/> <textarea v-model='sql' id="editor"/>
<div style='display: flex; flex-direction: row; gap: 1rem; padding: .5rem 0; align-items: center'> <div style='display: flex; flex-direction: row; gap: 1rem; padding: .5rem 0; align-items: center'>
<q-btn id="execute" color='primary' @click='execEditorContents'>Execute</q-btn> <q-btn id="execute" color='primary' outline @click='execEditorContents'>Execute</q-btn>
<!-- <button id='savedb' class="btn btn-secondary btn-sm">Save the db</button> --> <!-- <button id='savedb' class="btn btn-secondary btn-sm">Save the db</button> -->
<!-- <label class="button">Load an SQLite database file: <input type='file' id='dbfile' /></label> --> <!-- <label class="button">Load an SQLite database file: <input type='file' id='dbfile' /></label> -->
</div> </div>
@ -23,6 +24,7 @@
:rows-per-page-options='[10, 50, 100, 0]' :rows-per-page-options='[10, 50, 100, 0]'
/> />
<pre id="output">Results will be displayed here</pre> <pre id="output">Results will be displayed here</pre>
</div>
</q-page> </q-page>
</template> </template>

View File

@ -176,7 +176,7 @@ export default {
${item.original.value.nip05 ${item.original.value.nip05
? '<i class="notranslate material-icons text-accent mr-1 -ml-1" aria-hidden="true" role="presentation">verified</i>' ? '<i class="notranslate material-icons text-accent mr-1 -ml-1" aria-hidden="true" role="presentation">verified</i>'
: ''} : ''}
<div class="text-secondary caption">${shorten(item.original.value.pubkey)}</div> <div class="text-secondary text-caption">${shorten(item.original.value.pubkey)}</div>
</div> </div>
` `
}, },