Skip to content

Commit c78b9d6

Browse files
committed
Merge pull request marmelab#55 from marmelab/reference_many_field_view
[RFR] Implement ReferenceMany, Choice and Choices Field views and fix SelectField css
2 parents 4d8aa5b + 8ab86b0 commit c78b9d6

40 files changed

+468
-241
lines changed

app/Actions/EntityActions.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,12 @@ export default {
6666
});
6767
},
6868

69-
updateData(fieldName, value) {
69+
updateData(fieldName, value, choiceFields=[]) {
7070
AppDispatcher.dispatch({
7171
actionType: 'update_data',
7272
fieldName,
73-
value
73+
value,
74+
choiceFields
7475
});
7576
},
7677

app/Actions/__mocks__/ListActions.js

Lines changed: 0 additions & 4 deletions
This file was deleted.

app/AdminBootstrap.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,17 @@ import ReferenceManyFieldView from './Field/ReferenceManyFieldView';
1818
import TextFieldView from './Field/TextFieldView';
1919
import TemplateFieldView from './Field/TemplateFieldView';
2020
import WysiwygFieldView from './Field/WysiwygFieldView';
21+
import ChoiceFieldView from './Field/ChoiceFieldView';
22+
import ChoicesFieldView from './Field/ChoicesFieldView';
2123

2224
FieldViewConfiguration.registerFieldView('boolean', BooleanFieldView);
2325
FieldViewConfiguration.registerFieldView('date', DateFieldView);
2426
FieldViewConfiguration.registerFieldView('datetime', DateFieldView);
2527
FieldViewConfiguration.registerFieldView('email', EmailFieldView);
2628
FieldViewConfiguration.registerFieldView('json', JsonFieldView);
2729
FieldViewConfiguration.registerFieldView('number', NumberFieldView);
30+
FieldViewConfiguration.registerFieldView('choice', ChoiceFieldView);
31+
FieldViewConfiguration.registerFieldView('choices', ChoicesFieldView);
2832
FieldViewConfiguration.registerFieldView('referenced_list', ReferencedListFieldView);
2933
FieldViewConfiguration.registerFieldView('reference', ReferenceFieldView);
3034
FieldViewConfiguration.registerFieldView('reference_many', ReferenceManyFieldView);

app/Component/Button/__tests__/MaBackButtonTest.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
jest.dontMock('../MaBackButton');
2-
3-
const React = require('react/addons');
4-
const TestUtils = React.addons.TestUtils;
1+
jest.autoMockOff();
52

63
describe('MaBackButton', () => {
7-
let MaBackButton;
4+
let React, TestUtils, MaBackButton;
85

96
beforeEach(() => {
7+
React = require('react/addons');
8+
TestUtils = React.addons.TestUtils;
109
MaBackButton = require('../MaBackButton');
1110
});
1211

app/Component/Button/__tests__/MaCreateButtonTest.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
jest.autoMockOff();
22
jest.setMock('react-router', {Link : require('../__mocks__/Link')});
33

4-
const React = require('react/addons');
5-
const TestUtils = React.addons.TestUtils;
6-
74
describe('MaCreateButton', () => {
8-
let MaCreateButton;
5+
let React, TestUtils, MaCreateButton;
96

107
beforeEach(() => {
8+
React = require('react/addons');
9+
TestUtils = React.addons.TestUtils;
1110
MaCreateButton = require('../MaCreateButton');
1211
});
1312

app/Component/Button/__tests__/MaDeleteButtonTest.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,17 @@
11
jest.autoMockOff();
22
jest.setMock('react-router', {Link : require('../__mocks__/Link')});
33

4-
const React = require('react/addons');
5-
const TestUtils = React.addons.TestUtils;
6-
74
describe('MaDeleteButton', () => {
8-
let MaDeleteButton;
9-
let entry;
5+
let React, TestUtils, MaDeleteButton, entry;
106

117
beforeEach(() => {
8+
React = require('react/addons');
9+
TestUtils = React.addons.TestUtils;
1210
MaDeleteButton = require('../MaDeleteButton');
1311

1412
entry = {
1513
identifierValue: 23
16-
}
14+
};
1715
});
1816

1917
describe('With good props', () => {

app/Component/Button/__tests__/MaEditButtonTest.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,17 @@
11
jest.autoMockOff();
22
jest.setMock('react-router', {Link : require('../__mocks__/Link')});
33

4-
const React = require('react/addons');
5-
const TestUtils = React.addons.TestUtils;
6-
74
describe('MaEditButton', () => {
8-
let MaEditButton;
9-
let entry;
5+
let React, TestUtils, MaEditButton, entry;
106

117
beforeEach(() => {
8+
React = require('react/addons');
9+
TestUtils = React.addons.TestUtils;
1210
MaEditButton = require('../MaEditButton');
1311

1412
entry = {
1513
identifierValue: 23
16-
}
14+
};
1715
});
1816

1917
describe('With good props', () => {

app/Component/Button/__tests__/MaListButtonTest.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
jest.autoMockOff();
22
jest.setMock('react-router', {Link : require('../__mocks__/Link')});
33

4-
const React = require('react/addons');
5-
const TestUtils = React.addons.TestUtils;
6-
74
describe('MaListButton', () => {
8-
let MaListButton;
5+
let React, TestUtils, MaListButton;
96

107
beforeEach(() => {
8+
React = require('react/addons');
9+
TestUtils = React.addons.TestUtils;
1110
MaListButton = require('../MaListButton');
1211
});
1312

app/Component/Button/__tests__/MaShowButtonTest.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,17 @@
11
jest.autoMockOff();
22
jest.setMock('react-router', {Link : require('../__mocks__/Link')});
33

4-
const React = require('react/addons');
5-
const TestUtils = React.addons.TestUtils;
6-
74
describe('MaShowButton', () => {
8-
let MaShowButton;
9-
let entry;
5+
let React, TestUtils, MaShowButton, entry;
106

117
beforeEach(() => {
8+
React = require('react/addons');
9+
TestUtils = React.addons.TestUtils;
1210
MaShowButton = require('../MaShowButton');
1311

1412
entry = {
1513
identifierValue: 23
16-
}
14+
};
1715
});
1816

1917
describe('With good props', () => {

app/Component/Column/ChoicesColumn.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import React from 'react';
2+
3+
class ChoicesColumn extends React.Component {
4+
render() {
5+
const { values } = this.props;
6+
7+
if (!values) {
8+
return <span />;
9+
}
10+
11+
return (
12+
<span className="choices-column">
13+
{values.map((value, i) => {
14+
return <span className="label label-default">{value}</span>
15+
})}
16+
</span>
17+
);
18+
}
19+
}
20+
21+
ChoicesColumn.propTypes = {
22+
values: React.PropTypes.array.isRequired
23+
};
24+
25+
require('../../autoloader')('ChoicesColumn', ChoicesColumn);
26+
27+
export default ChoicesColumn;

0 commit comments

Comments
 (0)