@king-design/intact 2.0.17-beta.0 → 2.1.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.
- package/components/cascader/index.md +18 -0
- package/components/cascader/index.spec.ts +56 -0
- package/components/cascader/index.ts +35 -12
- package/components/cascader/index.vdt +9 -8
- package/components/cascader/useFields.ts +22 -0
- package/components/cascader/useFilterable.ts +23 -8
- package/components/cascader/useLabel.ts +7 -4
- package/components/cascader/useLoad.ts +4 -2
- package/components/code/demos/basic.md +1 -1
- package/components/colorpicker/index.md +16 -0
- package/components/colorpicker/index.ts +4 -0
- package/components/colorpicker/index.vdt +3 -2
- package/components/datepicker/index.md +11 -0
- package/components/dialog/index.spec.ts +2 -2
- package/components/dropdown/dropdown.ts +34 -71
- package/components/dropdown/index.spec.ts +53 -4
- package/components/dropdown/item.ts +18 -7
- package/components/dropdown/menu.ts +3 -3
- package/components/dropdown/usePosition.ts +12 -1
- package/components/editable/index.ts +17 -3
- package/components/editable/index.vdt +1 -0
- package/components/input/demos/autoRows.md +44 -0
- package/components/input/demos/password.md +12 -0
- package/components/input/demos/textarea.md +2 -2
- package/components/input/index.md +1 -0
- package/components/input/index.spec.ts +97 -1
- package/components/input/index.ts +17 -3
- package/components/input/index.vdt +29 -6
- package/components/input/styles.ts +18 -1
- package/components/input/useAutoRows.ts +65 -0
- package/components/input/useAutoWidth.ts +12 -3
- package/components/input/useShowPassword.ts +27 -0
- package/components/menu/demos/collapse.md +1 -1
- package/components/menu/index.spec.ts +9 -1
- package/components/menu/item.ts +7 -0
- package/components/pagination/index.spec.ts +24 -1
- package/components/pagination/index.ts +2 -1
- package/components/portal.ts +4 -4
- package/components/position.ts +5 -1
- package/components/select/base.ts +3 -1
- package/components/select/base.vdt +2 -0
- package/components/select/index.md +11 -1
- package/components/table/cell.ts +4 -5
- package/components/table/demos/hideHeader.md +33 -0
- package/components/table/demos/pagination.md +53 -0
- package/components/table/index.md +22 -0
- package/components/table/index.spec.ts +73 -1
- package/components/table/row.ts +3 -3
- package/components/table/styles.ts +5 -0
- package/components/table/table.ts +29 -4
- package/components/table/table.vdt +21 -3
- package/components/table/useChecked.ts +21 -6
- package/components/table/useDisableRow.ts +3 -2
- package/components/table/useDraggable.ts +11 -8
- package/components/table/useGroup.ts +2 -0
- package/components/table/useMerge.ts +6 -3
- package/components/table/usePagination.ts +71 -0
- package/components/table/useRestRowStatus.ts +4 -1
- package/components/table/useTree.ts +4 -3
- package/components/timepicker/index.md +11 -0
- package/components/tooltip/content.ts +15 -1
- package/components/tooltip/content.vdt +6 -1
- package/components/tooltip/demos/trigger.md +1 -1
- package/components/tooltip/index.md +1 -1
- package/components/tooltip/index.spec.ts +65 -6
- package/components/tooltip/styles.ts +1 -1
- package/components/tooltip/tooltip.ts +8 -0
- package/components/treeSelect/index.md +9 -0
- package/components/virtual.ts +98 -0
- package/es/components/cascader/index.d.ts +22 -11
- package/es/components/cascader/index.js +9 -12
- package/es/components/cascader/index.spec.js +81 -0
- package/es/components/cascader/index.vdt.js +10 -8
- package/es/components/cascader/useFields.d.ts +2 -0
- package/es/components/cascader/useFields.js +18 -0
- package/es/components/cascader/useFilterable.d.ts +2 -1
- package/es/components/cascader/useFilterable.js +17 -6
- package/es/components/cascader/useLabel.d.ts +2 -1
- package/es/components/cascader/useLabel.js +4 -4
- package/es/components/cascader/useLoad.d.ts +2 -1
- package/es/components/cascader/useLoad.js +9 -7
- package/es/components/colorpicker/index.d.ts +2 -0
- package/es/components/colorpicker/index.js +7 -2
- package/es/components/colorpicker/index.vdt.js +3 -6
- package/es/components/dialog/index.spec.js +2 -2
- package/es/components/dropdown/dropdown.d.ts +6 -5
- package/es/components/dropdown/dropdown.js +40 -69
- package/es/components/dropdown/index.spec.js +96 -17
- package/es/components/dropdown/item.d.ts +1 -1
- package/es/components/dropdown/item.js +19 -7
- package/es/components/dropdown/usePosition.js +11 -2
- package/es/components/editable/index.d.ts +1 -0
- package/es/components/editable/index.js +20 -6
- package/es/components/editable/index.vdt.js +2 -1
- package/es/components/input/index.d.ts +10 -2
- package/es/components/input/index.js +10 -3
- package/es/components/input/index.spec.js +169 -1
- package/es/components/input/index.vdt.js +26 -7
- package/es/components/input/styles.js +8 -3
- package/es/components/input/useAutoRows.d.ts +2 -0
- package/es/components/input/useAutoRows.js +79 -0
- package/es/components/input/useAutoWidth.js +13 -3
- package/es/components/input/useShowPassword.d.ts +7 -0
- package/es/components/input/useShowPassword.js +31 -0
- package/es/components/menu/index.spec.js +26 -15
- package/es/components/menu/item.d.ts +2 -0
- package/es/components/menu/item.js +5 -0
- package/es/components/pagination/index.js +2 -1
- package/es/components/pagination/index.spec.js +51 -4
- package/es/components/portal.d.ts +6 -2
- package/es/components/portal.js +4 -3
- package/es/components/position.js +2 -1
- package/es/components/select/base.d.ts +2 -1
- package/es/components/select/base.js +3 -1
- package/es/components/select/base.vdt.js +3 -1
- package/es/components/table/cell.js +1 -6
- package/es/components/table/index.spec.js +130 -19
- package/es/components/table/row.d.ts +1 -1
- package/es/components/table/row.js +2 -1
- package/es/components/table/styles.js +1 -1
- package/es/components/table/table.d.ts +15 -0
- package/es/components/table/table.js +16 -7
- package/es/components/table/table.vdt.js +20 -6
- package/es/components/table/useChecked.d.ts +3 -2
- package/es/components/table/useChecked.js +23 -12
- package/es/components/table/useDisableRow.d.ts +2 -1
- package/es/components/table/useDisableRow.js +4 -4
- package/es/components/table/useDraggable.d.ts +3 -2
- package/es/components/table/useDraggable.js +11 -8
- package/es/components/table/useGroup.js +3 -0
- package/es/components/table/useMerge.d.ts +2 -1
- package/es/components/table/useMerge.js +5 -4
- package/es/components/table/usePagination.d.ts +8 -0
- package/es/components/table/usePagination.js +81 -0
- package/es/components/table/useTree.d.ts +2 -1
- package/es/components/table/useTree.js +3 -4
- package/es/components/tooltip/content.d.ts +1 -0
- package/es/components/tooltip/content.js +18 -1
- package/es/components/tooltip/content.vdt.js +3 -1
- package/es/components/tooltip/index.spec.js +117 -10
- package/es/components/tooltip/styles.d.ts +22 -0
- package/es/components/tooltip/styles.js +1 -1
- package/es/components/tooltip/tooltip.d.ts +1 -0
- package/es/components/tooltip/tooltip.js +11 -0
- package/es/components/virtual.d.ts +8 -0
- package/es/components/virtual.js +126 -0
- package/es/index.d.ts +3 -3
- package/es/index.js +3 -3
- package/es/packages/kpc-react/__tests__/components/cascader.spec.d.ts +1 -0
- package/es/packages/kpc-react/__tests__/components/cascader.spec.js +79 -0
- package/es/site/data/components/input/demos/autoRows/index.d.ts +9 -0
- package/es/site/data/components/input/demos/autoRows/index.js +24 -0
- package/es/site/data/components/input/demos/autoRows/react.d.ts +8 -0
- package/es/site/data/components/input/demos/autoRows/react.js +62 -0
- package/es/site/data/components/input/demos/password/index.d.ts +5 -0
- package/es/site/data/components/input/demos/password/index.js +17 -0
- package/es/site/data/components/input/demos/password/react.d.ts +5 -0
- package/es/site/data/components/input/demos/password/react.js +41 -0
- package/es/site/data/components/input/demos/textarea/react.js +4 -2
- package/es/site/data/components/menu/demos/collapse/index.js +1 -1
- package/es/site/data/components/menu/demos/collapse/react.js +1 -1
- package/es/site/data/components/table/demos/hideHeader/index.d.ts +12 -0
- package/es/site/data/components/table/demos/hideHeader/index.js +30 -0
- package/es/site/data/components/table/demos/hideHeader/react.d.ts +11 -0
- package/es/site/data/components/table/demos/hideHeader/react.js +60 -0
- package/es/site/data/components/table/demos/pagination/index.d.ts +12 -0
- package/es/site/data/components/table/demos/pagination/index.js +35 -0
- package/es/site/data/components/table/demos/pagination/react.d.ts +16 -0
- package/es/site/data/components/table/demos/pagination/react.js +65 -0
- package/es/styles/fonts/ionicons.js +1 -1
- package/index.ts +3 -3
- package/package.json +5 -4
- package/styles/fonts/ionicons.ts +0 -1
|
@@ -27,12 +27,14 @@ export default function ($props, $blocks, $__proto__) {
|
|
|
27
27
|
var _this$get = this.get(),
|
|
28
28
|
data = _this$get.data,
|
|
29
29
|
trigger = _this$get.trigger,
|
|
30
|
-
filterable = _this$get.filterable
|
|
30
|
+
filterable = _this$get.filterable,
|
|
31
|
+
fields = _this$get.fields;
|
|
31
32
|
|
|
32
33
|
var baseMenuStyles = makeMenuStyles();
|
|
33
34
|
var classNameObj = (_classNameObj = {
|
|
34
35
|
'k-cascader-menu': true
|
|
35
36
|
}, _classNameObj[baseMenuStyles] = true, _classNameObj);
|
|
37
|
+
var getField = this.fields;
|
|
36
38
|
|
|
37
39
|
var _this$value = this.value,
|
|
38
40
|
values = _valuesInstanceProperty(_this$value),
|
|
@@ -51,31 +53,31 @@ export default function ($props, $blocks, $__proto__) {
|
|
|
51
53
|
}
|
|
52
54
|
|
|
53
55
|
return _mapInstanceProperty(data).call(data, function (item, index) {
|
|
54
|
-
var value = item
|
|
56
|
+
var value = getField(item, 'value');
|
|
55
57
|
var showed = isShowed(value, level);
|
|
56
58
|
var selected = parentSelected && isSelected(value, level);
|
|
57
|
-
var children = item
|
|
59
|
+
var children = getField(item, 'children');
|
|
58
60
|
|
|
59
61
|
var Item = function Item() {
|
|
60
62
|
return _$cc(DropdownItem, {
|
|
61
|
-
'disabled': item
|
|
63
|
+
'disabled': getField(item, 'disabled'),
|
|
62
64
|
'className': _$cn({
|
|
63
65
|
'k-cascader-option': true,
|
|
64
66
|
'k-active': showed,
|
|
65
67
|
'k-selected': selected
|
|
66
68
|
}),
|
|
67
69
|
'ev-select': onSelect.bind(null, value, level),
|
|
68
|
-
'children': [item
|
|
70
|
+
'children': [getField(item, 'label'), children ? _$cc(Icon, _$tmp1) : undefined]
|
|
69
71
|
});
|
|
70
72
|
};
|
|
71
73
|
|
|
72
74
|
return children ? _$cc(Dropdown, {
|
|
73
75
|
'position': _this.positionObj,
|
|
74
76
|
'of': 'parent',
|
|
75
|
-
'disabled': item
|
|
77
|
+
'disabled': getField(item, 'disabled'),
|
|
76
78
|
'trigger': trigger,
|
|
77
79
|
'value': showed,
|
|
78
|
-
'ev-$
|
|
80
|
+
'ev-$change:value': toggleShowedValue.bind(null, value, level),
|
|
79
81
|
'ev-show': _this.load.bind(null, item),
|
|
80
82
|
'children': [Item(), _$cc(DropdownMenu, {
|
|
81
83
|
'className': _$cn(classNameObj),
|
|
@@ -116,7 +118,7 @@ export default function ($props, $blocks, $__proto__) {
|
|
|
116
118
|
'children': function () {
|
|
117
119
|
// highlight keywords
|
|
118
120
|
var label = _mapInstanceProperty($value).call($value, function (item) {
|
|
119
|
-
return item
|
|
121
|
+
return getField(item, 'label');
|
|
120
122
|
}).join(' / ');
|
|
121
123
|
|
|
122
124
|
var labels = label.split(keywords);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { useInstance } from 'intact';
|
|
2
|
+
export function useFields() {
|
|
3
|
+
var instance = useInstance();
|
|
4
|
+
return function getField(data, key) {
|
|
5
|
+
var _instance$get = instance.get(),
|
|
6
|
+
fields = _instance$get.fields;
|
|
7
|
+
|
|
8
|
+
if (fields) {
|
|
9
|
+
var field = fields[key];
|
|
10
|
+
|
|
11
|
+
if (field) {
|
|
12
|
+
return data[field];
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return data[key];
|
|
17
|
+
};
|
|
18
|
+
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { CascaderData } from './';
|
|
2
2
|
import { State } from '../../hooks/useState';
|
|
3
3
|
import type { Value } from './useValue';
|
|
4
|
-
|
|
4
|
+
import type { useFields } from './useFields';
|
|
5
|
+
export declare function useFilterable(keywords: State<string>, setValue: (value: Value) => void, getField: ReturnType<typeof useFields>): {
|
|
5
6
|
filter: () => CascaderData<any>[][];
|
|
6
7
|
selectByFilter: (data: CascaderData<any>[]) => void;
|
|
7
8
|
keywords: State<string>;
|
|
@@ -1,16 +1,25 @@
|
|
|
1
1
|
import _filterInstanceProperty from "@babel/runtime-corejs3/core-js/instance/filter";
|
|
2
|
+
import _includesInstanceProperty from "@babel/runtime-corejs3/core-js/instance/includes";
|
|
2
3
|
import _sliceInstanceProperty from "@babel/runtime-corejs3/core-js/instance/slice";
|
|
3
4
|
import _mapInstanceProperty from "@babel/runtime-corejs3/core-js/instance/map";
|
|
4
5
|
import { useInstance } from 'intact';
|
|
5
|
-
export function useFilterable(keywords, setValue) {
|
|
6
|
+
export function useFilterable(keywords, setValue, getField) {
|
|
6
7
|
var instance = useInstance();
|
|
7
8
|
|
|
8
9
|
function filter() {
|
|
10
|
+
var ret = [];
|
|
11
|
+
|
|
9
12
|
var _instance$get = instance.get(),
|
|
10
13
|
data = _instance$get.data,
|
|
11
14
|
filter = _filterInstanceProperty(_instance$get);
|
|
12
15
|
|
|
13
|
-
|
|
16
|
+
if (!filter) {
|
|
17
|
+
filter = function filter(keywords, data) {
|
|
18
|
+
var _context;
|
|
19
|
+
|
|
20
|
+
return _includesInstanceProperty(_context = getField(data, 'label')).call(_context, keywords);
|
|
21
|
+
};
|
|
22
|
+
}
|
|
14
23
|
|
|
15
24
|
var loop = function loop(data, prefix, valid, disabled) {
|
|
16
25
|
if (prefix === void 0) {
|
|
@@ -28,14 +37,16 @@ export function useFilterable(keywords, setValue) {
|
|
|
28
37
|
data.forEach(function (item) {
|
|
29
38
|
var _valid = valid || filter(keywords.value, item);
|
|
30
39
|
|
|
31
|
-
var _disabled = disabled || item
|
|
40
|
+
var _disabled = disabled || getField(item, 'disabled');
|
|
32
41
|
|
|
33
42
|
var _prefix = _sliceInstanceProperty(prefix).call(prefix, 0);
|
|
34
43
|
|
|
35
44
|
_prefix.push(item);
|
|
36
45
|
|
|
37
|
-
|
|
38
|
-
|
|
46
|
+
var children = getField(item, 'children');
|
|
47
|
+
|
|
48
|
+
if (children) {
|
|
49
|
+
loop(children, _prefix, _valid, _disabled);
|
|
39
50
|
} else if (_valid) {
|
|
40
51
|
_prefix.disabled = _disabled;
|
|
41
52
|
ret.push(_prefix);
|
|
@@ -49,7 +60,7 @@ export function useFilterable(keywords, setValue) {
|
|
|
49
60
|
|
|
50
61
|
function selectByFilter(data) {
|
|
51
62
|
var value = _mapInstanceProperty(data).call(data, function (item) {
|
|
52
|
-
return item
|
|
63
|
+
return getField(item, 'value');
|
|
53
64
|
});
|
|
54
65
|
|
|
55
66
|
setValue(value);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useInstance } from 'intact';
|
|
2
2
|
import { useBaseLabel } from '../select/useBaseLabel';
|
|
3
|
-
export function useLabel() {
|
|
3
|
+
export function useLabel(getField) {
|
|
4
4
|
var instance = useInstance();
|
|
5
5
|
|
|
6
6
|
function findLabel(data, value) {
|
|
@@ -16,9 +16,9 @@ export function useLabel() {
|
|
|
16
16
|
for (var i = 0; i < data.length; i++) {
|
|
17
17
|
var item = data[i];
|
|
18
18
|
|
|
19
|
-
if (item
|
|
20
|
-
labels.push(item
|
|
21
|
-
var children = item
|
|
19
|
+
if (getField(item, 'value') === value[level]) {
|
|
20
|
+
labels.push(getField(item, 'label'));
|
|
21
|
+
var children = getField(item, 'children');
|
|
22
22
|
|
|
23
23
|
if (children) {
|
|
24
24
|
loop(children, level + 1);
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
import type { CascaderData } from './';
|
|
2
|
-
|
|
2
|
+
import type { useFields } from './useFields';
|
|
3
|
+
export declare function useLoad(getField: ReturnType<typeof useFields>): (item: CascaderData<any>) => Promise<void>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _asyncToGenerator from "@babel/runtime-corejs3/helpers/asyncToGenerator";
|
|
2
2
|
import _regeneratorRuntime from "@babel/runtime-corejs3/regenerator";
|
|
3
3
|
import { useInstance } from 'intact';
|
|
4
|
-
export function useLoad() {
|
|
4
|
+
export function useLoad(getField) {
|
|
5
5
|
var instance = useInstance();
|
|
6
6
|
|
|
7
7
|
function loadData(_x) {
|
|
@@ -10,7 +10,7 @@ export function useLoad() {
|
|
|
10
10
|
|
|
11
11
|
function _loadData() {
|
|
12
12
|
_loadData = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(item) {
|
|
13
|
-
var _instance$get, loadData;
|
|
13
|
+
var _instance$get, loadData, children;
|
|
14
14
|
|
|
15
15
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
16
16
|
while (1) {
|
|
@@ -26,19 +26,21 @@ export function useLoad() {
|
|
|
26
26
|
return _context.abrupt("return");
|
|
27
27
|
|
|
28
28
|
case 3:
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
children = getField(item, 'children');
|
|
30
|
+
|
|
31
|
+
if (!(children && !children.length && !item.loaded)) {
|
|
32
|
+
_context.next = 9;
|
|
31
33
|
break;
|
|
32
34
|
}
|
|
33
35
|
|
|
34
|
-
_context.next =
|
|
36
|
+
_context.next = 7;
|
|
35
37
|
return loadData(item);
|
|
36
38
|
|
|
37
|
-
case
|
|
39
|
+
case 7:
|
|
38
40
|
item.loaded = true;
|
|
39
41
|
instance.forceUpdate();
|
|
40
42
|
|
|
41
|
-
case
|
|
43
|
+
case 9:
|
|
42
44
|
case "end":
|
|
43
45
|
return _context.stop();
|
|
44
46
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Component, TypeDefs } from 'intact';
|
|
2
2
|
import { Sizes } from '../../styles/utils';
|
|
3
3
|
import { Container } from '../portal';
|
|
4
|
+
import { DropdownProps } from '../dropdown';
|
|
4
5
|
export interface ColorpickerProps {
|
|
5
6
|
value: string;
|
|
6
7
|
presets?: string[];
|
|
@@ -8,6 +9,7 @@ export interface ColorpickerProps {
|
|
|
8
9
|
disabled?: boolean;
|
|
9
10
|
container?: Container;
|
|
10
11
|
show?: boolean;
|
|
12
|
+
position?: DropdownProps['position'];
|
|
11
13
|
}
|
|
12
14
|
export interface ColorpickerEvents {
|
|
13
15
|
}
|
|
@@ -2,6 +2,7 @@ import _inheritsLoose from "@babel/runtime-corejs3/helpers/inheritsLoose";
|
|
|
2
2
|
import { Component } from 'intact';
|
|
3
3
|
import template from './index.vdt';
|
|
4
4
|
import { sizes } from '../../styles/utils';
|
|
5
|
+
import { Dropdown } from '../dropdown';
|
|
5
6
|
var typeDefs = {
|
|
6
7
|
value: {
|
|
7
8
|
type: String,
|
|
@@ -11,13 +12,17 @@ var typeDefs = {
|
|
|
11
12
|
size: sizes,
|
|
12
13
|
disabled: Boolean,
|
|
13
14
|
container: [Function, String],
|
|
14
|
-
show: Boolean
|
|
15
|
+
show: Boolean,
|
|
16
|
+
position: Dropdown.typeDefs.position
|
|
15
17
|
};
|
|
16
18
|
|
|
17
19
|
var defaults = function defaults() {
|
|
18
20
|
return {
|
|
19
21
|
presets: ['#D0021B', '#F5A623', '#F8E71C', '#8B572A', '#7ED321', '#417505', '#BD10E0', '#9013FE', '#4A90E2', '#50E3C2', '#B8E986', '#000000', '#4A4A4A', '#9B9B9B', '#FFFFFF'],
|
|
20
|
-
size: 'default'
|
|
22
|
+
size: 'default',
|
|
23
|
+
position: {
|
|
24
|
+
collision: 'fit'
|
|
25
|
+
}
|
|
21
26
|
};
|
|
22
27
|
};
|
|
23
28
|
|
|
@@ -19,7 +19,8 @@ export default function ($props, $blocks, $__proto__) {
|
|
|
19
19
|
value = _this$get.value,
|
|
20
20
|
size = _this$get.size,
|
|
21
21
|
disabled = _this$get.disabled,
|
|
22
|
-
container = _this$get.container
|
|
22
|
+
container = _this$get.container,
|
|
23
|
+
position = _this$get.position;
|
|
23
24
|
|
|
24
25
|
var classNameObj = (_classNameObj = {
|
|
25
26
|
'k-colorpicker': true
|
|
@@ -27,11 +28,7 @@ export default function ($props, $blocks, $__proto__) {
|
|
|
27
28
|
return _$cv('div', _extends({
|
|
28
29
|
'className': _$cn(classNameObj)
|
|
29
30
|
}, getRestProps(this)), _$cc(Dropdown, {
|
|
30
|
-
'position':
|
|
31
|
-
my: 'left top+8',
|
|
32
|
-
at: 'left bottom',
|
|
33
|
-
collision: 'flip'
|
|
34
|
-
},
|
|
31
|
+
'position': position,
|
|
35
32
|
'trigger': 'click',
|
|
36
33
|
'disabled': disabled,
|
|
37
34
|
'container': container,
|
|
@@ -243,7 +243,7 @@ describe('Dialog', function () {
|
|
|
243
243
|
return wait(500);
|
|
244
244
|
|
|
245
245
|
case 20:
|
|
246
|
-
expect(document.body.getAttribute('style')).to.be.
|
|
246
|
+
expect(!!document.body.getAttribute('style')).to.be.false;
|
|
247
247
|
|
|
248
248
|
case 21:
|
|
249
249
|
case "end":
|
|
@@ -347,7 +347,7 @@ describe('Dialog', function () {
|
|
|
347
347
|
return wait(500);
|
|
348
348
|
|
|
349
349
|
case 18:
|
|
350
|
-
expect(document.body.getAttribute('style')).to.be.
|
|
350
|
+
expect(!!document.body.getAttribute('style')).to.be.false;
|
|
351
351
|
|
|
352
352
|
case 19:
|
|
353
353
|
case "end":
|
|
@@ -3,6 +3,7 @@ import { Options, Feedback } from '../position';
|
|
|
3
3
|
import { Portal, PortalProps } from '../portal';
|
|
4
4
|
import { FeedbackCallback } from './usePosition';
|
|
5
5
|
import type { Events } from '../types';
|
|
6
|
+
import { Virtual } from '../virtual';
|
|
6
7
|
export declare type Position = Options;
|
|
7
8
|
export declare type PositionShorthand = 'left' | 'bottom' | 'right' | 'top';
|
|
8
9
|
export declare const DROPDOWN = "Dropdown";
|
|
@@ -12,6 +13,7 @@ export interface DropdownProps {
|
|
|
12
13
|
disabled?: boolean;
|
|
13
14
|
value?: boolean;
|
|
14
15
|
position?: Position | 'left' | 'bottom' | 'right' | 'top';
|
|
16
|
+
collison?: Position['collision'];
|
|
15
17
|
of?: 'self' | 'parent' | Event;
|
|
16
18
|
container?: PortalProps['container'];
|
|
17
19
|
}
|
|
@@ -21,6 +23,8 @@ export interface DropdownEvents {
|
|
|
21
23
|
hide: [];
|
|
22
24
|
mouseenter: [MouseEvent];
|
|
23
25
|
mouseleave: [MouseEvent];
|
|
26
|
+
click: [MouseEvent];
|
|
27
|
+
contextmenu: [MouseEvent];
|
|
24
28
|
positioned: [Feedback];
|
|
25
29
|
}
|
|
26
30
|
export interface DropdownBlocks {
|
|
@@ -30,7 +34,7 @@ export declare class Dropdown<T extends DropdownProps = DropdownProps, E extends
|
|
|
30
34
|
static typeDefs: Required<TypeDefs<DropdownProps>>;
|
|
31
35
|
static defaults: () => Partial<DropdownProps>;
|
|
32
36
|
static events: Events<DropdownEvents>;
|
|
33
|
-
static template: (this: Dropdown) => (VNode<
|
|
37
|
+
static template: (this: Dropdown) => (VNode<typeof Virtual> | VNode<typeof Portal>)[];
|
|
34
38
|
menuVNode: VNode | null;
|
|
35
39
|
dropdown: Dropdown | null;
|
|
36
40
|
rootDropdown: Dropdown | null;
|
|
@@ -41,8 +45,7 @@ export declare class Dropdown<T extends DropdownProps = DropdownProps, E extends
|
|
|
41
45
|
value: boolean;
|
|
42
46
|
};
|
|
43
47
|
};
|
|
44
|
-
|
|
45
|
-
private triggerProps;
|
|
48
|
+
protected timer: number | undefined;
|
|
46
49
|
init(): void;
|
|
47
50
|
show(shouldFocus?: boolean): void;
|
|
48
51
|
hide(immediately?: boolean): void;
|
|
@@ -52,6 +55,4 @@ export declare class Dropdown<T extends DropdownProps = DropdownProps, E extends
|
|
|
52
55
|
private onContextMenu;
|
|
53
56
|
private onLeave;
|
|
54
57
|
private initEventCallbacks;
|
|
55
|
-
private callOriginalCallback;
|
|
56
|
-
private normalizeTriggerProps;
|
|
57
58
|
}
|
|
@@ -3,14 +3,15 @@ import _inheritsLoose from "@babel/runtime-corejs3/helpers/inheritsLoose";
|
|
|
3
3
|
import _concatInstanceProperty from "@babel/runtime-corejs3/core-js/instance/concat";
|
|
4
4
|
import _filterInstanceProperty from "@babel/runtime-corejs3/core-js/instance/filter";
|
|
5
5
|
import { __decorate } from "tslib";
|
|
6
|
-
import { Component, createVNode as h,
|
|
7
|
-
import { bind,
|
|
8
|
-
import {
|
|
6
|
+
import { Component, createVNode as h, provide, inject, findDomFromVNode, nextTick } from 'intact';
|
|
7
|
+
import { bind, getRestProps } from '../utils';
|
|
8
|
+
import { noop } from 'intact-shared';
|
|
9
9
|
import { cx } from '@emotion/css';
|
|
10
10
|
import { useDocumentClick, containsOrEqual } from '../../hooks/useDocumentClick';
|
|
11
11
|
import { Portal } from '../portal';
|
|
12
12
|
import { useShowHideEvents } from '../../hooks/useShowHideEvents';
|
|
13
13
|
import { usePosition } from './usePosition';
|
|
14
|
+
import { Virtual } from '../virtual';
|
|
14
15
|
export var DROPDOWN = 'Dropdown';
|
|
15
16
|
export var ROOT_DROPDOWN = 'RootDropdown';
|
|
16
17
|
var typeDefs = {
|
|
@@ -20,13 +21,13 @@ var typeDefs = {
|
|
|
20
21
|
position: [Object, 'left', 'bottom', 'right', 'top'],
|
|
21
22
|
// Event is undefined in NodeJs
|
|
22
23
|
of: ['self', 'parent', typeof Event === 'undefined' ? undefined : Event],
|
|
23
|
-
container: [String, Function]
|
|
24
|
+
container: [String, Function],
|
|
25
|
+
collison: ['none', 'fit', 'flip', 'flipfit', Array]
|
|
24
26
|
};
|
|
25
27
|
|
|
26
28
|
var defaults = function defaults() {
|
|
27
29
|
return {
|
|
28
30
|
trigger: 'hover',
|
|
29
|
-
position: {},
|
|
30
31
|
of: 'self'
|
|
31
32
|
};
|
|
32
33
|
};
|
|
@@ -37,6 +38,8 @@ var events = {
|
|
|
37
38
|
hide: true,
|
|
38
39
|
mouseenter: true,
|
|
39
40
|
mouseleave: true,
|
|
41
|
+
click: true,
|
|
42
|
+
contextmenu: true,
|
|
40
43
|
positioned: true
|
|
41
44
|
};
|
|
42
45
|
export var Dropdown = /*#__PURE__*/function (_Component) {
|
|
@@ -58,7 +61,6 @@ export var Dropdown = /*#__PURE__*/function (_Component) {
|
|
|
58
61
|
_this.showedDropdown = null;
|
|
59
62
|
_this.positionHook = usePosition();
|
|
60
63
|
_this.timer = undefined;
|
|
61
|
-
_this.triggerProps = null;
|
|
62
64
|
return _this;
|
|
63
65
|
}
|
|
64
66
|
|
|
@@ -96,7 +98,13 @@ export var Dropdown = /*#__PURE__*/function (_Component) {
|
|
|
96
98
|
|
|
97
99
|
if (this.get('disabled')) return;
|
|
98
100
|
clearTimeout(this.timer);
|
|
99
|
-
this.set('value', true);
|
|
101
|
+
this.set('value', true); // should show parent dropdown
|
|
102
|
+
|
|
103
|
+
var parentDropdown = this.dropdown;
|
|
104
|
+
|
|
105
|
+
if (parentDropdown) {
|
|
106
|
+
parentDropdown.show();
|
|
107
|
+
}
|
|
100
108
|
|
|
101
109
|
if (shouldFocus) {
|
|
102
110
|
nextTick(function () {
|
|
@@ -114,10 +122,16 @@ export var Dropdown = /*#__PURE__*/function (_Component) {
|
|
|
114
122
|
|
|
115
123
|
if (this.get('disabled')) return;
|
|
116
124
|
if (!this.get('value')) return;
|
|
125
|
+
var showedDropdown = this.showedDropdown;
|
|
126
|
+
|
|
127
|
+
if (showedDropdown) {
|
|
128
|
+
showedDropdown.hide(immediately);
|
|
129
|
+
}
|
|
117
130
|
|
|
118
131
|
if (immediately) {
|
|
119
132
|
this.set('value', false);
|
|
120
133
|
} else {
|
|
134
|
+
clearTimeout(this.timer);
|
|
121
135
|
this.timer = window.setTimeout(function () {
|
|
122
136
|
_this4.set('value', false);
|
|
123
137
|
}, 200);
|
|
@@ -137,23 +151,24 @@ export var Dropdown = /*#__PURE__*/function (_Component) {
|
|
|
137
151
|
};
|
|
138
152
|
|
|
139
153
|
_proto.onEnter = function onEnter(e) {
|
|
140
|
-
this.callOriginalCallback(e.type === 'click' ? 'ev-click' : 'ev-mouseenter', e);
|
|
141
154
|
this.show();
|
|
155
|
+
this.trigger(e.type, e);
|
|
142
156
|
};
|
|
143
157
|
|
|
144
158
|
_proto.onContextMenu = function onContextMenu(e) {
|
|
145
|
-
this.callOriginalCallback('ev-contextmenu', e);
|
|
146
159
|
e.preventDefault();
|
|
147
160
|
this.set('of', e);
|
|
148
161
|
this.show();
|
|
162
|
+
this.trigger('contextmenu', e);
|
|
149
163
|
};
|
|
150
164
|
|
|
151
165
|
_proto.onLeave = function onLeave(e) {
|
|
152
|
-
this.callOriginalCallback('ev-mouseleave', e);
|
|
153
166
|
this.hide();
|
|
167
|
+
this.trigger(e.type, e);
|
|
154
168
|
};
|
|
155
169
|
|
|
156
|
-
_proto.initEventCallbacks = function initEventCallbacks(
|
|
170
|
+
_proto.initEventCallbacks = function initEventCallbacks() {
|
|
171
|
+
var trigger = this.get('trigger');
|
|
157
172
|
var props = {};
|
|
158
173
|
|
|
159
174
|
switch (trigger) {
|
|
@@ -180,51 +195,6 @@ export var Dropdown = /*#__PURE__*/function (_Component) {
|
|
|
180
195
|
return props;
|
|
181
196
|
};
|
|
182
197
|
|
|
183
|
-
_proto.callOriginalCallback = function callOriginalCallback(name, e) {
|
|
184
|
-
var callback = this.triggerProps[name];
|
|
185
|
-
var callbackOnDropdown = this.get(name);
|
|
186
|
-
if (isFunction(callback)) callback(e);
|
|
187
|
-
if (isFunction(callbackOnDropdown)) callbackOnDropdown(e);
|
|
188
|
-
};
|
|
189
|
-
|
|
190
|
-
_proto.normalizeTriggerProps = function normalizeTriggerProps(props) {
|
|
191
|
-
// if use kpc in react or vue, normalize props by Wrapper.props.vnode;
|
|
192
|
-
var vnode = props.vnode;
|
|
193
|
-
if (!vnode) return props; // maybe we render the intact component in react slot property, in this case
|
|
194
|
-
// the $isReact is false. so use the vnode $$typeof field as gauge
|
|
195
|
-
|
|
196
|
-
if (vnode.$$typeof || this.$isVueNext) {
|
|
197
|
-
var _props = vnode.props;
|
|
198
|
-
if (!_props) return props;
|
|
199
|
-
return {
|
|
200
|
-
vnode: vnode,
|
|
201
|
-
'ev-click': _props.onClick,
|
|
202
|
-
'ev-mouseenter': _props.onMouseEnter,
|
|
203
|
-
'ev-mouseleave': _props.onMouseLeave,
|
|
204
|
-
'ev-contextmenu': _props.onContextMenu,
|
|
205
|
-
className: _props.className || _props.class
|
|
206
|
-
/* vue-next */
|
|
207
|
-
|
|
208
|
-
};
|
|
209
|
-
} else if (this.$isVue) {
|
|
210
|
-
var data = vnode.data;
|
|
211
|
-
var on = data && data.on || EMPTY_OBJ;
|
|
212
|
-
var ret = {
|
|
213
|
-
vnode: vnode
|
|
214
|
-
};
|
|
215
|
-
['click', 'mouseenter', 'mouseleave', 'contextmenu'].forEach(function (event) {
|
|
216
|
-
var method = on[event];
|
|
217
|
-
|
|
218
|
-
if (method) {
|
|
219
|
-
ret["ev-" + event] = method;
|
|
220
|
-
}
|
|
221
|
-
});
|
|
222
|
-
return ret;
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
return props;
|
|
226
|
-
};
|
|
227
|
-
|
|
228
198
|
return Dropdown;
|
|
229
199
|
}(Component);
|
|
230
200
|
Dropdown.$doubleVNodes = true;
|
|
@@ -254,21 +224,22 @@ Dropdown.template = function () {
|
|
|
254
224
|
var _children = children,
|
|
255
225
|
trigger = _children[0],
|
|
256
226
|
menu = _children[1];
|
|
257
|
-
var
|
|
258
|
-
|
|
259
|
-
var
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
});
|
|
267
|
-
clonedTrigger.className = className;
|
|
227
|
+
var props = this.initEventCallbacks();
|
|
228
|
+
|
|
229
|
+
var _this$get = this.get(),
|
|
230
|
+
className = _this$get.className,
|
|
231
|
+
value = _this$get.value,
|
|
232
|
+
container = _this$get.container;
|
|
233
|
+
|
|
234
|
+
className = cx((_cx = {
|
|
235
|
+
'k-dropdown-open': value
|
|
236
|
+
}, _cx[className] = !!className, _cx));
|
|
268
237
|
this.menuVNode = menu;
|
|
269
|
-
return [
|
|
238
|
+
return [h(Virtual, _extends({}, props, getRestProps(this), {
|
|
239
|
+
className: className
|
|
240
|
+
}), trigger), h(Portal, {
|
|
270
241
|
children: menu,
|
|
271
|
-
container:
|
|
242
|
+
container: container
|
|
272
243
|
})];
|
|
273
244
|
};
|
|
274
245
|
|