Collage JDD component
This commit is contained in:
parent
a6c63748e0
commit
e18603c91c
25
src/back/jdd-components/collage/collage.css
Normal file
25
src/back/jdd-components/collage/collage.css
Normal file
@ -0,0 +1,25 @@
|
||||
.collage {
|
||||
display: grid;
|
||||
grid-template-columns: 150px 150px 150px;
|
||||
grid-template-rows: 20px 160px 20px repeat(calc(var(--images-count) - 1), 160px 20px);
|
||||
justify-content: center;
|
||||
|
||||
.collage__image {
|
||||
grid-row: calc(2 * var(--collage-index) + 1) / calc(2 * var(--collage-index) + 4);
|
||||
|
||||
&:nth-child(2n + 1) {
|
||||
grid-column: 1/3;
|
||||
}
|
||||
|
||||
&:nth-child(2n) {
|
||||
grid-column: 2/4;
|
||||
}
|
||||
}
|
||||
|
||||
@container (max-width: 520px) {
|
||||
display: flex !important;
|
||||
flex-flow: column;
|
||||
gap: 16px;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
36
src/back/jdd-components/collage/collage.jdd.tsx
Normal file
36
src/back/jdd-components/collage/collage.jdd.tsx
Normal file
@ -0,0 +1,36 @@
|
||||
import { TempstreamJSX } from "tempstream";
|
||||
import type { ComponentToHTMLArgs } from "@sealcode/jdd";
|
||||
import { Component, ComponentArguments } from "@sealcode/jdd";
|
||||
|
||||
const component_arguments = {
|
||||
images: new ComponentArguments.List(new ComponentArguments.Image()),
|
||||
} as const;
|
||||
|
||||
export class Collage extends Component<typeof component_arguments> {
|
||||
getArguments() {
|
||||
return component_arguments;
|
||||
}
|
||||
|
||||
async toHTML({
|
||||
args: { images },
|
||||
classes,
|
||||
jdd_context: { render_image },
|
||||
}: ComponentToHTMLArgs<typeof component_arguments>): Promise<string> {
|
||||
return (
|
||||
<div
|
||||
class={["collage", ...classes]}
|
||||
style={`--images-count: ${images.length}`}
|
||||
>
|
||||
{images.map((image, index) => (
|
||||
<div class="collage__image" style={`--collage-index: ${index}`}>
|
||||
{render_image(image, {
|
||||
container: { width: 300, height: 200 },
|
||||
crop: { width: 300, height: 200 },
|
||||
alt: "",
|
||||
})}
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user