@@ -7,100 +7,100 @@ import { GlobalConfiguration } from "../cfg"
77export type SortFn = ( f1 : QuartzPluginData , f2 : QuartzPluginData ) => number
88
99export function byDateAndAlphabetical ( cfg : GlobalConfiguration ) : SortFn {
10- return ( f1 , f2 ) => {
11- // Sort by date/alphabetical
12- if ( f1 . dates && f2 . dates ) {
13- // sort descending
14- return getDate ( cfg , f2 ) ! . getTime ( ) - getDate ( cfg , f1 ) ! . getTime ( )
15- } else if ( f1 . dates && ! f2 . dates ) {
16- // prioritize files with dates
17- return - 1
18- } else if ( ! f1 . dates && f2 . dates ) {
19- return 1
20- }
10+ return ( f1 , f2 ) => {
11+ // Sort by date/alphabetical
12+ if ( f1 . dates && f2 . dates ) {
13+ // sort descending
14+ return getDate ( cfg , f2 ) ! . getTime ( ) - getDate ( cfg , f1 ) ! . getTime ( )
15+ } else if ( f1 . dates && ! f2 . dates ) {
16+ // prioritize files with dates
17+ return - 1
18+ } else if ( ! f1 . dates && f2 . dates ) {
19+ return 1
20+ }
2121
22- // otherwise, sort lexographically by title
23- const f1Title = f1 . frontmatter ?. title . toLowerCase ( ) ?? ""
24- const f2Title = f2 . frontmatter ?. title . toLowerCase ( ) ?? ""
25- return f1Title . localeCompare ( f2Title )
26- }
22+ // otherwise, sort lexographically by title
23+ const f1Title = f1 . frontmatter ?. title . toLowerCase ( ) ?? ""
24+ const f2Title = f2 . frontmatter ?. title . toLowerCase ( ) ?? ""
25+ return f1Title . localeCompare ( f2Title )
26+ }
2727}
2828
2929export function byDateAndAlphabeticalFolderFirst ( cfg : GlobalConfiguration ) : SortFn {
30- return ( f1 , f2 ) => {
31- // Sort folders first
32- const f1IsFolder = isFolderPath ( f1 . slug ?? "" )
33- const f2IsFolder = isFolderPath ( f2 . slug ?? "" )
34- if ( f1IsFolder && ! f2IsFolder ) return - 1
35- if ( ! f1IsFolder && f2IsFolder ) return 1
30+ return ( f1 , f2 ) => {
31+ // Sort folders first
32+ const f1IsFolder = isFolderPath ( f1 . slug ?? "" )
33+ const f2IsFolder = isFolderPath ( f2 . slug ?? "" )
34+ if ( f1IsFolder && ! f2IsFolder ) return - 1
35+ if ( ! f1IsFolder && f2IsFolder ) return 1
3636
37- // If both are folders or both are files, sort by date/alphabetical
38- if ( f1 . dates && f2 . dates ) {
39- // sort descending
40- return getDate ( cfg , f2 ) ! . getTime ( ) - getDate ( cfg , f1 ) ! . getTime ( )
41- } else if ( f1 . dates && ! f2 . dates ) {
42- // prioritize files with dates
43- return - 1
44- } else if ( ! f1 . dates && f2 . dates ) {
45- return 1
46- }
37+ // // If both are folders or both are files, sort by date/alphabetical
38+ // if (f1.dates && f2.dates) {
39+ // // sort descending
40+ // return getDate(cfg, f2)!.getTime() - getDate(cfg, f1)!.getTime()
41+ // } else if (f1.dates && !f2.dates) {
42+ // // prioritize files with dates
43+ // return -1
44+ // } else if (!f1.dates && f2.dates) {
45+ // return 1
46+ // }
4747
48- // otherwise, sort lexographically by title
49- const f1Title = f1 . frontmatter ?. title . toLowerCase ( ) ?? ""
50- const f2Title = f2 . frontmatter ?. title . toLowerCase ( ) ?? ""
51- return f1Title . localeCompare ( f2Title )
52- }
48+ // otherwise, sort lexographically by title
49+ const f1Title = f1 . frontmatter ?. title . toLowerCase ( ) ?? ""
50+ const f2Title = f2 . frontmatter ?. title . toLowerCase ( ) ?? ""
51+ return f1Title . localeCompare ( f2Title , undefined , { numeric : true } )
52+ }
5353}
5454
5555type Props = {
56- limit ?: number
57- sort ?: SortFn
56+ limit ?: number
57+ sort ?: SortFn
5858} & QuartzComponentProps
5959
6060export const PageList : QuartzComponent = ( { cfg, fileData, allFiles, limit, sort } : Props ) => {
61- const sorter = sort ?? byDateAndAlphabeticalFolderFirst ( cfg )
62- let list = allFiles . sort ( sorter )
63- if ( limit ) {
64- list = list . slice ( 0 , limit )
65- }
61+ const sorter = sort ?? byDateAndAlphabeticalFolderFirst ( cfg )
62+ let list = allFiles . sort ( sorter )
63+ if ( limit ) {
64+ list = list . slice ( 0 , limit )
65+ }
6666
67- return (
68- < ul class = "section-ul" >
69- { list . map ( ( page ) => {
70- const title = page . frontmatter ?. title
71- const tags = page . frontmatter ?. tags ?? [ ]
67+ return (
68+ < ul class = "section-ul" >
69+ { list . map ( ( page ) => {
70+ const title = page . frontmatter ?. title
71+ const tags = page . frontmatter ?. tags ?? [ ]
7272
73- return (
74- < li class = "section-li" >
75- < div class = "section" >
76- < p class = "meta" >
77- { page . dates && < Date date = { getDate ( cfg , page ) ! } locale = { cfg . locale } /> }
78- </ p >
79- < div class = "desc" >
80- < h3 >
81- < a href = { resolveRelative ( fileData . slug ! , page . slug ! ) } class = "internal" >
82- { title }
83- </ a >
84- </ h3 >
85- </ div >
86- < ul class = "tags" >
87- { tags . map ( ( tag ) => (
88- < li >
89- < a
90- class = "internal tag-link"
91- href = { resolveRelative ( fileData . slug ! , `tags/${ tag } ` as FullSlug ) }
92- >
93- { tag }
94- </ a >
95- </ li >
96- ) ) }
97- </ ul >
98- </ div >
99- </ li >
100- )
101- } ) }
102- </ ul >
103- )
73+ return (
74+ < li class = "section-li" >
75+ < div class = "section" >
76+ < p class = "meta" >
77+ { page . dates && < Date date = { getDate ( cfg , page ) ! } locale = { cfg . locale } /> }
78+ </ p >
79+ < div class = "desc" >
80+ < h3 >
81+ < a href = { resolveRelative ( fileData . slug ! , page . slug ! ) } class = "internal" >
82+ { title }
83+ </ a >
84+ </ h3 >
85+ </ div >
86+ < ul class = "tags" >
87+ { tags . map ( ( tag ) => (
88+ < li >
89+ < a
90+ class = "internal tag-link"
91+ href = { resolveRelative ( fileData . slug ! , `tags/${ tag } ` as FullSlug ) }
92+ >
93+ { tag }
94+ </ a >
95+ </ li >
96+ ) ) }
97+ </ ul >
98+ </ div >
99+ </ li >
100+ )
101+ } ) }
102+ </ ul >
103+ )
104104}
105105
106106PageList . css = `
0 commit comments