2023-11-28 13:18:25 +00:00
|
|
|
import type { Shout } from '../../graphql/schema/core.gen'
|
2023-11-14 15:10:00 +00:00
|
|
|
|
|
|
|
import { createComputed, createSignal, Show, For } from 'solid-js'
|
|
|
|
|
2023-05-01 18:32:32 +00:00
|
|
|
import { ArticleCard } from './ArticleCard'
|
2023-11-18 14:10:02 +00:00
|
|
|
import { ArticleCardProps } from './ArticleCard/ArticleCard'
|
2022-10-28 21:21:47 +00:00
|
|
|
|
2022-09-09 11:53:35 +00:00
|
|
|
const x = [
|
2023-03-10 17:42:48 +00:00
|
|
|
['12', '12'],
|
|
|
|
['8', '16'],
|
2023-11-14 15:10:00 +00:00
|
|
|
['16', '8'],
|
2022-09-09 11:53:35 +00:00
|
|
|
]
|
|
|
|
|
2023-07-26 20:40:14 +00:00
|
|
|
export const Row2 = (props: {
|
|
|
|
articles: Shout[]
|
|
|
|
isEqual?: boolean
|
|
|
|
nodate?: boolean
|
|
|
|
noAuthorLink?: boolean
|
2023-10-10 19:45:35 +00:00
|
|
|
noauthor?: boolean
|
2023-07-26 20:40:14 +00:00
|
|
|
}) => {
|
2022-09-09 11:53:35 +00:00
|
|
|
const [y, setY] = createSignal(0)
|
|
|
|
|
2023-11-18 14:10:02 +00:00
|
|
|
// FIXME: random can break hydration
|
2022-09-09 11:53:35 +00:00
|
|
|
createComputed(() => setY(Math.floor(Math.random() * x.length)))
|
|
|
|
|
|
|
|
return (
|
2023-08-12 10:36:21 +00:00
|
|
|
<Show when={props.articles && props.articles.length > 0}>
|
|
|
|
<div class="floor">
|
|
|
|
<div class="wide-container">
|
|
|
|
<div class="row">
|
|
|
|
<For each={props.articles}>
|
|
|
|
{(a, i) => {
|
2023-11-18 14:10:02 +00:00
|
|
|
// FIXME: refactor this, too ugly now
|
|
|
|
const className = `col-md-${props.isEqual ? '12' : x[y()][i()]}`
|
|
|
|
let desktopCoverSize: ArticleCardProps['desktopCoverSize']
|
|
|
|
|
|
|
|
switch (className) {
|
|
|
|
case 'col-md-8': {
|
|
|
|
desktopCoverSize = 'S'
|
|
|
|
break
|
|
|
|
}
|
|
|
|
case 'col-md-12': {
|
|
|
|
desktopCoverSize = 'M'
|
|
|
|
break
|
|
|
|
}
|
|
|
|
default: {
|
|
|
|
desktopCoverSize = 'L'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-08-12 10:36:21 +00:00
|
|
|
return (
|
2023-11-18 14:10:02 +00:00
|
|
|
<div class={className}>
|
|
|
|
<ArticleCard
|
|
|
|
article={a}
|
|
|
|
settings={{
|
|
|
|
isWithCover: props.isEqual || x[y()][i()] === '16',
|
|
|
|
nodate: props.isEqual || props.nodate,
|
|
|
|
noAuthorLink: props.noAuthorLink,
|
|
|
|
noauthor: props.noauthor,
|
|
|
|
}}
|
|
|
|
desktopCoverSize={desktopCoverSize}
|
|
|
|
/>
|
|
|
|
</div>
|
2023-08-12 10:36:21 +00:00
|
|
|
)
|
|
|
|
}}
|
|
|
|
</For>
|
|
|
|
</div>
|
2022-11-20 21:23:12 +00:00
|
|
|
</div>
|
2022-09-09 11:53:35 +00:00
|
|
|
</div>
|
2023-08-12 10:36:21 +00:00
|
|
|
</Show>
|
2022-09-09 11:53:35 +00:00
|
|
|
)
|
|
|
|
}
|