@king-design/intact 3.6.0-beta.0 → 3.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/components/.DS_Store +0 -0
  2. package/components/cascader/index.spec.ts +7 -6
  3. package/components/datepicker/basepicker.ts +26 -314
  4. package/components/datepicker/calendar.ts +3 -1
  5. package/components/datepicker/calendar.vdt +5 -2
  6. package/components/datepicker/dayjs.ts +2 -16
  7. package/components/datepicker/demos/multiple.md +5 -0
  8. package/components/datepicker/demos/yearMonth.md +2 -8
  9. package/components/datepicker/helpers.ts +5 -7
  10. package/components/datepicker/index.md +1 -2
  11. package/components/datepicker/index.spec.ts +551 -139
  12. package/components/datepicker/index.ts +16 -33
  13. package/components/datepicker/index.vdt +41 -35
  14. package/components/datepicker/shortcuts.ts +1 -1
  15. package/components/datepicker/styles.ts +27 -18
  16. package/components/datepicker/useConfirm.ts +82 -0
  17. package/components/datepicker/useDisabled.ts +29 -31
  18. package/components/datepicker/useFormats.ts +8 -4
  19. package/components/datepicker/useHighlight.ts +81 -0
  20. package/components/datepicker/useKeyboards.ts +2 -1
  21. package/components/datepicker/useMergeRange.ts +12 -12
  22. package/components/datepicker/useMonths.ts +6 -3
  23. package/components/datepicker/usePanel.ts +19 -19
  24. package/components/datepicker/useShowDate.ts +21 -41
  25. package/components/datepicker/useStatus.ts +34 -15
  26. package/components/datepicker/useValue.ts +43 -72
  27. package/components/datepicker/useValueBase.ts +309 -0
  28. package/components/datepicker/useWeeks.ts +1 -1
  29. package/components/datepicker/useYears.ts +7 -3
  30. package/components/descriptions/.DS_Store +0 -0
  31. package/components/dropdown/dropdown.ts +5 -4
  32. package/components/dropdown/index.md +1 -0
  33. package/components/dropdown/item.ts +1 -1
  34. package/components/dropdown/useKeyboard.ts +0 -1
  35. package/components/input/index.spec.ts +42 -0
  36. package/components/input/index.ts +8 -0
  37. package/components/input/index.vdt +3 -4
  38. package/components/input/useAutoWidth.ts +19 -1
  39. package/components/menu/.DS_Store +0 -0
  40. package/components/menu/demos/.DS_Store +0 -0
  41. package/components/scrollSelect/useMouseEvents.ts +5 -4
  42. package/components/select/base.ts +3 -2
  43. package/components/select/base.vdt +2 -1
  44. package/components/select/demos/creatable.md +2 -2
  45. package/components/select/index.md +1 -1
  46. package/components/select/index.spec.ts +107 -34
  47. package/components/select/option.ts +2 -1
  48. package/components/select/select.ts +1 -0
  49. package/components/select/styles.ts +3 -1
  50. package/components/select/useInput.ts +5 -9
  51. package/components/table/.DS_Store +0 -0
  52. package/components/table/index.spec.ts +69 -1
  53. package/components/table/useStickyHeader.ts +1 -1
  54. package/components/timepicker/index.spec.ts +145 -27
  55. package/components/timepicker/panelPicker.ts +10 -4
  56. package/components/timepicker/panelPicker.vdt +3 -5
  57. package/components/timepicker/styles.ts +1 -0
  58. package/components/timepicker/useConfirm.ts +33 -0
  59. package/components/timepicker/useDefaultValue.ts +30 -0
  60. package/components/timepicker/useDisabled.ts +17 -4
  61. package/components/timepicker/useFormats.ts +1 -1
  62. package/components/timepicker/useValue.ts +22 -19
  63. package/components/tour/.DS_Store +0 -0
  64. package/components/tour/index.spec.ts +1 -1
  65. package/components/virtualList/.DS_Store +0 -0
  66. package/components/virtualList/demos/.DS_Store +0 -0
  67. package/es/components/cascader/index.spec.js +18 -19
  68. package/es/components/datepicker/basepicker.d.ts +6 -27
  69. package/es/components/datepicker/basepicker.js +23 -268
  70. package/es/components/datepicker/calendar.d.ts +4 -2
  71. package/es/components/datepicker/dayjs.d.ts +2 -13
  72. package/es/components/datepicker/helpers.d.ts +3 -2
  73. package/es/components/datepicker/helpers.js +2 -3
  74. package/es/components/datepicker/index.d.ts +21 -29
  75. package/es/components/datepicker/index.js +22 -32
  76. package/es/components/datepicker/index.spec.js +1333 -578
  77. package/es/components/datepicker/index.vdt.js +39 -38
  78. package/es/components/datepicker/shortcuts.d.ts +1 -1
  79. package/es/components/datepicker/styles.d.ts +7 -2
  80. package/es/components/datepicker/styles.js +10 -15
  81. package/es/components/datepicker/useConfirm.d.ts +6 -0
  82. package/es/components/datepicker/useConfirm.js +65 -0
  83. package/es/components/datepicker/useDisabled.d.ts +5 -3
  84. package/es/components/datepicker/useDisabled.js +22 -27
  85. package/es/components/datepicker/useFormats.d.ts +2 -2
  86. package/es/components/datepicker/useFormats.js +6 -2
  87. package/es/components/datepicker/useHighlight.d.ts +14 -0
  88. package/es/components/datepicker/useHighlight.js +60 -0
  89. package/es/components/datepicker/useKeyboards.js +2 -1
  90. package/es/components/datepicker/useMergeRange.d.ts +1 -1
  91. package/es/components/datepicker/useMergeRange.js +11 -16
  92. package/es/components/datepicker/useMonths.js +5 -3
  93. package/es/components/datepicker/usePanel.d.ts +1 -10
  94. package/es/components/datepicker/usePanel.js +19 -32
  95. package/es/components/datepicker/useShowDate.d.ts +1 -1
  96. package/es/components/datepicker/useShowDate.js +15 -40
  97. package/es/components/datepicker/useStatus.js +33 -16
  98. package/es/components/datepicker/useValue.d.ts +11 -6
  99. package/es/components/datepicker/useValue.js +49 -69
  100. package/es/components/datepicker/useValueBase.d.ts +28 -0
  101. package/es/components/datepicker/useValueBase.js +277 -0
  102. package/es/components/datepicker/useYears.js +6 -3
  103. package/es/components/dropdown/dropdown.d.ts +1 -0
  104. package/es/components/dropdown/dropdown.js +7 -4
  105. package/es/components/input/index.d.ts +2 -0
  106. package/es/components/input/index.js +6 -0
  107. package/es/components/input/index.spec.js +45 -0
  108. package/es/components/input/index.vdt.js +4 -3
  109. package/es/components/input/useAutoWidth.d.ts +2 -0
  110. package/es/components/input/useAutoWidth.js +19 -1
  111. package/es/components/scrollSelect/useMouseEvents.js +5 -4
  112. package/es/components/select/base.d.ts +1 -1
  113. package/es/components/select/base.js +3 -2
  114. package/es/components/select/base.vdt.js +4 -3
  115. package/es/components/select/index.spec.js +158 -84
  116. package/es/components/select/option.js +2 -1
  117. package/es/components/select/select.js +2 -1
  118. package/es/components/select/styles.d.ts +79 -0
  119. package/es/components/select/styles.js +1 -0
  120. package/es/components/select/useInput.d.ts +1 -1
  121. package/es/components/select/useInput.js +4 -4
  122. package/es/components/table/index.spec.js +84 -6
  123. package/es/components/table/useStickyHeader.js +1 -1
  124. package/es/components/timepicker/index.spec.js +298 -128
  125. package/es/components/timepicker/panelPicker.d.ts +21 -16
  126. package/es/components/timepicker/panelPicker.js +7 -4
  127. package/es/components/timepicker/panelPicker.vdt.js +5 -9
  128. package/es/components/timepicker/selectPicker.d.ts +4 -3
  129. package/es/components/timepicker/styles.js +1 -1
  130. package/es/components/timepicker/useConfirm.d.ts +6 -0
  131. package/es/components/timepicker/useConfirm.js +19 -0
  132. package/es/components/timepicker/useDefaultValue.d.ts +4 -0
  133. package/es/components/timepicker/useDefaultValue.js +27 -0
  134. package/es/components/timepicker/useDisabled.d.ts +6 -3
  135. package/es/components/timepicker/useDisabled.js +13 -4
  136. package/es/components/timepicker/useFormats.d.ts +1 -1
  137. package/es/components/timepicker/useValue.d.ts +13 -8
  138. package/es/components/timepicker/useValue.js +14 -15
  139. package/es/components/tour/index.spec.js +1 -1
  140. package/es/index.d.ts +2 -2
  141. package/es/index.js +2 -2
  142. package/es/site/data/components/datepicker/demos/multiple/index.d.ts +1 -0
  143. package/es/site/data/components/datepicker/demos/multiple/index.js +2 -1
  144. package/es/site/data/components/datepicker/demos/multiple/react.d.ts +1 -0
  145. package/es/site/data/components/datepicker/demos/multiple/react.js +13 -2
  146. package/es/site/data/components/datepicker/demos/yearMonth/index.d.ts +0 -2
  147. package/es/site/data/components/datepicker/demos/yearMonth/index.js +1 -3
  148. package/es/site/data/components/datepicker/demos/yearMonth/react.d.ts +0 -2
  149. package/es/site/data/components/datepicker/demos/yearMonth/react.js +1 -21
  150. package/es/site/data/components/select/demos/creatable/react.js +2 -2
  151. package/es/site/data/components/select/demos/searchable/index.js +1 -1
  152. package/es/site/data/components/select/demos/searchable/react.js +1 -1
  153. package/es/site/data/components/tour/demos/customText/index.d.ts +19 -6
  154. package/es/site/data/components/tour/demos/customText/index.js +18 -17
  155. package/es/site/data/components/tour/demos/customText/react.d.ts +20 -6
  156. package/es/site/data/components/tour/demos/customText/react.js +31 -27
  157. package/index.ts +2 -2
  158. package/package.json +2 -2
  159. package/styles/.DS_Store +0 -0
  160. package/components/datepicker/demos/nowrap.md +0 -35
  161. package/components/datepicker/usePosition.ts +0 -169
  162. package/es/components/datepicker/usePosition.d.ts +0 -10
  163. package/es/components/datepicker/usePosition.js +0 -166
  164. package/es/site/data/components/datepicker/demos/nowrap/index.d.ts +0 -10
  165. package/es/site/data/components/datepicker/demos/nowrap/index.js +0 -19
  166. package/es/site/data/components/datepicker/demos/nowrap/react.d.ts +0 -10
  167. package/es/site/data/components/datepicker/demos/nowrap/react.js +0 -49
  168. package/es/site/data/components/tour/demos/customButtons/index.d.ts +0 -33
  169. package/es/site/data/components/tour/demos/customButtons/index.js +0 -55
  170. package/es/site/data/components/tour/demos/customButtons/react.d.ts +0 -33
  171. package/es/site/data/components/tour/demos/customButtons/react.js +0 -99
