Skip to content

Commit 97a3b4d

Browse files
committed
fix(cascader): fix caret rotation origin and add changeOnSelect demo
Arrow span lacked display:inline-flex so rotate(180deg) pivoted off-center. Add demo for changeOnSelect and displayRender props.
1 parent 4ef6ad3 commit 97a3b4d

3 files changed

Lines changed: 66 additions & 0 deletions

File tree

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
<demo>
2+
3+
### Change On Select
4+
5+
By default, only selecting a leaf node triggers `onChange`. Set `changeOnSelect` to fire `onChange` at every level, allowing partial selections. Use `displayRender` to customize how the selected path is shown.
6+
7+
```jsx live
8+
() => {
9+
const options = [
10+
{
11+
value: 'jiangsu',
12+
label: 'Jiangsu',
13+
children: [
14+
{
15+
value: 'nanjing',
16+
label: 'Nanjing',
17+
children: [
18+
{ value: 'zhonghuamen', label: 'Zhong Hua Men' },
19+
],
20+
},
21+
],
22+
},
23+
{
24+
value: 'zhejiang',
25+
label: 'Zhejiang',
26+
children: [
27+
{
28+
value: 'hangzhou',
29+
label: 'Hangzhou',
30+
children: [
31+
{ value: 'xihu', label: 'West Lake' },
32+
],
33+
},
34+
],
35+
},
36+
];
37+
38+
const [value, setValue] = React.useState([]);
39+
40+
return (
41+
<div style={{ display: 'flex', flexDirection: 'column', gap: '16px' }}>
42+
<Cascader
43+
options={options}
44+
value={value}
45+
onChange={(val) => setValue(val)}
46+
changeOnSelect
47+
placeholder="Select any level"
48+
/>
49+
<span>Selected: {value.length > 0 ? value.join(' / ') : 'none'}</span>
50+
<Cascader
51+
options={options}
52+
defaultValue={['zhejiang', 'hangzhou', 'xihu']}
53+
displayRender={(labels) => labels.join(' > ')}
54+
placeholder="Custom separator"
55+
/>
56+
</div>
57+
);
58+
}
59+
```
60+
61+
</demo>

components/cascader/index.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import Basic from './demo/basic.md'
2+
import ChangeOnSelect from './demo/change-on-select.md'
23
import DefaultValue from './demo/default-value.md'
34
import Hover from './demo/hover.md'
45
import Disabled from './demo/disabled.md'
@@ -29,6 +30,7 @@ import { Cascader } from 'tiny-ui';
2930
<column>
3031
<DefaultValue/>
3132
<Disabled/>
33+
<ChangeOnSelect/>
3234
</column>
3335
</layout>
3436

components/cascader/style/_index.scss

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@
8484
font-size: 12px;
8585
color: var(--ty-color-text-secondary, #{$gray-400});
8686
transition: transform 0.2s;
87+
display: inline-flex;
88+
align-items: center;
89+
justify-content: center;
8790
}
8891

8992
&_open &__arrow {

0 commit comments

Comments
 (0)