import * as React from "react";
import { useState } from "react";
import {
FolderRegular,
DocumentRegular,
DocumentPdfRegular,
VideoRegular,
ChevronDown16Filled,
TextField16Regular,
Calendar16Regular,
SelectAllOn16Regular,
CommentAdd16Regular,
MoreHorizontal16Filled,
NumberCircle116Regular,
Add16Filled
} from "@fluentui/react-icons";
import {
DataGridBody,
DataGridRow,
DataGrid,
DataGridHeader,
DataGridHeaderCell,
DataGridCell,
TableCellLayout,
createTableColumn,
Button,
Menu,
MenuTrigger,
MenuList,
MenuItem,
MenuPopover,
Tooltip,
MenuDivider,
Input,
Select,
} from "@fluentui/react-components";
import { DatePicker } from "@fluentui/react-datepicker-compat";
const List = (editType) => {
// const defaultSelectedItems = React.useMemo(() => new Set([1]), []);
//数据类型常量
const DATA_TYPE = {
文本: "文本",
数字: "数字",
日期: "日期",
选项: "选项"
}
/**
* 列头下拉菜单
* @param {*} dataType 表现类型
*/
const HeaderMenuList = (props) => {
return (
);
}
const [dataSortType, setDataSortType] = useState(({
sortColumn: "序号",
sortDirection: "ascending",
}));
const ascendingData = (columnId) => {
setDataSortType(({
sortColumn: columnId,
sortDirection: "ascending",
}));
}
const descendingData = (columnId) => {
setDataSortType(({
sortColumn: columnId,
sortDirection: "descending",
}));
}
/**
* 列设置的二级菜单
* @returns
*/
const HeaderMenuColumnSet = (props) => {
return (
);
}
/**
* 列头“合计”二级菜单
*/
const HeaderMenuAmount = (props) => {
return (
);
}
/**
* 鼠标移动到姓名列上时,显示两个按钮
* @param item 包含姓名标签的对象
* @returns 返回 JSX 元素
*/
const ChangeBtnShowType = (props) => {
const [showButton, setShowButton] = useState(false);
const handleMouseEnter = () => {
setShowButton(true);
};
const handleMouseLeave = () => {
setShowButton(false);
};
return (
{editType.edit == "true" ?
: props.cellData}
{showButton && (
}
onClick={() => {
alert("更多操作");
}}
>
}>
)}
);
};
const tableData = [
{
序号: { label: 1 },
姓名: { label: "陈丹" },
性别: { label: "女" },
年龄: { label: "18岁" },
最后在线时间: { label: "2024-11-03" },
},
{
序号: { label: 2 },
姓名: { label: "蔡青松" },
性别: { label: "男", },
年龄: { label: "30岁" },
最后在线时间: { label: "2024-11-04" },
},
{
序号: { label: 3 },
姓名: { label: "杨东明" },
性别: { label: "男" },
年龄: { label: "25岁" },
最后在线时间: { label: "2024-11-05" },
},
{
序号: { label: 4 },
姓名: { label: "吴瑞强" },
性别: { label: "男" },
年龄: { label: "25岁" },
最后在线时间: { label: "2024-11-06" },
},
]
const [newTableData, setTabeData] = useState(tableData);
/**
* 新增空行
*/
const AddNewRow = () => {
setTabeData(newTableData.concat([{
序号: { label: newTableData.length + 1 },
姓名: { label: "" },
性别: { label: "" },
年龄: { label: "" },
最后在线时间: { label: "" },
}]));
}
return (
{
return a.姓名.label.localeCompare(b.姓名.label);
},
renderHeaderCell: () => {
return (
}>
姓名
);
},
renderCell: (item) => {
return
},
}),
createTableColumn({
columnId: "序号",
fixed: true,
compare: (a, b) => {
return a.序号.label - b.序号.label;
},
renderHeaderCell: () => {
return (
}>
序号
);
},
renderCell: (item) => {
return editType.edit == "true" ? : item.序号.label;
},
}),
createTableColumn({
columnId: "性别",
compare: (a, b) => {
return a.性别.label.localeCompare(b.性别.label);
},
renderHeaderCell: () => {
return (
}>
性别
);
},
renderCell: (item) => {
return editType.edit == "true" ? : item.性别.label;
},
}),
createTableColumn({
columnId: "年龄",
compare: (a, b) => {
return a.年龄.timestamp - b.年龄.timestamp;
},
renderHeaderCell: () => {
return (
}>
年龄
);
},
renderCell: (item) => {
return item.年龄.label;
},
}),
createTableColumn({
columnId: "最后在线时间",
compare: (a, b) => {
return new Date(a.最后在线时间.label) - new Date(b.最后在线时间.label);
},
renderHeaderCell: () => {
return (
}>
最后在线时间
);
},
renderCell: (item) => {
return editType.edit == "true" ? : item.最后在线时间.label;
},
}),
]}
selectionMode="multiselect"
sortable
sortState={dataSortType}
subtleSelection
resizableColumns
// defaultSelectedItems={defaultSelectedItems}
style={{ minWidth: "550px" }}
>
{({ renderHeaderCell }) => (
{renderHeaderCell()}
)}
{({ item, rowId }) => (
{({ renderCell }) => (
{renderCell(item)}
)}
)}
}
style={{ color: "#ca5010" }}
onClick={() => {
AddNewRow();
}}
>添加新项目
);
};
export default List;