@@ -10,14 +10,18 @@ import {useValue} from './useValue';
10
10
  import {useDisabled} from './useDisabled';
11
11
  import {usePanel} from '../datepicker/usePanel';
12
12
  import {State} from '../../hooks/useState';
13
- import {PanelTypes} from '../datepicker/usePanel';
14
13
  import {useStep} from './useStep';
15
14
  import {
16
15
  TimepickerProps,
17
16
  TimepickerEvents,
18
17
  TimepickerBlocks,
19
18
  typeDefs,
19
+ NOW_START,
20
+ NOW_END,
20
21
  } from './constants';
22
+ import { useConfirm } from './useConfirm';
23
+ import { StateValueItem } from '../datepicker/useValueBase';
24
+ import { useDefaultValue } from './useDefaultValue';
21
25
 
22
26
  export class PanelPicker<
23
27
  Multipe extends boolean = false,
@@ -31,10 +35,12 @@ export class PanelPicker<
31
35
  static typeDefs = typeDefs;
32
36
 
33
37
  public formats = useFormats();
34
- public disabled = useDisabled(this.formats);
35
- public panel = usePanel(PanelTypes.Time);
36
- public value = useValue(this.formats, this.disabled, this.panel);
38
+ public defaultValue = useDefaultValue();
39
+ public disabled = useDisabled(this.formats, this.defaultValue);
40
+ public panel = usePanel();
41
+ public value = useValue(this.formats, this.disabled, this.panel, this.defaultValue);
37
42
  public step = useStep(this.disabled, this.formats);
