feat: ability to hide tags in the recent notes component (#1147)
* feat: ability to hide tags in the recent notes component
* docs: recent notes custom parameters in a table
* docs: revert recent notes doc to bullet points
* fix: linter issues
* Update docs/features/recent notes.md
---------
Co-authored-by: Jacky Zhao <j.zhao2k19@gmail.com>
| | |
| | | |
| | | - Changing the title from "Recent notes": pass in an additional parameter to `Component.RecentNotes({ title: "Recent writing" })` |
| | | - Changing the number of recent notes: pass in an additional parameter to `Component.RecentNotes({ limit: 5 })` |
| | | - Display the note's tags (defaults to true): `Component.RecentNotes({ showTags: false })` |
| | | - Show a 'see more' link: pass in an additional parameter to `Component.RecentNotes({ linkToMore: "tags/components" })`. This field should be a full slug to a page that exists. |
| | | - Customize filtering: pass in an additional parameter to `Component.RecentNotes({ filter: someFilterFunction })`. The filter function should be a function that has the signature `(f: QuartzPluginData) => boolean`. |
| | | - Customize sorting: pass in an additional parameter to `Component.RecentNotes({ sort: someSortFunction })`. By default, Quartz will sort by date and then tie break lexographically. The sort function should be a function that has the signature `(f1: QuartzPluginData, f2: QuartzPluginData) => number`. See `byDateAndAlphabetical` in `quartz/components/PageList.tsx` for an example. |
| | |
| | | title?: string |
| | | limit: number |
| | | linkToMore: SimpleSlug | false |
| | | showTags: boolean |
| | | filter: (f: QuartzPluginData) => boolean |
| | | sort: (f1: QuartzPluginData, f2: QuartzPluginData) => number |
| | | } |
| | |
| | | const defaultOptions = (cfg: GlobalConfiguration): Options => ({ |
| | | limit: 3, |
| | | linkToMore: false, |
| | | showTags: true, |
| | | filter: () => true, |
| | | sort: byDateAndAlphabetical(cfg), |
| | | }) |
| | |
| | | <Date date={getDate(cfg, page)!} locale={cfg.locale} /> |
| | | </p> |
| | | )} |
| | | <ul class="tags"> |
| | | {tags.map((tag) => ( |
| | | <li> |
| | | <a |
| | | class="internal tag-link" |
| | | href={resolveRelative(fileData.slug!, `tags/${tag}` as FullSlug)} |
| | | > |
| | | {tag} |
| | | </a> |
| | | </li> |
| | | ))} |
| | | </ul> |
| | | {opts.showTags && ( |
| | | <ul class="tags"> |
| | | {tags.map((tag) => ( |
| | | <li> |
| | | <a |
| | | class="internal tag-link" |
| | | href={resolveRelative(fileData.slug!, `tags/${tag}` as FullSlug)} |
| | | > |
| | | {tag} |
| | | </a> |
| | | </li> |
| | | ))} |
| | | </ul> |
| | | )} |
| | | </div> |
| | | </li> |
| | | ) |