@king-design/intact 2.0.9 → 2.0.11
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/dialog/base.ts +3 -0
- package/components/dialog/demos/block.md +4 -4
- package/components/dialog/index.md +1 -0
- package/components/dialog/useDraggable.ts +4 -2
- package/components/dialog/useEscClosable.ts +1 -1
- package/components/drawer/index.ts +1 -0
- package/components/portal.ts +12 -6
- package/components/select/base.ts +3 -0
- package/components/select/useBaseLabel.ts +6 -1
- package/dist/fonts/ionicons.eot +0 -0
- package/dist/fonts/ionicons.svg +2230 -0
- package/dist/fonts/ionicons.ttf +0 -0
- package/dist/fonts/ionicons.woff +0 -0
- package/dist/i18n/en-US.js +218 -0
- package/dist/i18n/en-US.min.js +1 -0
- package/dist/kpc.css +3 -0
- package/dist/kpc.js +39860 -0
- package/dist/kpc.min.js +1 -0
- package/dist/kpc.react.js +90483 -0
- package/dist/kpc.react.min.js +1 -0
- package/dist/kpc.vue.js +48096 -0
- package/dist/kpc.vue.min.js +1 -0
- package/dist/ksyun.css +3 -0
- package/es/components/dialog/base.d.ts +1 -0
- package/es/components/dialog/base.js +4 -2
- package/es/components/dialog/useDraggable.js +4 -1
- package/es/components/dialog/useEscClosable.js +1 -1
- package/es/components/drawer/index.js +2 -1
- package/es/components/portal.js +11 -7
- package/es/components/select/base.d.ts +1 -0
- package/es/components/select/base.js +1 -0
- package/es/components/select/useBaseLabel.d.ts +1 -0
- package/es/components/select/useBaseLabel.js +5 -1
- package/es/hooks/useDraggable.d.ts +1 -0
- package/es/hooks/useDraggable.js +2 -1
- package/es/index.d.ts +2 -2
- package/es/index.js +2 -2
- package/es/packages/kpc-react/__tests__/components/drawer.spec.js +13 -6
- package/es/packages/kpc-react/__tests__/components/select.spec.d.ts +1 -0
- package/es/packages/kpc-react/__tests__/components/select.spec.js +64 -0
- package/es/site/data/components/dialog/demos/block/react.js +4 -4
- package/hooks/useDraggable.ts +4 -1
- package/index.ts +2 -2
- package/package.json +3 -3
|
@@ -31,6 +31,7 @@ export interface BaseDialogProps {
|
|
|
31
31
|
escClosable?: boolean
|
|
32
32
|
width?: string | number
|
|
33
33
|
mode?: 'destroy' | 'hide'
|
|
34
|
+
draggable?: boolean
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
export interface BaseDialogEvents {
|
|
@@ -68,6 +69,7 @@ const typeDefs: Required<TypeDefs<BaseDialogProps>> = {
|
|
|
68
69
|
escClosable: Boolean,
|
|
69
70
|
width: [String, Number],
|
|
70
71
|
mode: ['destroy', 'hide'],
|
|
72
|
+
draggable: Boolean,
|
|
71
73
|
};
|
|
72
74
|
|
|
73
75
|
const defaults = (): Partial<BaseDialogProps> => ({
|
|
@@ -80,6 +82,7 @@ const defaults = (): Partial<BaseDialogProps> => ({
|
|
|
80
82
|
closable: true,
|
|
81
83
|
escClosable: true,
|
|
82
84
|
mode: 'hide',
|
|
85
|
+
draggable: true,
|
|
83
86
|
});
|
|
84
87
|
|
|
85
88
|
const events: Events<BaseDialogEvents> = {
|
|
@@ -105,13 +105,13 @@ export default class Demo extends React.Component {
|
|
|
105
105
|
>Show No Footer Dialog</Button>
|
|
106
106
|
<Dialog value={this.state.show}
|
|
107
107
|
onChangeValue={(show) => this.setState({show})}
|
|
108
|
-
|
|
108
|
+
slotHeader={
|
|
109
109
|
<div className="k-title">
|
|
110
110
|
<i className="ion-person"></i>
|
|
111
111
|
Custom Header
|
|
112
112
|
</div>
|
|
113
113
|
}
|
|
114
|
-
|
|
114
|
+
slotFooter={
|
|
115
115
|
<React.Fragment>
|
|
116
116
|
Custom Footer
|
|
117
117
|
<Button type="primary" onClick={() => this.setState({show: false})}>确认</Button>
|
|
@@ -124,8 +124,8 @@ export default class Demo extends React.Component {
|
|
|
124
124
|
<Dialog value={this.state.show1}
|
|
125
125
|
onChangeValue={(show1) => this.setState({show1})}
|
|
126
126
|
title="No Footer"
|
|
127
|
-
|
|
128
|
-
|
|
127
|
+
slotBody="body"
|
|
128
|
+
slotFooterWrapper=""
|
|
129
129
|
>
|
|
130
130
|
</Dialog>
|
|
131
131
|
</div>
|
|
@@ -53,6 +53,7 @@ sidebar: doc
|
|
|
53
53
|
| escClosable | 是否按ESC时关闭弹窗 | `boolean` | `true` |
|
|
54
54
|
| width | 指定弹窗宽度,`number`类型时,单位为`px`;`string`类型时,需要指定单位 | `number` | `string` | `undefined` |
|
|
55
55
|
| mode | 指定主体元素在关闭状态下的渲染方式,`"destroy"`代表直接销毁,`"hide"`代表只是隐藏 | `"destroy"` | `"hide"` | `"hide"` |
|
|
56
|
+
| draggable | 弹窗是否可拖拽 | `boolean` | `true` |
|
|
56
57
|
|
|
57
58
|
```ts
|
|
58
59
|
export type Container = string | ((parentDom: Element, anchor: Node | null) => Element)
|
|
@@ -5,7 +5,7 @@ import type {Dialog} from './index';
|
|
|
5
5
|
|
|
6
6
|
export function useDraggable(
|
|
7
7
|
dialogRef: RefObject<HTMLDivElement>,
|
|
8
|
-
areaRef: RefObject<HTMLDivElement
|
|
8
|
+
areaRef: RefObject<HTMLDivElement>,
|
|
9
9
|
) {
|
|
10
10
|
const component = useInstance() as Dialog;
|
|
11
11
|
let x = 0;
|
|
@@ -60,5 +60,7 @@ export function useDraggable(
|
|
|
60
60
|
style.top = `${top}px`;
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
return useBaseDraggable({onStart, onMove
|
|
63
|
+
return useBaseDraggable({onStart, onMove, disable() {
|
|
64
|
+
return !component.get('draggable');
|
|
65
|
+
}});
|
|
64
66
|
}
|
|
@@ -32,7 +32,7 @@ export function useEscClosable() {
|
|
|
32
32
|
throw new Error('The dialog has handled hide callback. Maybe it is a bug of KPC');
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
-
dialogs.splice(
|
|
35
|
+
dialogs.splice(index, 1);
|
|
36
36
|
|
|
37
37
|
if (!dialogs.length) {
|
|
38
38
|
document.removeEventListener('keydown', escClose);
|
package/components/portal.ts
CHANGED
|
@@ -132,12 +132,18 @@ export class Portal<T extends PortalProps = PortalProps> extends Component<T> {
|
|
|
132
132
|
}
|
|
133
133
|
if (!this.container) {
|
|
134
134
|
// find the closest dialog if exists
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
135
|
+
this.container = parentDom.closest('.k-dialog') || document.body;
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* @FIXME: We cannot get parent ref from sub component in Vue
|
|
139
|
+
*/
|
|
140
|
+
// find the closest dialog if exists
|
|
141
|
+
// let tmp;
|
|
142
|
+
// if ((tmp = this.dialog) && (tmp !== this.$senior) && (tmp = tmp.dialogRef.value)) {
|
|
143
|
+
// this.container = tmp;
|
|
144
|
+
// } else {
|
|
145
|
+
// this.container = document.body;
|
|
146
|
+
// }
|
|
141
147
|
}
|
|
142
148
|
}
|
|
143
149
|
}
|
|
@@ -88,6 +88,9 @@ export abstract class BaseSelect<
|
|
|
88
88
|
E extends BaseSelectEvents = BaseSelectEvents,
|
|
89
89
|
B extends BaseSelectBlocks<any> = BaseSelectBlocks<any>,
|
|
90
90
|
> extends Component<T, E, B> {
|
|
91
|
+
// for intact-react, intact-vue-next and intact-vue
|
|
92
|
+
static $doubleVNodes = true;
|
|
93
|
+
|
|
91
94
|
static template = template;
|
|
92
95
|
static typeDefs = typeDefs;
|
|
93
96
|
static defaults = defaults;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import {Children, useInstance, Component} from 'intact';
|
|
2
2
|
import {isNullOrUndefined, isStringOrNumber} from 'intact-shared';
|
|
3
|
-
import {isEmptyString} from '../utils';
|
|
3
|
+
import {isEmptyString, getTextByChildren} from '../utils';
|
|
4
4
|
|
|
5
5
|
type BaseLabelProps = {
|
|
6
6
|
value: any,
|
|
7
7
|
multiple: boolean,
|
|
8
|
+
filterable: boolean,
|
|
8
9
|
}
|
|
9
10
|
|
|
10
11
|
export function useBaseLabel<T, C extends Component<P>, P extends BaseLabelProps>(
|
|
@@ -41,6 +42,10 @@ export function useBaseLabel<T, C extends Component<P>, P extends BaseLabelProps
|
|
|
41
42
|
if (isNullOrUndefined(label)) {
|
|
42
43
|
label = labelMap.get(value);
|
|
43
44
|
} else {
|
|
45
|
+
if (instance.get('filterable')) {
|
|
46
|
+
label = getTextByChildren(label);
|
|
47
|
+
}
|
|
48
|
+
|
|
44
49
|
labelMap.set(value, label);
|
|
45
50
|
}
|
|
46
51
|
|
|
Binary file
|