Skip to content

Commit

Permalink
feat: 馃幐 Renderers now are supplied with row index
Browse files Browse the repository at this point in the history
  • Loading branch information
diogofcunha committed Jan 27, 2019
1 parent 623818f commit 364e4aa
Show file tree
Hide file tree
Showing 9 changed files with 24 additions and 15 deletions.
1 change: 1 addition & 0 deletions index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ export type Omit<T, K> = Pick<T, Exclude<keyof T, K>>;

export interface RendererProps<T> {
measure: () => void;
index: number;
onChange: (updateParams: NodeAction) => void;
node: FlattenedNode;
iconsClassNameMap?: T;
Expand Down
1 change: 1 addition & 0 deletions src/__tests__/__snapshots__/Tree.test.js.snap
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ Object {

exports[`Tree rowRenderer should render the Node renderer with the correct props 1`] = `
Object {
"index": 0,
"measure": [MockFunction],
"node": Object {
"children": Array [
Expand Down
3 changes: 2 additions & 1 deletion src/renderers/Deletable.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,15 @@ const Deletable = ({
delete: 'mi mi-delete',
},
children,
index,
}) => {
const {isDeletable} = getNodeRenderOptions(node);

const className = classNames({
[iconsClassNameMap.delete]: isDeletable,
});

const handleChange = () => onChange(deleteNode(node));
const handleChange = () => onChange({...deleteNode(node), index});

return (
<span>
Expand Down
3 changes: 2 additions & 1 deletion src/renderers/Expandable.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ const Expandable = ({
onChange,
node,
children,
index,
iconsClassNameMap = {
expanded: 'mi mi-keyboard-arrow-down',
collapsed: 'mi mi-keyboard-arrow-right',
Expand All @@ -23,7 +24,7 @@ const Expandable = ({
[iconsClassNameMap.lastChild]: !hasChildren,
});

const handleChange = () => onChange(updateNode(node, {expanded: !isExpanded}));
const handleChange = () => onChange({...updateNode(node, {expanded: !isExpanded}), index});

return (
<span onDoubleClick={handleChange}>
Expand Down
3 changes: 2 additions & 1 deletion src/renderers/Favorite.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ const Favorite = ({
notFavorite: 'mi mi-star-border',
},
children,
index,
}) => {
const {isFavorite} = getNodeRenderOptions(node);

Expand All @@ -22,7 +23,7 @@ const Favorite = ({
[iconsClassNameMap.notFavorite]: !isFavorite,
});

const handleChange = () => onChange(updateNode(node, {favorite: !isFavorite}));
const handleChange = () => onChange({...updateNode(node, {favorite: !isFavorite}), index});

return (
<span>
Expand Down
5 changes: 3 additions & 2 deletions src/renderers/__tests__/Deletable.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ describe('renderers Deletable', () => {
delete: 'delete',
},
measure: jest.fn(),
index: 1,
};

const props = {...baseProps, ...extraProps};
Expand All @@ -42,15 +43,15 @@ describe('renderers Deletable', () => {

deleteIconWrapper.simulate('click');

expect(props.onChange).toHaveBeenCalledWith(deleteNode(props.node));
expect(props.onChange).toHaveBeenCalledWith({...deleteNode(props.node), index: props.index});
});

it('pressing enter should call onChange with the correct params', () => {
const {deleteIconWrapper, props} = setup();

deleteIconWrapper.simulate('keyDown', {keyCode: KEY_CODES.Enter});

expect(props.onChange).toHaveBeenCalledWith(deleteNode(props.node));
expect(props.onChange).toHaveBeenCalledWith({...deleteNode(props.node), index: props.index});
});
});

Expand Down
13 changes: 7 additions & 6 deletions src/renderers/__tests__/Expandable.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ describe('renderers Expandable', () => {
collapsed: 'colpased',
},
measure: jest.fn(),
index: 1,
};

const props = {...baseProps, ...extraProps};
Expand All @@ -44,23 +45,23 @@ describe('renderers Expandable', () => {

expandIconWrapper.simulate('click');

expect(props.onChange).toHaveBeenCalledWith(updateNode(props.node, {expanded: false}));
expect(props.onChange).toHaveBeenCalledWith({...updateNode(props.node, {expanded: false}), index: props.index});
});

it('pressing enter should call onChange with the correct params', () => {
const {expandIconWrapper, props} = setup({expanded: true});

expandIconWrapper.simulate('keyDown', {keyCode: KEY_CODES.Enter});

expect(props.onChange).toHaveBeenCalledWith(updateNode(props.node, {expanded: false}));
expect(props.onChange).toHaveBeenCalledWith({...updateNode(props.node, {expanded: false}), index: props.index});
});

it('double clicking in the parent node should call onChange with the correct params', () => {
const {props, wrapper} = setup({expanded: true});

wrapper.first().simulate('doubleClick');

expect(props.onChange).toHaveBeenCalledWith(updateNode(props.node, {expanded: false}));
expect(props.onChange).toHaveBeenCalledWith({...updateNode(props.node, {expanded: false}), index: props.index});
});
});

Expand All @@ -76,23 +77,23 @@ describe('renderers Expandable', () => {

expandIconWrapper.simulate('click');

expect(props.onChange).toHaveBeenCalledWith(updateNode(props.node, {expanded: true}));
expect(props.onChange).toHaveBeenCalledWith({...updateNode(props.node, {expanded: true}), index: props.index});
});

it('pressing enter should call onChange with the correct params', () => {
const {expandIconWrapper, props} = setup({expanded: false});

expandIconWrapper.simulate('keyDown', {keyCode: KEY_CODES.Enter});

expect(props.onChange).toHaveBeenCalledWith(updateNode(props.node, {expanded: true}));
expect(props.onChange).toHaveBeenCalledWith({...updateNode(props.node, {expanded: true}), index: props.index});
});

it('double clicking in the parent node should call onChange with the correct params', () => {
const {props, wrapper} = setup({expanded: false});

wrapper.first().simulate('doubleClick');

expect(props.onChange).toHaveBeenCalledWith(updateNode(props.node, {expanded: true}));
expect(props.onChange).toHaveBeenCalledWith({...updateNode(props.node, {expanded: true}), index: props.index});
});
});
});
Expand Down
9 changes: 5 additions & 4 deletions src/renderers/__tests__/Favorite.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ describe('renderers Favorite', () => {
notFavorite: 'non-fav',
},
measure: jest.fn(),
index: 1,
};

const props = {...baseProps, ...extraProps};
Expand All @@ -45,15 +46,15 @@ describe('renderers Favorite', () => {

favoriteIconWrapper.simulate('click');

expect(props.onChange).toHaveBeenCalledWith(updateNode(props.node, {favorite: false}));
expect(props.onChange).toHaveBeenCalledWith({...updateNode(props.node, {favorite: false}), index: props.index});
});

it('pressing enter should call onChange with the correct params', () => {
const {favoriteIconWrapper, props} = setupFavorite();

favoriteIconWrapper.simulate('keyDown', {keyCode: KEY_CODES.Enter});

expect(props.onChange).toHaveBeenCalledWith(updateNode(props.node, {favorite: false}));
expect(props.onChange).toHaveBeenCalledWith({...updateNode(props.node, {favorite: false}), index: props.index});
});
});

Expand All @@ -71,15 +72,15 @@ describe('renderers Favorite', () => {

favoriteIconWrapper.simulate('click');

expect(props.onChange).toHaveBeenCalledWith(updateNode(props.node, {favorite: true}));
expect(props.onChange).toHaveBeenCalledWith({...updateNode(props.node, {favorite: true}), index: props.index});
});

it('pressing enter should call onChange with the correct params', () => {
const {favoriteIconWrapper, props} = setupNotFavorite();

favoriteIconWrapper.simulate('keyDown', {keyCode: KEY_CODES.Enter});

expect(props.onChange).toHaveBeenCalledWith(updateNode(props.node, {favorite: true}));
expect(props.onChange).toHaveBeenCalledWith({...updateNode(props.node, {favorite: true}), index: props.index});
});
});
});
1 change: 1 addition & 0 deletions src/shapes/rendererShapes.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@ export const Renderer = {
measure: PropTypes.func,
onChange: PropTypes.func.isRequired,
node: PropTypes.shape(FlattenedNode),
index: PropTypes.number.isRequired,
};

0 comments on commit 364e4aa

Please sign in to comment.