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

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 (202) hide show
  1. package/__tests__/__snapshots__/Dialog.md +1 -1
  2. package/__tests__/__snapshots__/React Demos.md +461 -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.js +1 -1
  8. package/components/cascader/index.d.ts +22 -11
  9. package/components/cascader/index.js +9 -12
  10. package/components/cascader/index.spec.js +81 -0
  11. package/components/cascader/index.vdt.js +10 -8
  12. package/components/cascader/styles.js +1 -1
  13. package/components/cascader/useFields.d.ts +2 -0
  14. package/components/cascader/useFields.js +18 -0
  15. package/components/cascader/useFilterable.d.ts +2 -1
  16. package/components/cascader/useFilterable.js +17 -6
  17. package/components/cascader/useLabel.d.ts +2 -1
  18. package/components/cascader/useLabel.js +4 -4
  19. package/components/cascader/useLoad.d.ts +2 -1
  20. package/components/cascader/useLoad.js +9 -7
  21. package/components/colorpicker/index.d.ts +2 -0
  22. package/components/colorpicker/index.js +7 -2
  23. package/components/colorpicker/index.vdt.js +3 -6
  24. package/components/copy/index.d.ts +17 -0
  25. package/components/copy/index.js +43 -0
  26. package/components/copy/index.spec.d.ts +1 -0
  27. package/components/copy/index.spec.js +52 -0
  28. package/components/copy/index.vdt.js +45 -0
  29. package/components/copy/styles.d.ts +2 -0
  30. package/components/copy/styles.js +14 -0
  31. package/components/copy/useCopy.d.ts +4 -0
  32. package/components/copy/useCopy.js +90 -0
  33. package/components/datepicker/index.spec.js +1 -1
  34. package/components/datepicker/index.vdt.js +1 -1
  35. package/components/datepicker/styles.js +1 -1
  36. package/components/diagram/shapes/callout.d.ts +1 -1
  37. package/components/diagram/shapes/circle.d.ts +1 -1
  38. package/components/diagram/shapes/document.d.ts +1 -1
  39. package/components/diagram/shapes/ellipse.d.ts +1 -1
  40. package/components/diagram/shapes/hexagon.d.ts +1 -1
  41. package/components/diagram/shapes/image.d.ts +1 -1
  42. package/components/diagram/shapes/parallelogram.d.ts +1 -1
  43. package/components/diagram/shapes/rectangle.d.ts +1 -1
  44. package/components/diagram/shapes/square.d.ts +1 -1
  45. package/components/diagram/shapes/text.d.ts +1 -1
  46. package/components/dialog/alert.vdt.js +6 -5
  47. package/components/dialog/index.spec.js +6 -6
  48. package/components/dropdown/dropdown.d.ts +6 -6
  49. package/components/dropdown/dropdown.js +58 -75
  50. package/components/dropdown/index.spec.js +96 -17
  51. package/components/dropdown/item.d.ts +1 -1
  52. package/components/dropdown/item.js +19 -7
  53. package/components/dropdown/menu.js +1 -1
  54. package/components/dropdown/usePosition.js +11 -2
  55. package/components/editable/index.d.ts +1 -0
  56. package/components/editable/index.js +20 -6
  57. package/components/editable/index.vdt.js +2 -1
  58. package/components/form/index.spec.js +4 -2
  59. package/components/form/item.vdt.js +2 -1
  60. package/components/form/styles.js +4 -4
  61. package/components/grid/useGutter.js +8 -8
  62. package/components/input/index.d.ts +11 -2
  63. package/components/input/index.js +13 -13
  64. package/components/input/index.spec.js +169 -1
  65. package/components/input/index.vdt.js +28 -7
  66. package/components/input/styles.js +20 -3
  67. package/components/input/useAutoRows.d.ts +2 -0
  68. package/components/input/useAutoRows.js +79 -0
  69. package/components/input/useAutoWidth.js +13 -3
  70. package/components/input/useShowPassword.d.ts +7 -0
  71. package/components/input/useShowPassword.js +31 -0
  72. package/components/menu/index.spec.js +26 -15
  73. package/components/menu/item.d.ts +2 -0
  74. package/components/menu/item.js +5 -0
  75. package/components/pagination/index.d.ts +1 -1
  76. package/components/pagination/index.js +3 -2
  77. package/components/pagination/index.spec.js +49 -0
  78. package/components/pagination/index.vdt.js +8 -10
  79. package/components/pagination/styles.js +1 -1
  80. package/components/popover/content.d.ts +19 -0
  81. package/components/popover/content.js +31 -0
  82. package/components/popover/content.vdt.js +68 -0
  83. package/components/popover/index.d.ts +16 -0
  84. package/components/popover/index.js +44 -0
  85. package/components/popover/index.spec.d.ts +1 -0
  86. package/components/popover/index.spec.js +195 -0
  87. package/components/popover/styles.d.ts +1 -0
  88. package/components/popover/styles.js +22 -0
  89. package/components/portal.d.ts +6 -2
  90. package/components/portal.js +4 -3
  91. package/components/position.js +2 -1
  92. package/components/progress/index.js +1 -1
  93. package/components/progress/index.vdt.js +46 -8
  94. package/components/progress/styles.js +19 -13
  95. package/components/rate/styles.js +1 -1
  96. package/components/select/base.d.ts +7 -3
  97. package/components/select/base.js +9 -3
  98. package/components/select/base.vdt.js +46 -35
  99. package/components/select/index.spec.js +2 -2
  100. package/components/select/menu.vdt.js +1 -1
  101. package/components/select/styles.js +11 -5
  102. package/components/select/useDraggble.d.ts +2 -0
  103. package/components/select/useDraggble.js +11 -0
  104. package/components/select/useNowrap.d.ts +3 -0
  105. package/components/select/useNowrap.js +19 -0
  106. package/components/slider/index.spec.js +48 -9
  107. package/components/slider/index.vdt.js +23 -12
  108. package/components/slider/styles.js +23 -14
  109. package/components/slider/useValue.d.ts +3 -1
  110. package/components/slider/useValue.js +12 -0
  111. package/components/spinner/index.d.ts +0 -1
  112. package/components/spinner/index.js +1 -19
  113. package/components/spinner/index.vdt.js +9 -4
  114. package/components/spinner/useChange.d.ts +1 -1
  115. package/components/spinner/useChange.js +2 -2
  116. package/components/spinner/useValue.d.ts +1 -0
  117. package/components/spinner/useValue.js +16 -1
  118. package/components/split/index.vdt.js +32 -20
  119. package/components/split/memo.d.ts +9 -0
  120. package/components/split/memo.js +26 -0
  121. package/components/steps/index.d.ts +1 -0
  122. package/components/steps/index.js +2 -1
  123. package/components/steps/index.spec.js +1 -1
  124. package/components/steps/index.vdt.js +7 -4
  125. package/components/steps/step.vdt.js +0 -1
  126. package/components/steps/styles.d.ts +1 -0
  127. package/components/steps/styles.js +45 -16
  128. package/components/switch/index.spec.js +82 -65
  129. package/components/table/cell.js +1 -6
  130. package/components/table/index.spec.js +130 -19
  131. package/components/table/row.d.ts +1 -1
  132. package/components/table/row.js +2 -1
  133. package/components/table/styles.js +1 -1
  134. package/components/table/table.d.ts +15 -0
  135. package/components/table/table.js +16 -7
  136. package/components/table/table.vdt.js +20 -6
  137. package/components/table/useChecked.d.ts +3 -2
  138. package/components/table/useChecked.js +23 -12
  139. package/components/table/useDisableRow.d.ts +2 -1
  140. package/components/table/useDisableRow.js +4 -4
  141. package/components/table/useDraggable.d.ts +3 -2
  142. package/components/table/useDraggable.js +11 -15
  143. package/components/table/useGroup.js +3 -0
  144. package/components/table/useMerge.d.ts +2 -1
  145. package/components/table/useMerge.js +5 -4
  146. package/components/table/usePagination.d.ts +8 -0
  147. package/components/table/usePagination.js +81 -0
  148. package/components/table/useStickyScrollbar.js +2 -2
  149. package/components/table/useTree.d.ts +2 -1
  150. package/components/table/useTree.js +3 -4
  151. package/components/table/useWidth.js +2 -2
  152. package/components/tabs/index.d.ts +1 -1
  153. package/components/tabs/index.js +1 -1
  154. package/components/tabs/index.spec.js +67 -0
  155. package/components/tabs/index.vdt.js +4 -4
  156. package/components/tabs/styles.js +32 -34
  157. package/components/tabs/useScroll.d.ts +1 -1
  158. package/components/tabs/useScroll.js +75 -48
  159. package/components/tag/base.d.ts +1 -0
  160. package/components/tag/base.js +1 -1
  161. package/components/tag/index.d.ts +1 -0
  162. package/components/tag/index.js +2 -1
  163. package/components/tag/index.spec.js +147 -4
  164. package/components/tag/styles.d.ts +67 -0
  165. package/components/tag/styles.js +33 -8
  166. package/components/tag/tags.d.ts +27 -0
  167. package/components/tag/tags.js +51 -0
  168. package/components/tag/tags.vdt.js +79 -0
  169. package/components/tag/useChildren.d.ts +2 -0
  170. package/components/tag/useChildren.js +39 -0
  171. package/components/tag/useDraggable.d.ts +3 -0
  172. package/components/tag/useDraggable.js +89 -0
  173. package/components/tag/useNowrap.d.ts +7 -0
  174. package/components/tag/useNowrap.js +115 -0
  175. package/components/timepicker/index.spec.js +1 -1
  176. package/components/tooltip/content.d.ts +3 -2
  177. package/components/tooltip/content.js +18 -1
  178. package/components/tooltip/content.vdt.js +22 -10
  179. package/components/tooltip/index.spec.js +147 -92
  180. package/components/tooltip/styles.d.ts +23 -0
  181. package/components/tooltip/styles.js +2 -2
  182. package/components/tooltip/tooltip.d.ts +1 -1
  183. package/components/tooltip/tooltip.js +11 -11
  184. package/components/upload/index.spec.js +5 -6
  185. package/components/upload/index.vdt.js +3 -1
  186. package/components/utils.d.ts +2 -0
  187. package/components/utils.js +24 -3
  188. package/components/virtual.d.ts +8 -0
  189. package/components/virtual.js +126 -0
  190. package/hooks/useResizeObserver.d.ts +1 -1
  191. package/hooks/useResizeObserver.js +19 -6
  192. package/i18n/en-US.d.ts +4 -1
  193. package/i18n/en-US.js +6 -2
  194. package/index.d.ts +5 -3
  195. package/index.js +5 -3
  196. package/package.json +2 -2
  197. package/styles/fonts/iconfont.js +1 -1
  198. package/styles/fonts/ionicons.js +3 -3
  199. package/styles/global.js +1 -1
  200. package/yarn-error.log +41 -43
  201. package/components/table/useResizeObserver.d.ts +0 -2
  202. package/components/table/useResizeObserver.js +0 -20
