@king-design/intact 3.0.0-beta.1 → 3.0.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 (226) hide show
  1. package/components/badge/styles.ts +1 -1
  2. package/components/breadcrumb/demos/separator.md +1 -1
  3. package/components/button/demos/basic.md +1 -1
  4. package/components/button/demos/disabled.md +2 -1
  5. package/components/button/demos/group.md +9 -2
  6. package/components/button/demos/icon.md +7 -7
  7. package/components/button/demos/loading.md +4 -4
  8. package/components/button/demos/size.md +4 -4
  9. package/components/button/group.ts +3 -1
  10. package/components/button/group.vdt +2 -1
  11. package/components/button/index.md +1 -0
  12. package/components/button/index.vdt +1 -1
  13. package/components/button/styles.ts +37 -16
  14. package/components/carousel/index.vdt +2 -2
  15. package/components/cascader/index.vdt +1 -1
  16. package/components/checkbox/demos/basic.md +1 -1
  17. package/components/checkbox/demos/group.md +1 -1
  18. package/components/checkbox/demos/indeterminate.md +1 -1
  19. package/components/checkbox/demos/value.md +1 -1
  20. package/components/checkbox/styles.ts +6 -10
  21. package/components/collapse/item.vdt +1 -1
  22. package/components/collapse/styles.ts +0 -2
  23. package/components/copy/index.vdt +1 -1
  24. package/components/datepicker/calendar.vdt +6 -6
  25. package/components/datepicker/demos/datetime.md +5 -4
  26. package/components/datepicker/index.spec.ts +11 -1
  27. package/components/datepicker/styles.ts +6 -1
  28. package/components/datepicker/useValue.ts +35 -10
  29. package/components/dialog/styles.ts +1 -1
  30. package/components/dropdown/demos/basic.md +1 -1
  31. package/components/dropdown/demos/checkbox.md +1 -1
  32. package/components/dropdown/demos/disabled.md +2 -2
  33. package/components/dropdown/demos/nested.md +6 -6
  34. package/components/dropdown/demos/position.md +3 -3
  35. package/components/dropdown/demos/trigger.md +2 -2
  36. package/components/dropdown/dropdown.ts +1 -0
  37. package/components/form/demos/basic.md +2 -2
  38. package/components/form/demos/custom.md +2 -4
  39. package/components/form/index.spec.ts +21 -0
  40. package/components/form/styles.ts +2 -2
  41. package/components/icon/demos/icons.md +130 -97
  42. package/components/icon/index.vdt +1 -1
  43. package/components/icon/styles.ts +6 -2
  44. package/components/input/demos/blocks.md +7 -2
  45. package/components/input/demos/clearable.md +2 -2
  46. package/components/input/demos/showCount.md +18 -0
  47. package/components/input/demos/size.md +6 -4
  48. package/components/input/index.md +1 -0
  49. package/components/input/index.ts +5 -0
  50. package/components/input/index.vdt +22 -14
  51. package/components/input/search.vdt +2 -5
  52. package/components/input/styles.ts +81 -77
  53. package/components/input/useFocus.ts +17 -0
  54. package/components/menu/item.vdt +1 -1
  55. package/components/message/demos/config.md +2 -2
  56. package/components/message/index.md +1 -1
  57. package/components/message/message.ts +1 -1
  58. package/components/pagination/index.vdt +2 -2
  59. package/components/pagination/styles.ts +1 -4
  60. package/components/popover/styles.ts +1 -1
  61. package/components/progress/index.vdt +1 -1
  62. package/components/radio/demos/basic.md +1 -1
  63. package/components/radio/demos/group.md +1 -1
  64. package/components/radio/demos/value.md +1 -1
  65. package/components/radio/styles.ts +4 -1
  66. package/components/scrollSelect/styles.ts +1 -1
  67. package/components/select/base.vdt +25 -20
  68. package/components/select/demos/customMenu.md +2 -2
  69. package/components/select/index.spec.ts +4 -1
  70. package/components/select/menu.vdt +2 -2
  71. package/components/select/option.vdt +1 -0
  72. package/components/select/styles.ts +6 -2
  73. package/components/spinner/index.vdt +4 -4
  74. package/components/spinner/styles.ts +9 -6
  75. package/components/steps/step.vdt +2 -2
  76. package/components/steps/styles.ts +5 -1
  77. package/components/switch/styles.ts +17 -1
  78. package/components/table/cell.vdt +1 -1
  79. package/components/table/column.vdt +28 -16
  80. package/components/table/demos/group.md +4 -3
  81. package/components/table/demos/showIndeterminate.md +2 -2
  82. package/components/table/demos/title.md +3 -5
  83. package/components/table/index.md +1 -1
  84. package/components/table/index.spec.ts +18 -1
  85. package/components/table/styles.ts +22 -28
  86. package/components/table/table.ts +1 -0
  87. package/components/table/useGroup.ts +42 -23
  88. package/components/tabs/demos/closable.md +1 -1
  89. package/components/tabs/index.vdt +3 -2
  90. package/components/tag/index.md +31 -0
  91. package/components/tag/styles.ts +6 -6
  92. package/components/tag/tags.vdt +1 -0
  93. package/components/tag/useNowrap.ts +1 -1
  94. package/components/tip/styles.ts +1 -1
  95. package/components/tooltip/index.spec.ts +30 -0
  96. package/components/tooltip/tooltip.ts +3 -0
  97. package/components/transfer/index.vdt +4 -3
  98. package/components/types.ts +1 -0
  99. package/components/upload/index.vdt +4 -4
  100. package/es/components/badge/styles.js +1 -1
  101. package/es/components/button/group.d.ts +1 -0
  102. package/es/components/button/group.js +2 -1
  103. package/es/components/button/group.vdt.js +4 -2
  104. package/es/components/button/index.vdt.js +1 -1
  105. package/es/components/button/styles.d.ts +1 -1
  106. package/es/components/button/styles.js +14 -9
  107. package/es/components/carousel/index.vdt.js +2 -2
  108. package/es/components/cascader/index.vdt.js +1 -1
  109. package/es/components/checkbox/styles.js +4 -8
  110. package/es/components/collapse/item.vdt.js +1 -1
  111. package/es/components/collapse/styles.js +2 -2
  112. package/es/components/copy/index.vdt.js +1 -1
  113. package/es/components/datepicker/calendar.vdt.js +6 -6
  114. package/es/components/datepicker/index.spec.js +170 -152
  115. package/es/components/datepicker/styles.js +1 -1
  116. package/es/components/datepicker/useValue.d.ts +3 -3
  117. package/es/components/datepicker/useValue.js +38 -9
  118. package/es/components/dialog/styles.js +1 -1
  119. package/es/components/dropdown/dropdown.js +2 -1
  120. package/es/components/form/index.spec.js +45 -0
  121. package/es/components/form/styles.js +1 -1
  122. package/es/components/icon/index.vdt.js +3 -2
  123. package/es/components/icon/styles.js +1 -1
  124. package/es/components/input/index.d.ts +3 -1
  125. package/es/components/input/index.js +4 -1
  126. package/es/components/input/index.vdt.js +21 -10
  127. package/es/components/input/search.vdt.js +2 -4
  128. package/es/components/input/styles.js +13 -6
  129. package/es/components/input/useFocus.d.ts +4 -0
  130. package/es/components/input/useFocus.js +21 -0
  131. package/es/components/menu/item.vdt.js +4 -1
  132. package/es/components/message/message.js +1 -1
  133. package/es/components/pagination/index.vdt.js +2 -2
  134. package/es/components/pagination/styles.js +2 -5
  135. package/es/components/popover/styles.js +1 -1
  136. package/es/components/progress/index.vdt.js +1 -1
  137. package/es/components/radio/styles.js +1 -1
  138. package/es/components/scrollSelect/styles.js +1 -1
  139. package/es/components/select/base.vdt.js +40 -20
  140. package/es/components/select/index.spec.js +23 -11
  141. package/es/components/select/menu.vdt.js +5 -5
  142. package/es/components/select/option.vdt.js +2 -1
  143. package/es/components/select/styles.js +2 -2
  144. package/es/components/spinner/index.vdt.js +4 -4
  145. package/es/components/spinner/styles.js +2 -2
  146. package/es/components/steps/step.vdt.js +2 -2
  147. package/es/components/steps/styles.js +6 -2
  148. package/es/components/switch/styles.js +10 -2
  149. package/es/components/table/cell.vdt.js +1 -1
  150. package/es/components/table/column.vdt.js +42 -24
  151. package/es/components/table/index.spec.js +37 -6
  152. package/es/components/table/styles.js +15 -8
  153. package/es/components/table/table.js +2 -1
  154. package/es/components/table/useGroup.d.ts +9 -3
  155. package/es/components/table/useGroup.js +46 -37
  156. package/es/components/tabs/index.vdt.js +7 -2
  157. package/es/components/tag/styles.js +1 -1
  158. package/es/components/tag/tags.vdt.js +14 -2
  159. package/es/components/tag/useNowrap.js +1 -1
  160. package/es/components/tip/styles.js +1 -1
  161. package/es/components/tooltip/index.spec.js +57 -0
  162. package/es/components/tooltip/tooltip.js +5 -1
  163. package/es/components/transfer/index.vdt.js +14 -3
  164. package/es/components/types.d.ts +1 -0
  165. package/es/components/upload/index.vdt.js +4 -4
  166. package/es/index.d.ts +2 -2
  167. package/es/index.js +2 -2
  168. package/es/site/data/components/button/demos/disabled/react.js +5 -2
  169. package/es/site/data/components/button/demos/group/react.js +19 -2
  170. package/es/site/data/components/button/demos/icon/react.js +7 -7
  171. package/es/site/data/components/button/demos/loading/react.js +4 -4
  172. package/es/site/data/components/button/demos/size/react.js +4 -4
  173. package/es/site/data/components/datepicker/demos/datetime/index.d.ts +1 -0
  174. package/es/site/data/components/datepicker/demos/datetime/index.js +1 -0
  175. package/es/site/data/components/dropdown/demos/basic/react.js +1 -1
  176. package/es/site/data/components/dropdown/demos/checkbox/react.js +1 -1
  177. package/es/site/data/components/dropdown/demos/disabled/react.js +2 -2
  178. package/es/site/data/components/dropdown/demos/nested/react.js +9 -9
  179. package/es/site/data/components/dropdown/demos/position/react.js +3 -3
  180. package/es/site/data/components/dropdown/demos/trigger/react.js +2 -2
  181. package/es/site/data/components/form/demos/basic/react.js +1 -1
  182. package/es/site/data/components/icon/demos/icons/index.d.ts +8 -4
  183. package/es/site/data/components/icon/demos/icons/index.js +35 -1
  184. package/es/site/data/components/icon/demos/icons/react.d.ts +9 -4
  185. package/es/site/data/components/icon/demos/icons/react.js +51 -9
  186. package/es/site/data/components/input/demos/blocks/react.js +7 -7
  187. package/es/site/data/components/input/demos/clearable/react.js +2 -2
  188. package/es/site/data/components/input/demos/showCount/index.d.ts +5 -0
  189. package/es/site/data/components/input/demos/showCount/index.js +17 -0
  190. package/es/site/data/components/input/demos/showCount/react.d.ts +4 -0
  191. package/es/site/data/components/input/demos/showCount/react.js +33 -0
  192. package/es/site/data/components/input/demos/size/react.js +8 -8
  193. package/es/site/data/components/message/demos/config/index.js +1 -1
  194. package/es/site/data/components/message/demos/config/react.js +1 -1
  195. package/es/site/data/components/select/demos/customMenu/react.js +5 -5
  196. package/es/site/data/components/table/demos/showIndeterminate/react.js +1 -1
  197. package/es/site/data/components/table/demos/title/react.js +4 -4
  198. package/es/site/data/components/tabs/demos/closable/react.js +2 -1
  199. package/es/site/src/pages/layout.js +1 -3
  200. package/es/site/src/pages/styles.js +1 -1
  201. package/es/site/src/router/index.js +1 -1
  202. package/es/styles/fonts/iconfont.eot +0 -0
  203. package/es/styles/fonts/iconfont.js +1 -1
  204. package/es/styles/fonts/iconfont.svg +36 -36
  205. package/es/styles/fonts/iconfont.ttf +0 -0
  206. package/es/styles/fonts/iconfont.woff +0 -0
  207. package/es/styles/global.js +1 -1
  208. package/es/styles/theme.js +1 -1
  209. package/index.ts +2 -2
  210. package/package.json +2 -2
  211. package/styles/fonts/demo.css +277 -108
  212. package/styles/fonts/demo_index.html +2169 -0
  213. package/styles/fonts/iconfont.css +52 -50
  214. package/styles/fonts/iconfont.eot +0 -0
  215. package/styles/fonts/iconfont.js +1 -0
  216. package/styles/fonts/iconfont.json +611 -0
  217. package/styles/fonts/iconfont.svg +36 -36
  218. package/styles/fonts/iconfont.ts +123 -124
  219. package/styles/fonts/iconfont.ttf +0 -0
  220. package/styles/fonts/iconfont.woff +0 -0
  221. package/styles/fonts/iconfont.woff2 +0 -0
  222. package/styles/global.ts +4 -4
  223. package/styles/theme.ts +1 -1
  224. package/components/select/useNowrap.ts +0 -24
  225. package/es/components/select/useNowrap.d.ts +0 -3
  226. package/es/components/select/useNowrap.js +0 -19
