import { HStack, VStack, Text } from "@hope-ui/solid" import { batch, createEffect, createSignal, For, Show } from "solid-js" import { useT } from "~/hooks" import { allChecked, checkboxOpen, getCurrentPath, getSortPreference, isIndeterminate, me, objStore, selectAll, setSortPreference, sortObjs, } from "~/store" import { OrderBy } from "~/store" import { UserMethods, UserPermissions } from "~/types" import { Col, cols, ListItem } from "./ListItem" import { ItemCheckbox, useSelectWithMouse } from "./helper" import { bus } from "~/utils" export const ListTitle = (props: { sortCallback: (orderBy: OrderBy, reverse?: boolean) => void disableCheckbox?: boolean }) => { const t = useT() const [orderBy, setOrderBy] = createSignal() const [reverse, setReverse] = createSignal(false) createEffect(() => { const preference = getSortPreference(getCurrentPath()) batch(() => { setOrderBy(preference?.orderBy) setReverse(preference?.reverse ?? false) }) }) createEffect(() => { if (orderBy()) { const currentOrderBy = orderBy()! const currentReverse = reverse() props.sortCallback(currentOrderBy, currentReverse) setSortPreference(currentOrderBy, currentReverse, getCurrentPath()) } }) const itemProps = (col: Col) => { return { fontWeight: "bold", fontSize: "$sm", color: "$neutral11", textAlign: col.textAlign as any, cursor: "pointer", onClick: () => { if (col.name === orderBy()) { setReverse(!reverse()) } else { batch(() => { setOrderBy(col.name as OrderBy) setReverse(false) }) } }, } } return ( { selectAll(e.target.checked as boolean) }} /> {t(`home.obj.${cols[0].name}`)} {t(`home.obj.${cols[1].name}`)} {t(`home.obj.${cols[2].name}`)} ) } const ListLayout = () => { const onDragOver = (e: DragEvent) => { // 拖拽上传做权限检查限制 const writeIndex = UserPermissions.findIndex((item) => item === "write") if (!UserMethods.can(me(), writeIndex, getCurrentPath())) { return } const items = Array.from(e.dataTransfer?.items ?? []) for (let i = 0; i < items.length; i++) { const item = items[i] if (item.kind === "file") { bus.emit("tool", "upload") e.preventDefault() break } } } const { isMouseSupported, registerSelectContainer, captureContentMenu } = useSelectWithMouse() registerSelectContainer() return ( {(obj, i) => { return }} ) } export default ListLayout