Fixed topic cards style
This commit is contained in:
parent
eac5704063
commit
533ca3865f
|
@ -121,7 +121,6 @@ button.follow {
|
||||||
}
|
}
|
||||||
|
|
||||||
.shoutCardContainer {
|
.shoutCardContainer {
|
||||||
display: flex;
|
|
||||||
order: 1;
|
order: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -71,6 +71,7 @@ export const Beside = (props: BesideProps) => {
|
||||||
isTopicInRow={props.isTopicInRow}
|
isTopicInRow={props.isTopicInRow}
|
||||||
iconButton={props.iconButton}
|
iconButton={props.iconButton}
|
||||||
showPublications={true}
|
showPublications={true}
|
||||||
|
isCardMode={true}
|
||||||
/>
|
/>
|
||||||
</Show>
|
</Show>
|
||||||
<Show when={props.wrapper === 'author'}>
|
<Show when={props.wrapper === 'author'}>
|
||||||
|
|
|
@ -1,5 +1,13 @@
|
||||||
|
.topicContainer {
|
||||||
|
border-bottom: 1px solid #e1e1e1;
|
||||||
|
|
||||||
|
li:last-child & {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.topic {
|
.topic {
|
||||||
align-items: flex-start;
|
align-items: baseline;
|
||||||
margin-top: 3.2rem;
|
margin-top: 3.2rem;
|
||||||
|
|
||||||
.stats & {
|
.stats & {
|
||||||
|
@ -50,25 +58,22 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.topicDescription {
|
.topicDescription {
|
||||||
@include font-size(1.6rem);
|
@include font-size(1.4rem);
|
||||||
|
font-weight: 500;
|
||||||
color: #696969;
|
color: #696969;
|
||||||
margin: 0.5em 0 1.6rem;
|
line-height: 1.3;
|
||||||
|
margin: 0.2rem 0 1.6rem;
|
||||||
|
|
||||||
&.compact {
|
&.topicDescriptionShort {
|
||||||
font-size: medium;
|
display: block;
|
||||||
|
-webkit-line-clamp: 3;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.topicDescriptionShort {
|
|
||||||
display: block;
|
|
||||||
-webkit-line-clamp: 3;
|
|
||||||
-webkit-box-orient: vertical;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.topicDetails {
|
.topicDetails {
|
||||||
@include font-size(1.7rem);
|
@include font-size(1.6rem);
|
||||||
|
|
||||||
color: #9fa1a7;
|
color: #9fa1a7;
|
||||||
display: flex;
|
display: flex;
|
||||||
margin-bottom: 1em;
|
margin-bottom: 1em;
|
||||||
|
@ -79,8 +84,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.topicDetailsItem {
|
.topicDetailsItem {
|
||||||
@include font-size(1.5rem);
|
@include font-size(1.4rem);
|
||||||
|
|
||||||
margin-right: 1.6rem;
|
margin-right: 1.6rem;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
|
|
||||||
|
@ -102,6 +106,8 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.controlContainer {
|
.controlContainer {
|
||||||
|
margin-bottom: 1.6rem;
|
||||||
|
|
||||||
@include media-breakpoint-up(sm) {
|
@include media-breakpoint-up(sm) {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
@ -109,14 +115,10 @@
|
||||||
|
|
||||||
.topicCompact {
|
.topicCompact {
|
||||||
.topicTitle {
|
.topicTitle {
|
||||||
@include font-size(1.7rem);
|
@include font-size(1.6rem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.buttonCompact {
|
|
||||||
margin-top: 0.6rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.isSubscribing {
|
.isSubscribing {
|
||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
}
|
}
|
||||||
|
@ -131,3 +133,7 @@
|
||||||
color: #000;
|
color: #000;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.cardMode {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@ import { useSession } from '../../context/session'
|
||||||
import { ShowOnlyOnClient } from '../_shared/ShowOnlyOnClient'
|
import { ShowOnlyOnClient } from '../_shared/ShowOnlyOnClient'
|
||||||
import { Icon } from '../_shared/Icon'
|
import { Icon } from '../_shared/Icon'
|
||||||
import { useLocalize } from '../../context/localize'
|
import { useLocalize } from '../../context/localize'
|
||||||
|
import { CardTopic } from '../Feed/CardTopic'
|
||||||
|
|
||||||
interface TopicProps {
|
interface TopicProps {
|
||||||
topic: Topic
|
topic: Topic
|
||||||
|
@ -22,6 +23,7 @@ interface TopicProps {
|
||||||
iconButton?: boolean
|
iconButton?: boolean
|
||||||
showPublications?: boolean
|
showPublications?: boolean
|
||||||
showDescription?: boolean
|
showDescription?: boolean
|
||||||
|
isCardMode?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
export const TopicCard = (props: TopicProps) => {
|
export const TopicCard = (props: TopicProps) => {
|
||||||
|
@ -54,66 +56,91 @@ export const TopicCard = (props: TopicProps) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div class={styles.topicContainer}>
|
||||||
class={styles.topic}
|
|
||||||
classList={{
|
|
||||||
row: !props.subscribeButtonBottom,
|
|
||||||
[styles.topicCompact]: props.compact,
|
|
||||||
[styles.topicInRow]: props.isTopicInRow
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<div classList={{ 'col-sm-18 col-lg-14 col-xl-12': !props.subscribeButtonBottom }}>
|
|
||||||
<Show when={props.topic.title}>
|
|
||||||
<h3 class={styles.topicTitle}>
|
|
||||||
<a href={`/topic/${props.topic.slug}`}>{capitalize(props.topic.title || '')}</a>
|
|
||||||
</h3>
|
|
||||||
</Show>
|
|
||||||
<Show when={props.topic.pic}>
|
|
||||||
<div class={styles.topicAvatar}>
|
|
||||||
<a href={`/topic/${props.topic.slug}`}>
|
|
||||||
<img src={props.topic.pic} alt={props.topic.title} />
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</Show>
|
|
||||||
|
|
||||||
<Show when={props.showDescription && props.topic?.body}>
|
|
||||||
<div
|
|
||||||
class={clsx(styles.topicDescription, 'text-truncate')}
|
|
||||||
classList={{ 'topic-description--short': props.shortDescription }}
|
|
||||||
>
|
|
||||||
{props.topic.body}
|
|
||||||
</div>
|
|
||||||
</Show>
|
|
||||||
</div>
|
|
||||||
<div
|
<div
|
||||||
class={styles.controlContainer}
|
class={styles.topic}
|
||||||
classList={{ 'col-sm-6 col-lg-10 col-xl-12': !props.subscribeButtonBottom }}
|
classList={{
|
||||||
|
row: !props.subscribeButtonBottom,
|
||||||
|
[styles.topicCompact]: props.compact,
|
||||||
|
[styles.topicInRow]: props.isTopicInRow
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<ShowOnlyOnClient>
|
<div classList={{ 'col-sm-18 col-md-24 col-lg-14 col-xl-15': !props.subscribeButtonBottom }}>
|
||||||
<Show when={isSessionLoaded()}>
|
<Show when={props.topic.title && !props.isCardMode}>
|
||||||
<button
|
<h3 class={styles.topicTitle}>
|
||||||
onClick={() => subscribe(!subscribed())}
|
<a href={`/topic/${props.topic.slug}`}>{capitalize(props.topic.title || '')}</a>
|
||||||
class="button--light button--subscribe-topic"
|
</h3>
|
||||||
classList={{
|
|
||||||
[styles.buttonCompact]: props.compact,
|
|
||||||
[styles.isSubscribing]: isSubscribing(),
|
|
||||||
[styles.isSubscribed]: subscribed()
|
|
||||||
}}
|
|
||||||
disabled={isSubscribing()}
|
|
||||||
>
|
|
||||||
<Show when={props.iconButton}>
|
|
||||||
<Show when={subscribed()} fallback="+">
|
|
||||||
<Icon name="check-subscribed" />
|
|
||||||
</Show>
|
|
||||||
</Show>
|
|
||||||
<Show when={!props.iconButton}>
|
|
||||||
<Show when={subscribed()} fallback={t('Follow')}>
|
|
||||||
{t('Unfollow')}
|
|
||||||
</Show>
|
|
||||||
</Show>
|
|
||||||
</button>
|
|
||||||
</Show>
|
</Show>
|
||||||
</ShowOnlyOnClient>
|
|
||||||
|
<Show when={props.isCardMode}>
|
||||||
|
<CardTopic title={props.topic.title} slug={props.topic.slug} class={styles.cardMode} />
|
||||||
|
</Show>
|
||||||
|
|
||||||
|
<Show when={props.topic.pic}>
|
||||||
|
<div class={styles.topicAvatar}>
|
||||||
|
<a href={`/topic/${props.topic.slug}`}>
|
||||||
|
<img src={props.topic.pic} alt={props.topic.title} />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</Show>
|
||||||
|
|
||||||
|
<div
|
||||||
|
class={clsx(styles.topicDescription, 'text-truncate', styles.topicDescriptionShort)}
|
||||||
|
classList={{ [styles.topicDescriptionShort]: props.shortDescription }}
|
||||||
|
>
|
||||||
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec porta gravida urna, et vestibulum
|
||||||
|
dolor fermentum malesuada. Aenean est arcu, imperdiet vel aliquet quis, egestas ac justo.
|
||||||
|
Maecenas viverra enim a efficitur accumsan. Donec eu iaculis purus. Sed malesuada arcu sed nisl
|
||||||
|
luctus ultrices. Maecenas eget odio vitae turpis sollicitudin rutrum. Fusce rutrum urna felis,
|
||||||
|
id efficitur lacus faucibus et. Duis at libero dui. Quisque vitae pretium mi. Etiam non leo ut
|
||||||
|
nisi ornare auctor sit amet et enim. Aenean tempor ullamcorper augue, et mattis augue vestibulum
|
||||||
|
sed. Curabitur nec luctus sem. Phasellus imperdiet rhoncus lacus, in ultrices elit mollis ac.
|
||||||
|
Donec luctus dignissim cursus. Pellentesque sed risus sodales, tincidunt urna a, cursus ligula.
|
||||||
|
Curabitur nec nibh urna. Integer hendrerit quam eget diam malesuada, ac sagittis eros efficitur.
|
||||||
|
Sed ut orci eu quam mattis commodo. Nullam elementum nulla massa. Morbi placerat, lorem vitae
|
||||||
|
venenatis mollis, arcu erat sodales sapien, sit amet vehicula nunc tellus eget eros. Sed arcu
|
||||||
|
massa, vehicula sit amet viverra ut, eleifend ac leo. Mauris volutpat ex at orci tempor sodales.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Show when={props.showDescription && props.topic?.body}>
|
||||||
|
<div
|
||||||
|
class={clsx(styles.topicDescription, 'text-truncate')}
|
||||||
|
classList={{ [styles.topicDescriptionShort]: props.shortDescription }}
|
||||||
|
>
|
||||||
|
{props.topic.body}
|
||||||
|
</div>
|
||||||
|
</Show>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class={styles.controlContainer}
|
||||||
|
classList={{ 'col-sm-6 col-md-24 col-lg-10 col-xl-9': !props.subscribeButtonBottom }}
|
||||||
|
>
|
||||||
|
<ShowOnlyOnClient>
|
||||||
|
<Show when={isSessionLoaded()}>
|
||||||
|
<button
|
||||||
|
onClick={() => subscribe(!subscribed())}
|
||||||
|
class="button--light button--subscribe-topic"
|
||||||
|
classList={{
|
||||||
|
[styles.buttonCompact]: props.compact,
|
||||||
|
[styles.isSubscribing]: isSubscribing(),
|
||||||
|
[styles.isSubscribed]: subscribed()
|
||||||
|
}}
|
||||||
|
disabled={isSubscribing()}
|
||||||
|
>
|
||||||
|
<Show when={props.iconButton}>
|
||||||
|
<Show when={subscribed()} fallback="+">
|
||||||
|
<Icon name="check-subscribed" />
|
||||||
|
</Show>
|
||||||
|
</Show>
|
||||||
|
<Show when={!props.iconButton}>
|
||||||
|
<Show when={subscribed()} fallback={t('Follow')}>
|
||||||
|
{t('Unfollow')}
|
||||||
|
</Show>
|
||||||
|
</Show>
|
||||||
|
</button>
|
||||||
|
</Show>
|
||||||
|
</ShowOnlyOnClient>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user