diff --git a/docs/app/Demos/PowerSelectMultiple/CustomSelectedOption.js b/docs/app/Demos/PowerSelectMultiple/CustomSelectedOption.js
index cb4073b..f3b3b16 100644
--- a/docs/app/Demos/PowerSelectMultiple/CustomSelectedOption.js
+++ b/docs/app/Demos/PowerSelectMultiple/CustomSelectedOption.js
@@ -9,22 +9,11 @@ const CustomOptionComponnet = ({ option }) => (
);
-const CustomSelectedOptionComponent = ({ option, optionLabelPath, onCloseClick, select }) => (
-
-
-
- {option[optionLabelPath]}
-
- {
- event.stopPropagation();
- onCloseClick({ option, select });
- }}
- >
- ×
-
-
+const CustomSelectedOptionComponent = ({ option }) => (
+
+
+ {option.name}
+
);
export default class ArrayOfObjectsDemo extends Component {
diff --git a/src/PowerSelectMultiple/SelectedOption.js b/src/PowerSelectMultiple/SelectedOption.js
index b49e274..b301a4a 100644
--- a/src/PowerSelectMultiple/SelectedOption.js
+++ b/src/PowerSelectMultiple/SelectedOption.js
@@ -1,4 +1,5 @@
import React, { isValidElement, cloneElement } from 'react';
+import { renderComponent } from '../utils';
export default function SelectedOption(props) {
let {
@@ -10,13 +11,6 @@ export default function SelectedOption(props) {
select,
} = props;
let value = null;
- let SelectedOptionComponent = selectedOptionComponent;
- if (isValidElement(SelectedOptionComponent)) {
- return cloneElement(SelectedOptionComponent, props);
- }
- if (SelectedOptionComponent) {
- return ;
- }
if (typeof option === 'object') {
if (optionLabelPath) {
value = option[optionLabelPath];
@@ -27,7 +21,13 @@ export default function SelectedOption(props) {
}
return (
- {value}
+
+ {selectedOptionComponent ? (
+ renderComponent(selectedOptionComponent, { option, select })
+ ) : (
+ value
+ )}
+
{showOptionClose ? (
', () => {
expect(powerselect.renderedSelectedOptions.length).toBe(3);
expect(powerselect.isOptionsPresentInDropdown()).toBeFalsy();
});
+
+ it('should render custom selected option component when passed', () => {
+ let selectedOptions = countries.slice(0, 3);
+ const wrapper = powerselect.renderWithProps({
+ selected: selectedOptions,
+ selectedOptionComponent: ({ option }) => {
+ return {option.name};
+ },
+ });
+ expect(powerselect.renderedSelectedOptions.length).toBe(3);
+ expect(wrapper.find('span.customSelectedOption').length).toBe(3);
+ expect(
+ wrapper.containsAllMatchingElements([
+ {selectedOptions[0].name},
+ {selectedOptions[1].name},
+ {selectedOptions[2].name},
+ ])
+ ).toBeTruthy();
+ });
});