0.1.8 • Published 2 years ago

react-drag-tree-table v0.1.8

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

react-drag-tree-table

NPM version

English | 简体中文

📦 Install

npm i react-drag-tree-table

👽 Usage

import { DragTreeTable } from 'react-drag-tree-table'
import 'react-drag-tree-table/dist/index.css'

<DragTreeTable columns={columns} data={data} />

📁 Options

optiondescriptiondefaulttype
columnstable columns-DragTreeColumnProps
datatable data--
keykey from render data-"id"
isdraggablewhether it can be dragged-true
heighttable height-400(px)
bordertable border-false
fixedfixed table header-false
flexautomatic filling of remaining areas, follow the flex layout of CSS-false
onlySameLevelCanDragdrag-and-drop hierarchy changes are prohibited-false

📁 Events

eventdescriptiondefaulttype
onDragCallback executed when the row is dragedfunction(current, target, whereInsert)-
onExpandCallback executed when the row expand icon is clickedfunction(expanded, record)-

⛱ Interface

export type render = (value: any, record: any, index: number) => ReactNode
export type onExpand = (expanded: boolean, record: any) => void

export interface DragTreeTableProps {
  data: Record<string, any>[]
  key?: string
  columns: DragTreeColumnProps[]
  isdraggable?: boolean
  onDrag?: (current: Record<string, any>, target: Record<string, any>, whereInsert: WHERE_INSERT | null) => void
  onExpand?: onExpand
  fixed?: boolean
  height?: string | number
  border?: boolean
  onlySameLevelCanDrag?: string
  hightRowChange?: string
  resize?: boolean
  beforeDragOver?: Function
}

export enum WHERE_INSERT {
  TOP = 'TOP', // drag onto target data
  CENTER = 'CENTER', // drag to the target data children
  BOTTOM = 'BOTTOM', // drag it below the target data
}

export interface DragTreeColumnProps {
  width?: number | string
  key?: string | number
  lable?: string
  flex?: number
  border?: boolean
  render?: render
}

export interface DragTreeRowProps {
  data: RowDataMap<any>[]
  depth?: number
  isdraggable?: boolean
  border?: boolean
  onClick: (event: React.MouseEvent<any, MouseEvent>, data: RowDataMap, current: RowDataProps) => void
}

export interface RowDataProps<T = any | undefined> {
  width?: number | string
  content: any
  flex?: number
  _data: T
  render?: render
}
export interface RowDataMap<T = any | undefined> {
  key: string
  parentKey: string | number | null
  props: RowDataProps<T>[]
  children: RowDataMap<T>[]
  open: boolean
  childOpen: boolean
  _data: T
}

💗 Thanks

📄 TODO

  • Perfect the documents
  • onDrag
  • isdraggable
  • fixed
  • height
  • border
  • onlySameLevelCanDrag
0.1.8

2 years ago

0.1.7

2 years ago

0.1.6

2 years ago

0.1.4

2 years ago

0.1.3

2 years ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago

0.0.1

2 years ago