Skip to content

Commit

Permalink
fix: go to emptys
Browse files Browse the repository at this point in the history
  • Loading branch information
zombieJ committed Dec 11, 2023
1 parent e530ecb commit dd3498e
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 33 deletions.
8 changes: 4 additions & 4 deletions docs/examples/debug.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -99,16 +99,16 @@ export default () => {
<SinglePicker
// Shared
{...sharedLocale}
multiple
open
disabled
// multiple
// open
// disabled
ref={singleRef}
suffixIcon="🧶"
onChange={(val, text) => {
console.log('🔥 Change:', val, text);
}}
style={{ width: 300 }}
needConfirm={false}
// needConfirm={false}
/>
<br />
{/* <RangePicker
Expand Down
13 changes: 7 additions & 6 deletions src/NewPicker/PickerInput/hooks/useRangeValue.ts
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ export default function useRangeValue<ValueType extends DateType[], DateType ext
onChange,

// Checker
allowEmpty = [],
allowEmpty,
order,
} = info;

Expand Down Expand Up @@ -231,11 +231,12 @@ export default function useRangeValue<ValueType extends DateType[], DateType ext
const startEmpty = !start;
const endEmpty = !end;

const validateEmptyDateRange =
// Validate empty start
(!startEmpty || allowEmpty[0]) &&
// Validate empty end
(!endEmpty || allowEmpty[1]);
const validateEmptyDateRange = allowEmpty
? // Validate empty start
(!startEmpty || allowEmpty[0]) &&
// Validate empty end
(!endEmpty || allowEmpty[1])
: true;

// >>> Order
const validateOrder =
Expand Down
51 changes: 28 additions & 23 deletions tests/picker.spec.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,15 @@ import {
// MomentPicker,
DayPicker,
findCell,
getDay,
getMoment,
isOpen,
isSame,
openPicker,
selectCell,
} from './util/commonUtil';

const fakeTime = getMoment('1990-09-03 00:00:00').valueOf();
const fakeTime = getDay('1990-09-03 00:00:00').valueOf();

describe('Picker.Basic', () => {
let errorSpy;
Expand Down Expand Up @@ -180,11 +181,11 @@ describe('Picker.Basic', () => {
});
});

return;


describe('value', () => {
it('defaultValue', () => {
const { container } = render(<DayPicker defaultValue={getMoment('1989-11-28')} />);
const { container } = render(<DayPicker defaultValue={getDay('1989-11-28')} />);
expect(container.querySelector('input').value).toEqual('1989-11-28');
});

Expand All @@ -195,6 +196,8 @@ describe('Picker.Basic', () => {
selectCell(11);
closePicker(container);

expect(onChange).toHaveBeenCalled();

expect(isSame(onChange.mock.calls[0][0], '1990-09-11')).toBeTruthy();
expect(onChange.mock.calls[0][1]).toEqual('1990-09-11');
expect(container.querySelector('input').value).toEqual('1990-09-11');
Expand All @@ -203,7 +206,7 @@ describe('Picker.Basic', () => {
it('controlled', () => {
const onChange = jest.fn();
const { container, rerender } = render(
<DayPicker value={getMoment('2011-11-11')} onChange={onChange} />,
<DayPicker value={getDay('2011-11-11')} onChange={onChange} />,
);

openPicker(container);
Expand All @@ -218,12 +221,14 @@ describe('Picker.Basic', () => {
expect(document.querySelector('input').value).toEqual('2011-11-03');

// Raw change value
rerender(<DayPicker value={getMoment('1999-09-09')} onChange={onChange} />);
rerender(<DayPicker value={getDay('1999-09-09')} onChange={onChange} />);

expect(document.querySelector('input').value).toEqual('1999-09-09');
});
});

return;

describe('typing to change value', () => {
[
{
Expand Down Expand Up @@ -553,7 +558,7 @@ describe('Picker.Basic', () => {
expect(errorSpy).not.toHaveBeenCalled();
render(
<DayPicker
defaultValue={getMoment('1990-09-03')}
defaultValue={getDay('1990-09-03')}
suffixIcon={<span className="suffix-icon" />}
clearIcon={<span className="suffix-icon" />}
allowClear
Expand Down Expand Up @@ -614,14 +619,14 @@ describe('Picker.Basic', () => {

describe('time step', () => {
it('work with now', () => {
jest.setSystemTime(getMoment('1990-09-03 00:09:00').valueOf());
jest.setSystemTime(getDay('1990-09-03 00:09:00').valueOf());
const onSelect = jest.fn();
const { container } = render(<DayPicker onSelect={onSelect} picker="time" minuteStep={10} />);
openPicker(container);
// document.querySelector('.rc-picker-now > a').simulate('click');
fireEvent.click(document.querySelector('.rc-picker-now > a'));
expect(isSame(onSelect.mock.calls[0][0], '1990-09-03 00:00:59', 'second')).toBeTruthy();
jest.setSystemTime(getMoment('1990-09-03 00:00:00').valueOf());
jest.setSystemTime(getDay('1990-09-03 00:00:00').valueOf());
});

it('should show warning when hour step is invalid', () => {
Expand All @@ -645,7 +650,7 @@ describe('Picker.Basic', () => {
},
disabledSeconds: () => [0],
})}
value={getMoment('2000-01-01 21:40:40')}
value={getDay('2000-01-01 21:40:40')}
format="YYYY-MM-DD hh:mm:ss A"
use12Hours
showTime
Expand Down Expand Up @@ -737,7 +742,7 @@ describe('Picker.Basic', () => {
});

it('week picker show correct year', () => {
const { container } = render(<DayPicker value={getMoment('2019-12-31')} picker="week" />);
const { container } = render(<DayPicker value={getDay('2019-12-31')} picker="week" />);

expect(container.querySelector('input').value).toEqual('2020-1st');
});
Expand Down Expand Up @@ -785,7 +790,7 @@ describe('Picker.Basic', () => {
const { container } = render(
<DayPicker
picker="time"
defaultOpenValue={getMoment('2000-01-01 00:10:23')}
defaultOpenValue={getDay('2000-01-01 00:10:23')}
onChange={onChange}
/>,
);
Expand All @@ -804,7 +809,7 @@ describe('Picker.Basic', () => {
});

it('close to reset', () => {
const { container } = render(<DayPicker defaultValue={getMoment('2000-01-01')} />);
const { container } = render(<DayPicker defaultValue={getDay('2000-01-01')} />);

openPicker(container);
fireEvent.change(document.querySelector('input'), {
Expand All @@ -820,7 +825,7 @@ describe('Picker.Basic', () => {

it('switch picker should change format', () => {
const { rerender } = render(
<DayPicker picker="date" showTime defaultValue={getMoment('1999-09-03')} />,
<DayPicker picker="date" showTime defaultValue={getDay('1999-09-03')} />,
);
expect(document.querySelector('input').value).toEqual('1999-09-03 00:00:00');

Expand All @@ -834,7 +839,7 @@ describe('Picker.Basic', () => {
<DayPicker
picker={picker as any}
showTime={false}
defaultValue={getMoment('1999-09-03')}
defaultValue={getDay('1999-09-03')}
/>,
);

Expand Down Expand Up @@ -869,7 +874,7 @@ describe('Picker.Basic', () => {
const { container } = render(
<DayPicker
allowClear
defaultValue={getMoment('2020-09-17')}
defaultValue={getDay('2020-09-17')}
format={[(val: Moment) => `custom format:${val.format('YYYYMMDD')}`, 'YYYY-MM-DD']}
/>,
);
Expand All @@ -888,7 +893,7 @@ describe('Picker.Basic', () => {
render(
<DayPicker
allowClear={{ clearIcon: <span className="custom-clear">clear</span> }}
defaultValue={getMoment('2020-09-17')}
defaultValue={getDay('2020-09-17')}
/>,
);

Expand Down Expand Up @@ -922,7 +927,7 @@ describe('Picker.Basic', () => {
});

it('should restore when leave', () => {
render(<DayPicker open defaultValue={getMoment('2020-07-22')} />);
render(<DayPicker open defaultValue={getDay('2020-07-22')} />);
const cell = findCell(24);
fireEvent.mouseEnter(cell);
jest.runAllTimers();
Expand All @@ -940,7 +945,7 @@ describe('Picker.Basic', () => {
});

it('should restore after selecting cell', () => {
const { container } = render(<DayPicker defaultValue={getMoment('2020-07-22')} />);
const { container } = render(<DayPicker defaultValue={getDay('2020-07-22')} />);
openPicker(container);
const cell = findCell(24);
// cell.simulate('mouseEnter');
Expand All @@ -958,7 +963,7 @@ describe('Picker.Basic', () => {
});

it('change value when hovering', () => {
const { container } = render(<DayPicker defaultValue={getMoment('2020-07-22')} />);
const { container } = render(<DayPicker defaultValue={getDay('2020-07-22')} />);
openPicker(container);
const cell = findCell(24);
// cell.simulate('mouseEnter');
Expand Down Expand Up @@ -1019,7 +1024,7 @@ describe('Picker.Basic', () => {
it('work', () => {
jest.useFakeTimers();
const { unmount } = render(
<DayPicker picker="time" defaultValue={getMoment('2020-07-22 09:03:28')} open />,
<DayPicker picker="time" defaultValue={getDay('2020-07-22 09:03:28')} open />,
);
jest.runAllTimers();

Expand Down Expand Up @@ -1120,21 +1125,21 @@ describe('Picker.Basic', () => {

it('switch picker locale should reformat value', () => {
const { container, rerender } = render(
<DayPicker value={getMoment('2011-11-11')} format={'dddd'} locale={enUS} />,
<DayPicker value={getDay('2011-11-11')} format={'dddd'} locale={enUS} />,
);
expect(container.querySelector('input').value).toEqual('Friday');

// Switch locale
moment.locale('zh-cn');
rerender(<DayPicker value={getMoment('2011-11-11')} format={'dddd'} locale={zhCN} />);
rerender(<DayPicker value={getDay('2011-11-11')} format={'dddd'} locale={zhCN} />);
expect(container.querySelector('input').value).toEqual('星期五');

// Reset locale
moment.locale('en');
});

it('select minutes and seconds directly in dateTime mode will apply the current time', () => {
jest.setSystemTime(getMoment('2023-09-04 21:49:10').valueOf());
jest.setSystemTime(getDay('2023-09-04 21:49:10').valueOf());
const ui = <DayPicker showTime />;
const { container } = render(ui);

Expand Down

0 comments on commit dd3498e

Please sign in to comment.