, path: string) {
+ e.preventDefault();
+ e.stopPropagation();
+ let menu: ContextMenuItem[] = [];
+ menu.push({
+ label: "Open in New Block",
+ click: () => {
+ alert("Not Implemented");
+ },
+ });
+ menu.push({
+ label: "Delete File",
+ click: () => {
+ alert("Not Implemented");
+ },
+ });
+ ContextMenuModel.showContextMenu(menu, e);
+}
+
function DirectoryTable({ data, cwd, setFileName }: DirectoryTableProps) {
let settings = jotai.useAtomValue(atoms.settingsConfigAtom);
const getIconFromMimeType = React.useCallback(
@@ -107,7 +145,7 @@ function DirectoryTable({ data, cwd, setFileName }: DirectoryTableProps) {
}
mimeType = mimeType.slice(0, -1);
}
- return "fa fa-solid fa-question fa-fw";
+ return "fa fa-solid fa-file fa-fw";
},
[settings.mimetypes]
);
@@ -118,30 +156,36 @@ function DirectoryTable({ data, cwd, setFileName }: DirectoryTableProps) {
header: () => ,
id: "logo",
size: 25,
+ enableSorting: false,
}),
columnHelper.accessor("path", {
cell: (info) => info.getValue(),
header: () => Name,
+ sortingFn: "alphanumeric",
}),
columnHelper.accessor("modestr", {
cell: (info) => info.getValue(),
header: () => Permissions,
size: 91,
+ sortingFn: "alphanumeric",
}),
columnHelper.accessor("modtime", {
cell: (info) =>
getLastModifiedTime(info.getValue(), settings.datetime.locale, settings.datetime.format),
header: () => Last Modified,
size: 185,
+ sortingFn: "datetime",
}),
columnHelper.accessor("size", {
cell: (info) => getBestUnit(info.getValue()),
header: () => Size,
size: 55,
+ sortingFn: "auto",
}),
columnHelper.accessor("mimetype", {
cell: (info) => info.getValue(),
header: () => Type,
+ sortingFn: "alphanumeric",
}),
],
[settings]
@@ -151,7 +195,18 @@ function DirectoryTable({ data, cwd, setFileName }: DirectoryTableProps) {
data,
columns,
columnResizeMode: "onChange",
+ getSortedRowModel: getSortedRowModel(),
getCoreRowModel: getCoreRowModel(),
+ initialState: {
+ sorting: [
+ {
+ id: "path",
+ desc: false,
+ },
+ ],
+ },
+ enableMultiSort: false,
+ enableSortingRemoval: false,
});
const columnSizeVars = React.useMemo(() => {
@@ -175,10 +230,12 @@ function DirectoryTable({ data, cwd, setFileName }: DirectoryTableProps) {
className="dir-table-head-cell"
key={header.id}
style={{ width: `calc(var(--header-${header.id}-size) * 1px)` }}
+ onClick={() => header.column.toggleSorting()}
>
{header.isPlaceholder
? null
: flexRender(header.column.columnDef.header, header.getContext())}
+ {getSortIcon(header.column.getIsSorted())}
handleFileContextMenu(e, cwd.concat("/", row.getValue("path") as string))}
>
{row.getVisibleCells().map((cell) => {
return (