| | |
| | | import { QuartzPluginData } from "../plugins/vfile" |
| | | import { byDateAndAlphabetical } from "./PageList" |
| | | import style from "./styles/recentNotes.scss" |
| | | import { Date } from "./Date" |
| | | import { Date, getDate } from "./Date" |
| | | import { GlobalConfiguration } from "../cfg" |
| | | |
| | | interface Options { |
| | | title: string |
| | |
| | | sort: (f1: QuartzPluginData, f2: QuartzPluginData) => number |
| | | } |
| | | |
| | | const defaultOptions: Options = { |
| | | const defaultOptions = (cfg: GlobalConfiguration): Options => ({ |
| | | title: "Recent Notes", |
| | | limit: 3, |
| | | linkToMore: false, |
| | | filter: () => true, |
| | | sort: byDateAndAlphabetical, |
| | | } |
| | | sort: byDateAndAlphabetical(cfg), |
| | | }) |
| | | |
| | | export default ((userOpts?: Partial<Options>) => { |
| | | const opts = { ...defaultOptions, ...userOpts } |
| | | function RecentNotes(props: QuartzComponentProps) { |
| | | const { allFiles, fileData, displayClass } = props |
| | | const { allFiles, fileData, displayClass, cfg } = props |
| | | const opts = { ...defaultOptions(cfg), ...userOpts } |
| | | const pages = allFiles.filter(opts.filter).sort(opts.sort) |
| | | const remaining = Math.max(0, pages.length - opts.limit) |
| | | return ( |
| | |
| | | </div> |
| | | {page.dates && ( |
| | | <p class="meta"> |
| | | <Date date={page.dates.modified} /> |
| | | <Date date={getDate(cfg, fileData)!} /> |
| | | </p> |
| | | )} |
| | | <ul class="tags"> |