Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/component/CellWrapper.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,6 @@ export default class CellWrapper<TData> extends Component<CellWrapperProps<TData
const STYLE_COLUMN: CSSProperties = {
boxSizing: 'border-box',
position: 'relative',
overflow: 'hidden',
overflow: 'visible',
width: '100%',
};
2 changes: 2 additions & 0 deletions src/component/Column.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import Row from '../model/row';
export type ColumnProps<TData> = {
renderCell: (row: Row<TData>) => React.ReactNode;
renderHeaderCell: () => React.ReactNode;
renderFooterCell: () => React.ReactNode;


grow?: number;
basis?: string; // <CSS size> | auto
Expand Down
35 changes: 35 additions & 0 deletions src/component/FooterCellWrapper.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import React, { Component, CSSProperties } from 'react';


export type FooterCellWrapperProps = {
renderFooterCell: () => React.ReactNode;

grow?: number;
basis?: string; // <CSS size> | auto
}

export default class FooterCellWrapper extends Component<FooterCellWrapperProps, {}> {
static defaultProps = {
grow: 1,
basis: '0px',
};

render() {
const { renderFooterCell, grow, basis } = this.props;

return (
<div className={`cp_tree-table_footer-cell`}
style={{ ...STYLE_COLUMN, flexGrow: grow, flexBasis: basis }}>
{ renderFooterCell() }
</div>
);
}
}


const STYLE_COLUMN: CSSProperties = {
boxSizing: 'border-box',
position: 'relative',
overflow: 'visible',
width: '100%',
};
2 changes: 1 addition & 1 deletion src/component/HeaderCellWrapper.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,6 @@ export default class HeaderCellWrapper extends Component<HeaderCellWrapperProps,
const STYLE_COLUMN: CSSProperties = {
boxSizing: 'border-box',
position: 'relative',
overflow: 'hidden',
overflow: 'visible',
width: '100%',
};
5 changes: 4 additions & 1 deletion src/component/TreeTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import Column, { ColumnProps } from './Column';
import TreeTableHeader from './TreeTableHeader';
import VirtualList from './VirtualList';
import TreeState from '../model/tree-state';
import TreeTableFooter from './TreeTableFooter';


export type TreeTableProps<TData> = {
Expand All @@ -21,6 +22,7 @@ export type TreeTableProps<TData> = {
// View properties
height?: number; // view height (px)
headerHeight?: number; // header height (px)
footerHeight?: number; // footer height (px)
className?: string;
}

Expand All @@ -33,7 +35,7 @@ export default class TreeTable<TData> extends Component<TreeTableProps<TData>, {

render() {
const { value, children, onScroll,
height, headerHeight, className } = this.props;
height, headerHeight, footerHeight ,className } = this.props;

const columnsDef: Array<ColumnProps<TData>> = [];
Children
Expand All @@ -52,6 +54,7 @@ export default class TreeTable<TData> extends Component<TreeTableProps<TData>, {
onChange={this.handleChange}
ref={this.vListRef}
onScroll={onScroll || noopOnScroll} /> }
<TreeTableFooter columns={columnsDef} height={footerHeight}/>
</div>
);
}
Expand Down
45 changes: 45 additions & 0 deletions src/component/TreeTableFooter.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import React, { Component, CSSProperties } from 'react';
import { ColumnProps } from './Column';
import FooterCellWrapper from './FooterCellWrapper';


export type TreeTableFooterProps<TData> = {
columns: Array<ColumnProps<TData>>;
height?: number;
}

export default class TreeTableFooter<TData> extends Component<TreeTableFooterProps<TData>, {}> {
static defaultProps = {
height: 26,
};

render() {
const { columns, height } = this.props;


return (
<div className="cp_tree-footer"
style={{ ...STYLE_ROW, height: `${height}px` }}>
{columns.map((column: ColumnProps<TData>, indexKey) => {
return (
<FooterCellWrapper key={indexKey}
renderFooterCell={column.renderFooterCell}

grow={column.grow}
basis={column.basis}/>
);
})}
</div>
);
}
}


const STYLE_ROW: CSSProperties = {
display: 'flex',

boxSizing: 'border-box',
position: 'relative',
overflow: 'visible',
width: '100%',
};
2 changes: 1 addition & 1 deletion src/component/TreeTableHeader.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,6 @@ const STYLE_ROW: CSSProperties = {

boxSizing: 'border-box',
position: 'relative',
overflow: 'hidden',
overflow: 'visible',
width: '100%',
};
2 changes: 1 addition & 1 deletion src/component/VirtualListRow.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,6 @@ const STYLE_ROW: CSSProperties = {

boxSizing: 'border-box',
position: 'relative',
overflow: 'hidden',
overflow: 'visible',
width: '100%',
};
2 changes: 1 addition & 1 deletion src/model/tree-state.ts
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,7 @@ export default class TreeState<T> {
return;
}
for (let i = 0; i < this.data.length; i++) {
if (this.data[i].data == node.data) {
if (JSON.stringify(this.data[i].data) === JSON.stringify(node.data)) {
return this.data[i];
}
}
Expand Down
Loading