diff --git a/demo/FixHeader.jsx b/demo/FixHeader.jsx new file mode 100644 index 0000000..c3f18b4 --- /dev/null +++ b/demo/FixHeader.jsx @@ -0,0 +1,442 @@ +/** + * Table Component Demo for uxcore + * @author zhouquan.yezq + * + * Copyright 2014-2015, Uxcore Team, Alinw. + * All rights reserved. + */ + +import Button from 'uxcore-button'; +import React from 'react'; +import Table from '../src'; +import Promise from 'lie' + +class Test extends React.Component { + render() { + return ( +
{this.props.name}
+ ) + } +} + +/** + * @name Demo的标题 + * @description Demo的描述,使用 react-docgen 挖出对应的内容,并作为组件站点 md 生成的源。 + */ +class Demo extends React.Component { + constructor(props) { + super(props); + this.state = { + text: 1, + showTable: true, + fixHeaderToTop: false, + fixHeaderToTop1: false, + columns: [ + { + dataKey: 'firstName', + title: 自定义列头, + // fixed: true, + width: '15%', + textOverflow: 'ellipse', + filters: [{ + text: 'Joe', + value: 'Joe', + }, { + text: 'Jimmmmmmmmmmmmmmmmmmmmmmmmmmmmm', + value: 'Jim', + }, { + text: 'Submenu', + value: 'Submenu', + children: [{ + text: 'Green', + value: 'Green', + }, { + text: 'Black', + value: 'Black', + }], + }], + message: '这是一个提示', + ordered: true, + }, + + { + dataKey: 'lastName', + title: '自定义猎头', + message: 'nihao', + isDisable: function() { + return true + }, + // fixed: true, + // rightFixed: true + width: '25%', + }, + { + dataKey: 'email', + title: 'Email', + width: '20%', + ordered: true, + message: `sadfsdf\nnsafdasdfasdf` + }, + { + title: '操作1', + width: '200px', + type: 'action', + // rightFixed: true, + actions: [{ + title: '点击', + callback: () => { + }, + mode: 'edit', + }, { + title: '删除', + callback: (rowData) => { + this.table.delRow(rowData) + }, + mode: 'view', + }, { + title: '查看', + callback: () => { }, + mode: 'edit', + }, { + title: '查看', + callback: () => { }, + }], + }, + ] + }; + this.toggleShowTable = this.toggleShowTable.bind(this); + } + + toggleShowTable() { + this.setState({ + showTable: !this.state.showTable, + }); + } + + componentDidMount() { + const table = this.table.getDom() + const table1 = this.table1.getDom() + document.addEventListener('scroll', (e) => { + const tablePos = table.getBoundingClientRect() + const tablePos1 = table1.getBoundingClientRect() + const isShow = (pos) => { + return (pos.top < -56) && (-pos.top < pos.height - 56) + } + this.setState({ + fixHeaderToTop: isShow(tablePos), + fixHeaderToTop1: isShow(tablePos1) + }) + }) + } + + render() { + const me = this; + // 通过 rowSelection 对象表明需要行选择 + const rowSelection = { + onSelect(record, selected, selectedRows) { + console.log(record, selected, selectedRows); + }, + onSelectAll(selected, selectedRows) { + console.log(selected, selectedRows); + }, + // isDisabled: rowData => true, + }; + const columns = this.state.columns + const fetchUrl = 'http://eternalsky.me:8122/file/getGridJson.jsonp'; + const renderProps = { + actionColumn: { + edit: () => { }, + del: () => { }, + }, + columnResizeable: true, + fixHeaderToTop: this.state.fixHeaderToTop, + toggleSubCompOnRowClick: true, + // width: 800, + // className: 'kuma-uxtable-split-line', + className: 'kuma-uxtable-border-line', + pagerSizeOptions: [5, 10, 15, 20], + rowSelection, + useListActionBar: true, + actionBar: { + search: { + placeholder: '请输入搜索关键字', + onSearch() { + console.log(234234) + } + } + }, + // locale:'en-us', + onSearch: (searchTxt) => { + console.log(searchTxt); + }, + onOrder: (column, orderType) => { + console.log(column, orderType); + }, + onPagerChange: (current, pageSize) => { + console.log(current, pageSize); + }, + showSearch: false, + fetchUrl, + beforeFetch: (data, from, config) => { + console.log(data, from, config); + return data; + }, + // height: 400, + // addRowClassName() { + // return 'multiline'; + // }, + rowSelector: 'checkboxSelector', + jsxcolumns: columns, + needCheckRightFixed: true, + leftFixedMaxWidth: 900, + // size: 'small', + // rowSelection, + onColumnPick: (columns) => { + console.log(columns); + } + }; + return ( +
+ {me.state.showTable + ? + : null} + {me.state.showTable + ?
{ }, + del: () => { }, + }, + columnResizeable: true, + fixHeaderToTop: this.state.fixHeaderToTop1, + toggleSubCompOnRowClick: true, + // width: 800, + // className: 'kuma-uxtable-split-line', + className: 'kuma-uxtable-border-line', + pagerSizeOptions: [5, 10, 15, 20], + rowSelection, + // locale:'en-us', + showColumnPicker: true, + showColumnPickerCheckAll: true, + useListActionBar: true, + actionBar: { + className: 'my-list-action-bar', + // 是否显示全选 + showSelectAll: true, + // 按钮配置 + buttons: [ + { + title: 'Action Button', + render() { + return ( + + ) + }, + keepActiveInCustomView: false, + callback: () => { + this.forceUpdate(); + console.log(me.table.getData()); + me.table.toggleSubComp(me.table.getData().data.datas); + }, + }, + { + title: '按钮', + keepActiveInCustomView: false, + // size: 'large', + type: 'primary', + // className: 'xxxxx', + callback: () => { + me.table.selectAll(true); + } + } + ], + // 文案提示 + actionBarTip: '已经为您找到记录123条', + // 自定义内容 + customBarItem: { + render() { + return ( +

{console.log(e)}}>自定义内容

+ ) + } + }, + // 行排序 + rowOrder: { + iconName: 'paixu-jiangxu', + // keepActiveInCustomView: true, + defaultValue: { + text: '排序方式一', + value: '123' + }, + items: [ + { + text: '排序方式一', + value: '123' + }, + { + text: '排序方式二', + value: '456' + } + ], + onChange(data) { + console.log(data) + } + }, + // 列排序 + columnsOrder: { + iconName: 'huxiangguanzhu', + // keepActiveInCustomView: true, + title: '列排序', + includeActionColumn: false, // 优先级低于fixed和rightFixed + onChange(dragInfo, data) { + console.log(data) + } + }, + // 列选择 + columnsPicker: { + iconName: 'zidingyilie', + title: '自定义列', + keepActiveInCustomView: false, + setPickerGroups(columns) { + return [ + { + title: '分组1', + columns: columns.filter((item, index) => {return index >= 1}) + }, + { + title: '分组2', + columns: columns.filter((item, index) => {return index <= 0}) + } + ] + }, + onChange(data) { + console.log(data) + } + }, + // 自定义视图,支持返回promise和component + customView: { + render(data, currentPage) { + console.log(data, currentPage); + // return ( + // + // ) + return new Promise(function(resolve) { + setTimeout(() => { + resolve() + }) + }) + } + }, + // 是否显示翻页器 + showMiniPager: true, + search: { + // placeholder: '请输入搜索关键字', + onSearch() { + console.log(234234) + } + }, + // 在自定义视图下移出翻页器 + removePagerInCustomView: true, + linkBar: [ + { + title: '修改columns', + callback: () => { + this.setState({ + columns: this.state.columns.filter(item => { + return item.title === 'LastName' + || item.title === 'Email' + || item.title === '操作1' + }) + }) + }, + }, + { + title: '操作外链二', + callback: () => { + }, + }, + ], + }, + onSearch: (searchTxt) => { + console.log(searchTxt); + }, + onOrder: (column, orderType) => { + console.log(column, orderType); + }, + onPagerChange: (current, pageSize) => { + console.log(current, pageSize); + }, + showSearch: false, + fetchUrl, + beforeFetch: (data, from, config) => { + console.log(data, from, config); + return data; + }, + // height: 400, + // addRowClassName() { + // return 'multiline'; + // }, + rowSelector: 'checkboxSelector', + needCheckRightFixed: true, + leftFixedMaxWidth: 900, + // size: 'small', + // rowSelection, + onColumnPick: (columns) => { + console.log(columns); + }, + }} jsxcolumns={[ + { + dataKey: 'firstName', + title: 自定义列头, + // fixed: true, + width: '15%', + textOverflow: 'ellipse', + filters: [{ + text: 'Joe', + value: 'Joe', + }, { + text: 'Jimmmmmmmmmmmmmmmmmmmmmmmmmmmmm', + value: 'Jim', + }, { + text: 'Submenu', + value: 'Submenu', + children: [{ + text: 'Green', + value: 'Green', + }, { + text: 'Black', + value: 'Black', + }], + }], + message: '这是一个提示', + ordered: true, + }, + + { + dataKey: 'lastName', + title: '自定义猎头', + message: 'nihao', + isDisable: function() { + return true + }, + // fixed: true, + // rightFixed: true + width: '25%', + } + ]} ref={function saveRef(c) { me.table1 = c; }} /> + : null} + + + + ); + } +} + +export default Demo; diff --git a/demo/GridDemo.jsx b/demo/GridDemo.jsx index 53b2ec2..e539903 100644 --- a/demo/GridDemo.jsx +++ b/demo/GridDemo.jsx @@ -29,8 +29,6 @@ class Demo extends React.Component { this.state = { text: 1, showTable: true, - fixHeaderToTop: false, - fixHeaderToTop1: false, columns: [ { dataKey: 'firstName', @@ -113,20 +111,6 @@ class Demo extends React.Component { }); } - componentDidMount() { - const table = this.table.getDom() - const table1 = this.table1.getDom() - document.addEventListener('scroll', (e) => { - const tablePos = table.getBoundingClientRect() - const tablePos1 = table1.getBoundingClientRect() - const isShow = (pos) => {return (pos.top < -56) && (-pos.top < pos.height - 56)} - this.setState({ - fixHeaderToTop: isShow(tablePos), - fixHeaderToTop1: isShow(tablePos1) - }) - }) - } - render() { const me = this; // 通过 rowSelection 对象表明需要行选择 @@ -147,7 +131,6 @@ class Demo extends React.Component { del: () => { }, }, columnResizeable: true, - fixHeaderToTop: this.state.fixHeaderToTop, toggleSubCompOnRowClick: true, // width: 800, // className: 'kuma-uxtable-split-line', @@ -378,230 +361,6 @@ class Demo extends React.Component { {me.state.showTable ?
: null} - {me.state.showTable - ?
{ }, - del: () => { }, - }, - columnResizeable: true, - fixHeaderToTop: this.state.fixHeaderToTop1, - toggleSubCompOnRowClick: true, - // width: 800, - // className: 'kuma-uxtable-split-line', - className: 'kuma-uxtable-border-line', - pagerSizeOptions: [5, 10, 15, 20], - rowSelection, - // locale:'en-us', - showColumnPicker: true, - showColumnPickerCheckAll: true, - useListActionBar: true, - actionBar: { - className: 'my-list-action-bar', - // 是否显示全选 - showSelectAll: true, - // 按钮配置 - buttons: [ - { - title: 'Action Button', - render() { - return ( - - ) - }, - keepActiveInCustomView: false, - callback: () => { - this.forceUpdate(); - console.log(me.table.getData()); - me.table.toggleSubComp(me.table.getData().data.datas); - }, - }, - { - title: '按钮', - keepActiveInCustomView: false, - // size: 'large', - type: 'primary', - // className: 'xxxxx', - callback: () => { - me.table.selectAll(true); - } - } - ], - // 文案提示 - actionBarTip: '已经为您找到记录123条', - // 自定义内容 - customBarItem: { - render() { - return ( -