43
+ public confirm = useConfirm(this.value, this.formats.getValueString, this.defaultValue);
38
44
 
39
45
  protected getPlaceholder() {
40
46
  const {placeholder, range} = this.get();
@@ -7,11 +7,11 @@ import {Button} from '../button';
7
7
  import {PanelFlags} from '../datepicker/usePanel';
8
8
  import {last} from '../datepicker/helpers';
9
9
  import {ScrollSelect} from '../scrollSelect';
10
+ import { makeStyles as makeStylesInheritDatepicker } from '../datepicker/styles';
10
11
 
11
12
  const {className, range, multiple, min, max} = this.get();
12
13
  const {
13
14
  value: {value},
14
- onConfirm,
15
15
  onChangeTime,
16
16
  onChangeTimeByStep,
17
17
  getTimeValue,
@@ -19,6 +19,7 @@ const {
19
19
  } = this.value;
20
20
  const lastValue = last(value);
21
21
  const { k } = this.config;
22
+ const { onConfirm } = this.confirm;
22
23
 
23
24
  const classNameObj = {
24
25
  [`${k}-time-content`]: true,
@@ -57,7 +58,7 @@ const generatePanel = flag => {
57
58
  );
58
59
  };
59
60
 
60
- <t:super class={`${k}-timepicker`}>
61
+ <t:super class={`${k}-timepicker ${makeStylesInheritDatepicker(k)}`}>
61
62
  <b:base-menu>
62
63
  <DropdownMenu class={classNameObj}>
63
64
  <div class={`${k}-datepicker-wrapper`}>
@@ -66,9 +67,6 @@ const generatePanel = flag => {
66
67
  {range ? generatePanel(PanelFlags.End) : null}
67
68
  </div>
68
69
  <div class={`${k}-datepicker-footer`}>
69
- <Button v-if={!range && !multiple && !max && !min} type="link" size="small"
70
- ev-click={setMoment}
71
- >{_$('此刻')}</Button>
72
70
  <Button type="primary" size="small"
73
71
  disabled={isDisabledConfirm()}
74
72
  ev-click={onConfirm}
@@ -40,6 +40,7 @@ export const makePanelStyles = cache(function makePanelStyles(k: string) {
40
40
  &.${k}-range {
41
41
  .${k}-datepicker-time {
42
42
  width: auto;
43
+ border: ${timepicker.border};
43
44
  }
44
45
  .${k}-scroll-select {
45
46
  height: ${timepicker.range.scrollHeight};
@@ -0,0 +1,33 @@
1
+ import {useInstance, Component, TypeDefs} from 'intact';
2
+ import {useState, watchState, State} from '../../hooks/useState';
3
+ import type {useFormats} from './useFormats';
4
+ import type {useDisabled} from './useDisabled';
5
+ import {isEqualArray, last, bind} from '../utils';
6
+ import type { PanelPicker } from './panelPicker';
7
+ import { useValue } from './useValue';
8
+ import { StateValueRange, StateValue, DayjsValueRange, StateValueItem } from '../datepicker/useValueBase';
9
+ import type { useDefaultValue } from './useDefaultValue';
10
+
11
+ export function useConfirm(
12
+ value: ReturnType<typeof useValue>,
13
+ getValueString: ReturnType<typeof useFormats>['getValueString'],
14
+ defaultValue: ReturnType<typeof useDefaultValue>,
15
+ ) {
16
+ const instance = useInstance() as PanelPicker;
17
+
18
+ function onConfirm() {
19
+ const { multiple } = instance.get();
20
+ // if we click confirm button directly, set the value to placeholder values
21
+ value.setValue(defaultValue.get(), false);
22
+
23
+ if (!multiple) {
24
+ instance.hide();
25
+ } else {
26
+ value.unique();
27
+ }
28
+
29
+ value.updateValue();
30
+ }
31
+
32
+ return { onConfirm }
33
+ }
@@ -0,0 +1,30 @@
1
+ import { useInstance } from 'intact';
2
+ import { StateValueItem } from '../datepicker/useValueBase';
3
+ import type { PanelPicker } from './panelPicker';
4
+ import { last } from '../datepicker/helpers';
5
+ import {NOW_START, NOW_END} from './constants';
6
+ import { isArray } from 'intact-shared';
7
+
8
+ export function useDefaultValue() {
9
+ const instance = useInstance() as PanelPicker;
10
+
11
+ function get(): StateValueItem {
12
+ const _value = instance.value.value.value;
13
+ const lastValue = last(_value);
14
+ const { range } = instance.get();
15
+
16
+ if (range) {
17
+ // consider the second last value to maintain consistency
18
+ const penulimate = getPenulimate(_value);
19
+ return Object.assign([NOW_START, NOW_END], penulimate, lastValue);
20
+ }
21
+ return lastValue || NOW_START;
22
+ }
23
+
24
+ return { get };
25
+ }
26
+
27
+ function getPenulimate(value: unknown[]) {
28
+ if (!isArray(value)) return;
29
+ return value[value.length - 2];
30
+ }
@@ -1,13 +1,26 @@
1
+ import { useInstance } from 'intact';
1
2
  import {useDisabled as useDisabledBase} from '../datepicker/useDisabled';
2
3
  import type {useFormats} from './useFormats';
3
4
  import {PanelFlags} from '../datepicker/usePanel';
5
+ import {isGT, isLT, last} from '../datepicker/helpers';
6
+ import type { PanelPicker } from './panelPicker';
7
+ import { StateValueItem } from '../datepicker/useValueBase';
8
+ import type { useDefaultValue } from './useDefaultValue';
4
9
 
5
- export function useDisabled(formats: ReturnType<typeof useFormats>) {
6
- const {isDisabledTime, ...rest} = useDisabledBase(formats);
10
+ export function useDisabled(
11
+ formats: ReturnType<typeof useFormats>,
12
+ defaultValue: ReturnType<typeof useDefaultValue>,
13
+ ) {
14
+ const instance = useInstance() as PanelPicker;
15
+ const {isDisabledTime, isDisabledConfirm: isDisabledConfirmBase, isDisabledValue, ...rest} = useDisabledBase(formats);
7
16
 
8
17
  function isDisabledTimeByStep(value: string, flag: PanelFlags) {
9
- return isDisabledTime(formats.createDateByValueFormat(value), flag);
18
+ return isDisabledTime(formats.createDateByValueFormat(value));
10
19
  }
11
20
 
12
- return {isDisabledTime, isDisabledTimeByStep, ...rest};
21
+ function isDisabledConfirm(): boolean {
22
+ return isDisabledValue(defaultValue.get());
23
+ }
24
+
25
+ return {isDisabledTime, isDisabledTimeByStep, isDisabledConfirm, isDisabledValue, ...rest};
13
26
  }
@@ -2,7 +2,7 @@ import {useInstance, Component} from 'intact';
2
2
  import dayjs, {Dayjs} from '../datepicker/dayjs';
3
3
  import {isString} from 'intact-shared';
4
4
  import type {TimepickerProps} from './';
5
- import type {Value} from '../datepicker/basepicker';
5
+ import type {Value} from '../datepicker/useValueBase';
6
6
  import {YEAR_FORMAT, TIME_FORMAT, PREFIX} from './constants'
7
7
 
8
8
  export function useFormats<T extends Component<TimepickerProps>>() {
@@ -2,23 +2,29 @@ import {useInstance} from 'intact';
2
2
  import type {PanelPicker} from './panelPicker';
3
3
  import type {useFormats} from './useFormats';
4
4
  import {last} from '../utils';
5
- import {
6
- useValue as useValueBase,
7
- StateValueItem,
8
- DayjsValueItem
9
- } from '../datepicker/basepicker';
5
+ import {useValueBase, StateValueItem, DayjsValueItem, DayjsValue, StateValueRange} from '../datepicker/useValueBase';
10
6
  import type {useDisabled} from '../datepicker/useDisabled';
11
7
  import type {usePanel} from '../datepicker/usePanel';
12
8
  import {NOW_START, NOW_END} from './constants';
13
9
  import {PanelFlags} from '../datepicker/usePanel';
10
+ import type Dayjs from 'dayjs';
11
+ import type { useDefaultValue } from './useDefaultValue';
14
12
 
15
13
  export function useValue(
16
14
  formats: ReturnType<typeof useFormats>,
17
15
  disabled: ReturnType<typeof useDisabled>,
18
16
  panel: ReturnType<typeof usePanel>,
17
+ defaultValue: ReturnType<typeof useDefaultValue>,
19
18
  ) {
20
19
  const instance = useInstance() as PanelPicker;
21
- const {value, getDayjsValue, setValue, onChangeTime, ...rest} = useValueBase(
20
+ const {
21
+ value,
22
+ getDayjsValue,
23
+ setValue,
24
+ onChangeTime,
25
+ getTimeValue: getTimeValueBase,
26
+ ...rest
27
+ } = useValueBase(
22
28
  formats,
23
29
  disabled,
24
30
  panel,
@@ -28,7 +34,7 @@ export function useValue(
28
34
  function(v: DayjsValueItem) {
29
35
  // pop the last value when input
30
36
  // because it is a placeholder date
31
- value.value.pop();
37
+ // value.value.pop(); // no placeholder any more
32
38
  setValue(v, true);
33
39
  },
34
40
  function() {
@@ -39,21 +45,18 @@ export function useValue(
39
45
  }
40
46
  );
41
47
 
42
- setValue(getPlaceholderDates(), false);
43
-
44
- instance.watch('value', value => {
45
- const dayjsValue = getDayjsValue();
46
- setValue(last(dayjsValue) || getPlaceholderDates(), false);
47
- });
48
-
49
- function getPlaceholderDates(): StateValueItem {
50
- return instance.get('range') ? [NOW_START, NOW_END] : NOW_START;
51
- }
52
-
53
48
  function onChangeTimeByStep(v: string, flag: PanelFlags) {
54
49
  const date = formats.createDateByValueFormat(v);
55
50
  onChangeTime(date, flag);
56
51
  }
57
52
 
58
- return {value, setValue, getDayjsValue, onChangeTime, onChangeTimeByStep, ...rest};
53
+ function getTimeValue(flag: PanelFlags): Dayjs.Dayjs | null | undefined {
54
+ const value = defaultValue.get();
55
+ if (instance.get('range')) {
56
+ return (value as StateValueRange)[flag];
57
+ }
58
+ return value as Dayjs.Dayjs;
59
+ }
60
+
61
+ return {value, setValue, getDayjsValue, onChangeTime, onChangeTimeByStep, getTimeValue, ...rest};
59
62
  }
Binary file
@@ -196,7 +196,7 @@ describe('Tour', () => {
196
196
  const [instance, element] = mount(CustomTextDemo);
197
197
 
198
198
  const buttons = element.querySelectorAll('.k-btn');
199
- const startBtn = Array.from(buttons).find(btn => btn.textContent?.includes('启动引导')) as HTMLElement;
199
+ const startBtn = Array.from(buttons).find(btn => btn.textContent?.includes('开始自定义按钮引导')) as HTMLElement;
200
200
  startBtn.click();
201
201
  await wait(50);
202
202
 
Binary file
@@ -160,7 +160,7 @@ describe('Cascader', function () {
160
160
  }, _callee5);
161
161
  })));
162
162
  it('filter', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee6() {
163
- var _mount5, instance, element, input, dropdown, dropdown1, _getElements2, _dropdown1, _dropdown2, _dropdown3;
163
+ var _mount5, instance, element, input, dropdown1, _getElements2, _dropdown1, _dropdown2, _dropdown3;
164
164
  return _regeneratorRuntime.wrap(function _callee6$(_context6) {
165
165
  while (1) switch (_context6.prev = _context6.next) {
166
166
  case 0:
@@ -170,53 +170,52 @@ describe('Cascader', function () {
170
170
  _context6.next = 5;
171
171
  return wait();
172
172
  case 5:
173
+ // FIXME: maybe we should show no-data layer
173
174
  // should show layer when input empty string
174
- input.value = ' ';
175
+ // input.value = ' ';
176
+ // dispatchEvent(input, 'input');
177
+ // await wait();
178
+ // const dropdown = getElement('.k-cascader-menu')!;
179
+ // expect(dropdown.innerHTML).to.matchSnapshot();
180
+ // expect(dropdown.innerText).to.eql('北京\n湖南');
181
+ input.value = '长沙';
175
182
  dispatchEvent(input, 'input');
176
183
  _context6.next = 9;
177
184
  return wait();
178
185
  case 9:
179
- dropdown = getElement('.k-cascader-menu');
180
- expect(dropdown.innerHTML).to.matchSnapshot();
181
- expect(dropdown.innerText).to.eql('北京\n湖南');
182
- input.value = '长沙';
183
- dispatchEvent(input, 'input');
184
- _context6.next = 16;
185
- return wait();
186
- case 16:
187
186
  dropdown1 = getElement('.k-cascader-filter');
188
187
  expect(dropdown1.innerHTML).to.matchSnapshot();
189
188
  expect(dropdown1.innerText).to.eql('湖南 / 长沙市 / 岳麓区');
190
189
  // should show no-data layer
191
190
  input.value = 'xxx';
192
191
  dispatchEvent(input, 'input');
193
- _context6.next = 23;
192
+ _context6.next = 16;
194
193
  return wait();
195
- case 23:
194
+ case 16:
196
195
  expect(dropdown1.innerHTML).to.matchSnapshot();
197
196
  expect(dropdown1.innerText).to.eql('无匹配数据');
198
197
  input.value = '岳阳';
199
198
  dispatchEvent(input, 'input');
200
- _context6.next = 29;
199
+ _context6.next = 22;
201
200
  return wait();
202
- case 29:
201
+ case 22:
203
202
  expect(dropdown1.innerHTML).to.matchSnapshot();
204
203
  expect(dropdown1.childElementCount).to.eql(2);
205
204
  dropdown1.querySelector('.k-dropdown-item').click();
206
- _context6.next = 34;
205
+ _context6.next = 27;
207
206
  return wait();
208
- case 34:
207
+ case 27:
209
208
  expect(instance.get('value')).to.eql(['hunan', 'yueyang', 'yueyanglou']);
210
209
  // show again to test the position
211
210
  input.click();
212
- _context6.next = 38;
211
+ _context6.next = 31;
213
212
  return wait();
214
- case 38:
213
+ case 31:
215
214
  _getElements2 = getElements('.k-cascader-menu'), _dropdown1 = _getElements2[0], _dropdown2 = _getElements2[1], _dropdown3 = _getElements2[2];
216
215
  expect(_dropdown1.style.top).not.eql('0px');
217
216
  expect(_dropdown2.style.top).not.eql('0px');
218
217
  expect(_dropdown3.style.top).not.eql('0px');
219
- case 42:
218
+ case 35:
220
219
  case "end":
221
220
  return _context6.stop();
222
221
  }
@@ -2,20 +2,12 @@
2
2
  * The base hook for handling value of Datepicker and Timepicker
3
3
  */
4
4
  import { TypeDefs } from 'intact';
5
- import { State } from '../../hooks/useState';
6
- import { Dayjs, OpUnitType, QUnitType } from './dayjs';
5
+ import { Dayjs } from './dayjs';
7
6
  import type { useFormats } from './useFormats';
8
- import type { useDisabled } from './useDisabled';
9
- import { PanelFlags, usePanel } from './usePanel';
7
+ import { usePanel } from './usePanel';
10
8
  import { BaseSelect, BaseSelectProps, BaseSelectEvents, BaseSelectBlocks } from '../select/base';
11
9
  import type { Events } from '../types';
12
- export type StateValueRange = [Dayjs, Dayjs?];
13
- export type StateValueItem = Dayjs | StateValueRange;
14
- export type StateValue = StateValueItem[];
15
- export type StringValue = string | string[] | [string, string] | [string, string][];
16
- export type DayjsValueRange = [Dayjs, Dayjs];
17
- export type DayjsValueItem = Dayjs | DayjsValueRange;
18
- export type DayjsValue = DayjsValueItem[];
10
+ import type { useValueBase, StateValueRange, Value } from './useValueBase';
19
11
  export interface BasePickerProps<V extends Value = Value, Multipe extends boolean = boolean, Range extends boolean = boolean> extends BaseSelectProps<V | [V, V], Multipe> {
20
12
  value?: Multipe extends true ? Range extends true ? [
21
13
  V,
@@ -33,29 +25,16 @@ export interface BasePickerProps<V extends Value = Value, Multipe extends boolea
33
25
  disabledDate?: (v: Dayjs) => boolean;
34
26
  }
35
27
  export interface BasePickerEvents extends BaseSelectEvents {
36
- selecting: [StateValueRange];
37
- togglePosition: [];
28
+ selecting: [StateValueRange, boolean];
38
29
  }
39
30
  export interface BasePickerBlocks<V extends Value = Value, R extends boolean = boolean> extends BaseSelectBlocks<R extends true ? [Value, Value] : Value> {
40
31
  }
41
- export type Value = string | Date | number | Dayjs;
42
32
  export declare abstract class BasePicker<T extends BasePickerProps = BasePickerProps, E extends BasePickerEvents = BasePickerEvents, B extends BasePickerBlocks<any> = BasePickerBlocks<any>> extends BaseSelect<T, E, B> {
43
33
  static typeDefs: Required<TypeDefs<BasePickerProps<Value, boolean, boolean>>>;
44
34
  static defaults: () => Partial<BasePickerProps<any, boolean, boolean>>;
45
35
  static events: Events<BasePickerEvents>;
46
- abstract value: ReturnType<typeof useValue>;
36
+ abstract value: ReturnType<typeof useValueBase>;
47
37
  abstract formats: ReturnType<typeof useFormats>;
48
38
  abstract panel: ReturnType<typeof usePanel>;
49
- resetKeywords(keywords: State<string>): void;
39
+ resetKeywords(silent?: boolean): void;
50
40
  }
51
- export declare function useValue({ createDateByValueFormat, createDateByShowFormat, getShowString, getValueString, }: ReturnType<typeof useFormats>, { isDisabled, minDate }: ReturnType<typeof useDisabled>, panel: ReturnType<typeof usePanel>, shouldUpdateValue: (v: StateValueItem) => boolean, updateValueOnInput: (v: DayjsValueItem) => void, getEqualType: () => OpUnitType | QUnitType, updateStateValue: (v: DayjsValue, value: State<StateValue>) => void): {
52
- value: State<StateValue>;
53
- format: () => string | string[];
54
- onConfirm: () => void;
55
- onChangeTime: (date: Dayjs, flag: PanelFlags) => void;
56
- getTimeValue: (flag: PanelFlags) => Dayjs | null | undefined;
57
- setValue: (v: StateValueItem, fromInput: boolean) => void;
58
- convertToDayjs: (v: BasePickerProps<Value>['value']) => DayjsValue;
59
- getDayjsValue: () => DayjsValue;
60
- setMoment: () => void;
61
- };