fix(explorer): default sortFn implementation (#511)
* fix: use `numeric` + `base` for localeCompare
* docs(explorer): update default sortFn
| | |
| | | Component.Explorer({ |
| | | sortFn: (a, b) => { |
| | | if ((!a.file && !b.file) || (a.file && b.file)) { |
| | | return a.displayName.localeCompare(b.displayName) |
| | | // sensitivity: "base": Only strings that differ in base letters compare as unequal. Examples: a ≠ b, a = á, a = A |
| | | // numeric: true: Whether numeric collation should be used, such that "1" < "2" < "10" |
| | | return a.displayName.localeCompare(b.displayName, undefined, { |
| | | numeric: true, |
| | | sensitivity: "base", |
| | | }) |
| | | } |
| | | if (a.file && !b.file) { |
| | | return 1 |
| | |
| | | sortFn: (a, b) => { |
| | | // Sort order: folders first, then files. Sort folders and files alphabetically |
| | | if ((!a.file && !b.file) || (a.file && b.file)) { |
| | | return a.displayName.localeCompare(b.displayName) |
| | | // numeric: true: Whether numeric collation should be used, such that "1" < "2" < "10" |
| | | // sensitivity: "base": Only strings that differ in base letters compare as unequal. Examples: a ≠ b, a = á, a = A |
| | | return a.displayName.localeCompare(b.displayName, undefined, { |
| | | numeric: true, |
| | | sensitivity: "base", |
| | | }) |
| | | } |
| | | if (a.file && !b.file) { |
| | | return 1 |