@king-design/react 3.0.0-beta.0 → 3.0.0-beta.2

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 (223) hide show
  1. package/__tests__/__snapshots__/Dialog.md +1 -1
  2. package/__tests__/__snapshots__/React Demos.md +468 -309
  3. package/__tests__/components/cascader.spec.tsx +53 -0
  4. package/__tests__/components/drawer.spec.tsx +67 -5
  5. package/components/button/index.d.ts +1 -1
  6. package/components/button/index.js +1 -1
  7. package/components/button/styles.d.ts +1 -1
  8. package/components/button/styles.js +3 -5
  9. package/components/carousel/index.vdt.js +2 -2
  10. package/components/cascader/index.d.ts +22 -11
  11. package/components/cascader/index.js +9 -12
  12. package/components/cascader/index.spec.js +81 -0
  13. package/components/cascader/index.vdt.js +11 -9
  14. package/components/cascader/styles.js +1 -1
  15. package/components/cascader/useFields.d.ts +2 -0
  16. package/components/cascader/useFields.js +18 -0
  17. package/components/cascader/useFilterable.d.ts +2 -1
  18. package/components/cascader/useFilterable.js +17 -6
  19. package/components/cascader/useLabel.d.ts +2 -1
  20. package/components/cascader/useLabel.js +4 -4
  21. package/components/cascader/useLoad.d.ts +2 -1
  22. package/components/cascader/useLoad.js +9 -7
  23. package/components/collapse/item.vdt.js +1 -1
  24. package/components/colorpicker/index.d.ts +2 -0
  25. package/components/colorpicker/index.js +7 -2
  26. package/components/colorpicker/index.vdt.js +3 -6
  27. package/components/copy/index.d.ts +17 -0
  28. package/components/copy/index.js +43 -0
  29. package/components/copy/index.spec.d.ts +1 -0
  30. package/components/copy/index.spec.js +52 -0
  31. package/components/copy/index.vdt.js +45 -0
  32. package/components/copy/styles.d.ts +2 -0
  33. package/components/copy/styles.js +14 -0
  34. package/components/copy/useCopy.d.ts +4 -0
  35. package/components/copy/useCopy.js +90 -0
  36. package/components/datepicker/calendar.vdt.js +6 -6
  37. package/components/datepicker/index.spec.js +171 -153
  38. package/components/datepicker/index.vdt.js +1 -1
  39. package/components/datepicker/styles.js +1 -1
  40. package/components/datepicker/useValue.d.ts +3 -3
  41. package/components/datepicker/useValue.js +38 -9
  42. package/components/diagram/shapes/callout.d.ts +1 -1
  43. package/components/diagram/shapes/circle.d.ts +1 -1
  44. package/components/diagram/shapes/document.d.ts +1 -1
  45. package/components/diagram/shapes/ellipse.d.ts +1 -1
  46. package/components/diagram/shapes/hexagon.d.ts +1 -1
  47. package/components/diagram/shapes/image.d.ts +1 -1
  48. package/components/diagram/shapes/parallelogram.d.ts +1 -1
  49. package/components/diagram/shapes/rectangle.d.ts +1 -1
  50. package/components/diagram/shapes/square.d.ts +1 -1
  51. package/components/diagram/shapes/text.d.ts +1 -1
  52. package/components/dialog/alert.vdt.js +6 -5
  53. package/components/dialog/index.spec.js +6 -6
  54. package/components/dialog/styles.js +1 -1
  55. package/components/dropdown/dropdown.d.ts +6 -6
  56. package/components/dropdown/dropdown.js +58 -75
  57. package/components/dropdown/index.spec.js +96 -17
  58. package/components/dropdown/item.d.ts +1 -1
  59. package/components/dropdown/item.js +19 -7
  60. package/components/dropdown/menu.js +1 -1
  61. package/components/dropdown/usePosition.js +11 -2
  62. package/components/editable/index.d.ts +1 -0
  63. package/components/editable/index.js +20 -6
  64. package/components/editable/index.vdt.js +2 -1
  65. package/components/form/index.spec.js +4 -2
  66. package/components/form/item.vdt.js +2 -1
  67. package/components/form/styles.js +4 -4
  68. package/components/grid/useGutter.js +8 -8
  69. package/components/icon/styles.js +1 -1
  70. package/components/input/index.d.ts +13 -2
  71. package/components/input/index.js +16 -13
  72. package/components/input/index.spec.js +169 -1
  73. package/components/input/index.vdt.js +44 -12
  74. package/components/input/search.vdt.js +2 -4
  75. package/components/input/styles.js +30 -6
  76. package/components/input/useAutoRows.d.ts +2 -0
  77. package/components/input/useAutoRows.js +79 -0
  78. package/components/input/useAutoWidth.js +13 -3
  79. package/components/input/useFocus.d.ts +4 -0
  80. package/components/input/useFocus.js +21 -0
  81. package/components/input/useShowPassword.d.ts +7 -0
  82. package/components/input/useShowPassword.js +31 -0
  83. package/components/menu/index.spec.js +26 -15
  84. package/components/menu/item.d.ts +2 -0
  85. package/components/menu/item.js +5 -0
  86. package/components/menu/item.vdt.js +4 -1
  87. package/components/pagination/index.d.ts +1 -1
  88. package/components/pagination/index.js +3 -2
  89. package/components/pagination/index.spec.js +49 -0
  90. package/components/pagination/index.vdt.js +10 -12
  91. package/components/pagination/styles.js +1 -1
  92. package/components/popover/content.d.ts +19 -0
  93. package/components/popover/content.js +31 -0
  94. package/components/popover/content.vdt.js +68 -0
  95. package/components/popover/index.d.ts +16 -0
  96. package/components/popover/index.js +44 -0
  97. package/components/popover/index.spec.d.ts +1 -0
  98. package/components/popover/index.spec.js +195 -0
  99. package/components/popover/styles.d.ts +1 -0
  100. package/components/popover/styles.js +22 -0
  101. package/components/portal.d.ts +6 -2
  102. package/components/portal.js +4 -3
  103. package/components/position.js +2 -1
  104. package/components/progress/index.js +1 -1
  105. package/components/progress/index.vdt.js +46 -8
  106. package/components/progress/styles.js +19 -13
  107. package/components/rate/styles.js +1 -1
  108. package/components/select/base.d.ts +7 -3
  109. package/components/select/base.js +9 -3
  110. package/components/select/base.vdt.js +75 -47
  111. package/components/select/index.spec.js +25 -13
  112. package/components/select/menu.vdt.js +6 -6
  113. package/components/select/option.vdt.js +2 -1
  114. package/components/select/styles.js +11 -5
  115. package/components/select/useDraggble.d.ts +2 -0
  116. package/components/select/useDraggble.js +11 -0
  117. package/components/slider/index.spec.js +48 -9
  118. package/components/slider/index.vdt.js +23 -12
  119. package/components/slider/styles.js +23 -14
  120. package/components/slider/useValue.d.ts +3 -1
  121. package/components/slider/useValue.js +12 -0
  122. package/components/spinner/index.d.ts +0 -1
  123. package/components/spinner/index.js +1 -19
  124. package/components/spinner/index.vdt.js +13 -8
  125. package/components/spinner/styles.js +2 -2
  126. package/components/spinner/useChange.d.ts +1 -1
  127. package/components/spinner/useChange.js +2 -2
  128. package/components/spinner/useValue.d.ts +1 -0
  129. package/components/spinner/useValue.js +16 -1
  130. package/components/split/index.vdt.js +32 -20
  131. package/components/split/memo.d.ts +9 -0
  132. package/components/split/memo.js +26 -0
  133. package/components/steps/index.d.ts +1 -0
  134. package/components/steps/index.js +2 -1
  135. package/components/steps/index.spec.js +1 -1
  136. package/components/steps/index.vdt.js +7 -4
  137. package/components/steps/step.vdt.js +2 -3
  138. package/components/steps/styles.d.ts +1 -0
  139. package/components/steps/styles.js +50 -17
  140. package/components/switch/index.spec.js +82 -65
  141. package/components/table/cell.js +1 -6
  142. package/components/table/cell.vdt.js +1 -1
  143. package/components/table/column.vdt.js +40 -24
  144. package/components/table/index.spec.js +162 -20
  145. package/components/table/row.d.ts +1 -1
  146. package/components/table/row.js +2 -1
  147. package/components/table/styles.js +16 -9
  148. package/components/table/table.d.ts +15 -0
  149. package/components/table/table.js +16 -7
  150. package/components/table/table.vdt.js +20 -6
  151. package/components/table/useChecked.d.ts +3 -2
  152. package/components/table/useChecked.js +23 -12
  153. package/components/table/useDisableRow.d.ts +2 -1
  154. package/components/table/useDisableRow.js +4 -4
  155. package/components/table/useDraggable.d.ts +3 -2
  156. package/components/table/useDraggable.js +11 -15
  157. package/components/table/useGroup.d.ts +9 -3
  158. package/components/table/useGroup.js +48 -37
  159. package/components/table/useMerge.d.ts +2 -1
  160. package/components/table/useMerge.js +5 -4
  161. package/components/table/usePagination.d.ts +8 -0
  162. package/components/table/usePagination.js +81 -0
  163. package/components/table/useStickyScrollbar.js +2 -2
  164. package/components/table/useTree.d.ts +2 -1
  165. package/components/table/useTree.js +3 -4
  166. package/components/table/useWidth.js +2 -2
  167. package/components/tabs/index.d.ts +1 -1
  168. package/components/tabs/index.js +1 -1
  169. package/components/tabs/index.spec.js +67 -0
  170. package/components/tabs/index.vdt.js +9 -4
  171. package/components/tabs/styles.js +32 -34
  172. package/components/tabs/useScroll.d.ts +1 -1
  173. package/components/tabs/useScroll.js +75 -48
  174. package/components/tag/base.d.ts +1 -0
  175. package/components/tag/base.js +1 -1
  176. package/components/tag/index.d.ts +1 -0
  177. package/components/tag/index.js +2 -1
  178. package/components/tag/index.spec.js +147 -4
  179. package/components/tag/styles.d.ts +67 -0
  180. package/components/tag/styles.js +33 -8
  181. package/components/tag/tags.d.ts +27 -0
  182. package/components/tag/tags.js +51 -0
  183. package/components/tag/tags.vdt.js +91 -0
  184. package/components/tag/useChildren.d.ts +2 -0
  185. package/components/tag/useChildren.js +39 -0
  186. package/components/tag/useDraggable.d.ts +3 -0
  187. package/components/tag/useDraggable.js +89 -0
  188. package/components/tag/useNowrap.d.ts +7 -0
  189. package/components/tag/useNowrap.js +115 -0
  190. package/components/timepicker/index.spec.js +1 -1
  191. package/components/tooltip/content.d.ts +3 -2
  192. package/components/tooltip/content.js +18 -1
  193. package/components/tooltip/content.vdt.js +22 -10
  194. package/components/tooltip/index.spec.js +147 -92
  195. package/components/tooltip/styles.d.ts +23 -0
  196. package/components/tooltip/styles.js +2 -2
  197. package/components/tooltip/tooltip.d.ts +1 -1
  198. package/components/tooltip/tooltip.js +11 -11
  199. package/components/transfer/index.vdt.js +14 -3
  200. package/components/types.d.ts +1 -0
  201. package/components/upload/index.spec.js +5 -6
  202. package/components/upload/index.vdt.js +7 -5
  203. package/components/utils.d.ts +2 -0
  204. package/components/utils.js +24 -3
  205. package/components/virtual.d.ts +8 -0
  206. package/components/virtual.js +126 -0
  207. package/hooks/useResizeObserver.d.ts +1 -1
  208. package/hooks/useResizeObserver.js +19 -6
  209. package/i18n/en-US.d.ts +4 -1
  210. package/i18n/en-US.js +6 -2
  211. package/index.d.ts +5 -3
  212. package/index.js +5 -3
  213. package/package.json +2 -2
  214. package/styles/fonts/iconfont.eot +0 -0
  215. package/styles/fonts/iconfont.js +2 -2
  216. package/styles/fonts/iconfont.svg +35 -35
  217. package/styles/fonts/iconfont.ttf +0 -0
  218. package/styles/fonts/iconfont.woff +0 -0
  219. package/styles/fonts/ionicons.js +3 -3
  220. package/styles/global.js +1 -1
  221. package/yarn-error.log +41 -43
  222. package/components/table/useResizeObserver.d.ts +0 -2
  223. package/components/table/useResizeObserver.js +0 -20