{console.log(e)}}>自定义内容

- ) - } - }, - // 行排序 - rowOrder: { - iconName: 'paixu-jiangxu', - // keepActiveInCustomView: true, - defaultValue: { - text: '排序方式一', - value: '123' - }, - items: [ - { - text: '排序方式一', - value: '123' - }, - { - text: '排序方式二', - value: '456' - } - ], - onChange(data) { - console.log(data) - } - }, - // 列排序 - columnsOrder: { - iconName: 'huxiangguanzhu', - // keepActiveInCustomView: true, - title: '列排序', - includeActionColumn: false, // 优先级低于fixed和rightFixed - onChange(dragInfo, data) { - console.log(data) - } - }, - // 列选择 - columnsPicker: { - iconName: 'zidingyilie', - title: '自定义列', - keepActiveInCustomView: false, - setPickerGroups(columns) { - return [ - { - title: '分组1', - columns: columns.filter((item, index) => {return index >= 1}) - }, - { - title: '分组2', - columns: columns.filter((item, index) => {return index <= 0}) - } - ] - }, - onChange(data) { - console.log(data) - } - }, - // 自定义视图,支持返回promise和component - customView: { - render(data, currentPage) { - console.log(data, currentPage); - // return ( - // - // ) - return new Promise(function(resolve) { - setTimeout(() => { - resolve() - }) - }) - } - }, - // 是否显示翻页器 - showMiniPager: true, - search: { - // placeholder: '请输入搜索关键字', - onSearch() { - console.log(234234) - } - }, - // 在自定义视图下移出翻页器 - removePagerInCustomView: true, - linkBar: [ - { - title: '修改columns', - callback: () => { - this.setState({ - columns: this.state.columns.filter(item => { - return item.title === 'LastName' - || item.title === 'Email' - || item.title === '操作1' - }) - }) - }, - }, - { - title: '操作外链二', - callback: () => { - }, - }, - ], - }, - onSearch: (searchTxt) => { - console.log(searchTxt); - }, - onOrder: (column, orderType) => { - console.log(column, orderType); - }, - onPagerChange: (current, pageSize) => { - console.log(current, pageSize); - }, - showSearch: false, - fetchUrl, - beforeFetch: (data, from, config) => { - console.log(data, from, config); - return data; - }, - // height: 400, - // addRowClassName() { - // return 'multiline'; - // }, - rowSelector: 'checkboxSelector', - needCheckRightFixed: true, - leftFixedMaxWidth: 900, - // size: 'small', - // rowSelection, - onColumnPick: (columns) => { - console.log(columns); - }, - }} jsxcolumns={[ - { - dataKey: 'firstName', - title: 自定义列头, - // fixed: true, - width: '15%', - textOverflow: 'ellipse', - filters: [{ - text: 'Joe', - value: 'Joe', - }, { - text: 'Jimmmmmmmmmmmmmmmmmmmmmmmmmmmmm', - value: 'Jim', - }, { - text: 'Submenu', - value: 'Submenu', - children: [{ - text: 'Green', - value: 'Green', - }, { - text: 'Black', - value: 'Black', - }], - }], - message: '这是一个提示', - ordered: true, - }, - - { - dataKey: 'lastName', - title: '自定义猎头', - message: 'nihao', - isDisable: function() { - return true - }, - // fixed: true, - // rightFixed: true - width: '25%', - } - ]} ref={function saveRef(c) { me.table1 = c; }} /> - : null}