Skip to content

Commit

Permalink
fix: Cascader muiltple mode should display full path of selected value (
Browse files Browse the repository at this point in the history
#238)

* fix: Cascader muiltple mode should display full path of selected value

ant-design/ant-design#33683

* fix: lint

* fix: lint
  • Loading branch information
afc163 authored Jan 18, 2022
1 parent 54b37d3 commit dde66d2
Show file tree
Hide file tree
Showing 4 changed files with 7 additions and 8 deletions.
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,13 @@
"@types/react": "^16.8.19",
"@types/react-dom": "^17.0.11",
"@types/warning": "^3.0.0",
"@umijs/fabric": "^2.10.1",
"cross-env": "^7.0.0",
"dumi": "^1.1.12",
"enzyme": "^3.3.0",
"enzyme-adapter-react-16": "^1.0.2",
"enzyme-to-json": "^3.2.1",
"eslint": "^7.1.0",
"father": "^2.13.2",
"gh-pages": "^3.1.0",
"glob": "^7.1.6",
Expand Down
1 change: 0 additions & 1 deletion src/Cascader.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -305,7 +305,6 @@ const Cascader = React.forwardRef<CascaderRef, InternalCascaderProps>((props, re
deDuplicatedValues,
mergedOptions,
mergedFieldNames,
multiple,
displayRender,
);

Expand Down
10 changes: 4 additions & 6 deletions src/hooks/useDisplayValues.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,23 +12,21 @@ export default (
rawValues: SingleValueType[],
options: DefaultOptionType[],
fieldNames: InternalFieldNames,
multiple: boolean,
displayRender: CascaderProps['displayRender'],
) => {
return React.useMemo(() => {
const mergedDisplayRender =
displayRender ||
// Default displayRender
(labels => {
const mergedLabels = multiple ? labels.slice(-1) : labels;
const SPLIT = ' / ';

if (mergedLabels.every(label => ['string', 'number'].includes(typeof label))) {
return mergedLabels.join(SPLIT);
if (labels.every(label => ['string', 'number'].includes(typeof label))) {
return labels.join(SPLIT);
}

// If exist non-string value, use ReactNode instead
return mergedLabels.reduce((list, label, index) => {
return labels.reduce((list, label, index) => {
const keyedLabel = React.isValidElement(label)
? React.cloneElement(label, { key: index })
: label;
Expand All @@ -55,5 +53,5 @@ export default (
valueCells,
};
});
}, [rawValues, options, fieldNames, displayRender, multiple]);
}, [rawValues, options, fieldNames, displayRender]);
};
2 changes: 1 addition & 1 deletion tests/index.spec.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -764,7 +764,7 @@ describe('Cascader.Basic', () => {
);

expect(wrapper.find('.rc-cascader-selection-item-content').first().text()).toEqual('Parent');
expect(wrapper.find('.rc-cascader-selection-item-content').last().text()).toEqual('Child');
expect(wrapper.find('.rc-cascader-selection-item-content').last().text()).toEqual('Normal / Child');
});
});
});

1 comment on commit dde66d2

@vercel
Copy link

@vercel vercel bot commented on dde66d2 Jan 18, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.