@@ -68,7 +68,7 @@ export default function ($props, $blocks, $__proto__) {
68
68
  }
69
69
 
70
70
  return _$cc(Tabs, {
71
- 'type': 'border-card',
71
+ 'type': 'card',
72
72
  'value': panel.value,
73
73
  'ev-$change:value': panel.set,
74
74
  'children': [_$cc(Tab, {
@@ -83,7 +83,7 @@ export function makePanelStyles() {
83
83
  return /*#__PURE__*/css("display:flex;.k-datepicker-shortcuts{width:", datepicker.shortcuts.width, ";padding:", datepicker.shortcuts.padding, ";border-right:", datepicker.border, ";}.k-datepicker-shortcut{height:", datepicker.shortcuts.shortcut.height, ";line-height:", datepicker.shortcuts.shortcut.height, ";padding:", datepicker.shortcuts.shortcut.padding, ";cursor:pointer;&:hover{background:", datepicker.shortcuts.shortcut.hoverBgcolor, ";}}.k-datepicker-calendars{display:flex;}.k-datepicker-calendar-wrapper{&:nth-child(2){border-left:", datepicker.border, ";}.k-tabs{border:none;.k-tabs-wrapper{float:none;}.k-tab{width:50%;}}}.k-datepicker-footer{border-top:", datepicker.border, ";padding:", datepicker.footer.padding, ";text-align:right;}");
84
84
  }
85
85
  export function makeCalendarStyles() {
86
- return /*#__PURE__*/css("padding:", datepicker.padding, ";width:", datepicker.width, ";position:relative;.k-datepicker-month{display:flex;padding:", datepicker.month.padding, ";}.k-month-values{flex:1;font-size:14px;text-align:center;cursor:pointer;overflow:hidden;position:relative;}.k-month-value{margin:0 ", datepicker.month.valueGap, ";line-height:", theme.small.height, ";&:hover{color:", theme.color.primary, ";}},.k-weekdays{display:flex;border-bottom:", datepicker.border, ";padding:", datepicker.weekday.padding, ";}.k-weekday{flex:1;text-align:center;}.k-calendar-item{text-align:center;margin:", datepicker.item.gutter, ";aspect-ratio:1;display:flex;align-items:center;cursor:pointer;position:relative;border-radius:", datepicker.item.borderRadius, ";&.k-hover{background:", datepicker.item.hoverBgColor, ";}&.k-exceed{color:", datepicker.item.exceedColor, ";}&.k-today{border:", datepicker.item.todayBorder, ";}&.k-active{background:", datepicker.item.active.bgColor, ";color:", datepicker.item.active.color, ";&.k-today{border-color:", datepicker.item.active.todayBorderColor, ";}}&.k-disabled{color:", datepicker.item.disabled.color, ";cursor:not-allowed;background:", datepicker.item.disabled.hoverBgColor, ";}&.k-in-range:after{content:'';display:block;position:absolute;box-sizing:content-box;background:", datepicker.item.range.bgColor, ";width:100%;height:100%;left:-", datepicker.item.gutter, ";padding:0 ", datepicker.item.gutter, ";z-index:-1;}.k-value{flex:1;}}.k-days{display:grid;grid-template-columns:repeat(7, 1fr);}.k-years{display:grid;grid-template-columns:repeat(4, 1fr);}");
86
+ return /*#__PURE__*/css("padding:", datepicker.padding, ";width:", datepicker.width, ";position:relative;.k-datepicker-month{display:flex;padding:", datepicker.month.padding, ";}.k-prev .k-icon,.k-next .k-icon{margin:0 -5px!important;}.k-month-values{flex:1;font-size:14px;text-align:center;cursor:pointer;overflow:hidden;position:relative;}.k-month-value{margin:0 ", datepicker.month.valueGap, ";line-height:", theme.small.height, ";&:hover{color:", theme.color.primary, ";}},.k-weekdays{display:flex;border-bottom:", datepicker.border, ";padding:", datepicker.weekday.padding, ";}.k-weekday{flex:1;text-align:center;}.k-calendar-item{text-align:center;margin:", datepicker.item.gutter, ";aspect-ratio:1;display:flex;align-items:center;cursor:pointer;position:relative;border-radius:", datepicker.item.borderRadius, ";.k-value{border-radius:", datepicker.item.borderRadius, ";}&.k-hover{background:", datepicker.item.hoverBgColor, ";}&.k-exceed{color:", datepicker.item.exceedColor, ";}&.k-today .k-value{border:", datepicker.item.todayBorder, ";}&.k-active{background:", datepicker.item.active.bgColor, ";color:", datepicker.item.active.color, ";&.k-today .k-value{border-color:", datepicker.item.active.todayBorderColor, ";}}&.k-disabled{color:", datepicker.item.disabled.color, ";cursor:not-allowed;background:", datepicker.item.disabled.hoverBgColor, ";}&.k-in-range:after{content:'';display:block;position:absolute;box-sizing:content-box;background:", datepicker.item.range.bgColor, ";width:100%;height:100%;left:-", datepicker.item.gutter, ";padding:0 ", datepicker.item.gutter, ";z-index:-1;}.k-value{flex:1;display:flex;align-items:center;justify-content:center;height:100%;}}.k-days{display:grid;grid-template-columns:repeat(7, 1fr);}.k-years{display:grid;grid-template-columns:repeat(4, 1fr);}");
87
87
  }
88
88
  export function makeTimeStyles() {
89
89
  return /*#__PURE__*/css("display:flex;padding:", datepicker.padding, ";width:", datepicker.width, ";position:relative;.k-scroll-select{flex:1;height:305px;}");
@@ -1,13 +1,13 @@
1
1
  import { StateValueItem, DayjsValue } from './basepicker';
2
- import { Dayjs } from 'dayjs';
2
+ import dayjs, { Dayjs } from 'dayjs';
3
3
  import type { useFormats } from './useFormats';
4
4
  import type { useDisabled } from './useDisabled';
5
5
  import { PanelFlags, usePanel } from './usePanel';
6
6
  export declare function useValue(formats: ReturnType<typeof useFormats>, disabled: ReturnType<typeof useDisabled>, panel: ReturnType<typeof usePanel>): {
7
7
  format: () => string | string[];
8
8
  onConfirm: () => void;
9
- onChangeTime: (date: Dayjs, flag: PanelFlags) => void;
10
- getTimeValue: (flag: PanelFlags) => Dayjs | null | undefined;
9
+ onChangeTime: (date: dayjs.Dayjs, flag: PanelFlags) => void;
10
+ getTimeValue: (flag: PanelFlags) => dayjs.Dayjs | null | undefined;
11
11
  convertToDayjs: (v: import("./basepicker").Value | [import("./basepicker").Value, import("./basepicker").Value] | import("./basepicker").Value[] | [import("./basepicker").Value, import("./basepicker").Value][] | null | undefined) => DayjsValue;
12
12
  getDayjsValue: () => DayjsValue;
13
13
  value: import("../../hooks/useState").State<import("./basepicker").StateValue>;
@@ -6,7 +6,9 @@ import _sliceInstanceProperty from "@babel/runtime-corejs3/core-js/instance/slic
6
6
  import _sortInstanceProperty from "@babel/runtime-corejs3/core-js/instance/sort";
7
7
  import { useInstance } from 'intact-react';
8
8
  import { useValue as useValueBase } from './basepicker';
9
+ import dayjs from 'dayjs';
9
10
  import { last } from '../utils';
11
+ import { endTime } from './helpers';
10
12
  import { PanelTypes, PanelFlags } from './usePanel';
11
13
  export function useValue(formats, disabled, panel) {
12
14
  var instance = useInstance();
@@ -41,21 +43,21 @@ export function useValue(formats, disabled, panel) {
41
43
  type = _instance$get3.type,
42
44
  range = _instance$get3.range;
43
45
 
44
- var _value = v; // the datetime must be greater than minDate, #406
45
-
46
- var minDate = disabled.minDate.value;
47
-
48
- if (minDate && _value.isBefore(minDate)) {
49
- _value = minDate;
50
- }
46
+ var _value;
51
47
 
52
48
  if (range) {
53
49
  var oldValue = last(value.value);
54
50
 
55
51
  if (!oldValue || oldValue.length === 2) {
56
- _value = [v];
52
+ /**
53
+ * if we select the first value or re-select the value
54
+ * no matter what the flag is, we should set flag to start panel
55
+ * #877
56
+ */
57
+ flag = PanelFlags.Start;
58
+ _value = [fixDatetimeWithMinDate(v)];
57
59
  } else {
58
- _value = [oldValue[0], v];
60
+ _value = [oldValue[0], fixDatetimeWithMaxDate(v)];
59
61
 
60
62
  _sortInstanceProperty(_value).call(_value, function (a, b) {
61
63
  return a.isAfter(b) ? 1 : -1;
@@ -63,6 +65,8 @@ export function useValue(formats, disabled, panel) {
63
65
  }
64
66
 
65
67
  instance.trigger('selecting', _value);
68
+ } else {
69
+ _value = fixDatetimeWithMinDate(v);
66
70
  }
67
71
 
68
72
  setValue(_value, false);
@@ -74,6 +78,31 @@ export function useValue(formats, disabled, panel) {
74
78
  }
75
79
  }
76
80
 
81
+ function fixDatetimeWithMinDate(v) {
82
+ // the datetime must be greater than minDate, #406
83
+ var minDate = disabled.minDate.value;
84
+
85
+ if (minDate && v.isBefore(minDate)) {
86
+ return minDate;
87
+ }
88
+
89
+ return v;
90
+ }
91
+
92
+ function fixDatetimeWithMaxDate(v) {
93
+ // the tiem of end datetime should be set to 23:59:59, #878
94
+ var maxDate = disabled.maxDate.value;
95
+ var date = v.toDate();
96
+ endTime(date);
97
+ v = dayjs(date);
98
+
99
+ if (maxDate && v.isAfter(maxDate)) {
100
+ return maxDate;
101
+ }
102
+
103
+ return v;
104
+ }
105
+
77
106
  return _extends({
78
107
  value: value,
79
108
  setValue: setValue,
@@ -12,7 +12,7 @@ export declare class DCallout extends DShape {
12
12
  rotatable?: boolean | undefined;
13
13
  editable?: boolean | undefined;
14
14
  connectable?: boolean | undefined;
15
- strokeStyle?: "dashed" | "dotted" | "solid" | undefined;
15
+ strokeStyle?: "solid" | "dashed" | "dotted" | undefined;
16
16
  label?: string | number | undefined;
17
17
  style?: Record<string, string | number> | undefined;
18
18
  data?: any;
@@ -12,7 +12,7 @@ export declare class DCircle extends DShape {
12
12
  rotatable?: boolean | undefined;
13
13
  editable?: boolean | undefined;
14
14
  connectable?: boolean | undefined;
15
- strokeStyle?: "dashed" | "dotted" | "solid" | undefined;
15
+ strokeStyle?: "solid" | "dashed" | "dotted" | undefined;
16
16
  label?: string | number | undefined;
17
17
  style?: Record<string, string | number> | undefined;
18
18
  data?: any;
@@ -12,7 +12,7 @@ export declare class DDocument extends DShape {
12
12
  rotatable?: boolean | undefined;
13
13
  editable?: boolean | undefined;
14
14
  connectable?: boolean | undefined;
15
- strokeStyle?: "dashed" | "dotted" | "solid" | undefined;
15
+ strokeStyle?: "solid" | "dashed" | "dotted" | undefined;
16
16
  label?: string | number | undefined;
17
17
  style?: Record<string, string | number> | undefined;
18
18
  data?: any;
@@ -12,7 +12,7 @@ export declare class DEllipse extends DShape {
12
12
  rotatable?: boolean | undefined;
13
13
  editable?: boolean | undefined;
14
14
  connectable?: boolean | undefined;
15
- strokeStyle?: "dashed" | "dotted" | "solid" | undefined;
15
+ strokeStyle?: "solid" | "dashed" | "dotted" | undefined;
16
16
  label?: string | number | undefined;
17
17
  style?: Record<string, string | number> | undefined;
18
18
  data?: any;
@@ -12,7 +12,7 @@ export declare class DHexagon extends DShape {
12
12
  rotatable?: boolean | undefined;
13
13
  editable?: boolean | undefined;
14
14
  connectable?: boolean | undefined;
15
- strokeStyle?: "dashed" | "dotted" | "solid" | undefined;
15
+ strokeStyle?: "solid" | "dashed" | "dotted" | undefined;
16
16
  label?: string | number | undefined;
17
17
  style?: Record<string, string | number> | undefined;
18
18
  data?: any;
@@ -18,7 +18,7 @@ export declare class DImage extends DShape<DImageProps> {
18
18
  rotatable?: boolean | undefined;
19
19
  editable?: boolean | undefined;
20
20
  connectable?: boolean | undefined;
21
- strokeStyle?: "dashed" | "dotted" | "solid" | undefined;
21
+ strokeStyle?: "solid" | "dashed" | "dotted" | undefined;
22
22
  label?: string | number | undefined;
23
23
  style?: Record<string, string | number> | undefined;
24
24
  data?: any;
@@ -12,7 +12,7 @@ export declare class DParallelogram extends DShape {
12
12
  rotatable?: boolean | undefined;
13
13
  editable?: boolean | undefined;
14
14
  connectable?: boolean | undefined;
15
- strokeStyle?: "dashed" | "dotted" | "solid" | undefined;
15
+ strokeStyle?: "solid" | "dashed" | "dotted" | undefined;
16
16
  label?: string | number | undefined;
17
17
  style?: Record<string, string | number> | undefined;
18
18
  data?: any;
@@ -18,7 +18,7 @@ export declare class DRectangle extends DShape<DRectangleProps> {
18
18
  rotatable?: boolean | undefined;
19
19
  editable?: boolean | undefined;
20
20
  connectable?: boolean | undefined;
21
- strokeStyle?: "dashed" | "dotted" | "solid" | undefined;
21
+ strokeStyle?: "solid" | "dashed" | "dotted" | undefined;
22
22
  label?: string | number | undefined;
23
23
  style?: Record<string, string | number> | undefined;
24
24
  data?: any;
@@ -13,7 +13,7 @@ export declare class DSquare extends DRectangle {
13
13
  rotatable?: boolean | undefined;
14
14
  editable?: boolean | undefined;
15
15
  connectable?: boolean | undefined;
16
- strokeStyle?: "dashed" | "dotted" | "solid" | undefined;
16
+ strokeStyle?: "solid" | "dashed" | "dotted" | undefined;
17
17
  label?: string | number | undefined;
18
18
  style?: Record<string, string | number> | undefined;
19
19
  data?: any;
@@ -12,7 +12,7 @@ export declare class DText extends DShape {
12
12
  rotatable?: boolean | undefined;
13
13
  editable?: boolean | undefined;
14
14
  connectable?: boolean | undefined;
15
- strokeStyle?: "dashed" | "dotted" | "solid" | undefined;
15
+ strokeStyle?: "solid" | "dashed" | "dotted" | undefined;
16
16
  label?: string | number | undefined;
17
17
  style?: Record<string, string | number> | undefined;
18
18
  data?: any;
@@ -41,11 +41,12 @@ export default function ($props, $blocks, $__proto__) {
41
41
  }), (_$blocks['body'] = function ($super) {
42
42
  return [_$ce(2, 'div', [!hideIcon && !icon ? _$cc(Icon, {
43
43
  'className': _$cn(iconClassName || {
44
- "ion-ios-checkmark": type === 'success',
45
- "ion-ios-information": type === 'warning',
46
- "ion-ios-close": type === 'error',
47
- "ion-ios-help": type === 'confirm'
48
- })
44
+ "k-icon-success-fill": type === 'success',
45
+ "k-icon-warning-fill": type === 'warning',
46
+ "k-icon-error-fill": type === 'error',
47
+ "k-icon-question-fill": type === 'confirm'
48
+ }),
49
+ 'color': type === 'error' ? 'danger' : type === 'confirm' ? 'primary' : type
49
50
  }) : undefined, icon], 0, 'k-dialog-tip-icon'), _$ce(2, 'div', [title ? _$ce(2, 'div', title, 0, 'k-alert-dialog-title') : undefined, content], 0, 'k-alert-dialog-wrapper')];
50
51
  }, __$blocks['body'] = function ($super, data) {
51
52
  var block = $blocks['body'];
@@ -201,7 +201,7 @@ describe('Dialog', function () {
201
201
  var _mount4 = mount(Demo),
202
202
  instance = _mount4[0];
203
203
 
204
- expect(getElement('.k-dialog-footer').innerText).to.eql('dialog footer 确定取消');
204
+ expect(getElement('.k-dialog-footer').innerText).to.eql('dialog footer 取消确定');
205
205
  });
206
206
  it('basic test', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
207
207
  var _mount5, instance, element, btn, dialog;
@@ -243,7 +243,7 @@ describe('Dialog', function () {
243
243
  return wait(500);
244
244
 
245
245
  case 20:
246
- expect(document.body.getAttribute('style')).to.be.null;
246
+ expect(!!document.body.getAttribute('style')).to.be.false;
247
247
 
248
248
  case 21:
249
249
  case "end":
@@ -347,7 +347,7 @@ describe('Dialog', function () {
347
347
  return wait(500);
348
348
 
349
349
  case 18:
350
- expect(document.body.getAttribute('style')).to.be.null;
350
+ expect(!!document.body.getAttribute('style')).to.be.false;
351
351
 
352
352
  case 19:
353
353
  case "end":
@@ -439,7 +439,7 @@ describe('Dialog', function () {
439
439
 
440
440
  case 4:
441
441
  dialog = expectDialog();
442
- dialog.querySelector('.k-btn').click();
442
+ dialog.querySelector('.k-dialog-ok').click();
443
443
  _context12.next = 8;
444
444
  return wait();
445
445
 
@@ -472,7 +472,7 @@ describe('Dialog', function () {
472
472
 
473
473
  case 21:
474
474
  dialog = expectDialog();
475
- dialog.querySelector('.k-btn').click();
475
+ dialog.querySelector('.k-dialog-ok').click();
476
476
  cb2 = sinon.spy();
477
477
  Dialog.confirm({
478
478
  content: 'test',
@@ -489,7 +489,7 @@ describe('Dialog', function () {
489
489
 
490
490
  case 31:
491
491
  expect(cb2.callCount).to.eql(0);
492
- getElement('.k-dialog').querySelector('.k-btn').click();
492
+ getElement('.k-dialog').querySelector('.k-dialog-ok').click();
493
493
 
494
494
  case 33:
495
495
  case "end":
@@ -43,7 +43,7 @@ var defaults = {
43
43
  border: "1px solid #e2e5e8",
44
44
  closeTop: '9px',
45
45
  closeRight: '-9px',
46
- closeIconFontSize: '16px'
46
+ closeIconFontSize: '22px'
47
47
  },
48
48
  // body
49
49
  body: {
@@ -3,6 +3,7 @@ import { Options, Feedback } from '../position';
3
3
  import { Portal, PortalProps } from '../portal';
4
4
  import { FeedbackCallback } from './usePosition';
5
5
  import type { Events } from '../types';
6
+ import { Virtual } from '../virtual';
6
7
  export declare type Position = Options;
7
8
  export declare type PositionShorthand = 'left' | 'bottom' | 'right' | 'top';
8
9
  export declare const DROPDOWN = "Dropdown";
@@ -12,6 +13,7 @@ export interface DropdownProps {
12
13
  disabled?: boolean;
13
14
  value?: boolean;
14
15
  position?: Position | 'left' | 'bottom' | 'right' | 'top';
16
+ collison?: Position['collision'];
15
17
  of?: 'self' | 'parent' | Event;
16
18
  container?: PortalProps['container'];
17
19
  }
@@ -21,6 +23,8 @@ export interface DropdownEvents {
21
23
  hide: [];
22
24
  mouseenter: [MouseEvent];
23
25
  mouseleave: [MouseEvent];
26
+ click: [MouseEvent];
27
+ contextmenu: [MouseEvent];
24
28
  positioned: [Feedback];
25
29
  }
26
30
  export interface DropdownBlocks {
@@ -30,7 +34,7 @@ export declare class Dropdown<T extends DropdownProps = DropdownProps, E extends
30
34
  static typeDefs: Required<TypeDefs<DropdownProps>>;
31
35
  static defaults: () => Partial<DropdownProps>;
32
36
  static events: Events<DropdownEvents>;
33
- static template: (this: Dropdown) => (VNode<import("intact").VNodeTag> | VNode<typeof Portal>)[];
37
+ static template: (this: Dropdown) => (VNode<typeof Virtual> | VNode<typeof Portal>)[];
34
38
  menuVNode: VNode | null;
35
39
  dropdown: Dropdown | null;
36
40
  rootDropdown: Dropdown | null;
@@ -41,9 +45,7 @@ export declare class Dropdown<T extends DropdownProps = DropdownProps, E extends
41
45
  value: boolean;
42
46
  };
43
47
  };
44
- protected alwaysPortal: boolean;
45
- private timer;
46
- private triggerProps;
48
+ protected timer: number | undefined;
47
49
  init(): void;
48
50
  show(shouldFocus?: boolean): void;
49
51
  hide(immediately?: boolean): void;
@@ -53,6 +55,4 @@ export declare class Dropdown<T extends DropdownProps = DropdownProps, E extends
53
55
  private onContextMenu;
54
56
  private onLeave;
55
57
  private initEventCallbacks;
56
- private callOriginalCallback;
57
- private normalizeTriggerProps;
58
58
  }
@@ -3,14 +3,15 @@ import _inheritsLoose from "@babel/runtime-corejs3/helpers/inheritsLoose";
3
3
  import _concatInstanceProperty from "@babel/runtime-corejs3/core-js/instance/concat";
4
4
  import _filterInstanceProperty from "@babel/runtime-corejs3/core-js/instance/filter";
5
5
  import { __decorate } from "tslib";
6
- import { Component, createVNode as h, directClone, provide, inject, findDomFromVNode, createVNode, nextTick } from 'intact-react';
7
- import { bind, isTextChildren } from '../utils';
8
- import { EMPTY_OBJ, isFunction, noop } from 'intact-shared';
6
+ import { Component, createVNode as h, provide, inject, findDomFromVNode, nextTick } from 'intact-react';
7
+ import { bind, getRestProps } from '../utils';
8
+ import { noop } from 'intact-shared';
9
9
  import { cx } from '@emotion/css';
10
10
  import { useDocumentClick, containsOrEqual } from '../../hooks/useDocumentClick';
11
11
  import { Portal } from '../portal';
12
12
  import { useShowHideEvents } from '../../hooks/useShowHideEvents';
13
13
  import { usePosition } from './usePosition';
14
+ import { Virtual } from '../virtual';
14
15
  export var DROPDOWN = 'Dropdown';
15
16
  export var ROOT_DROPDOWN = 'RootDropdown';
16
17
  var typeDefs = {
@@ -20,13 +21,13 @@ var typeDefs = {
20
21
  position: [Object, 'left', 'bottom', 'right', 'top'],
21
22
  // Event is undefined in NodeJs
22
23
  of: ['self', 'parent', typeof Event === 'undefined' ? undefined : Event],
23
- container: [String, Function]
24
+ container: [String, Function],
25
+ collison: ['none', 'fit', 'flip', 'flipfit', Array]
24
26
  };
25
27
 
26
28
  var defaults = function defaults() {
27
29
  return {
28
30
  trigger: 'hover',
29
- position: {},
30
31
  of: 'self'
31
32
  };
32
33
  };
@@ -37,6 +38,8 @@ var events = {
37
38
  hide: true,
38
39
  mouseenter: true,
39
40
  mouseleave: true,
41
+ click: true,
42
+ contextmenu: true,
40
43
  positioned: true
41
44
  };
42
45
  export var Dropdown = /*#__PURE__*/function (_Component) {
@@ -57,9 +60,7 @@ export var Dropdown = /*#__PURE__*/function (_Component) {
57
60
  _this.rootDropdown = null;
58
61
  _this.showedDropdown = null;
59
62
  _this.positionHook = usePosition();
60
- _this.alwaysPortal = false;
61
63
  _this.timer = undefined;
62
- _this.triggerProps = null;
63
64
  return _this;
64
65
  }
65
66
 
@@ -97,7 +98,13 @@ export var Dropdown = /*#__PURE__*/function (_Component) {
97
98
 
98
99
  if (this.get('disabled')) return;
99
100
  clearTimeout(this.timer);
100
- this.set('value', true);
101
+ this.set('value', true); // should show parent dropdown
102
+
103
+ var parentDropdown = this.dropdown;
104
+
105
+ if (parentDropdown) {
106
+ parentDropdown.show();
107
+ }
101
108
 
102
109
  if (shouldFocus) {
103
110
  nextTick(function () {
@@ -115,10 +122,16 @@ export var Dropdown = /*#__PURE__*/function (_Component) {
115
122
 
116
123
  if (this.get('disabled')) return;
117
124
  if (!this.get('value')) return;
125
+ var showedDropdown = this.showedDropdown;
126
+
127
+ if (showedDropdown) {
128
+ showedDropdown.hide(immediately);
129
+ }
118
130
 
119
131
  if (immediately) {
120
132
  this.set('value', false);
121
133
  } else {
134
+ clearTimeout(this.timer);
122
135
  this.timer = window.setTimeout(function () {
123
136
  _this4.set('value', false);
124
137
  }, 200);
@@ -138,23 +151,24 @@ export var Dropdown = /*#__PURE__*/function (_Component) {
138
151
  };
139
152
 
140
153
  _proto.onEnter = function onEnter(e) {
141
- this.callOriginalCallback(e.type === 'click' ? 'ev-click' : 'ev-mouseenter', e);
142
154
  this.show();
155
+ this.trigger(e.type, e);
143
156
  };
144
157
 
145
158
  _proto.onContextMenu = function onContextMenu(e) {
146
- this.callOriginalCallback('ev-contextmenu', e);
147
159
  e.preventDefault();
148
160
  this.set('of', e);
149
161
  this.show();
162
+ this.trigger('contextmenu', e);
150
163
  };
151
164
 
152
165
  _proto.onLeave = function onLeave(e) {
153
- this.callOriginalCallback('ev-mouseleave', e);
154
166
  this.hide();
167
+ this.trigger(e.type, e);
155
168
  };
156
169
 
157
- _proto.initEventCallbacks = function initEventCallbacks(trigger) {
170
+ _proto.initEventCallbacks = function initEventCallbacks() {
171
+ var trigger = this.get('trigger');
158
172
  var props = {};
159
173
 
160
174
  switch (trigger) {
@@ -181,51 +195,6 @@ export var Dropdown = /*#__PURE__*/function (_Component) {
181
195
  return props;
182
196
  };
183
197
 
184
- _proto.callOriginalCallback = function callOriginalCallback(name, e) {
185
- var callback = this.triggerProps[name];
186
- var callbackOnDropdown = this.get(name);
187
- if (isFunction(callback)) callback(e);
188
- if (isFunction(callbackOnDropdown)) callbackOnDropdown(e);
189
- };
190
-
191
- _proto.normalizeTriggerProps = function normalizeTriggerProps(props) {
192
- // if use kpc in react or vue, normalize props by Wrapper.props.vnode;
193
- var vnode = props.vnode;
194
- if (!vnode) return props; // maybe we render the intact component in react slot property, in this case
195
- // the $isReact is false. so use the vnode $$typeof field as gauge
196
-
197
- if (vnode.$$typeof || this.$isVueNext) {
198
- var _props = vnode.props;
199
- if (!_props) return props;
200
- return {
201
- vnode: vnode,
202
- 'ev-click': _props.onClick,
203
- 'ev-mouseenter': _props.onMouseEnter,
204
- 'ev-mouseleave': _props.onMouseLeave,
205
- 'ev-contextmenu': _props.onContextMenu,
206
- className: _props.className || _props.class
207
- /* vue-next */
208
-
209
- };
210
- } else if (this.$isVue) {
211
- var data = vnode.data;
212
- var on = data && data.on || EMPTY_OBJ;
213
- var ret = {
214
- vnode: vnode
215
- };
216
- ['click', 'mouseenter', 'mouseleave', 'contextmenu'].forEach(function (event) {
217
- var method = on[event];
218
-
219
- if (method) {
220
- ret["ev-" + event] = method;
221
- }
222
- });
223
- return ret;
224
- }
225
-
226
- return props;
227
- };
228
-
229
198
  return Dropdown;
230
199
  }(Component);
231
200
  Dropdown.$doubleVNodes = true;
@@ -255,23 +224,23 @@ Dropdown.template = function () {
255
224
  var _children = children,
256
225
  trigger = _children[0],
257
226
  menu = _children[1];
258
- var triggerType = this.get('trigger');
259
- var props = this.initEventCallbacks(triggerType);
260
- var clonedTrigger = isTextChildren(trigger) ? createVNode('span', null, trigger) : directClone(trigger);
261
- var triggerProps = this.triggerProps = this.normalizeTriggerProps(trigger.props || EMPTY_OBJ); // add a className for opening status
262
-
263
- var className = trigger.className || triggerProps.className;
264
- className = cx((_cx = {}, _cx[className] = className, _cx['k-dropdown-open'] = this.get('value'), _cx));
265
- clonedTrigger.props = _extends({}, triggerProps, props, {
266
- className: className
267
- });
268
- clonedTrigger.className = className;
227
+ var props = this.initEventCallbacks();
228
+
229
+ var _this$get = this.get(),
230
+ className = _this$get.className,
231
+ value = _this$get.value,
232
+ container = _this$get.container;
233
+
234
+ className = cx((_cx = {
235
+ 'k-dropdown-open': value
236
+ }, _cx[className] = !!className, _cx));
269
237
  this.menuVNode = menu;
270
- return [clonedTrigger, // wrap the root dropdown menu to Portal to render into body
271
- this.alwaysPortal || !this.rootDropdown ? h(Portal, {
238
+ return [h(Virtual, _extends({}, props, getRestProps(this), {
239
+ className: className
240
+ }), trigger), h(Portal, {
272
241
  children: menu,
273
- container: this.get('container')
274
- }) : menu];
242
+ container: container
243
+ })];
275
244
  };
276
245
 
277
246
  __decorate([bind], Dropdown.prototype, "position", null);
@@ -288,9 +257,10 @@ function useDocumentClickForDropdown(dropdown) {
288
257
  };
289
258
 
290
259
  var _useDocumentClick = useDocumentClick(elementRef, function (e) {
291
- // case 1: if click an trigger and the trigger type is hover, ignore it
292
- // case 2: if right click on trigger and the trigger type is contextmenu, ignore it
293
- // case 3: if click on trigger and the trigger type is focus, do nothing
260
+ // case 1: if click a trigger and its trigger type is hover, ignore it
261
+ // case 2: if right click on a trigger and its trigger type is contextmenu, ignore it
262
+ // case 3: if click on a trigger and its trigger type is focus, do nothing
263
+ // case 3: if click on sub-dropdown, we should also show the parent dropdown, so ignore it
294
264
  var trigger = dropdown.get('trigger');
295
265
  if (trigger === 'focus') return;
296
266
  var isHover = trigger === 'hover';
@@ -305,6 +275,7 @@ function useDocumentClickForDropdown(dropdown) {
305
275
  }
306
276
  }
307
277
 
278
+ if (isSubDropdownElement(e.target, dropdown)) return;
308
279
  dropdown.hide(true);
309
280
  }, true),
310
281
  addDocumentClick = _useDocumentClick[0],
@@ -314,6 +285,18 @@ function useDocumentClickForDropdown(dropdown) {
314
285
  dropdown.on('hide', removeDocumentClick);
315
286
  }
316
287
 
288
+ function isSubDropdownElement(elem, dropdown) {
289
+ var showedDropdown = dropdown.showedDropdown;
290
+ if (!showedDropdown) return false;
291
+ var subMenuElement = findDomFromVNode(showedDropdown.menuVNode, true);
292
+
293
+ if (containsOrEqual(subMenuElement, elem)) {
294
+ return true;
295
+ }
296
+
297
+ return isSubDropdownElement(elem, showedDropdown);
298
+ }
299
+
317
300
  function useHideLastMenuOnShow(dropdown) {
318
301
  var parentDropdown = dropdown.dropdown;
319
302
  dropdown.on('show', function () {