@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.
- package/components/badge/styles.ts +1 -1
- package/components/breadcrumb/demos/separator.md +1 -1
- package/components/button/demos/basic.md +1 -1
- package/components/button/demos/disabled.md +2 -1
- package/components/button/demos/group.md +9 -2
- package/components/button/demos/icon.md +7 -7
- package/components/button/demos/loading.md +4 -4
- package/components/button/demos/size.md +4 -4
- package/components/button/group.ts +3 -1
- package/components/button/group.vdt +2 -1
- package/components/button/index.md +1 -0
- package/components/button/index.vdt +1 -1
- package/components/button/styles.ts +37 -16
- package/components/carousel/index.vdt +2 -2
- package/components/cascader/index.vdt +1 -1
- package/components/checkbox/demos/basic.md +1 -1
- package/components/checkbox/demos/group.md +1 -1
- package/components/checkbox/demos/indeterminate.md +1 -1
- package/components/checkbox/demos/value.md +1 -1
- package/components/checkbox/styles.ts +6 -10
- package/components/collapse/item.vdt +1 -1
- package/components/collapse/styles.ts +0 -2
- package/components/copy/index.vdt +1 -1
- package/components/datepicker/calendar.vdt +6 -6
- package/components/datepicker/demos/datetime.md +5 -4
- package/components/datepicker/index.spec.ts +11 -1
- package/components/datepicker/styles.ts +6 -1
- package/components/datepicker/useValue.ts +35 -10
- package/components/dialog/styles.ts +1 -1
- package/components/dropdown/demos/basic.md +1 -1
- package/components/dropdown/demos/checkbox.md +1 -1
- package/components/dropdown/demos/disabled.md +2 -2
- package/components/dropdown/demos/nested.md +6 -6
- package/components/dropdown/demos/position.md +3 -3
- package/components/dropdown/demos/trigger.md +2 -2
- package/components/dropdown/dropdown.ts +1 -0
- package/components/form/demos/basic.md +2 -2
- package/components/form/demos/custom.md +2 -4
- package/components/form/index.spec.ts +21 -0
- package/components/form/styles.ts +2 -2
- package/components/icon/demos/icons.md +130 -97
- package/components/icon/index.vdt +1 -1
- package/components/icon/styles.ts +6 -2
- package/components/input/demos/blocks.md +7 -2
- package/components/input/demos/clearable.md +2 -2
- package/components/input/demos/showCount.md +18 -0
- package/components/input/demos/size.md +6 -4
- package/components/input/index.md +1 -0
- package/components/input/index.ts +5 -0
- package/components/input/index.vdt +22 -14
- package/components/input/search.vdt +2 -5
- package/components/input/styles.ts +81 -77
- package/components/input/useFocus.ts +17 -0
- package/components/menu/item.vdt +1 -1
- package/components/message/demos/config.md +2 -2
- package/components/message/index.md +1 -1
- package/components/message/message.ts +1 -1
- package/components/pagination/index.vdt +2 -2
- package/components/pagination/styles.ts +1 -4
- package/components/popover/styles.ts +1 -1
- package/components/progress/index.vdt +1 -1
- package/components/radio/demos/basic.md +1 -1
- package/components/radio/demos/group.md +1 -1
- package/components/radio/demos/value.md +1 -1
- package/components/radio/styles.ts +4 -1
- package/components/scrollSelect/styles.ts +1 -1
- package/components/select/base.vdt +25 -20
- package/components/select/demos/customMenu.md +2 -2
- package/components/select/index.spec.ts +4 -1
- package/components/select/menu.vdt +2 -2
- package/components/select/option.vdt +1 -0
- package/components/select/styles.ts +6 -2
- package/components/spinner/index.vdt +4 -4
- package/components/spinner/styles.ts +9 -6
- package/components/steps/step.vdt +2 -2
- package/components/steps/styles.ts +5 -1
- package/components/switch/styles.ts +17 -1
- package/components/table/cell.vdt +1 -1
- package/components/table/column.vdt +28 -16
- package/components/table/demos/group.md +4 -3
- package/components/table/demos/showIndeterminate.md +2 -2
- package/components/table/demos/title.md +3 -5
- package/components/table/index.md +1 -1
- package/components/table/index.spec.ts +18 -1
- package/components/table/styles.ts +22 -28
- package/components/table/table.ts +1 -0
- package/components/table/useGroup.ts +42 -23
- package/components/tabs/demos/closable.md +1 -1
- package/components/tabs/index.vdt +3 -2
- package/components/tag/index.md +31 -0
- package/components/tag/styles.ts +6 -6
- package/components/tag/tags.vdt +1 -0
- package/components/tag/useNowrap.ts +1 -1
- package/components/tip/styles.ts +1 -1
- package/components/tooltip/index.spec.ts +30 -0
- package/components/tooltip/tooltip.ts +3 -0
- package/components/transfer/index.vdt +4 -3
- package/components/types.ts +1 -0
- package/components/upload/index.vdt +4 -4
- package/es/components/badge/styles.js +1 -1
- package/es/components/button/group.d.ts +1 -0
- package/es/components/button/group.js +2 -1
- package/es/components/button/group.vdt.js +4 -2
- package/es/components/button/index.vdt.js +1 -1
- package/es/components/button/styles.d.ts +1 -1
- package/es/components/button/styles.js +14 -9
- package/es/components/carousel/index.vdt.js +2 -2
- package/es/components/cascader/index.vdt.js +1 -1
- package/es/components/checkbox/styles.js +4 -8
- package/es/components/collapse/item.vdt.js +1 -1
- package/es/components/collapse/styles.js +2 -2
- package/es/components/copy/index.vdt.js +1 -1
- package/es/components/datepicker/calendar.vdt.js +6 -6
- package/es/components/datepicker/index.spec.js +170 -152
- package/es/components/datepicker/styles.js +1 -1
- package/es/components/datepicker/useValue.d.ts +3 -3
- package/es/components/datepicker/useValue.js +38 -9
- package/es/components/dialog/styles.js +1 -1
- package/es/components/dropdown/dropdown.js +2 -1
- package/es/components/form/index.spec.js +45 -0
- package/es/components/form/styles.js +1 -1
- package/es/components/icon/index.vdt.js +3 -2
- package/es/components/icon/styles.js +1 -1
- package/es/components/input/index.d.ts +3 -1
- package/es/components/input/index.js +4 -1
- package/es/components/input/index.vdt.js +21 -10
- package/es/components/input/search.vdt.js +2 -4
- package/es/components/input/styles.js +13 -6
- package/es/components/input/useFocus.d.ts +4 -0
- package/es/components/input/useFocus.js +21 -0
- package/es/components/menu/item.vdt.js +4 -1
- package/es/components/message/message.js +1 -1
- package/es/components/pagination/index.vdt.js +2 -2
- package/es/components/pagination/styles.js +2 -5
- package/es/components/popover/styles.js +1 -1
- package/es/components/progress/index.vdt.js +1 -1
- package/es/components/radio/styles.js +1 -1
- package/es/components/scrollSelect/styles.js +1 -1
- package/es/components/select/base.vdt.js +40 -20
- package/es/components/select/index.spec.js +23 -11
- package/es/components/select/menu.vdt.js +5 -5
- package/es/components/select/option.vdt.js +2 -1
- package/es/components/select/styles.js +2 -2
- package/es/components/spinner/index.vdt.js +4 -4
- package/es/components/spinner/styles.js +2 -2
- package/es/components/steps/step.vdt.js +2 -2
- package/es/components/steps/styles.js +6 -2
- package/es/components/switch/styles.js +10 -2
- package/es/components/table/cell.vdt.js +1 -1
- package/es/components/table/column.vdt.js +42 -24
- package/es/components/table/index.spec.js +37 -6
- package/es/components/table/styles.js +15 -8
- package/es/components/table/table.js +2 -1
- package/es/components/table/useGroup.d.ts +9 -3
- package/es/components/table/useGroup.js +46 -37
- package/es/components/tabs/index.vdt.js +7 -2
- package/es/components/tag/styles.js +1 -1
- package/es/components/tag/tags.vdt.js +14 -2
- package/es/components/tag/useNowrap.js +1 -1
- package/es/components/tip/styles.js +1 -1
- package/es/components/tooltip/index.spec.js +57 -0
- package/es/components/tooltip/tooltip.js +5 -1
- package/es/components/transfer/index.vdt.js +14 -3
- package/es/components/types.d.ts +1 -0
- package/es/components/upload/index.vdt.js +4 -4
- package/es/index.d.ts +2 -2
- package/es/index.js +2 -2
- package/es/site/data/components/button/demos/disabled/react.js +5 -2
- package/es/site/data/components/button/demos/group/react.js +19 -2
- package/es/site/data/components/button/demos/icon/react.js +7 -7
- package/es/site/data/components/button/demos/loading/react.js +4 -4
- package/es/site/data/components/button/demos/size/react.js +4 -4
- package/es/site/data/components/datepicker/demos/datetime/index.d.ts +1 -0
- package/es/site/data/components/datepicker/demos/datetime/index.js +1 -0
- package/es/site/data/components/dropdown/demos/basic/react.js +1 -1
- package/es/site/data/components/dropdown/demos/checkbox/react.js +1 -1
- package/es/site/data/components/dropdown/demos/disabled/react.js +2 -2
- package/es/site/data/components/dropdown/demos/nested/react.js +9 -9
- package/es/site/data/components/dropdown/demos/position/react.js +3 -3
- package/es/site/data/components/dropdown/demos/trigger/react.js +2 -2
- package/es/site/data/components/form/demos/basic/react.js +1 -1
- package/es/site/data/components/icon/demos/icons/index.d.ts +8 -4
- package/es/site/data/components/icon/demos/icons/index.js +35 -1
- package/es/site/data/components/icon/demos/icons/react.d.ts +9 -4
- package/es/site/data/components/icon/demos/icons/react.js +51 -9
- package/es/site/data/components/input/demos/blocks/react.js +7 -7
- package/es/site/data/components/input/demos/clearable/react.js +2 -2
- package/es/site/data/components/input/demos/showCount/index.d.ts +5 -0
- package/es/site/data/components/input/demos/showCount/index.js +17 -0
- package/es/site/data/components/input/demos/showCount/react.d.ts +4 -0
- package/es/site/data/components/input/demos/showCount/react.js +33 -0
- package/es/site/data/components/input/demos/size/react.js +8 -8
- package/es/site/data/components/message/demos/config/index.js +1 -1
- package/es/site/data/components/message/demos/config/react.js +1 -1
- package/es/site/data/components/select/demos/customMenu/react.js +5 -5
- package/es/site/data/components/table/demos/showIndeterminate/react.js +1 -1
- package/es/site/data/components/table/demos/title/react.js +4 -4
- package/es/site/data/components/tabs/demos/closable/react.js +2 -1
- package/es/site/src/pages/layout.js +1 -3
- package/es/site/src/pages/styles.js +1 -1
- package/es/site/src/router/index.js +1 -1
- package/es/styles/fonts/iconfont.eot +0 -0
- package/es/styles/fonts/iconfont.js +1 -1
- package/es/styles/fonts/iconfont.svg +36 -36
- package/es/styles/fonts/iconfont.ttf +0 -0
- package/es/styles/fonts/iconfont.woff +0 -0
- package/es/styles/global.js +1 -1
- package/es/styles/theme.js +1 -1
- package/index.ts +2 -2
- package/package.json +2 -2
- package/styles/fonts/demo.css +277 -108
- package/styles/fonts/demo_index.html +2169 -0
- package/styles/fonts/iconfont.css +52 -50
- package/styles/fonts/iconfont.eot +0 -0
- package/styles/fonts/iconfont.js +1 -0
- package/styles/fonts/iconfont.json +611 -0
- package/styles/fonts/iconfont.svg +36 -36
- package/styles/fonts/iconfont.ts +123 -124
- package/styles/fonts/iconfont.ttf +0 -0
- package/styles/fonts/iconfont.woff +0 -0
- package/styles/fonts/iconfont.woff2 +0 -0
- package/styles/global.ts +4 -4
- package/styles/theme.ts +1 -1
- package/components/select/useNowrap.ts +0 -24
- package/es/components/select/useNowrap.d.ts +0 -3
- 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
|
-
<
|
|
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
|
-
<
|
|
150
|
-
class="k-
|
|
151
|
-
|
|
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="
|
|
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 [
|
|
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="
|
|
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
|
);
|
|
@@ -11,7 +11,7 @@ type SizeStyles = {
|
|
|
11
11
|
|
|
12
12
|
const defaults = deepDefaults(
|
|
13
13
|
{
|
|
14
|
-
get transition() { return theme.transition.
|
|
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-
|
|
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
|
|
28
|
-
<Icon v-else class="k-spinner-icon k-icon-
|
|
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
|
|
48
|
-
<Icon v-else class="k-spinner-icon k-icon-
|
|
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-
|
|
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
|
-
|
|
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-
|
|
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
|
|
@@ -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 {
|
|
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
|
|
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={() =>
|
|
68
|
+
ev-show={() => onShow(groupValue)}
|
|
69
|
+
ref={dropdownRef}
|
|
68
70
|
>
|
|
69
|
-
<
|
|
71
|
+
<Icon class="k-icon-down-squared k-table-group"
|
|
70
72
|
ev-click={e => e._ignoreSortable = true}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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="
|
|
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,
|
|
89
|
+
ev-select={() => onSelect($value.value, onChange)}
|
|
88
90
|
hideOnSelect={!multiple}
|
|
89
|
-
class={{'k-active': (checked = isChecked($value.value
|
|
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="
|
|
101
|
-
<Icon class="
|
|
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
|
-
|
|
10
|
-
|
|
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={
|
|
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="
|
|
17
|
+
<span title="自定义表头内容" class="title">自定义表头内容</span>
|
|
18
18
|
<Tooltip content="tooltip content">
|
|
19
|
-
<
|
|
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"` | `"bottom"` | `"right"` | `"top"` | `Position` | `"top"` |
|
|
38
38
|
| tooltipContainer | 指定行提示弹层追加的位置,默认:`Dialog`类型的组件会追加到`Dialog`中,其他会追加到`body`中。你可以传入函数返回一个DOM用来作为插入的容器,或者传入字符串用来给`querySelector`进行查询 | `Container` | `undefined` |
|
|
39
39
|
| keepStatus | 是否在行销毁的时候,保持该行在`checkedKeys` | `selectedKeys` | `spreadKeys` | `expandedKeys`中的`key`值,默认会同步删除(仅在销毁行的时候有效,如果整个`Table`被销毁,则不会执行该逻辑) | `boolean` | `false` |
|
|
40
|
-
| showIndeterminate | 表头的`Checkbox`是否支持展示半选中状态 | `boolean` | `
|
|
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: [
|
|
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');
|