@@ -38,6 +38,21 @@ const label = this.getLabel();
38
38
  const hasValue = this.hasValue();
39
39
  const {onInput, inputRef, keywords: {value: keywords}} = this.input;
40
40
  const {onFocusout, triggerRef} = this.focusout;
41
+ const filterInput = <Input v-if={filterable}
42
+ class="k-select-input"
43
+ value={keywords}
44
+ ev-$change:value={onInput}
45
+ disabled={disabled}
46
+ placeholder={!hasValue ? placeholder : ''}
47
+ ref={inputRef}
48
+ autoWidth
49
+ inline
50
+ size={size}
51
+ key="filter"
52
+ readonly={!show}
53
+ waveDisabled={true}
54
+ flat={flat}
55
+ />
41
56
 
42
57
  <ErrorContext.Consumer defaultValue={false}>
43
58
  {isInvalid => {
@@ -90,7 +105,7 @@ const {onFocusout, triggerRef} = this.focusout;
90
105
  </div>
91
106
  <div v-else key="values" class="k-select-values">
92
107
  <b:values params={[value, label]}>
93
- <Tags v-if={label && label.length}
108
+ <Tags v-if={label && label.length || filterable}
94
109
  nowrap={nowrap}
95
110
  size={size}
96
111
  draggable={draggable}
@@ -117,23 +132,10 @@ const {onFocusout, triggerRef} = this.focusout;
117
132
  </b:value>
118
133
  </template>
119
134
  </Tag>
135
+ <b:append>{filterInput}</b:append>
120
136
  </Tags>
121
137
  </b:values>
122
- <Input v-if={filterable}
123
- class="k-select-input"
124
- value={keywords}
125
- ev-$change:value={onInput}
126
- disabled={disabled}
127
- placeholder={!hasValue ? placeholder : ''}
128
- ref={inputRef}
129
- autoWidth
130
- inline
131
- size={size}
132
- key="filter"
133
- readonly={!show}
134
- waveDisabled={true}
135
- flat={flat}
136
- />
138
+ <template v-if={$blocks && $blocks.values}>{filterInput}</template>
137
139
  </div>
138
140
  </TransitionGroup>
139
141
  </div>
@@ -146,10 +148,13 @@ const {onFocusout, triggerRef} = this.focusout;
146
148
  <span class="k-select-suffix-icon">
147
149
  <b:suffix>
148
150
  <Icon class="ion-load-c" rotate v-if={loading} />
149
- <Icon v-else-if={!hideIcon}
150
- class="k-select-arrow ion-ios-arrow-down"
151
- disabled={$props.isDisableArrow}
152
- />
151
+ <template v-else-if={!hideIcon}>
152
+ <Icon class="k-icon-search" v-if={filterable && show} />
153
+ <Icon v-else
154
+ class="k-select-arrow k-icon-down"
155
+ disabled={$props.isDisableArrow}
156
+ />
157
+ </template>
153
158
  </b:suffix>
154
159
  </span>
155
160
  </span>
@@ -14,7 +14,7 @@ import {Select, Table, TableColumn, Input, Button, Icon} from 'kpc';
14
14
  >
15
15
  <b:menu>
16
16
  <Input placeholder="请输入关键字" size="small" fluid v-model="keywords" waveDisabled={true}>
17
- <b:suffix><Icon class="ion-ios-search" /></b:suffix>
17
+ <b:suffix><Icon class="k-icon-search" /></b:suffix>
18
18
  </Input>
19
19
  <Table data={this.filter()}
20
20
  type="border"
@@ -27,8 +27,8 @@ import {Select, Table, TableColumn, Input, Button, Icon} from 'kpc';
27
27
  <TableColumn title="Domain" key="domain" />
28
28
  </Table>
29
29
  <div class="footer">
30
- <Button type="primary" size="small" ev-click={this.confirm}>确定</Button>
31
30
  <Button size="small" ev-click={this.hide}>取消</Button>
31
+ <Button type="primary" size="small" ev-click={this.confirm}>确定</Button>
32
32
  </div>
33
33
  </b:menu>
34
34
  </Select>
@@ -256,11 +256,12 @@ describe('Select', () => {
256
256
  await wait();
257
257
  const dropdown = getElement('.k-select-menu')!;
258
258
  const [selectAll, toggleSelect, unselectAll] = dropdown.querySelectorAll<HTMLElement>('.k-select-op .k-btn');
259
- const [confirm, cancel] = dropdown.querySelectorAll<HTMLElement>('.k-select-footer .k-btn');
259
+ const [cancel, confirm] = dropdown.querySelectorAll<HTMLElement>('.k-select-footer .k-btn');
260
260
 
261
261
  // select all
262
262
  selectAll.click();
263
263
  confirm.click();
264
+ await wait();
264
265
  expect(instance.get('days')).have.length(7);
265
266
 
266
267
  // unselect all
@@ -268,6 +269,7 @@ describe('Select', () => {
268
269
  await wait();
269
270
  unselectAll.click();
270
271
  confirm.click();
272
+ await wait();
271
273
  expect(instance.get('days')).have.length(0);
272
274
 
273
275
  // toggle select
@@ -281,6 +283,7 @@ describe('Select', () => {
281
283
  await wait();
282
284
  toggleSelect.click();
283
285
  confirm.click();
286
+ await wait();
284
287
  expect(instance.get('days')).have.length(5);
285
288
  expect(instance.get('days')).include('Monday')
286
289
  });
@@ -61,7 +61,7 @@ if (searchable) {
61
61
  clearable
62
62
  waveDisabled={true}
63
63
  >
64
- <b:suffix><Icon class="ion-ios-search" /></b:suffix>
64
+ <b:suffix><Icon class="k-icon-search" /></b:suffix>
65
65
  </Input>
66
66
  <div class="k-select-op" v-if={multiple}>
67
67
  <Button type="link" size="small"
@@ -79,8 +79,8 @@ if (searchable) {
79
79
  {children}
80
80
  </div>
81
81
  <div class="k-select-footer" v-if={multiple}>
82
- <Button type="primary" size="small" ev-click={confirm}>{_$('确定')}</Button>
83
82
  <Button size="small" ev-click={this.select.hide}>{_$('取消')}</Button>
83
+ <Button type="primary" size="small" ev-click={confirm}>{_$('确定')}</Button>
84
84
  </div>
85
85
  </Provider>
86
86
  );
@@ -43,6 +43,7 @@ if (searchable && multiple) {
43
43
  <Transition name="k-scale" v-if={!searchable}>
44
44
  <Icon v-if={multiple && isActive}
45
45
  class="k-select-checkmark ion-ios-checkmark-empty"
46
+ color="primary"
46
47
  />
47
48
  </Transition>
48
49
  </DropdownItem>
@@ -11,7 +11,7 @@ type SizeStyles = {
11
11
 
12
12
  const defaults = deepDefaults(
13
13
  {
14
- get transition() { return theme.transition.middle },
14
+ get transition() { return theme.transition.large },
15
15
  width: `300px`,
16
16
  get height() { return theme.default.height },
17
17
  bgColor: '#fff',
@@ -133,6 +133,8 @@ export default function makeStyles() {
133
133
  }
134
134
  .k-select-prefix,
135
135
  .k-select-suffix {
136
+ display: flex;
137
+ align-items: center;
136
138
  position: relative;
137
139
  }
138
140
  .k-select-suffix {
@@ -176,7 +178,8 @@ export default function makeStyles() {
176
178
  }
177
179
  }
178
180
  .k-select-suffix-icon {
179
- display: inline-block;
181
+ display: inline-flex;
182
+ align-items: center;
180
183
  transition: opacity ${select.transition};
181
184
  }
182
185
 
@@ -204,6 +207,7 @@ export default function makeStyles() {
204
207
  .k-tag {
205
208
  word-break: break-word;
206
209
  height: auto;
210
+ max-width: calc(100% - ${getRight(select.tag.margin)} - 1px);
207
211
  }
208
212
 
209
213
  // size
@@ -24,8 +24,8 @@ const {showValue, onInput} = this.value;
24
24
  type="none"
25
25
  tabindex="-1"
26
26
  >
27
- <Icon v-if={!vertical} class="k-spinner-icon k-icon-minus-small" />
28
- <Icon v-else class="k-spinner-icon k-icon-arrow-down" />
27
+ <Icon v-if={!vertical} class="k-spinner-icon k-icon-minus" />
28
+ <Icon v-else class="k-spinner-icon k-icon-down" />
29
29
  </Button>
30
30
  <Input
31
31
  class="k-spinner-input"
@@ -44,7 +44,7 @@ const {showValue, onInput} = this.value;
44
44
  type="none"
45
45
  tabindex="-1"
46
46
  >
47
- <Icon v-if={!vertical} class="k-spinner-icon k-icon-add-small" />
48
- <Icon v-else class="k-spinner-icon k-icon-arrow-up" />
47
+ <Icon v-if={!vertical} class="k-spinner-icon k-icon-add" />
48
+ <Icon v-else class="k-spinner-icon k-icon-up" />
49
49
  </Button>
50
50
  </div>
@@ -71,15 +71,19 @@ export function makeStyles() {
71
71
  }
72
72
  .k-spinner-input {
73
73
  width: ${spinner.default.inputWidth};
74
- .k-input-inner {
75
- text-align: center;
74
+ .k-input-wrapper {
76
75
  border:none;
77
76
  border-radius: 0;
78
- &:hover,
79
- &:focus {
77
+ &:hover{
80
78
  border: none
81
79
  }
82
80
  }
81
+ &.k-focus .k-input-wrapper {
82
+ border: none;
83
+ }
84
+ .k-input-inner {
85
+ text-align: center;
86
+ }
83
87
  }
84
88
  .k-spinner-icon {
85
89
  font-size: ${spinner.default.iconFontSize};
@@ -106,8 +110,7 @@ export function makeStyles() {
106
110
  border-radius: 0 ${spinner.borderRadius} 0 0;
107
111
  }
108
112
  .k-spinner-input {
109
- font-size: 0;
110
- .k-input-inner {
113
+ .k-input-wrapper {
111
114
  border-radius: ${spinner.borderRadius} 0 0 ${spinner.borderRadius};
112
115
  }
113
116
  }
@@ -26,9 +26,9 @@ const {children, title, index, className, style} = this.get();
26
26
  ev-click={linkEvent(index, onChange)}
27
27
  >
28
28
  <div class="k-step-mark">
29
- <Icon v-if={error && type !== 'simple'} class="k-icon-close-big" color="danger" />
29
+ <Icon v-if={error && type !== 'simple'} class="k-icon-close-bold" color="danger" />
30
30
  <Icon v-else-if={done && (type === 'line' || type === 'line-compact')}
31
- class="k-icon-check"
31
+ class="k-icon-check-bold"
32
32
  color="primary"
33
33
  />
34
34
  <span v-else-if={type !== 'simple'}>{index + 1}</span>
@@ -1,6 +1,6 @@
1
1
  import {css, cx} from '@emotion/css';
2
2
  import {theme, setDefault} from '../../styles/theme';
3
- import {deepDefaults} from '../../styles/utils';
3
+ import {deepDefaults, palette} from '../../styles/utils';
4
4
  import '../../styles/global';
5
5
 
6
6
  const defaults = {
@@ -22,6 +22,7 @@ const defaults = {
22
22
  done: {
23
23
  get markColor() { return theme.color.primary },
24
24
  get markBorderColor() { return theme.color.primary },
25
+ get markHoverBgColor() { return palette(theme.color.primary, -4) },
25
26
  markBgColor: '#fff',
26
27
  get mainColor() { return theme.color.primary },
27
28
  },
@@ -109,6 +110,9 @@ export function makeStepsStyles() {
109
110
  &.k-clickable {
110
111
  .k-done {
111
112
  cursor: pointer;
113
+ .k-step-wrapper:hover .k-step-mark {
114
+ background: ${steps.done.markHoverBgColor};
115
+ }
112
116
  }
113
117
  }
114
118
 
@@ -6,6 +6,7 @@ import '../../styles/global';
6
6
  const defaults = {
7
7
  get transition() { return theme.transition.middle },
8
8
  get bgColor() { return theme.color.border },
9
+ get hoverBgColor() { return theme.color.placeholder },
9
10
  fontSize: `12px`,
10
11
  color: '#fff',
11
12
  handleBorderRadius: `100%`,
@@ -16,7 +17,8 @@ const defaults = {
16
17
  get bgColor() { return theme.color.primary },
17
18
  get disabledBgColor() {
18
19
  return palette(theme.color.primary, -3);
19
- }
20
+ },
21
+ get hoverBgColor() { return theme.color.linkHover },
20
22
  },
21
23
 
22
24
  // default
@@ -66,6 +68,7 @@ export function makeStyles() {
66
68
  user-select: none;
67
69
  overflow: hidden;
68
70
  box-sizing: content-box;
71
+ transition: background ${kswitch.transition};
69
72
  input {
70
73
  opacity: 0;
71
74
  position: absolute;
@@ -91,6 +94,13 @@ export function makeStyles() {
91
94
  background: ${kswitch.bgColor};
92
95
  transition: all ${kswitch.transition};
93
96
  }
97
+ &:hover {
98
+ &,
99
+ .k-switch-bar,
100
+ .k-switch-wrapper {
101
+ background: ${kswitch.hoverBgColor};
102
+ }
103
+ }
94
104
  .k-switch-handle {
95
105
  border-radius: ${kswitch.handleBorderRadius};
96
106
  background: ${kswitch.handleBgColor};
@@ -168,6 +178,12 @@ export function makeStyles() {
168
178
  .k-switch-bar {
169
179
  width: 100%;
170
180
  }
181
+ &:hover {
182
+ .k-switch-bar,
183
+ .k-switch-wrapper {
184
+ background: ${kswitch.checked.hoverBgColor};
185
+ }
186
+ }
171
187
  }
172
188
 
173
189
  // disabled
@@ -36,7 +36,7 @@ if (columnIndex === 0 && indent) {
36
36
  class="k-table-arrow"
37
37
  ev-click={onClickArrow}
38
38
  >
39
- <Icon class="ion-ios-arrow-right" size="small" />
39
+ <Icon class="k-icon-right" size="small" />
40
40
  </Button>
41
41
  {children}
42
42
  </td>
@@ -4,7 +4,7 @@ import {Button} from '../button';
4
4
  import {Icon} from '../icon';
5
5
  import {Checkbox} from '../checkbox';
6
6
  import {makeGroupMenuStyles} from './styles';
7
- import {isStringOrNumber, get} from 'intact-shared';
7
+ import {isStringOrNumber, get, isArray} from 'intact-shared';
8
8
  import {context as GroupContext} from './useGroup';
9
9
  import {context as SortableContext} from './useSortable';
10
10
  import {linkEvent} from 'intact';
@@ -16,7 +16,11 @@ import {Input} from '../input';
16
16
  import {_$} from '../../i18n';
17
17
 
18
18
  const {title, fixed, group, multiple, key, sortable, cols, rows} = this.get();
19
- const {onSelect, isChecked, getGroupText, keywords, filteredGroup} = this.group;
19
+ const {
20
+ onSelect, isChecked, keywords, filteredGroup,
21
+ onShow, reset, confirm, dropdownRef,
22
+ localGroupValue, isEmptyValue,
23
+ } = this.group;
20
24
 
21
25
  <TableContext.Consumer>
22
26
  {checkType => {
@@ -35,14 +39,12 @@ const {onSelect, isChecked, getGroupText, keywords, filteredGroup} = this.group;
35
39
  }
36
40
 
37
41
  const groupValue = currentGroup && currentGroup[key];
38
- const groupText = getGroupText(groupValue);
39
-
40
42
  const type = sort && sort.key === key && sort.type;
41
43
 
42
44
  let checked;
43
45
  return <th className={classNameObj}
44
46
  style={style}
45
- title={isStringOrNumber(title) ? title + (groupText || '') : null}
47
+ title={isStringOrNumber(title) ? title : null}
46
48
  ev-click={sortable ? linkEvent(key, onChangeSort) : null}
47
49
  colspan={cols}
48
50
  rowspan={rows}
@@ -58,19 +60,19 @@ const {onSelect, isChecked, getGroupText, keywords, filteredGroup} = this.group;
58
60
  <div class="k-table-title">
59
61
  <div class="k-table-title-text c-ellipsis">
60
62
  <b:title>{title}</b:title>
61
- {groupText}
62
63
  </div>
63
64
  <Dropdown v-if={group}
64
65
  position={{my: 'center top', at: 'center bottom+5', collision: 'flipfit'}}
65
66
  key="dropdown"
66
67
  trigger="click"
67
- ev-show={() => keywords.set('')}
68
+ ev-show={() => onShow(groupValue)}
69
+ ref={dropdownRef}
68
70
  >
69
- <Button icon size="mini" class="k-table-group"
71
+ <Icon class="k-icon-down-squared k-table-group"
70
72
  ev-click={e => e._ignoreSortable = true}
71
- >
72
- <Icon class="ion-android-arrow-dropdown" />
73
- </Button>
73
+ hoverable
74
+ color={isEmptyValue(groupValue) ? null : 'primary'}
75
+ />
74
76
  <DropdownMenu class={{"k-table-group-dropdown": true, [makeGroupMenuStyles()]: true}}>
75
77
  <div class="k-table-group-header">
76
78
  <Input size="small" fluid
@@ -79,26 +81,36 @@ const {onSelect, isChecked, getGroupText, keywords, filteredGroup} = this.group;
79
81
  ev-$change:value={keywords.set}
80
82
  clearable
81
83
  >
82
- <b:suffix><Icon class="ion-ios-search" /></b:suffix>
84
+ <b:suffix><Icon class="k-icon-search" /></b:suffix>
83
85
  </Input>
84
86
  </div>
85
87
  <div class="k-table-group-body">
86
88
  <DropdownItem v-for={filteredGroup.value}
87
- ev-select={() => onSelect($value.value, groupValue, onChange)}
89
+ ev-select={() => onSelect($value.value, onChange)}
88
90
  hideOnSelect={!multiple}
89
- class={{'k-active': (checked = isChecked($value.value, groupValue))}}
91
+ class={{'k-active': (checked = isChecked($value.value))}}
90
92
  >
91
93
  <Checkbox v-if={multiple} value={checked}>{$value.label}</Checkbox>
92
94
  <span v-else>{$value.label}</span>
93
95
  </DropdownItem>
94
96
  </div>
97
+ <div class="k-table-group-footer" v-if={multiple}>
98
+ <Button size="small"
99
+ disabled={isEmptyValue(localGroupValue.value)}
100
+ type="secondary"
101
+ ev-click={() => reset(onChange)}
102
+ >重置</Button>
103
+ <Button type="primary" size="small"
104
+ ev-click={() => confirm(onChange)}
105
+ >确定</Button>
106
+ </div>
95
107
  </DropdownMenu>
96
108
  </Dropdown>
97
109
  <div v-if={sortable}
98
110
  class={{'k-column-sort': true, [`k-${type}`]: type}}
99
111
  >
100
- <Icon class="ion-android-arrow-dropup k-asc" />
101
- <Icon class="ion-android-arrow-dropdown k-desc" />
112
+ <Icon class="k-icon-up k-asc" size="mini" />
113
+ <Icon class="k-icon-down k-desc" size="mini" />
102
114
  </div>
103
115
  </div>
104
116
  </th>
@@ -5,9 +5,10 @@ order: 18
5
5
 
6
6
  分组需要两个`group`来指定:
7
7
 
8
- 1. 第一个是`Table`上的`group`属性,该属性指定当前分组的方式,形式为:`{key: ["分组的列的key"], value: ["当前列选择的分组的值"]}`
9
- 2. 第二个是`TableColumn`的`group`属性,该属性指定当前列有哪些可选的分组方式,
10
- 如果该列支持多选,还可以添加`multiple`属性,默认为单选。形式为:`[{label: "分组展示文案", value: "选择后的值"}]`
8
+ 1. 第一个是`Table`上的`group`属性,该属性指定当前分组的方式,形式为:`{key: ["分组的列的key"], value: ["当前列选择的分组的值"]}`。
9
+ 对于“全部”选项,`value`需要设为空字符串`""`,这样才能在选择“全部”的时候,不高亮筛选按钮
10
+ 2. 第二个是`TableColumn`的`group`属性,该属性指定当前列有哪些可选的分组方式,形式为:`[{label: "分组展示文案", value: "选择后的值"}]`。
11
+ 如果该列支持多选,还可以添加`multiple`属性,默认为单选
11
12
 
12
13
  当分组方式改变时,可以监听默认事件`$change:group`来执行自定义分组逻辑
13
14
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- title: 半选中状态
2
+ title: 取消表头半选中状态
3
3
  order: 28
4
4
  ---
5
5
 
@@ -13,7 +13,7 @@ import {Table, TableColumn} from 'kpc';
13
13
  data={this.get('data')}
14
14
  resizable
15
15
  ref="__test"
16
- showIndeterminate={true}
16
+ showIndeterminate={false}
17
17
  checkedKeys={[0]}
18
18
  >
19
19
  <TableColumn key="a" title="表头1" />
@@ -6,7 +6,7 @@ order: 2
6
6
  给表格定义复杂的表头内容,只需要通过`TableColumn` `title`扩展点传入自定义内容即可
7
7
 
8
8
  ```vdt
9
- import {Table, TableColumn, Tooltip} from 'kpc';
9
+ import {Table, TableColumn, Tooltip, Icon} from 'kpc';
10
10
 
11
11
  <Table data={this.get('data')}>
12
12
  <TableColumn key="a"
@@ -14,9 +14,9 @@ import {Table, TableColumn, Tooltip} from 'kpc';
14
14
  sortable
15
15
  >
16
16
  <b:title>
17
- <span title="自定义表头内容" class="middle title">自定义表头内容</span>
17
+ <span title="自定义表头内容" class="title">自定义表头内容</span>
18
18
  <Tooltip content="tooltip content">
19
- <i class="ion-ios-help-outline middle"></i>
19
+ <Icon class="k-icon-question" />
20
20
  </Tooltip>
21
21
  </b:title>
22
22
  </TableColumn>
@@ -26,8 +26,6 @@ import {Table, TableColumn, Tooltip} from 'kpc';
26
26
 
27
27
  ```styl
28
28
  .k-table
29
- .middle
30
- vertical-align middle
31
29
  .title
32
30
  margin-right 8px
33
31
  ```
@@ -37,7 +37,7 @@ sidebar: doc
37
37
  | tooltipPosition | 行提示的位置 | `"left"` &#124; `"bottom"` &#124; `"right"` &#124; `"top"` &#124; `Position` | `"top"` |
38
38
  | tooltipContainer | 指定行提示弹层追加的位置,默认:`Dialog`类型的组件会追加到`Dialog`中,其他会追加到`body`中。你可以传入函数返回一个DOM用来作为插入的容器,或者传入字符串用来给`querySelector`进行查询 | `Container` | `undefined` |
39
39
  | keepStatus | 是否在行销毁的时候,保持该行在`checkedKeys` &#124; `selectedKeys` &#124; `spreadKeys` &#124; `expandedKeys`中的`key`值,默认会同步删除(仅在销毁行的时候有效,如果整个`Table`被销毁,则不会执行该逻辑) | `boolean` | `false` |
40
- | showIndeterminate | 表头的`Checkbox`是否支持展示半选中状态 | `boolean` | `false` |
40
+ | showIndeterminate | 表头的`Checkbox`是否支持展示半选中状态 | `boolean` | `true` |
41
41
  | resizable | 是否可以表头拖动 | `boolean` | `false` |
42
42
  | minColWidth | 指定所有列拖动时的最小宽度 | `number` | `40` |
43
43
  | widthStoreKey | 如果要保存表格拖动后的列宽信息,可以通过该属性设置保存到`localStorage`中的`key` | `string` | `undefined` |
@@ -230,13 +230,30 @@ describe('Table', () => {
230
230
  const [item1, item2] = dropdown2.querySelectorAll<HTMLElement>('.k-checkbox');
231
231
  item1.click();
232
232
  await wait();
233
- expect(instance.get('multipleGroup')).to.eql({status: ['active']});
233
+ expect(instance.get('multipleGroup')).to.eql({status: []});
234
234
  expect(table2.innerHTML).to.matchSnapshot();
235
235
  item2.click();
236
236
  await wait();
237
+ expect(instance.get('multipleGroup')).to.eql({status: []});
238
+
239
+ // click confirm
240
+ const [reset, confirm] = dropdown2.querySelectorAll<HTMLElement>('.k-table-group-footer .k-btn');
241
+ confirm.click();
242
+ await wait();
237
243
  expect(instance.get('multipleGroup')).to.eql({status: ['active', 'stopped']});
238
244
  expect(table2.innerHTML).to.matchSnapshot();
239
245
 
246
+ // click reset
247
+ dispatchEvent(icon2, 'click');
248
+ await wait();
249
+ expect(dropdown2.innerHTML).to.matchSnapshot();
250
+ reset.click();
251
+ await wait();
252
+ expect(dropdown2.innerHTML).to.matchSnapshot();
253
+ confirm.click();
254
+ await wait();
255
+ expect(instance.get('multipleGroup')).to.eql({status: []});
256
+
240
257
  // update group
241
258
  instance.set('statusGroup', [{label: 'label', value: 'value'}]);
242
259
  dispatchEvent(icon, 'click');