@@ -3,7 +3,7 @@ import _sortInstanceProperty from "@babel/runtime-corejs3/core-js/instance/sort"
3
3
  import { createElementVNode as _$ce, map as _$ma, className as _$cn, createUnknownComponentVNode as _$cc, createVNode as _$cv, noop as _$no, extend as _$ex, EMPTY_OBJ as _$em } from 'intact-react';
4
4
  import { eachChildren } from '../utils';
5
5
  import { makeStyles } from './styles';
6
- import { isStringOrNumber, isNull } from 'intact-shared';
6
+ import { isStringOrNumber, isNull, isObject, EMPTY_OBJ } from 'intact-shared';
7
7
  import { getClassAndStyleForFixed } from './useFixedColumns';
8
8
  import { Affix } from '../affix';
9
9
  import { TableRow } from './row';
@@ -19,6 +19,7 @@ import { Tooltip } from '../tooltip';
19
19
  import { AllCheckedStatus } from './useChecked';
20
20
  import { context as ResizableContext } from './useResizable';
21
21
  import { context as FixedColumnsContext } from './useFixedColumns';
22
+ import { Pagination } from '../pagination';
22
23
  var _$tmp0 = {
23
24
  'width': '40'
24
25
  };
@@ -58,7 +59,9 @@ export default function ($props, $blocks, $__proto__) {
58
59
  showIndeterminate = _this$get.showIndeterminate,
59
60
  resizable = _this$get.resizable,
60
61
  draggable = _this$get.draggable,
61
- _animation = _this$get.animation;
62
+ _animation = _this$get.animation,
63
+ hideHeader = _this$get.hideHeader,
64
+ pagination = _this$get.pagination;
62
65
 
63
66
  var animation = !Array.isArray(_animation) ? [_animation, _animation] : _animation;
64
67
 
@@ -112,8 +115,7 @@ export default function ($props, $blocks, $__proto__) {
112
115
  onChangeChecked = _this$checked.onChangeChecked;
113
116
  var allCheckedStatus = getAllCheckedStatus();
114
117
  var offsetMap = getOffsetMap();
115
-
116
- var thead = _$cc(TableContext.Provider, {
118
+ var thead = hideHeader ? null : _$cc(TableContext.Provider, {
117
119
  'value': checkType,
118
120
  'children': _$cc(GroupContext.Provider, {
119
121
  'value': {
@@ -157,7 +159,6 @@ export default function ($props, $blocks, $__proto__) {
157
159
  })
158
160
  })
159
161
  });
160
-
161
162
  var getAllKeys = this.disableRow.getAllKeys;
162
163
  var getGrid = this.merge.getGrid;
163
164
  var allStatus = getAllStatus();
@@ -306,6 +307,11 @@ export default function ($props, $blocks, $__proto__) {
306
307
  scrollbarRef = _this$stickyScrollbar.scrollbarRef,
307
308
  onScrollbarScroll = _this$stickyScrollbar.onScroll,
308
309
  tableActualWidth = _this$stickyScrollbar.tableActualWidth;
310
+ var _this$pagination = this.pagination,
311
+ pageValue = _this$pagination.value,
312
+ pageLimit = _this$pagination.limit,
313
+ onPageChange = _this$pagination.onChange,
314
+ paginationRef = _this$pagination.paginationRef;
309
315
  return _$ce(2, 'div', [_$ce(2, 'div', [!isNull(stickHeader.value) ? _$cc(Affix, {
310
316
  'top': stickHeader.value,
311
317
  'exclude': excludeStickHeader,
@@ -321,7 +327,15 @@ export default function ($props, $blocks, $__proto__) {
321
327
  }
322
328
  }, null, tableRef)], 0, 'k-table-wrapper', {
323
329
  'style': style
324
- }, null, scrollRef), _$cc(Transition, {
330
+ }, null, scrollRef), pagination ? _$cc(Pagination, _extends({
331
+ 'ref': paginationRef,
332
+ 'total': data ? data.length : 0,
333
+ 'size': 'small'
334
+ }, isObject(pagination) ? pagination : EMPTY_OBJ, {
335
+ 'value': pageValue.value,
336
+ 'limit': pageLimit.value,
337
+ 'ev-change': onPageChange
338
+ }), null, paginationRef) : undefined, _$cc(Transition, {
325
339
  'name': 'k-fade',
326
340
  'children': loading ? _$cc(Spin, _$tmp1) : undefined
327
341
  }), !isNull(stickScrollbar.value) ? _$cc(Affix, {
@@ -1,3 +1,4 @@
1
+ import { State } from '../../hooks/useState';
1
2
  import type { TableRowKey } from './';
2
3
  import type { TableGrid } from './useMerge';
3
4
  import type { useTree } from './useTree';
@@ -12,12 +13,12 @@ export declare enum AllCheckedStatus {
12
13
  Indeterminate = 1,
13
14
  None = 2
14
15
  }
15
- export declare function useChecked(getEnableKeys: () => TableRowKey[], getAllKeys: () => TableRowKey[], isDisabledKey: (key: TableRowKey) => boolean, getGrid: () => TableGrid, loopData: ReturnType<typeof useTree>['loopData']): {
16
+ export declare function useChecked(getEnableKeys: () => TableRowKey[], getAllKeys: () => TableRowKey[], isDisabledKey: (key: TableRowKey) => boolean, getGrid: () => TableGrid, loopData: ReturnType<typeof useTree>['loopData'], data: State<any[] | undefined>): {
16
17
  isChecked: (key: TableRowKey) => boolean;
17
18
  getAllCheckedStatus: () => AllCheckedStatus;
18
19
  toggleCheckedAll: (v: boolean) => void;
19
20
  getAllStatus: () => RowStatus[];
20
- onChangeChecked: (rowIndex: number, v: boolean) => void;
21
+ onChangeChecked: (rowIndex: number, v: boolean, key: TableRowKey) => void;
21
22
  };
22
23
  export declare function inArray<T>(arr: T[] | undefined, v: T): boolean;
23
24
  export declare function addOrRemove(keys: TableRowKey[], key: TableRowKey, isAdd: boolean): void;
@@ -2,6 +2,7 @@ import _includesInstanceProperty from "@babel/runtime-corejs3/core-js/instance/i
2
2
  import _sliceInstanceProperty from "@babel/runtime-corejs3/core-js/instance/slice";
3
3
  import _spliceInstanceProperty from "@babel/runtime-corejs3/core-js/instance/splice";
4
4
  import { useInstance } from 'intact-react';
5
+ import { watchState } from '../../hooks/useState';
5
6
  import { toggleArray } from '../utils';
6
7
  export var AllCheckedStatus;
7
8
 
@@ -11,7 +12,7 @@ export var AllCheckedStatus;
11
12
  AllCheckedStatus[AllCheckedStatus["None"] = 2] = "None";
12
13
  })(AllCheckedStatus || (AllCheckedStatus = {}));
13
14
 
14
- export function useChecked(getEnableKeys, getAllKeys, isDisabledKey, getGrid, loopData) {
15
+ export function useChecked(getEnableKeys, getAllKeys, isDisabledKey, getGrid, loopData, data) {
15
16
  var instance = useInstance();
16
17
  var allStatus = [];
17
18
 
@@ -21,7 +22,10 @@ export function useChecked(getEnableKeys, getAllKeys, isDisabledKey, getGrid, lo
21
22
 
22
23
  function toggleChecked(key, rowIndex) {
23
24
  if (instance.get('checkType') === 'checkbox') {
24
- instance.set('checkedKeys', toggleArray(instance.get('checkedKeys'), key));
25
+ instance.set('checkedKeys', toggleArray(instance.get('checkedKeys'), key)); // trigger check event for checkbox,
26
+ // radio check event trigger in onChangeChecked function
27
+
28
+ triggerEvent(isChecked(key), key, rowIndex);
25
29
  } else {
26
30
  if (isChecked(key)) return;
27
31
  var grid = getGrid();
@@ -34,7 +38,7 @@ export function useChecked(getEnableKeys, getAllKeys, isDisabledKey, getGrid, lo
34
38
  }
35
39
  }
36
40
 
37
- onChangeChecked(rowIndex, true);
41
+ onChangeChecked(rowIndex, true, key);
38
42
  }
39
43
  }
40
44
 
@@ -61,6 +65,7 @@ export function useChecked(getEnableKeys, getAllKeys, isDisabledKey, getGrid, lo
61
65
 
62
66
  function toggleCheckedAll(v) {
63
67
  instance.set('checkedKeys', getCheckedAllOrUncheckedAllKeys(v));
68
+ instance.trigger(v ? 'checkAll' : 'uncheckAll');
64
69
  }
65
70
  /**
66
71
  * keep the original keys which don't exist in the enableKeys,
@@ -92,12 +97,11 @@ export function useChecked(getEnableKeys, getAllKeys, isDisabledKey, getGrid, lo
92
97
  allStatus = [];
93
98
 
94
99
  var _instance$get2 = instance.get(),
95
- data = _instance$get2.data,
96
100
  rowKey = _instance$get2.rowKey,
97
101
  checkType = _instance$get2.checkType,
98
102
  merge = _instance$get2.merge;
99
103
 
100
- if (!data || !data.length) return;
104
+ if (!data.value || !data.value.length) return;
101
105
  var allKeys = getAllKeys();
102
106
  allKeys.forEach(function (key) {
103
107
  var disabled = isDisabledKey(key);
@@ -161,7 +165,7 @@ export function useChecked(getEnableKeys, getAllKeys, isDisabledKey, getGrid, lo
161
165
  }
162
166
  }
163
167
 
164
- function onChangeChecked(rowIndex, v) {
168
+ function onChangeChecked(rowIndex, v, key) {
165
169
  var _context;
166
170
 
167
171
  // should check or uncheck all grouped rows
@@ -172,9 +176,9 @@ export function useChecked(getEnableKeys, getAllKeys, isDisabledKey, getGrid, lo
172
176
 
173
177
  if (checkType === 'radio') {
174
178
  for (var i = 0; i < checkedKeys.length; i++) {
175
- var key = checkedKeys[i]; // FIXME: should ignore the disabled status, if we remove the radio keys
179
+ var _key = checkedKeys[i]; // FIXME: should ignore the disabled status, if we remove the radio keys
176
180
 
177
- if (isDisabledKey(key)) continue;
181
+ if (isDisabledKey(_key)) continue;
178
182
 
179
183
  _spliceInstanceProperty(checkedKeys).call(checkedKeys, i, 1);
180
184
 
@@ -189,27 +193,34 @@ export function useChecked(getEnableKeys, getAllKeys, isDisabledKey, getGrid, lo
189
193
  if ((rowspan = grid[rowIndex]) && (rowspan = rowspan[0]) && (rowspan = rowspan.spans) && (rowspan = rowspan.rowspan) && rowspan > 1) {
190
194
  for (var _i = rowIndex; _i < rowspan + rowIndex; _i++) {
191
195
  var status = allStatus[_i];
192
- var _key = allKeys[_i];
196
+ var _key2 = allKeys[_i];
193
197
 
194
198
  if (!status.disabled) {
195
- addOrRemove(checkedKeys, _key, v);
199
+ addOrRemove(checkedKeys, _key2, v);
196
200
  }
197
201
  }
198
202
  } else {
199
203
  addOrRemove(checkedKeys, allKeys[rowIndex], v);
200
204
  }
201
205
 
202
- instance.set('checkedKeys', checkedKeys);
206
+ instance.set('checkedKeys', checkedKeys); // onChangeChecked will be called in clickRow and check in Row component
207
+
208
+ triggerEvent(v, key, rowIndex);
203
209
  }
204
210
 
205
211
  function getAllStatus() {
206
212
  return allStatus;
207
213
  }
208
214
 
215
+ function triggerEvent(isChecked, key, rowIndex) {
216
+ instance.trigger(isChecked ? 'checkRow' : 'uncheckRow', data.value[rowIndex], rowIndex, key);
217
+ }
218
+
209
219
  instance.on('$receive:children', updateAllCheckedStatus);
210
220
  instance.on('$change:checkedKeys', updateAllCheckedStatus); // for draggable
211
221
 
212
- instance.on('$change:data', updateAllCheckedStatus);
222
+ watchState(data, updateAllCheckedStatus); // instance.on('$change:data', updateAllCheckedStatus);
223
+
213
224
  instance.on('clickRow', function (data, index, key) {
214
225
  if (instance.get('rowCheckable') && instance.get('checkType') !== 'none') {
215
226
  toggleChecked(key, index);
@@ -1,6 +1,7 @@
1
1
  import type { TableRowKey } from './table';
2
2
  import type { useTree } from './useTree';
3
- export declare function useDisableRow(loopData: ReturnType<typeof useTree>['loopData']): {
3
+ import { State } from '../../hooks/useState';
4
+ export declare function useDisableRow(loopData: ReturnType<typeof useTree>['loopData'], data: State<any[] | undefined>): {
4
5
  isDisabled: (data: any, index: number, key: TableRowKey) => boolean;
5
6
  getEnableKeys: () => TableRowKey[];
6
7
  isDisabledKey: (key: TableRowKey) => boolean;
@@ -1,5 +1,6 @@
1
1
  import { useInstance } from 'intact-react';
2
- export function useDisableRow(loopData) {
2
+ import { watchState } from '../../hooks/useState';
3
+ export function useDisableRow(loopData, data) {
3
4
  var instance = useInstance();
4
5
  var enabledKeys = [];
5
6
  var disabledKeys = [];
@@ -45,9 +46,8 @@ export function useDisableRow(loopData) {
45
46
  return allKeys;
46
47
  }
47
48
 
48
- instance.on('$receive:children', setDisabledKeys); // for draggable
49
-
50
- instance.on('$change:data', setDisabledKeys);
49
+ instance.on('$receive:children', setDisabledKeys);
50
+ watchState(data, setDisabledKeys);
51
51
  return {
52
52
  isDisabled: isDisabled,
53
53
  getEnableKeys: getEnableKeys,
@@ -1,8 +1,9 @@
1
1
  import type { TableRowKey } from './table';
2
+ import { State } from '../../hooks/useState';
2
3
  import type { TableRow } from './row';
3
- export declare function useDraggable(): {
4
+ export declare function useDraggable(data: State<unknown[] | undefined>): {
4
5
  onRowDragStart: (e: MouseEvent, tableRow: TableRow) => void;
5
6
  onRowDragOver: (e: MouseEvent, tableRow: TableRow) => void;
6
7
  onRowDragEnd: (e: MouseEvent, tableRow: TableRow) => void;
7
- draggingKey: import("../../hooks/useState").State<TableRowKey | null>;
8
+ draggingKey: State<TableRowKey | null>;
8
9
  };
@@ -1,8 +1,7 @@
1
- import _sliceInstanceProperty from "@babel/runtime-corejs3/core-js/instance/slice";
2
- import _spliceInstanceProperty from "@babel/runtime-corejs3/core-js/instance/splice";
3
1
  import { useInstance, nextTick } from 'intact-react';
4
2
  import { useState } from '../../hooks/useState';
5
- export function useDraggable() {
3
+ import { swap } from '../utils';
4
+ export function useDraggable(data) {
6
5
  var instance = useInstance();
7
6
  var draggingKey = useState(null);
8
7
  var originIndex;
@@ -13,7 +12,7 @@ export function useDraggable() {
13
12
  draggingIndex = originIndex = tableRow.get('index');
14
13
  var key = tableRow.get('key');
15
14
  draggingKey.set(key);
16
- originData = instance.get('data');
15
+ originData = data.value;
17
16
  instance.trigger('dragstart', {
18
17
  key: key,
19
18
  from: draggingIndex
@@ -21,27 +20,24 @@ export function useDraggable() {
21
20
  }
22
21
 
23
22
  function onRowDragOver(e, tableRow) {
24
- var _context;
25
-
26
23
  e.preventDefault();
27
24
  e.stopPropagation();
25
+ if (draggingKey.value === null) return;
28
26
  var newIndex = tableRow.get('index');
29
27
  if (newIndex === draggingIndex) return; // swap data
30
28
 
31
- var data = _sliceInstanceProperty(_context = instance.get('data')).call(_context);
32
-
33
- var item = _spliceInstanceProperty(data).call(data, draggingIndex, 1)[0];
34
-
35
- _spliceInstanceProperty(data).call(data, newIndex, 0, item);
36
-
29
+ var newData = swap(data.value, draggingIndex, newIndex);
37
30
  draggingIndex = newIndex;
38
- instance.set('data', data);
31
+ data.set(newData);
39
32
  }
40
33
 
41
34
  function onRowDragEnd(e, tableRow) {
42
- e.preventDefault();
43
- instance.set('data', originData);
35
+ e.preventDefault(); // revert to origin data, then set to new data to trigger animation
36
+
37
+ var newData = data.value;
38
+ data.set(originData);
44
39
  nextTick(function () {
40
+ data.set(newData);
45
41
  draggingKey.set(null);
46
42
  instance.trigger('dragend', {
47
43
  key: tableRow.get('key'),
@@ -12,6 +12,9 @@ export function useGroup() {
12
12
  var instance = useInstance();
13
13
  var keywords = useState('');
14
14
  var filteredGroup = useState(instance.get('group'));
15
+ instance.on('$receive:group', function (group) {
16
+ return filteredGroup.set(group);
17
+ });
15
18
 
16
19
  function onSelect(value, groupValue, onChange) {
17
20
  var _instance$get = instance.get(),
@@ -1,5 +1,6 @@
1
1
  import { Props } from 'intact-react';
2
2
  import type { TableColumnProps } from './column';
3
+ import { State } from '../../hooks/useState';
3
4
  export declare type TableMerge<T = any, CheckType = 'checkbox'> = (row: T, column: CheckType extends 'none' ? Props<TableColumnProps> : Props<TableColumnProps> | null, rowIndex: number, columnIndex: number) => TableMergeConfig | undefined;
4
5
  export declare type TableMergeConfig = {
5
6
  colspan?: number;
@@ -10,6 +11,6 @@ export declare type TableGridItem = {
10
11
  spans: TableMergeConfig | undefined;
11
12
  };
12
13
  export declare type TableGrid = TableGridItem[][];
13
- export declare function useMerge(getCols: () => Props<TableColumnProps>[]): {
14
+ export declare function useMerge(getCols: () => Props<TableColumnProps>[], data: State<unknown[] | undefined>): {
14
15
  getGrid: () => TableGrid;
15
16
  };
@@ -1,5 +1,6 @@
1
1
  import { useInstance } from 'intact-react';
2
- export function useMerge(getCols) {
2
+ import { watchState } from '../../hooks/useState';
3
+ export function useMerge(getCols, data) {
3
4
  var instance = useInstance();
4
5
  var grid = [];
5
6
 
@@ -8,12 +9,11 @@ export function useMerge(getCols) {
8
9
 
9
10
  var _instance$get = instance.get(),
10
11
  merge = _instance$get.merge,
11
- data = _instance$get.data,
12
12
  checkType = _instance$get.checkType;
13
13
 
14
- if (!data || !data.length || !merge) return;
14
+ if (!data.value || !data.value.length || !merge) return;
15
15
  var cols = getCols();
16
- data.forEach(function (data, rowIndex) {
16
+ data.value.forEach(function (data, rowIndex) {
17
17
  var currentRow = [];
18
18
  grid.push(currentRow);
19
19
  var columnIndexOffset = 0;
@@ -71,6 +71,7 @@ export function useMerge(getCols) {
71
71
  }
72
72
 
73
73
  instance.on('$receive:children', handleSpans);
74
+ watchState(data, handleSpans);
74
75
  return {
75
76
  getGrid: getGrid
76
77
  };
@@ -0,0 +1,8 @@
1
+ import { Pagination, PaginationChangeData } from '../pagination';
2
+ export declare function usePagination(): {
3
+ data: import("../../hooks/useState").State<any[] | undefined>;
4
+ value: import("../../hooks/useState").State<number>;
5
+ limit: import("../../hooks/useState").State<number>;
6
+ onChange: (data: PaginationChangeData) => void;
7
+ paginationRef: import('intact-react').RefObject<Pagination>;
8
+ };
@@ -0,0 +1,81 @@
1
+ import _extends from "@babel/runtime-corejs3/helpers/extends";
2
+ import _sliceInstanceProperty from "@babel/runtime-corejs3/core-js/instance/slice";
3
+ import { useInstance, createRef } from 'intact-react';
4
+ import { useState } from '../../hooks/useState';
5
+ import { Pagination } from '../pagination';
6
+ import { isObject } from 'intact-shared';
7
+ import { useReceive } from '../../hooks/useReceive';
8
+ var defaultPagination = Pagination.defaults();
9
+ export function usePagination() {
10
+ var instance = useInstance();
11
+ var data = useState(instance.get('data'));
12
+ var value = useState(defaultPagination.value);
13
+ var limit = useState(defaultPagination.limit);
14
+ var paginationRef = createRef(); // for unit test
15
+
16
+ useReceive(['data', 'pagination'], function () {
17
+ handleData();
18
+ });
19
+
20
+ function handleData() {
21
+ var _instance$get = instance.get(),
22
+ _data = _instance$get.data,
23
+ pagination = _instance$get.pagination;
24
+
25
+ if (!_data) {
26
+ data.set(undefined);
27
+ return;
28
+ }
29
+
30
+ if (!pagination) {
31
+ data.set(_data);
32
+ return;
33
+ }
34
+
35
+ if (isObject(pagination)) {
36
+ if (pagination.value) {
37
+ value.set(pagination.value);
38
+ }
39
+
40
+ if (pagination.limit) {
41
+ limit.set(pagination.limit);
42
+ }
43
+ }
44
+
45
+ updateDataByPage();
46
+ }
47
+
48
+ function updateDataByPage() {
49
+ var _instance$get2 = instance.get(),
50
+ _data = _instance$get2.data;
51
+
52
+ var index = (value.value - 1) * limit.value;
53
+ data.set(_sliceInstanceProperty(_data).call(_data, index, index + limit.value));
54
+ }
55
+
56
+ function onChange(data) {
57
+ var _instance$get3 = instance.get(),
58
+ pagination = _instance$get3.pagination;
59
+
60
+ value.set(data.value);
61
+ limit.set(data.limit);
62
+ updateDataByPage();
63
+
64
+ if (isObject(pagination)) {
65
+ instance.set('pagination', _extends({}, pagination, {
66
+ value: value.value,
67
+ limit: limit.value
68
+ }));
69
+ }
70
+
71
+ instance.trigger('changePage', data);
72
+ }
73
+
74
+ return {
75
+ data: data,
76
+ value: value,
77
+ limit: limit,
78
+ onChange: onChange,
79
+ paginationRef: paginationRef
80
+ };
81
+ }
@@ -2,7 +2,7 @@ import { createRef, useInstance, onMounted, nextTick } from 'intact-react';
2
2
  import { useState } from '../../hooks/useState';
3
3
  import { isStringOrNumber, isNull } from 'intact-shared';
4
4
  import { debounce } from '../utils';
5
- import { useResizeObserver } from './useResizeObserver';
5
+ import { useResizeObserver } from '../../hooks/useResizeObserver';
6
6
  export function useStickyScrollbar(elementRef, _ref, tableRef, tableScroll) {
7
7
  var scrollRef = _ref.scrollRef,
8
8
  callbacks = _ref.callbacks;
@@ -14,7 +14,7 @@ export function useStickyScrollbar(elementRef, _ref, tableRef, tableScroll) {
14
14
  instance.on('$receive:stickScrollbar', function (v) {
15
15
  stick.set(v === true ? 0 : isStringOrNumber(v) ? +v : null);
16
16
  });
17
- useResizeObserver(scrollRef, setTableActualWidth);
17
+ useResizeObserver(scrollRef, setTableActualWidth, true);
18
18
  onMounted(function () {
19
19
  setTableActualWidth();
20
20
  });
@@ -1,5 +1,6 @@
1
1
  import type { TableRowKey } from './table';
2
- export declare function useTree(): {
2
+ import { State } from '../../hooks/useState';
3
+ export declare function useTree(data: State<any[] | undefined>): {
3
4
  isSpreaded: (key: TableRowKey) => boolean;
4
5
  toggleSpreadRow: (key: TableRowKey) => void;
5
6
  loopData: <T>(cb: (value: any, index: number, level: number, meta: T | null) => T, shouldBreak?: boolean) => void;
@@ -1,7 +1,7 @@
1
1
  import { useInstance } from 'intact-react';
2
2
  import { inArray } from './useChecked';
3
3
  import { toggleArray } from '../utils';
4
- export function useTree() {
4
+ export function useTree(data) {
5
5
  var instance = useInstance();
6
6
 
7
7
  function isSpreaded(key) {
@@ -18,10 +18,9 @@ export function useTree() {
18
18
  }
19
19
 
20
20
  var _instance$get = instance.get(),
21
- childrenKey = _instance$get.childrenKey,
22
- data = _instance$get.data;
21
+ childrenKey = _instance$get.childrenKey;
23
22
 
24
- loopDataWithChildrenKey(data, childrenKey, cb, shouldBreak);
23
+ loopDataWithChildrenKey(data.value, childrenKey, cb, shouldBreak);
25
24
  }
26
25
 
27
26
  return {
@@ -3,7 +3,7 @@ import _JSON$stringify from "@babel/runtime-corejs3/core-js/json/stringify";
3
3
  import { useInstance, onMounted, createRef } from 'intact-react';
4
4
  import { useState } from '../../hooks/useState';
5
5
  import { scrollbarWidth } from '../position';
6
- import { useResizeObserver } from './useResizeObserver';
6
+ import { useResizeObserver } from '../../hooks/useResizeObserver';
7
7
  var hasLocalStorage = typeof localStorage !== 'undefined';
8
8
  export function useWidth(scrollRef, getColumns) {
9
9
  var instance = useInstance();
@@ -16,7 +16,7 @@ export function useWidth(scrollRef, getColumns) {
16
16
  });
17
17
  useResizeObserver(scrollRef, function () {
18
18
  return checkTableWidth(false);
19
- }); // if exist widthStoreKey, we get the default width from localStorage
19
+ }, true); // if exist widthStoreKey, we get the default width from localStorage
20
20
 
21
21
  function initWidthFromStore() {
22
22
  var _instance$get = instance.get(),
@@ -7,7 +7,7 @@ export interface TabsProps<T = any> {
7
7
  value?: T;
8
8
  vertical?: boolean;
9
9
  size?: Sizes;
10
- type?: 'default' | 'card' | 'border-card' | 'no-border-card' | 'flat-card';
10
+ type?: 'default' | 'card' | 'flat-card';
11
11
  closable?: boolean;
12
12
  beforeChange?: (value: T) => boolean | Promise<boolean>;
13
13
  }
@@ -13,7 +13,7 @@ var typeDefs = {
13
13
  value: null,
14
14
  vertical: Boolean,
15
15
  size: sizes,
16
- type: ['default', 'card', 'border-card', 'no-border-card', 'flat-card'],
16
+ type: ['default', 'card', 'flat-card'],
17
17
  closable: Boolean,
18
18
  beforeChange: Function
19
19
  };
@@ -1,8 +1,12 @@
1
+ import _inheritsLoose from "@babel/runtime-corejs3/helpers/inheritsLoose";
1
2
  import _asyncToGenerator from "@babel/runtime-corejs3/helpers/asyncToGenerator";
3
+ import _concatInstanceProperty from "@babel/runtime-corejs3/core-js/instance/concat";
2
4
  import _regeneratorRuntime from "@babel/runtime-corejs3/regenerator";
3
5
  import ClosableDemo from '~/components/tabs/demos/closable';
4
6
  import BeforeChangeDemo from '~/components/tabs/demos/beforeChange';
5
7
  import { mount, unmount, wait } from '../../test/utils';
8
+ import { Tabs, Tab } from './';
9
+ import { Component } from 'intact-react';
6
10
  describe('Tabs', function () {
7
11
  afterEach(function () {
8
12
  return unmount();
@@ -93,4 +97,67 @@ describe('Tabs', function () {
93
97
  }
94
98
  }, _callee2);
95
99
  })));
100
+ it('vertical scroll', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
101
+ var Demo, _mount3, instance, element, prev, next;
102
+
103
+ return _regeneratorRuntime.wrap(function _callee3$(_context4) {
104
+ while (1) {
105
+ switch (_context4.prev = _context4.next) {
106
+ case 0:
107
+ Demo = /*#__PURE__*/function (_Component) {
108
+ _inheritsLoose(Demo, _Component);
109
+
110
+ function Demo() {
111
+ var _context3;
112
+
113
+ var _this;
114
+
115
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
116
+ args[_key] = arguments[_key];
117
+ }
118
+
119
+ _this = _Component.call.apply(_Component, _concatInstanceProperty(_context3 = [this]).call(_context3, args)) || this;
120
+ _this.Tabs = Tabs;
121
+ _this.Tab = Tab;
122
+ return _this;
123
+ }
124
+
125
+ Demo.defaults = function defaults() {
126
+ return {
127
+ tab: 0
128
+ };
129
+ };
130
+
131
+ return Demo;
132
+ }(Component);
133
+
134
+ Demo.template = "\n const { Tabs, Tab } = this;\n <Tabs v-model=\"tab\" vertical style=\"height: 200px;\">\n <Tab v-for={new Array(10).fill(0)} value={$key}>\n {$key}\n </Tab>\n </Tabs>\n ";
135
+ _mount3 = mount(Demo), instance = _mount3[0], element = _mount3[1];
136
+ _context4.next = 5;
137
+ return wait(100);
138
+
139
+ case 5:
140
+ expect(element.innerHTML).to.matchSnapshot();
141
+ prev = element.querySelector('.k-tabs-prev');
142
+ next = element.querySelector('.k-tabs-next');
143
+ next.click();
144
+ _context4.next = 11;
145
+ return wait();
146
+
147
+ case 11:
148
+ expect(element.innerHTML).to.matchSnapshot();
149
+ prev.click();
150
+ _context4.next = 15;
151
+ return wait();
152
+
153
+ case 15:
154
+ expect(element.innerHTML).to.matchSnapshot();
155
+
156
+ case 16:
157
+ case "end":
158
+ return _context4.stop();
159
+ }
160
+ }
161
+ }, _callee3);
162
+ })));
96
163
  });
