mirror of
https://github.com/outline/outline.git
synced 2025-12-30 07:19:52 -06:00
44 lines
909 B
TypeScript
44 lines
909 B
TypeScript
import type { NavigationNode } from "../types";
|
|
import naturalSort from "./naturalSort";
|
|
|
|
type Sort = {
|
|
field: string;
|
|
direction: "asc" | "desc";
|
|
};
|
|
|
|
export const sortNavigationNodes = (
|
|
nodes: NavigationNode[],
|
|
sort: Sort,
|
|
sortChildren = true
|
|
): NavigationNode[] => {
|
|
// "index" field is manually sorted and is represented by the documentStructure
|
|
// already saved in the database, no further sort is needed
|
|
if (sort.field === "index") {
|
|
return nodes;
|
|
}
|
|
|
|
const orderedDocs = naturalSort(nodes, sort.field, {
|
|
direction: sort.direction,
|
|
});
|
|
|
|
return orderedDocs.map((node) => ({
|
|
...node,
|
|
children: sortChildren
|
|
? sortNavigationNodes(node.children, sort, sortChildren)
|
|
: node.children,
|
|
}));
|
|
};
|
|
|
|
export const colorPalette = [
|
|
"#4E5C6E",
|
|
"#0366D6",
|
|
"#9E5CF7",
|
|
"#FF825C",
|
|
"#FF5C80",
|
|
"#FFBE0B",
|
|
"#42DED1",
|
|
"#00D084",
|
|
"#FF4DFA",
|
|
"#2F362F",
|
|
];
|