site/latest.11ty.tsx (44 lines of code) (raw):
import { LayoutContext } from "../src/models";
import {
ReferenceLayout,
ReferenceLayoutProps,
} from "../_includes/layouts/ReferenceLayout.11y";
import { Resource } from "../src/ResourceModels";
import ResourceCard from "../_includes/resourcecard/ResourceCard.11ty";
export default class LatestLayout {
data() {
return {
eleventyExcludeFromCollections: true,
layout: "",
title: "Latest",
subtitle: " All the resources in the Guide, starting with most recent.",
pagination: {
data: "collections.all",
size: 12,
reverse: true,
before: function (paginationData: any[], fullData: any) {
const results: Resource[] = [];
const { resourceMap } = fullData.collections;
let thisItem: any;
paginationData.forEach((item: any) => {
thisItem = resourceMap.get(item.url);
if (thisItem) {
results.push(thisItem);
}
});
return results;
},
},
};
}
render(this: LayoutContext, data: ReferenceLayoutProps): JSX.Element {
const { content, pagination } = data;
const listing = (
<>
{pagination &&
pagination.items.map((tip) => {
return <ResourceCard resource={tip}></ResourceCard>;
})}
</>
);
return <ReferenceLayout {...data} listing={listing} content={content} />;
}
}