@@ -19,7 +19,7 @@ export default function ($props, $blocks, $__proto__) {
19
19
 
20
20
  var _this$scroll = this.scroll,
21
21
  isScroll = _this$scroll.isScroll,
22
- left = _this$scroll.left,
22
+ offset = _this$scroll.offset,
23
23
  enablePrev = _this$scroll.enablePrev,
24
24
  enableNext = _this$scroll.enableNext,
25
25
  prev = _this$scroll.prev,
@@ -39,12 +39,12 @@ export default function ($props, $blocks, $__proto__) {
39
39
  'size': size,
40
40
  'disabled': !enablePrev.value,
41
41
  'ev-click': prev,
42
- 'children': _$ce(2, 'i', null, 1, 'ion-ios-arrow-left')
42
+ 'children': _$ce(2, 'i', null, 1, _$cn(vertical ? "ion-ios-arrow-up" : "ion-ios-arrow-left"))
43
43
  }, 'prev') : undefined, _$ce(2, 'div', _$ce(2, 'div', [children, _$ce(2, 'div', null, 1, 'k-tabs-active-bar', {
44
44
  'style': this.activeBar.value
45
45
  })], 0, 'k-tabs-wrapper', {
46
46
  'style': {
47
- transform: "translateX(" + left.value + "px)"
47
+ transform: vertical ? "translateY(" + offset.value + "px)" : "translateX(" + offset.value + "px)"
48
48
  }
49
49
  }, null, wrapperRef), 2, 'k-tabs-scroll c-clearfix', null, null, scrollRef), isScroll.value ? _$cc(Button, {
50
50
  'className': 'k-tabs-next',
@@ -54,7 +54,7 @@ export default function ($props, $blocks, $__proto__) {
54
54
  'size': size,
55
55
  'disabled': !enableNext.value,
56
56
  'ev-click': next,
57
- 'children': _$ce(2, 'i', null, 1, 'ion-ios-arrow-right')
57
+ 'children': _$ce(2, 'i', null, 1, _$cn(vertical ? "ion-ios-arrow-down" : "ion-ios-arrow-right"))
58
58
  }, 'next') : undefined]);
59
59
  }
60
60
  ;