Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

manage-table

Package Overview
Dependencies
Maintainers
1
Versions
33
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

manage-table

  • 2.0.8
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

在日常业务中,经常会使用到antd的table组件。 使用的最开始只显示几行字段,可是后面展示的字段越来越多,而且不同的人希望看到的字段是不一样的。 基于此,封装了manage-table, 内部还是使用了antd,只是增加了对显示列的灵活操作的处理逻辑。

manage-table 内置了 设置展示的列 存储在localstorage的功能,将会使用参数name进行唯一存储, 所以在使用的时候,请保持单一域名内所需展示列的唯一性。

Install and Include

安装

$ npm install manage-table --save

使用方式一:支持直接引用,使用内置设置

import ManageTable  from "manage-table";
import './App.css';
import React from "react";

function App() {
  const mockColumns = new Array(50).fill('').map((_item: string, index) => {
    return {
      dataIndex: 'title' + index,
      key: 'title' + index,
      title: '标题' + index,
      show: index % 3 === 0,
    };
  });
  mockColumns.push({
    dataIndex: 'action',
    key: 'action',
    title: '操作',
    show: true,
  });
  console.log(mockColumns)
  return (
    <div className="App">
      <ManageTable name="testTable" columns={mockColumns}/>
    </div>
  );
}

export default App;

使用方式二:支持自定义设置:

import React from "react";
import { Button } from "antd";
import ManageTable from "manage-table";

export default function App2() {
  const mockColumns = new Array(50).fill("").map((_item, index) => {
    return {
      dataIndex: "title" + index,
      key: "title" + index,
      title: "标题" + index,
      show: index % 3 === 0
    };
  });
  mockColumns.push({
    dataIndex: "action",
    key: "action",
    title: "操作",
    show: true
  });
  const ref = React.createRef();
  const handleShowModal = () => {
    ref.current.showModal();
  };
  const SettingHeader = (
    <div style={{ textAlign: "left" }}>
      <Button onClick={handleShowModal}>自定义设置</Button>
    </div>
  );
  return (
    <div className="App">
      <ManageTable
        ref={ref}
        SettingComp={SettingHeader}
        name="testTable2"
        columns={mockColumns}
      />
    </div>
  );
}

使用方式三、按组划分

import React from "react";
import { Button } from "antd";
import ManageTable from "manage-table";

const mockGroup = () => {
  const data: ManageColumnType[] = [];
    new Array(4).fill('').forEach((_item: string, index: number) => {
      new Array(10).fill('').forEach((_item: string, indx) => {
        const dataIndex = `title${index}_${indx}`
        const item: any = {
          dataIndex,
          key: dataIndex,
          title: '标题' + index + '_' + indx,
          show: indx % 5 === 0,
          group: '分组' + index,
          render: (val: string) => val,
        };
        if (dkeys.includes(dataIndex)) {
          item.show = true;
        }
        data.push(item);
      })
    });
    data.push({
      dataIndex: 'action',
      key: 'action',
      title: '操作列',
      show: true,
      fixed: 'right',
      render: (val: string) => '跳转',
    })
    return data;
}

function AppGroupRef() {
  const ref: any = React.createRef();

  const handleSet = () => {
    ref.current.showModal();
  }

  const SettingHeader = (
    <div style={{textAlign: 'left'}}>
      <Button type="primary" onClick={handleSet}>自定义设置</Button>
    </div>
  );
  return (
    <div className="App">
      <ManageTable ref={ref} SettingComp={SettingHeader} name="testTableGroup" columns={mockGroup()}/>
    </div>
  );
}

export default AppGroupRef;

参数说明

ManageTable, 继承自antd的Table

参数名类型说明
namestring存储所使用的唯一的key,必传
columnsManageColumnType[]GroupManageColumn[]
refReact.createRef()的返回对象增加面板, 非必传
SettingCompReact.ReactNode自定义设置头部, 非必传
setTitleReact.ReactNode、string自定义弹窗的标题,默认'设置显示字段', 非必传
defaultShowKeysstring[]默认配置显示的字段,包括排序
fixedShowKeysstring[]固定显示的字段, 其所对应的column配置的show的值应该是true
onKeysSelected(keys: string[]) => void存储钩子函数,搭配自定义存储使用

ManageColumnType, 继承自antd的Table的ColumnType

参数名类型说明
showboolean是否默认显示
dataIndexstringantd的dataindex
groupboolean分组名称

demo展示

示例参考:codesanbox - manage-table

开发&测试

install and develop

git clone git@github.com:tnfe/manage-table.git
cd manage-table
npm install
npm start

Then open http://localhost:3000/

build

npm run build

License

The MIT License.

Keywords

FAQs

Package last updated on 16 Feb 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc