Skip to content

Commit 24158bb

Browse files
authored
Merge pull request #129 from nschroeter/accept-placeholder-elements
placeholder elements are now accepted without printing annoying warnings
2 parents 8b4d579 + 2671598 commit 24158bb

8 files changed

Lines changed: 64 additions & 5 deletions

src/lib/EasyDropdown.jsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,10 @@ EasyDropdown.propTypes = {
3333
PropTypes.string,
3434
PropTypes.number
3535
]),
36-
placeholder: PropTypes.string,
36+
placeholder: PropTypes.oneOfType([
37+
PropTypes.string,
38+
PropTypes.element
39+
]),
3740
attributes: PropTypes.object,
3841
cssClassPrefix: PropTypes.string,
3942
onFocus: PropTypes.func,

src/lib/EasyDropdown.test.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,20 @@ describe('EasyDropdown', () => {
2929
it('should use the default placeholder', () => {
3030
expect(wrapper.find('select>option:first-child').text()).toEqual(Globals.DEFAULT_SELECT_PLACEHOLDER);
3131
});
32-
it('should use the placeholder provided', () => {
32+
it('should use the placeholder string provided', () => {
3333
wrapper.setProps({placeholder: "test"});
3434
expect(wrapper.find('select>option:first-child').text()).toEqual("test");
3535
});
36+
it('should use the placeholder element provided', () => {
37+
let err = jest.spyOn(global.console, 'error');
38+
wrapper.setProps({placeholder: <span>test</span>});
39+
40+
expect(wrapper.find('select>option:first-child').text()).toEqual("test");
41+
expect(err).not.toHaveBeenCalled();
42+
43+
err.mockReset();
44+
err.mockRestore();
45+
});
3646

3747
it('should render 2 + 1 options including the disabled default one', () => {
3848
expect(wrapper.find('select>option')).toHaveLength(3);

src/lib/EasyEdit.jsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -506,7 +506,10 @@ EasyEdit.propTypes = {
506506
]),
507507
deleteButtonStyle: PropTypes.string,
508508
buttonsPosition: PropTypes.oneOf(['after', 'before']),
509-
placeholder: PropTypes.string,
509+
placeholder: PropTypes.oneOfType([
510+
PropTypes.string,
511+
PropTypes.element
512+
]),
510513
onCancel: PropTypes.func,
511514
onDelete: PropTypes.func,
512515
onValidate: PropTypes.func,

src/lib/EasyEdit.test.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -427,4 +427,20 @@ describe('EasyEdit', () => {
427427
wrapper.setProps({ value: "Updated Value", editMode: false });
428428
expect((wrapper.state().tempValue)).toEqual('Updated Value');
429429
});
430+
431+
it('should render a placeholder element', () => {
432+
let err = jest.spyOn(global.console, 'error');
433+
wrapper = shallow(
434+
<EasyEdit
435+
type="text"
436+
onSave={saveFn}
437+
onCancel={cancelFn}
438+
placeholder={<span>test</span>}
439+
/>);
440+
expect(wrapper.find('div.easy-edit-wrapper').text()).toEqual("test");
441+
expect(err).not.toHaveBeenCalled();
442+
443+
err.mockReset();
444+
err.mockRestore();
445+
});
430446
});

src/lib/EasyInput.jsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,10 @@ EasyInput.propTypes = {
2626
type: PropTypes.string.isRequired,
2727
onChange: PropTypes.func,
2828
value: PropTypes.string,
29-
placeholder: PropTypes.string,
29+
placeholder: PropTypes.oneOfType([
30+
PropTypes.string,
31+
PropTypes.element
32+
]),
3033
attributes: PropTypes.object,
3134
cssClassPrefix: PropTypes.string,
3235
onFocus: PropTypes.func,

src/lib/EasyInput.test.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,16 @@ describe('EasyInput', () => {
3636
expect(wrapper.find('input').props().placeholder).toEqual('TEST');
3737
});
3838

39+
it('should render a placeholder element', () => {
40+
let err = jest.spyOn(global.console, 'error');
41+
wrapper.setProps({placeholder: <span>TEST</span>});
42+
expect(wrapper.find('input').props().placeholder).toEqual(<span>TEST</span>);
43+
expect(err).not.toHaveBeenCalled();
44+
45+
err.mockReset();
46+
err.mockRestore();
47+
});
48+
3949
it('should not show a placeholder if there is a value available', () => {
4050
wrapper.setProps({value: 'Test'});
4151
expect(wrapper.find('input').props().value).toEqual('Test');

src/lib/EasyParagraph.jsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@ const EasyParagraph = (props) => {
2323
EasyParagraph.propTypes = {
2424
onChange: PropTypes.func,
2525
value: PropTypes.string,
26-
placeholder: PropTypes.string,
26+
placeholder: PropTypes.oneOfType([
27+
PropTypes.string,
28+
PropTypes.element
29+
]),
2730
attributes: PropTypes.object,
2831
cssClassPrefix: PropTypes.string,
2932
onBlur: PropTypes.func,

src/lib/EasyParagraph.test.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,17 @@ describe('EasyParagraph', () => {
3333
expect(wrapper.find('textarea').props().placeholder).toEqual('TEST');
3434
});
3535

36+
it('should use the provided placeholder element', () => {
37+
let err = jest.spyOn(global.console, 'error');
38+
39+
wrapper.setProps({placeholder: <span>TEST</span>});
40+
expect(wrapper.find('textarea').props().placeholder).toEqual(<span>TEST</span>);
41+
expect(err).not.toHaveBeenCalled();
42+
43+
err.mockReset();
44+
err.mockRestore();
45+
});
46+
3647
it('should not show a placeholder if there is a value available', () => {
3748
wrapper.setProps({value: 'Test'});
3849
expect(wrapper.find('textarea').props().value).toEqual('Test');

0 commit comments

Comments
 (0)