自定义排序操作
上一篇
自定义单元格宽高
下一篇
自定义折叠/展开节点
Loading...
阅读本章前,请确保已经阅读过 基础排序,组内排序,Tooltip 注意事项 等章节。
S2
提供默认的基础 排序操作 和 React 版本的 高级排序 组件。
但在某些业务场景下,我们仍需要自定义排序,我们将它分为自定义排序 icon
,自定义排序 tooltip
,自定义排序操作三个部分。
相关章节:自定义 icon
const s2Options = {showDefaultHeaderActionIcon: false,...}
const s2Options = {customSVGIcons: [{name: 'customKingIcon',src: 'https://gw.alipayobjects.com/zos/bmw-prod/f44eb1f5-7cea-45df-875e-76e825a6e0ab.svg',},],...}
const s2Options = {headerActionIcons: [{// 选择 icon, 可以是 S2 自带的,也可以是自定义的 iconicons: ['customKingIcon'],// 通过 belongsCell + displayCondition 设置 icon 的展示位置belongsCell: 'colCell',displayCondition: (meta) => meta.level === 2,defaultHide: false,...}],...}
tooltip
为打开状态。const s2Options = {tooltip: {enable: true,},...}
@antv/s2
, 需要自行实现排序菜单的 UI, 否则 tooltip
不会展示。查看示例 和 Tooltip 注意事项@antv/s2-react
, 可以结合任意组件库使用。查看示例import { Menu } from 'antd'const s2Options = {tooltip: {enable: true,operation: {menu: {render: (props) => {return <Menu {...props} />;},}}},}
icon
点击后的 tooltip
展示const items = [{ key: 'NONE', label: '不排序' },{ key: 'ASC', label: '升序', icon: 'GroupAsc' },{ key: 'DESC', label: '降序', icon: 'GroupDesc' },{ key: 'CUSTOM', label: '自定义排序', icon: 'Trend' },];const s2Options = {// 设置自定义 `icon` 的展示条件headerActionIcons: [{// 选择 icon, 可以是 S2 自带的,也可以是自定义的 icon, https://s2.antv.antgroup.com/manual/advanced/custom/custom-iconicons: ['customKingIcon'],// 通过 belongsCell + displayCondition 设置 icon 的展示位置belongsCell: 'colCell',// 展示条件displayCondition: (meta) => meta.level === 2,// 默认是否隐藏,hover 后再展示defaultHide: false,// icon 点击之后的执行函数onClick: (options) => {const { meta, event } = props;// https://s2.antv.antgroup.com/manual/basic/tooltipconst operator = {// 配置 tooltip 中的操作项menu: {items,}};// 自定义 tooltip 配置,展示 toolTipmeta.spreadsheet.showTooltipWithInfo(event, [], {operator,onlyShowCellText: true,onlyShowOperator: true,});},onHover: (options) => {}},],...}
相关章节:自定义排序
// 执行自定义排序回调const handleSortCallback = (meta, key) => {if (key === 'CUSTOM') {const sortParams = [{ sortFieldId: 'type', sortBy: [ '办公用品', '家具' ] },{ sortFieldId: 'city', sortMethod: 'ASC' },];console.log('可以在这里实现你手动排序的交互和逻辑哟', sortParams)} else {// 使用 S2 提供的组内排序方式meta.spreadsheet.groupSortByMethod(key, meta)}}const s2Options = {headerActionIcons: [{onClick: (props) => {const { meta, event } = propsconst operator = {menu: {onClick: ({ key }) => {// 执行自定义排序回调handleSortCallback(meta, key)meta.spreadsheet.hideTooltip()},items},}meta.spreadsheet.showTooltipWithInfo(event, [], {operator,onlyShowCellText: true,onlyShowOperator: true,});},...}],...}
@antv/s2
中使用@antv/s2-react
中使用