Skip to content

Commit ec127dc

Browse files
authored
fix(pickers): clean button overlapping with value (#1984)
* fix(date-picker): add missing cleanable class * fix(daterange-picker): add missing cleanable class * fix(pickers): add missing cleanable class
1 parent 8d00b8d commit ec127dc

File tree

10 files changed

+29
-7
lines changed

10 files changed

+29
-7
lines changed

src/Cascader/Cascader.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -551,7 +551,8 @@ const Cascader: PickerComponent<CascaderProps> = React.forwardRef((props: Cascad
551551
...props,
552552
classPrefix,
553553
hasValue,
554-
name: 'cascader'
554+
name: 'cascader',
555+
cleanable
555556
});
556557

557558
// TODO: bad api design

src/DatePicker/DatePicker.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -519,7 +519,8 @@ const DatePicker: RsRefForwardingComponent<'div', DatePickerProps> = React.forwa
519519
...props,
520520
classPrefix,
521521
name: 'date',
522-
hasValue
522+
hasValue,
523+
cleanable
523524
});
524525

525526
const renderDate = useCallback(() => {

src/DatePicker/test/DatePickerSpec.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@ describe('DatePicker ', () => {
1111
assert.ok(instance.className.match(/\brs-picker-date\b/));
1212
});
1313

14+
it('Should be cleanable by default', () => {
15+
const instance = getDOMNode(<DatePicker value={new Date()} />);
16+
17+
expect(instance).to.have.class('rs-picker-cleanable');
18+
});
19+
1420
it('Should be disabled', () => {
1521
const instance = getDOMNode(<DatePicker disabled />);
1622
assert.ok(instance.className.match(/\bdisabled\b/));

src/DateRangePicker/DateRangePicker.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -698,7 +698,8 @@ const DateRangePicker: DateRangePicker = React.forwardRef((props: DateRangePicke
698698
...props,
699699
classPrefix,
700700
name: 'daterange',
701-
hasValue
701+
hasValue,
702+
cleanable
702703
});
703704

704705
return (

src/DateRangePicker/test/DateRangePickerSpec.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@ describe('DateRangePicker', () => {
4040
assert.ok(instance.className.match(/\brs-picker-daterange\b/));
4141
});
4242

43+
it('Should be cleanable by default', () => {
44+
const instance = getDOMNode(<DateRangePicker value={[new Date(), new Date()]} />);
45+
46+
expect(instance).to.have.class('rs-picker-cleanable');
47+
});
48+
4349
it('Should be disabled', () => {
4450
const instance = getDOMNode(<DateRangePicker disabled />);
4551
assert.ok(instance.className.match(/\bdisabled\b/));

src/InputPicker/InputPicker.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -721,7 +721,8 @@ const InputPicker: PickerComponent<InputPickerProps> = React.forwardRef(
721721
classPrefix,
722722
appearance,
723723
hasValue,
724-
name: 'input'
724+
name: 'input',
725+
cleanable
725726
});
726727

727728
const classes = merge(pickerClasses, {

src/MultiCascader/MultiCascader.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -536,7 +536,8 @@ const MultiCascader: PickerComponent<MultiCascaderProps> = React.forwardRef(
536536
...props,
537537
classPrefix,
538538
hasValue,
539-
name: 'cascader'
539+
name: 'cascader',
540+
cleanable
540541
});
541542

542543
if (inline) {

src/Picker/utils.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,9 @@ export function usePickerClassName(props: PickerClassNameProps): [string, string
9797
[`placement-${kebabCase(placementPolyfill(placement))}`]: placement,
9898
'read-only': readOnly,
9999
'has-value': hasValue,
100+
// fixme Bad implementation.
101+
// Should implement by modifying `.cleanable` styles according to `.has-value` class,
102+
// not by removing `.cleanable` class.
100103
cleanable: hasValue && cleanable,
101104
block,
102105
disabled,

src/SelectPicker/SelectPicker.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,8 @@ const SelectPicker: PickerComponent<SelectPickerProps> = React.forwardRef(
368368
classPrefix,
369369
appearance,
370370
hasValue,
371-
name: 'select'
371+
name: 'select',
372+
cleanable
372373
});
373374

374375
return (

src/TreePicker/TreePicker.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -859,7 +859,8 @@ const TreePicker: PickerComponent<TreePickerProps> = React.forwardRef((props, re
859859
classPrefix,
860860
appearance,
861861
hasValue: hasValidValue,
862-
name: 'tree'
862+
name: 'tree',
863+
cleanable
863864
});
864865

865866
if (inline) {

0 commit comments

Comments
 (0)