@douyinfe/semi-foundation 2.75.0-beta.1 → 2.75.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/cascader/cascader.scss +3 -0
- package/cascader/variables.scss +2 -0
- package/form/interface.ts +1 -1
- package/lib/cjs/cascader/cascader.css +5 -0
- package/lib/cjs/cascader/cascader.scss +3 -0
- package/lib/cjs/cascader/variables.scss +2 -0
- package/lib/cjs/form/interface.d.ts +1 -1
- package/lib/cjs/resizable/group/index.d.ts +9 -6
- package/lib/cjs/resizable/group/index.js +13 -4
- package/lib/cjs/resizable/single/index.d.ts +9 -5
- package/lib/cjs/resizable/single/index.js +17 -4
- package/lib/cjs/resizable/types.d.ts +4 -3
- package/lib/cjs/select/select.css +5 -0
- package/lib/cjs/select/select.scss +3 -0
- package/lib/cjs/select/variables.scss +2 -0
- package/lib/cjs/treeSelect/treeSelect.css +5 -0
- package/lib/cjs/treeSelect/treeSelect.scss +3 -0
- package/lib/cjs/treeSelect/variables.scss +1 -0
- package/lib/es/cascader/cascader.css +5 -0
- package/lib/es/cascader/cascader.scss +3 -0
- package/lib/es/cascader/variables.scss +2 -0
- package/lib/es/form/interface.d.ts +1 -1
- package/lib/es/resizable/group/index.d.ts +9 -6
- package/lib/es/resizable/group/index.js +13 -4
- package/lib/es/resizable/single/index.d.ts +9 -5
- package/lib/es/resizable/single/index.js +17 -4
- package/lib/es/resizable/types.d.ts +4 -3
- package/lib/es/select/select.css +5 -0
- package/lib/es/select/select.scss +3 -0
- package/lib/es/select/variables.scss +2 -0
- package/lib/es/treeSelect/treeSelect.css +5 -0
- package/lib/es/treeSelect/treeSelect.scss +3 -0
- package/lib/es/treeSelect/variables.scss +1 -0
- package/package.json +4 -4
- package/resizable/group/index.ts +21 -9
- package/resizable/single/index.ts +25 -8
- package/resizable/types.ts +6 -3
- package/select/select.scss +3 -0
- package/select/variables.scss +2 -0
- package/treeSelect/treeSelect.scss +3 -0
- package/treeSelect/variables.scss +1 -0
package/cascader/cascader.scss
CHANGED
package/cascader/variables.scss
CHANGED
|
@@ -43,6 +43,8 @@ $color-cascader_danger-border-focus: var(--semi-color-danger); // 级联选择
|
|
|
43
43
|
$color-cascader_danger-bg-active: var(--semi-color-danger-light-active); // 级联选择触发器危险背景颜色 - 按下
|
|
44
44
|
$color-cascader_danger-border-active: var(--semi-color-danger-light-active); // 级联选择触发器危险描边颜色 - 按下
|
|
45
45
|
|
|
46
|
+
$color-cascader_prefix_suffix_text-default: var(--semi-color-text-2); // 级联选择前后缀文字颜色
|
|
47
|
+
|
|
46
48
|
$spacing-cascader_selection-paddingLeft: 12px; // 级联选择触发器左侧内边距
|
|
47
49
|
$spacing-cascader_selection-paddingRight: 12px; // 级联选择触发器右侧内边距
|
|
48
50
|
$spacing-cascader_selection_multiple-paddingLeft: $spacing-extra-tight; // 级联选择触发器多选时左侧内边距
|
package/form/interface.ts
CHANGED
|
@@ -67,7 +67,7 @@ export type FieldPathValue<T, P extends FieldPath<T>> =
|
|
|
67
67
|
export type ScrollToErrorOptions<K> = {
|
|
68
68
|
field?: K;
|
|
69
69
|
index?: number;
|
|
70
|
-
|
|
70
|
+
scrollOpts?: ScrollIntoViewOptions
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
// use object replace Record<string, any>, fix issue 933
|
|
@@ -199,6 +199,11 @@
|
|
|
199
199
|
}
|
|
200
200
|
.semi-cascader-prefix-text, .semi-cascader-suffix-text {
|
|
201
201
|
margin: 0 12px;
|
|
202
|
+
font-weight: 600;
|
|
203
|
+
font-size: 14px;
|
|
204
|
+
line-height: 20px;
|
|
205
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
206
|
+
color: var(--semi-color-text-2);
|
|
202
207
|
}
|
|
203
208
|
.semi-cascader-prefix-icon, .semi-cascader-suffix-icon {
|
|
204
209
|
color: var(--semi-color-text-2);
|
|
@@ -43,6 +43,8 @@ $color-cascader_danger-border-focus: var(--semi-color-danger); // 级联选择
|
|
|
43
43
|
$color-cascader_danger-bg-active: var(--semi-color-danger-light-active); // 级联选择触发器危险背景颜色 - 按下
|
|
44
44
|
$color-cascader_danger-border-active: var(--semi-color-danger-light-active); // 级联选择触发器危险描边颜色 - 按下
|
|
45
45
|
|
|
46
|
+
$color-cascader_prefix_suffix_text-default: var(--semi-color-text-2); // 级联选择前后缀文字颜色
|
|
47
|
+
|
|
46
48
|
$spacing-cascader_selection-paddingLeft: 12px; // 级联选择触发器左侧内边距
|
|
47
49
|
$spacing-cascader_selection-paddingRight: 12px; // 级联选择触发器右侧内边距
|
|
48
50
|
$spacing-cascader_selection_multiple-paddingLeft: $spacing-extra-tight; // 级联选择触发器多选时左侧内边距
|
|
@@ -40,7 +40,7 @@ export type FieldPathValue<T, P extends FieldPath<T>> = P extends `${infer K}.${
|
|
|
40
40
|
export type ScrollToErrorOptions<K> = {
|
|
41
41
|
field?: K;
|
|
42
42
|
index?: number;
|
|
43
|
-
|
|
43
|
+
scrollOpts?: ScrollIntoViewOptions;
|
|
44
44
|
};
|
|
45
45
|
export interface BaseFormApi<T extends object = any> {
|
|
46
46
|
/** get value of field */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="lodash" />
|
|
2
2
|
import BaseFoundation, { DefaultAdapter } from '../../base/foundation';
|
|
3
|
-
import { ResizeStartCallback, ResizeCallback } from "../types";
|
|
3
|
+
import { ResizeStartCallback, ResizeCallback, ResizeEventType } from "../types";
|
|
4
4
|
export interface ResizeHandlerAdapter<P = Record<string, any>, S = Record<string, any>> extends DefaultAdapter<P, S> {
|
|
5
5
|
registerEvents: () => void;
|
|
6
6
|
unregisterEvents: () => void;
|
|
@@ -29,8 +29,8 @@ export interface ResizeGroupAdapter<P = Record<string, any>, S = Record<string,
|
|
|
29
29
|
getItemChange: (index: number) => ResizeCallback;
|
|
30
30
|
getItemEnd: (index: number) => ResizeCallback;
|
|
31
31
|
getItemDefaultSize: (index: number) => string | number;
|
|
32
|
-
registerEvents: () => void;
|
|
33
|
-
unregisterEvents: () => void;
|
|
32
|
+
registerEvents: (type: ResizeEventType) => void;
|
|
33
|
+
unregisterEvents: (type: ResizeEventType) => void;
|
|
34
34
|
}
|
|
35
35
|
export declare class ResizeGroupFoundation<P = Record<string, any>, S = Record<string, any>> extends BaseFoundation<ResizeGroupAdapter<P, S>, P, S> {
|
|
36
36
|
constructor(adapter: ResizeGroupAdapter<P, S>);
|
|
@@ -40,13 +40,16 @@ export declare class ResizeGroupFoundation<P = Record<string, any>, S = Record<s
|
|
|
40
40
|
itemMinusMap: Map<number, number>;
|
|
41
41
|
totalMinus: number;
|
|
42
42
|
itemPercentMap: Map<number, number>;
|
|
43
|
+
type?: ResizeEventType;
|
|
43
44
|
init(): void;
|
|
44
45
|
get window(): Window | null;
|
|
45
46
|
registerEvents: () => void;
|
|
46
47
|
unregisterEvents: () => void;
|
|
47
|
-
onResizeStart: (handlerIndex: number, e: MouseEvent) => void;
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
onResizeStart: (handlerIndex: number, e: MouseEvent | Touch, type: ResizeEventType) => void;
|
|
49
|
+
onMouseMove: (e: MouseEvent) => void;
|
|
50
|
+
onTouchMove: (e: TouchEvent) => void;
|
|
51
|
+
onResizing: (e: MouseEvent | TouchEvent) => void;
|
|
52
|
+
onResizeEnd: (e: MouseEvent | TouchEvent) => void;
|
|
50
53
|
initSpace: () => void;
|
|
51
54
|
ensureConstraint: import("lodash").DebouncedFunc<() => void>;
|
|
52
55
|
destroy(): void;
|
|
@@ -32,12 +32,13 @@ class ResizeGroupFoundation extends _foundation.default {
|
|
|
32
32
|
constructor(adapter) {
|
|
33
33
|
super(Object.assign({}, adapter));
|
|
34
34
|
this.registerEvents = () => {
|
|
35
|
-
this._adapter.registerEvents();
|
|
35
|
+
this._adapter.registerEvents(this.type);
|
|
36
36
|
};
|
|
37
37
|
this.unregisterEvents = () => {
|
|
38
|
-
this._adapter.unregisterEvents();
|
|
38
|
+
this._adapter.unregisterEvents(this.type);
|
|
39
39
|
};
|
|
40
|
-
this.onResizeStart = (handlerIndex, e) => {
|
|
40
|
+
this.onResizeStart = (handlerIndex, e, type) => {
|
|
41
|
+
this.type = type;
|
|
41
42
|
let {
|
|
42
43
|
clientX,
|
|
43
44
|
clientY
|
|
@@ -79,6 +80,14 @@ class ResizeGroupFoundation extends _foundation.default {
|
|
|
79
80
|
nextStart(e, nextDir);
|
|
80
81
|
}
|
|
81
82
|
};
|
|
83
|
+
this.onMouseMove = e => {
|
|
84
|
+
this.onResizing(e);
|
|
85
|
+
};
|
|
86
|
+
this.onTouchMove = e => {
|
|
87
|
+
// prevent page move in mobile
|
|
88
|
+
e.preventDefault();
|
|
89
|
+
this.onResizing(e);
|
|
90
|
+
};
|
|
82
91
|
this.onResizing = e => {
|
|
83
92
|
const state = this.getStates();
|
|
84
93
|
if (!state.isResizing) {
|
|
@@ -99,7 +108,7 @@ class ResizeGroupFoundation extends _foundation.default {
|
|
|
99
108
|
let {
|
|
100
109
|
clientX,
|
|
101
110
|
clientY
|
|
102
|
-
} = e;
|
|
111
|
+
} = this.type === 'mouse' ? e : e.targetTouches[0];
|
|
103
112
|
const props = this.getProps();
|
|
104
113
|
const {
|
|
105
114
|
direction
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import BaseFoundation, { DefaultAdapter } from '../../base/foundation';
|
|
2
|
-
import { Size, NumberSize, Direction } from "../types";
|
|
2
|
+
import { Size, NumberSize, Direction, ResizeEventType } from "../types";
|
|
3
3
|
export interface ResizableHandlerAdapter<P = Record<string, any>, S = Record<string, any>> extends DefaultAdapter<P, S> {
|
|
4
4
|
registerEvent: () => void;
|
|
5
5
|
unregisterEvent: () => void;
|
|
@@ -8,17 +8,19 @@ export declare class ResizableHandlerFoundation<P = Record<string, any>, S = Rec
|
|
|
8
8
|
constructor(adapter: ResizableHandlerAdapter<P, S>);
|
|
9
9
|
init(): void;
|
|
10
10
|
onMouseDown: (e: MouseEvent) => void;
|
|
11
|
+
onTouchStart: (e: TouchEvent) => void;
|
|
11
12
|
destroy(): void;
|
|
12
13
|
}
|
|
13
14
|
export interface ResizableAdapter<P = Record<string, any>, S = Record<string, any>> extends DefaultAdapter<P, S> {
|
|
14
15
|
getResizable: () => HTMLDivElement | null;
|
|
15
|
-
registerEvent: () => void;
|
|
16
|
-
unregisterEvent: () => void;
|
|
16
|
+
registerEvent: (type: ResizeEventType) => void;
|
|
17
|
+
unregisterEvent: (type: ResizeEventType) => void;
|
|
17
18
|
}
|
|
18
19
|
export declare class ResizableFoundation<P = Record<string, any>, S = Record<string, any>> extends BaseFoundation<ResizableAdapter<P, S>, P, S> {
|
|
19
20
|
constructor(adapter: ResizableAdapter<P, S>);
|
|
20
21
|
init(): void;
|
|
21
22
|
flexDirection?: 'row' | 'column';
|
|
23
|
+
type?: ResizeEventType;
|
|
22
24
|
lockAspectRatio: number;
|
|
23
25
|
resizable: HTMLElement | null;
|
|
24
26
|
parentLeft: number;
|
|
@@ -63,8 +65,10 @@ export declare class ResizableFoundation<P = Record<string, any>, S = Record<str
|
|
|
63
65
|
newHeight: number;
|
|
64
66
|
};
|
|
65
67
|
setBoundary(): void;
|
|
66
|
-
onResizeStart: (e: MouseEvent, direction: Direction) => void;
|
|
68
|
+
onResizeStart: (e: MouseEvent, direction: Direction, type: ResizeEventType) => void;
|
|
67
69
|
onMouseMove: (event: MouseEvent) => void;
|
|
68
|
-
|
|
70
|
+
onTouchMove: (event: TouchEvent) => void;
|
|
71
|
+
changePosition: (event: Touch | MouseEvent) => void;
|
|
72
|
+
onMouseUp: (event: MouseEvent | TouchEvent) => void;
|
|
69
73
|
destroy(): void;
|
|
70
74
|
}
|
|
@@ -12,7 +12,11 @@ class ResizableHandlerFoundation extends _foundation.default {
|
|
|
12
12
|
constructor(adapter) {
|
|
13
13
|
super(Object.assign({}, adapter));
|
|
14
14
|
this.onMouseDown = e => {
|
|
15
|
-
this.getProp('onResizeStart')(e, this.getProp('direction'));
|
|
15
|
+
this.getProp('onResizeStart')(e, this.getProp('direction'), 'mouse');
|
|
16
|
+
};
|
|
17
|
+
this.onTouchStart = e => {
|
|
18
|
+
const touch = e.targetTouches[0];
|
|
19
|
+
this.getProp('onResizeStart')(touch, this.getProp('direction'), 'touch');
|
|
16
20
|
};
|
|
17
21
|
}
|
|
18
22
|
init() {
|
|
@@ -36,7 +40,8 @@ class ResizableFoundation extends _foundation.default {
|
|
|
36
40
|
this.boundaryBottom = 0;
|
|
37
41
|
this.targetLeft = 0;
|
|
38
42
|
this.targetTop = 0;
|
|
39
|
-
this.onResizeStart = (e, direction) => {
|
|
43
|
+
this.onResizeStart = (e, direction, type) => {
|
|
44
|
+
this.type = type;
|
|
40
45
|
this.resizable = this._adapter.getResizable();
|
|
41
46
|
if (!this.resizable || !this.window) {
|
|
42
47
|
return;
|
|
@@ -112,6 +117,14 @@ class ResizableFoundation extends _foundation.default {
|
|
|
112
117
|
this.setState(state);
|
|
113
118
|
};
|
|
114
119
|
this.onMouseMove = event => {
|
|
120
|
+
this.changePosition(event);
|
|
121
|
+
};
|
|
122
|
+
this.onTouchMove = event => {
|
|
123
|
+
event.preventDefault();
|
|
124
|
+
const touch = event.targetTouches[0];
|
|
125
|
+
this.changePosition(touch);
|
|
126
|
+
};
|
|
127
|
+
this.changePosition = event => {
|
|
115
128
|
var _a, _b;
|
|
116
129
|
const states = this.getStates();
|
|
117
130
|
const props = this.getProps();
|
|
@@ -410,10 +423,10 @@ class ResizableFoundation extends _foundation.default {
|
|
|
410
423
|
return size;
|
|
411
424
|
}
|
|
412
425
|
registerEvents() {
|
|
413
|
-
this._adapter.registerEvent();
|
|
426
|
+
this._adapter.registerEvent(this.type);
|
|
414
427
|
}
|
|
415
428
|
unregisterEvents() {
|
|
416
|
-
this._adapter.unregisterEvent();
|
|
429
|
+
this._adapter.unregisterEvent(this.type);
|
|
417
430
|
}
|
|
418
431
|
getCssPropertySize(newSize, property) {
|
|
419
432
|
var _a;
|
|
@@ -10,7 +10,8 @@ export interface HandleClassName {
|
|
|
10
10
|
bottomLeft?: string;
|
|
11
11
|
topLeft?: string;
|
|
12
12
|
}
|
|
13
|
-
export type
|
|
13
|
+
export type ResizeEventType = 'mouse' | 'touch';
|
|
14
|
+
export type HandlerCallback = (e: MouseEvent, direction: Direction, type?: ResizeEventType) => void;
|
|
14
15
|
export interface Enable {
|
|
15
16
|
top?: boolean;
|
|
16
17
|
right?: boolean;
|
|
@@ -37,5 +38,5 @@ export declare const DEFAULT_SIZE: {
|
|
|
37
38
|
width: string;
|
|
38
39
|
height: string;
|
|
39
40
|
};
|
|
40
|
-
export type ResizeCallback = (size: Size, event: MouseEvent, direction: Direction) => void;
|
|
41
|
-
export type ResizeStartCallback = (e: MouseEvent, dir: Direction) => void | boolean;
|
|
41
|
+
export type ResizeCallback = (size: Size, event: MouseEvent | TouchEvent, direction: Direction) => void;
|
|
42
|
+
export type ResizeStartCallback = (e: MouseEvent | Touch, dir: Direction) => void | boolean;
|
|
@@ -306,6 +306,11 @@
|
|
|
306
306
|
}
|
|
307
307
|
.semi-select-prefix-text, .semi-select-suffix-text {
|
|
308
308
|
margin: 0px 12px;
|
|
309
|
+
color: var(--semi-color-text-2);
|
|
310
|
+
font-size: 14px;
|
|
311
|
+
line-height: 20px;
|
|
312
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
313
|
+
font-weight: 600;
|
|
309
314
|
}
|
|
310
315
|
.semi-select-prefix-icon, .semi-select-suffix-icon {
|
|
311
316
|
color: var(--semi-color-text-2);
|
|
@@ -309,6 +309,9 @@ $overflowList: #{$prefix}-overflow-list;
|
|
|
309
309
|
|
|
310
310
|
&-text {
|
|
311
311
|
margin: $spacing-select_prefix_suffix_text-marginY $spacing-select_prefix_suffix_text-marginX;
|
|
312
|
+
color: $color-select_prefix_suffix_text-default;
|
|
313
|
+
@include font-size-regular;
|
|
314
|
+
font-weight: $font-weight-bold;
|
|
312
315
|
}
|
|
313
316
|
|
|
314
317
|
&-icon {
|
|
@@ -59,6 +59,8 @@ $color-select_inset_label-text: var(--semi-color-text-2); // 分组选择器菜
|
|
|
59
59
|
$color-select_create_tips-text: var(--semi-color-text-2); // 分组选择器菜单项提示文本颜色
|
|
60
60
|
$color-select_group-text: var(--semi-color-text-2); // 分组选择器菜单项分组标题文本颜色
|
|
61
61
|
|
|
62
|
+
$color-select_prefix_suffix_text-default: var(--semi-color-text-2); // 选择器输入框前后缀文本颜色
|
|
63
|
+
|
|
62
64
|
// Width/Height
|
|
63
65
|
$width-select_icon_right: ($width-icon-medium + $spacing-tight * 2); // 选择器右侧图标大小
|
|
64
66
|
$height-select_large: $height-control-large; // 选择器输入框高度 - 大尺寸
|
|
@@ -264,6 +264,11 @@
|
|
|
264
264
|
align-items: center;
|
|
265
265
|
}
|
|
266
266
|
.semi-tree-select-prefix-text, .semi-tree-select-suffix-text {
|
|
267
|
+
color: var(--semi-color-text-2);
|
|
268
|
+
font-weight: 600;
|
|
269
|
+
font-size: 14px;
|
|
270
|
+
line-height: 20px;
|
|
271
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
267
272
|
margin: 0px 12px;
|
|
268
273
|
}
|
|
269
274
|
.semi-tree-select-prefix-icon, .semi-tree-select-suffix-icon {
|
|
@@ -337,6 +337,9 @@ $module: #{$prefix}-tree-select;
|
|
|
337
337
|
@include all-center;
|
|
338
338
|
|
|
339
339
|
&-text {
|
|
340
|
+
color: $color-treeSelect_prefix_suffix_text-default;
|
|
341
|
+
font-weight: $font-weight-bold;
|
|
342
|
+
@include font-size-regular;
|
|
340
343
|
margin: $spacing-treeSelect_prefix_text-marginY $spacing-treeSelect_prefix_text-marginX;
|
|
341
344
|
}
|
|
342
345
|
|
|
@@ -85,6 +85,7 @@ $color-treeSelect_inputTrigger-border-default: none; // 带搜索的树选择器
|
|
|
85
85
|
$color-treeSelect_inputTrigger-bg-default: transparent; // 带搜索的树选择器触发器背景颜色
|
|
86
86
|
$color-treeSelect_insertLabel-text-default: var(--semi-color-text-2); // 带搜索的树前缀标签文本颜色
|
|
87
87
|
$font-treeSelect_insertLabel-fontWeight: 600; // 带搜索的树前缀标签文本字重
|
|
88
|
+
$color-treeSelect_prefix_suffix_text-default: var(--semi-color-text-2); // 带搜索的树选择器前后缀文本颜色
|
|
88
89
|
|
|
89
90
|
$width-treeSelect_arrow: 32px; // 树选择器展开箭头宽度
|
|
90
91
|
$width-treeSelect_option: 230px; // 树选择器菜单项宽度
|
|
@@ -199,6 +199,11 @@
|
|
|
199
199
|
}
|
|
200
200
|
.semi-cascader-prefix-text, .semi-cascader-suffix-text {
|
|
201
201
|
margin: 0 12px;
|
|
202
|
+
font-weight: 600;
|
|
203
|
+
font-size: 14px;
|
|
204
|
+
line-height: 20px;
|
|
205
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
206
|
+
color: var(--semi-color-text-2);
|
|
202
207
|
}
|
|
203
208
|
.semi-cascader-prefix-icon, .semi-cascader-suffix-icon {
|
|
204
209
|
color: var(--semi-color-text-2);
|
|
@@ -43,6 +43,8 @@ $color-cascader_danger-border-focus: var(--semi-color-danger); // 级联选择
|
|
|
43
43
|
$color-cascader_danger-bg-active: var(--semi-color-danger-light-active); // 级联选择触发器危险背景颜色 - 按下
|
|
44
44
|
$color-cascader_danger-border-active: var(--semi-color-danger-light-active); // 级联选择触发器危险描边颜色 - 按下
|
|
45
45
|
|
|
46
|
+
$color-cascader_prefix_suffix_text-default: var(--semi-color-text-2); // 级联选择前后缀文字颜色
|
|
47
|
+
|
|
46
48
|
$spacing-cascader_selection-paddingLeft: 12px; // 级联选择触发器左侧内边距
|
|
47
49
|
$spacing-cascader_selection-paddingRight: 12px; // 级联选择触发器右侧内边距
|
|
48
50
|
$spacing-cascader_selection_multiple-paddingLeft: $spacing-extra-tight; // 级联选择触发器多选时左侧内边距
|
|
@@ -40,7 +40,7 @@ export type FieldPathValue<T, P extends FieldPath<T>> = P extends `${infer K}.${
|
|
|
40
40
|
export type ScrollToErrorOptions<K> = {
|
|
41
41
|
field?: K;
|
|
42
42
|
index?: number;
|
|
43
|
-
|
|
43
|
+
scrollOpts?: ScrollIntoViewOptions;
|
|
44
44
|
};
|
|
45
45
|
export interface BaseFormApi<T extends object = any> {
|
|
46
46
|
/** get value of field */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="lodash" />
|
|
2
2
|
import BaseFoundation, { DefaultAdapter } from '../../base/foundation';
|
|
3
|
-
import { ResizeStartCallback, ResizeCallback } from "../types";
|
|
3
|
+
import { ResizeStartCallback, ResizeCallback, ResizeEventType } from "../types";
|
|
4
4
|
export interface ResizeHandlerAdapter<P = Record<string, any>, S = Record<string, any>> extends DefaultAdapter<P, S> {
|
|
5
5
|
registerEvents: () => void;
|
|
6
6
|
unregisterEvents: () => void;
|
|
@@ -29,8 +29,8 @@ export interface ResizeGroupAdapter<P = Record<string, any>, S = Record<string,
|
|
|
29
29
|
getItemChange: (index: number) => ResizeCallback;
|
|
30
30
|
getItemEnd: (index: number) => ResizeCallback;
|
|
31
31
|
getItemDefaultSize: (index: number) => string | number;
|
|
32
|
-
registerEvents: () => void;
|
|
33
|
-
unregisterEvents: () => void;
|
|
32
|
+
registerEvents: (type: ResizeEventType) => void;
|
|
33
|
+
unregisterEvents: (type: ResizeEventType) => void;
|
|
34
34
|
}
|
|
35
35
|
export declare class ResizeGroupFoundation<P = Record<string, any>, S = Record<string, any>> extends BaseFoundation<ResizeGroupAdapter<P, S>, P, S> {
|
|
36
36
|
constructor(adapter: ResizeGroupAdapter<P, S>);
|
|
@@ -40,13 +40,16 @@ export declare class ResizeGroupFoundation<P = Record<string, any>, S = Record<s
|
|
|
40
40
|
itemMinusMap: Map<number, number>;
|
|
41
41
|
totalMinus: number;
|
|
42
42
|
itemPercentMap: Map<number, number>;
|
|
43
|
+
type?: ResizeEventType;
|
|
43
44
|
init(): void;
|
|
44
45
|
get window(): Window | null;
|
|
45
46
|
registerEvents: () => void;
|
|
46
47
|
unregisterEvents: () => void;
|
|
47
|
-
onResizeStart: (handlerIndex: number, e: MouseEvent) => void;
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
onResizeStart: (handlerIndex: number, e: MouseEvent | Touch, type: ResizeEventType) => void;
|
|
49
|
+
onMouseMove: (e: MouseEvent) => void;
|
|
50
|
+
onTouchMove: (e: TouchEvent) => void;
|
|
51
|
+
onResizing: (e: MouseEvent | TouchEvent) => void;
|
|
52
|
+
onResizeEnd: (e: MouseEvent | TouchEvent) => void;
|
|
50
53
|
initSpace: () => void;
|
|
51
54
|
ensureConstraint: import("lodash").DebouncedFunc<() => void>;
|
|
52
55
|
destroy(): void;
|
|
@@ -24,12 +24,13 @@ export class ResizeGroupFoundation extends BaseFoundation {
|
|
|
24
24
|
constructor(adapter) {
|
|
25
25
|
super(Object.assign({}, adapter));
|
|
26
26
|
this.registerEvents = () => {
|
|
27
|
-
this._adapter.registerEvents();
|
|
27
|
+
this._adapter.registerEvents(this.type);
|
|
28
28
|
};
|
|
29
29
|
this.unregisterEvents = () => {
|
|
30
|
-
this._adapter.unregisterEvents();
|
|
30
|
+
this._adapter.unregisterEvents(this.type);
|
|
31
31
|
};
|
|
32
|
-
this.onResizeStart = (handlerIndex, e) => {
|
|
32
|
+
this.onResizeStart = (handlerIndex, e, type) => {
|
|
33
|
+
this.type = type;
|
|
33
34
|
let {
|
|
34
35
|
clientX,
|
|
35
36
|
clientY
|
|
@@ -71,6 +72,14 @@ export class ResizeGroupFoundation extends BaseFoundation {
|
|
|
71
72
|
nextStart(e, nextDir);
|
|
72
73
|
}
|
|
73
74
|
};
|
|
75
|
+
this.onMouseMove = e => {
|
|
76
|
+
this.onResizing(e);
|
|
77
|
+
};
|
|
78
|
+
this.onTouchMove = e => {
|
|
79
|
+
// prevent page move in mobile
|
|
80
|
+
e.preventDefault();
|
|
81
|
+
this.onResizing(e);
|
|
82
|
+
};
|
|
74
83
|
this.onResizing = e => {
|
|
75
84
|
const state = this.getStates();
|
|
76
85
|
if (!state.isResizing) {
|
|
@@ -91,7 +100,7 @@ export class ResizeGroupFoundation extends BaseFoundation {
|
|
|
91
100
|
let {
|
|
92
101
|
clientX,
|
|
93
102
|
clientY
|
|
94
|
-
} = e;
|
|
103
|
+
} = this.type === 'mouse' ? e : e.targetTouches[0];
|
|
95
104
|
const props = this.getProps();
|
|
96
105
|
const {
|
|
97
106
|
direction
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import BaseFoundation, { DefaultAdapter } from '../../base/foundation';
|
|
2
|
-
import { Size, NumberSize, Direction } from "../types";
|
|
2
|
+
import { Size, NumberSize, Direction, ResizeEventType } from "../types";
|
|
3
3
|
export interface ResizableHandlerAdapter<P = Record<string, any>, S = Record<string, any>> extends DefaultAdapter<P, S> {
|
|
4
4
|
registerEvent: () => void;
|
|
5
5
|
unregisterEvent: () => void;
|
|
@@ -8,17 +8,19 @@ export declare class ResizableHandlerFoundation<P = Record<string, any>, S = Rec
|
|
|
8
8
|
constructor(adapter: ResizableHandlerAdapter<P, S>);
|
|
9
9
|
init(): void;
|
|
10
10
|
onMouseDown: (e: MouseEvent) => void;
|
|
11
|
+
onTouchStart: (e: TouchEvent) => void;
|
|
11
12
|
destroy(): void;
|
|
12
13
|
}
|
|
13
14
|
export interface ResizableAdapter<P = Record<string, any>, S = Record<string, any>> extends DefaultAdapter<P, S> {
|
|
14
15
|
getResizable: () => HTMLDivElement | null;
|
|
15
|
-
registerEvent: () => void;
|
|
16
|
-
unregisterEvent: () => void;
|
|
16
|
+
registerEvent: (type: ResizeEventType) => void;
|
|
17
|
+
unregisterEvent: (type: ResizeEventType) => void;
|
|
17
18
|
}
|
|
18
19
|
export declare class ResizableFoundation<P = Record<string, any>, S = Record<string, any>> extends BaseFoundation<ResizableAdapter<P, S>, P, S> {
|
|
19
20
|
constructor(adapter: ResizableAdapter<P, S>);
|
|
20
21
|
init(): void;
|
|
21
22
|
flexDirection?: 'row' | 'column';
|
|
23
|
+
type?: ResizeEventType;
|
|
22
24
|
lockAspectRatio: number;
|
|
23
25
|
resizable: HTMLElement | null;
|
|
24
26
|
parentLeft: number;
|
|
@@ -63,8 +65,10 @@ export declare class ResizableFoundation<P = Record<string, any>, S = Record<str
|
|
|
63
65
|
newHeight: number;
|
|
64
66
|
};
|
|
65
67
|
setBoundary(): void;
|
|
66
|
-
onResizeStart: (e: MouseEvent, direction: Direction) => void;
|
|
68
|
+
onResizeStart: (e: MouseEvent, direction: Direction, type: ResizeEventType) => void;
|
|
67
69
|
onMouseMove: (event: MouseEvent) => void;
|
|
68
|
-
|
|
70
|
+
onTouchMove: (event: TouchEvent) => void;
|
|
71
|
+
changePosition: (event: Touch | MouseEvent) => void;
|
|
72
|
+
onMouseUp: (event: MouseEvent | TouchEvent) => void;
|
|
69
73
|
destroy(): void;
|
|
70
74
|
}
|
|
@@ -5,7 +5,11 @@ export class ResizableHandlerFoundation extends BaseFoundation {
|
|
|
5
5
|
constructor(adapter) {
|
|
6
6
|
super(Object.assign({}, adapter));
|
|
7
7
|
this.onMouseDown = e => {
|
|
8
|
-
this.getProp('onResizeStart')(e, this.getProp('direction'));
|
|
8
|
+
this.getProp('onResizeStart')(e, this.getProp('direction'), 'mouse');
|
|
9
|
+
};
|
|
10
|
+
this.onTouchStart = e => {
|
|
11
|
+
const touch = e.targetTouches[0];
|
|
12
|
+
this.getProp('onResizeStart')(touch, this.getProp('direction'), 'touch');
|
|
9
13
|
};
|
|
10
14
|
}
|
|
11
15
|
init() {
|
|
@@ -28,7 +32,8 @@ export class ResizableFoundation extends BaseFoundation {
|
|
|
28
32
|
this.boundaryBottom = 0;
|
|
29
33
|
this.targetLeft = 0;
|
|
30
34
|
this.targetTop = 0;
|
|
31
|
-
this.onResizeStart = (e, direction) => {
|
|
35
|
+
this.onResizeStart = (e, direction, type) => {
|
|
36
|
+
this.type = type;
|
|
32
37
|
this.resizable = this._adapter.getResizable();
|
|
33
38
|
if (!this.resizable || !this.window) {
|
|
34
39
|
return;
|
|
@@ -104,6 +109,14 @@ export class ResizableFoundation extends BaseFoundation {
|
|
|
104
109
|
this.setState(state);
|
|
105
110
|
};
|
|
106
111
|
this.onMouseMove = event => {
|
|
112
|
+
this.changePosition(event);
|
|
113
|
+
};
|
|
114
|
+
this.onTouchMove = event => {
|
|
115
|
+
event.preventDefault();
|
|
116
|
+
const touch = event.targetTouches[0];
|
|
117
|
+
this.changePosition(touch);
|
|
118
|
+
};
|
|
119
|
+
this.changePosition = event => {
|
|
107
120
|
var _a, _b;
|
|
108
121
|
const states = this.getStates();
|
|
109
122
|
const props = this.getProps();
|
|
@@ -402,10 +415,10 @@ export class ResizableFoundation extends BaseFoundation {
|
|
|
402
415
|
return size;
|
|
403
416
|
}
|
|
404
417
|
registerEvents() {
|
|
405
|
-
this._adapter.registerEvent();
|
|
418
|
+
this._adapter.registerEvent(this.type);
|
|
406
419
|
}
|
|
407
420
|
unregisterEvents() {
|
|
408
|
-
this._adapter.unregisterEvent();
|
|
421
|
+
this._adapter.unregisterEvent(this.type);
|
|
409
422
|
}
|
|
410
423
|
getCssPropertySize(newSize, property) {
|
|
411
424
|
var _a;
|
|
@@ -10,7 +10,8 @@ export interface HandleClassName {
|
|
|
10
10
|
bottomLeft?: string;
|
|
11
11
|
topLeft?: string;
|
|
12
12
|
}
|
|
13
|
-
export type
|
|
13
|
+
export type ResizeEventType = 'mouse' | 'touch';
|
|
14
|
+
export type HandlerCallback = (e: MouseEvent, direction: Direction, type?: ResizeEventType) => void;
|
|
14
15
|
export interface Enable {
|
|
15
16
|
top?: boolean;
|
|
16
17
|
right?: boolean;
|
|
@@ -37,5 +38,5 @@ export declare const DEFAULT_SIZE: {
|
|
|
37
38
|
width: string;
|
|
38
39
|
height: string;
|
|
39
40
|
};
|
|
40
|
-
export type ResizeCallback = (size: Size, event: MouseEvent, direction: Direction) => void;
|
|
41
|
-
export type ResizeStartCallback = (e: MouseEvent, dir: Direction) => void | boolean;
|
|
41
|
+
export type ResizeCallback = (size: Size, event: MouseEvent | TouchEvent, direction: Direction) => void;
|
|
42
|
+
export type ResizeStartCallback = (e: MouseEvent | Touch, dir: Direction) => void | boolean;
|
package/lib/es/select/select.css
CHANGED
|
@@ -306,6 +306,11 @@
|
|
|
306
306
|
}
|
|
307
307
|
.semi-select-prefix-text, .semi-select-suffix-text {
|
|
308
308
|
margin: 0px 12px;
|
|
309
|
+
color: var(--semi-color-text-2);
|
|
310
|
+
font-size: 14px;
|
|
311
|
+
line-height: 20px;
|
|
312
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
313
|
+
font-weight: 600;
|
|
309
314
|
}
|
|
310
315
|
.semi-select-prefix-icon, .semi-select-suffix-icon {
|
|
311
316
|
color: var(--semi-color-text-2);
|
|
@@ -309,6 +309,9 @@ $overflowList: #{$prefix}-overflow-list;
|
|
|
309
309
|
|
|
310
310
|
&-text {
|
|
311
311
|
margin: $spacing-select_prefix_suffix_text-marginY $spacing-select_prefix_suffix_text-marginX;
|
|
312
|
+
color: $color-select_prefix_suffix_text-default;
|
|
313
|
+
@include font-size-regular;
|
|
314
|
+
font-weight: $font-weight-bold;
|
|
312
315
|
}
|
|
313
316
|
|
|
314
317
|
&-icon {
|
|
@@ -59,6 +59,8 @@ $color-select_inset_label-text: var(--semi-color-text-2); // 分组选择器菜
|
|
|
59
59
|
$color-select_create_tips-text: var(--semi-color-text-2); // 分组选择器菜单项提示文本颜色
|
|
60
60
|
$color-select_group-text: var(--semi-color-text-2); // 分组选择器菜单项分组标题文本颜色
|
|
61
61
|
|
|
62
|
+
$color-select_prefix_suffix_text-default: var(--semi-color-text-2); // 选择器输入框前后缀文本颜色
|
|
63
|
+
|
|
62
64
|
// Width/Height
|
|
63
65
|
$width-select_icon_right: ($width-icon-medium + $spacing-tight * 2); // 选择器右侧图标大小
|
|
64
66
|
$height-select_large: $height-control-large; // 选择器输入框高度 - 大尺寸
|
|
@@ -264,6 +264,11 @@
|
|
|
264
264
|
align-items: center;
|
|
265
265
|
}
|
|
266
266
|
.semi-tree-select-prefix-text, .semi-tree-select-suffix-text {
|
|
267
|
+
color: var(--semi-color-text-2);
|
|
268
|
+
font-weight: 600;
|
|
269
|
+
font-size: 14px;
|
|
270
|
+
line-height: 20px;
|
|
271
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
267
272
|
margin: 0px 12px;
|
|
268
273
|
}
|
|
269
274
|
.semi-tree-select-prefix-icon, .semi-tree-select-suffix-icon {
|
|
@@ -337,6 +337,9 @@ $module: #{$prefix}-tree-select;
|
|
|
337
337
|
@include all-center;
|
|
338
338
|
|
|
339
339
|
&-text {
|
|
340
|
+
color: $color-treeSelect_prefix_suffix_text-default;
|
|
341
|
+
font-weight: $font-weight-bold;
|
|
342
|
+
@include font-size-regular;
|
|
340
343
|
margin: $spacing-treeSelect_prefix_text-marginY $spacing-treeSelect_prefix_text-marginX;
|
|
341
344
|
}
|
|
342
345
|
|
|
@@ -85,6 +85,7 @@ $color-treeSelect_inputTrigger-border-default: none; // 带搜索的树选择器
|
|
|
85
85
|
$color-treeSelect_inputTrigger-bg-default: transparent; // 带搜索的树选择器触发器背景颜色
|
|
86
86
|
$color-treeSelect_insertLabel-text-default: var(--semi-color-text-2); // 带搜索的树前缀标签文本颜色
|
|
87
87
|
$font-treeSelect_insertLabel-fontWeight: 600; // 带搜索的树前缀标签文本字重
|
|
88
|
+
$color-treeSelect_prefix_suffix_text-default: var(--semi-color-text-2); // 带搜索的树选择器前后缀文本颜色
|
|
88
89
|
|
|
89
90
|
$width-treeSelect_arrow: 32px; // 树选择器展开箭头宽度
|
|
90
91
|
$width-treeSelect_option: 230px; // 树选择器菜单项宽度
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@douyinfe/semi-foundation",
|
|
3
|
-
"version": "2.75.0
|
|
3
|
+
"version": "2.75.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build:lib": "node ./scripts/compileLib.js",
|
|
7
7
|
"prepublishOnly": "npm run build:lib"
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
|
-
"@douyinfe/semi-animation": "2.75.0
|
|
11
|
-
"@douyinfe/semi-json-viewer-core": "2.75.0
|
|
10
|
+
"@douyinfe/semi-animation": "2.75.0",
|
|
11
|
+
"@douyinfe/semi-json-viewer-core": "2.75.0",
|
|
12
12
|
"@mdx-js/mdx": "^3.0.1",
|
|
13
13
|
"async-validator": "^3.5.0",
|
|
14
14
|
"classnames": "^2.2.6",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"*.scss",
|
|
30
30
|
"*.css"
|
|
31
31
|
],
|
|
32
|
-
"gitHead": "
|
|
32
|
+
"gitHead": "cd269c0f1d3a0af5a564109f22e3dc51dfd7691a",
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@babel/plugin-transform-runtime": "^7.15.8",
|
|
35
35
|
"@babel/preset-env": "^7.15.8",
|
package/resizable/group/index.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getItemDirection, getPixelSize } from "../utils";
|
|
2
2
|
import BaseFoundation, { DefaultAdapter } from '../../base/foundation';
|
|
3
|
-
import { ResizeStartCallback, ResizeCallback } from "../types";
|
|
3
|
+
import { ResizeStartCallback, ResizeCallback, ResizeEventType } from "../types";
|
|
4
4
|
import { adjustNewSize, judgeConstraint, getOffset } from "../utils";
|
|
5
5
|
import { debounce } from "lodash";
|
|
6
6
|
export interface ResizeHandlerAdapter<P = Record<string, any>, S = Record<string, any>> extends DefaultAdapter<P, S> {
|
|
@@ -49,8 +49,8 @@ export interface ResizeGroupAdapter<P = Record<string, any>, S = Record<string,
|
|
|
49
49
|
getItemChange: (index: number) => ResizeCallback;
|
|
50
50
|
getItemEnd: (index: number) => ResizeCallback;
|
|
51
51
|
getItemDefaultSize: (index: number) => string | number;
|
|
52
|
-
registerEvents: () => void;
|
|
53
|
-
unregisterEvents: () => void
|
|
52
|
+
registerEvents: (type: ResizeEventType) => void;
|
|
53
|
+
unregisterEvents: (type: ResizeEventType) => void
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
export class ResizeGroupFoundation<P = Record<string, any>, S = Record<string, any>> extends BaseFoundation<ResizeGroupAdapter<P, S>, P, S> {
|
|
@@ -72,6 +72,7 @@ export class ResizeGroupFoundation<P = Record<string, any>, S = Record<string, a
|
|
|
72
72
|
itemMinusMap: Map<number, number>; // 这个是为了给handler留出空间,方便维护每一个item的size为cal(percent% - minus)
|
|
73
73
|
totalMinus: number;
|
|
74
74
|
itemPercentMap: Map<number, number>; // 内部维护一个百分比数组,消除浮点计算误差
|
|
75
|
+
type?: ResizeEventType;
|
|
75
76
|
|
|
76
77
|
|
|
77
78
|
init(): void {
|
|
@@ -86,14 +87,15 @@ export class ResizeGroupFoundation<P = Record<string, any>, S = Record<string, a
|
|
|
86
87
|
|
|
87
88
|
|
|
88
89
|
registerEvents = () => {
|
|
89
|
-
this._adapter.registerEvents();
|
|
90
|
+
this._adapter.registerEvents(this.type);
|
|
90
91
|
}
|
|
91
92
|
|
|
92
93
|
unregisterEvents = () => {
|
|
93
|
-
this._adapter.unregisterEvents();
|
|
94
|
+
this._adapter.unregisterEvents(this.type);
|
|
94
95
|
}
|
|
95
96
|
|
|
96
|
-
onResizeStart = (handlerIndex: number, e: MouseEvent) => { // handler ref
|
|
97
|
+
onResizeStart = (handlerIndex: number, e: MouseEvent | Touch, type: ResizeEventType) => { // handler ref
|
|
98
|
+
this.type = type;
|
|
97
99
|
let { clientX, clientY } = e;
|
|
98
100
|
let lastItem = this._adapter.getItem(handlerIndex), nextItem = this._adapter.getItem(handlerIndex + 1);
|
|
99
101
|
let lastOffset: number, nextOffset: number;
|
|
@@ -135,15 +137,25 @@ export class ResizeGroupFoundation<P = Record<string, any>, S = Record<string, a
|
|
|
135
137
|
}
|
|
136
138
|
}
|
|
137
139
|
|
|
140
|
+
onMouseMove = (e: MouseEvent) => {
|
|
141
|
+
this.onResizing(e);
|
|
142
|
+
}
|
|
138
143
|
|
|
139
|
-
|
|
144
|
+
onTouchMove = (e: TouchEvent) => {
|
|
145
|
+
// prevent page move in mobile
|
|
146
|
+
e.preventDefault();
|
|
147
|
+
this.onResizing(e);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
onResizing = (e: MouseEvent | TouchEvent) => {
|
|
140
152
|
const state = this.getStates();
|
|
141
153
|
if (!state.isResizing) {
|
|
142
154
|
return;
|
|
143
155
|
}
|
|
144
156
|
const { curHandler, originalPosition } = state;
|
|
145
157
|
let { x: initX, y: initY, lastItemSize, nextItemSize, lastOffset, nextOffset } = originalPosition;
|
|
146
|
-
let { clientX, clientY } = e;
|
|
158
|
+
let { clientX, clientY } = this.type === 'mouse' ? e : (e as any).targetTouches[0];
|
|
147
159
|
|
|
148
160
|
const props = this.getProps();
|
|
149
161
|
const { direction } = props;
|
|
@@ -193,7 +205,7 @@ export class ResizeGroupFoundation<P = Record<string, any>, S = Record<string, a
|
|
|
193
205
|
}
|
|
194
206
|
}
|
|
195
207
|
|
|
196
|
-
onResizeEnd = (e: MouseEvent) => {
|
|
208
|
+
onResizeEnd = (e: MouseEvent | TouchEvent) => {
|
|
197
209
|
const { curHandler } = this.getStates();
|
|
198
210
|
let lastItem = this._adapter.getItem(curHandler), nextItem = this._adapter.getItem(curHandler + 1);
|
|
199
211
|
let lastFunc = this._adapter.getItemEnd(curHandler),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import BaseFoundation, { DefaultAdapter } from '../../base/foundation';
|
|
2
|
-
import { DEFAULT_SIZE, Size, NumberSize, Direction, NewSize } from "../types";
|
|
2
|
+
import { DEFAULT_SIZE, Size, NumberSize, Direction, NewSize, ResizeEventType } from "../types";
|
|
3
3
|
import { getStringSize, getNumberSize, has, calculateNewMax, findNextSnap, snap, clamp } from "../utils";
|
|
4
4
|
export interface ResizableHandlerAdapter<P = Record<string, any>, S = Record<string, any>> extends DefaultAdapter<P, S> {
|
|
5
5
|
registerEvent: () => void;
|
|
@@ -16,9 +16,14 @@ export class ResizableHandlerFoundation<P = Record<string, any>, S = Record<stri
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
onMouseDown = (e: MouseEvent) => {
|
|
19
|
-
this.getProp('onResizeStart')(e, this.getProp('direction'));
|
|
19
|
+
this.getProp('onResizeStart')(e, this.getProp('direction'), 'mouse');
|
|
20
20
|
};
|
|
21
21
|
|
|
22
|
+
onTouchStart = (e: TouchEvent) => {
|
|
23
|
+
const touch = e.targetTouches[0];
|
|
24
|
+
this.getProp('onResizeStart')(touch, this.getProp('direction'), 'touch');
|
|
25
|
+
}
|
|
26
|
+
|
|
22
27
|
destroy(): void {
|
|
23
28
|
this._adapter.unregisterEvent();
|
|
24
29
|
}
|
|
@@ -26,8 +31,8 @@ export class ResizableHandlerFoundation<P = Record<string, any>, S = Record<stri
|
|
|
26
31
|
|
|
27
32
|
export interface ResizableAdapter<P = Record<string, any>, S = Record<string, any>> extends DefaultAdapter<P, S> {
|
|
28
33
|
getResizable: () => HTMLDivElement | null;
|
|
29
|
-
registerEvent: () => void;
|
|
30
|
-
unregisterEvent: () => void
|
|
34
|
+
registerEvent: (type: ResizeEventType) => void;
|
|
35
|
+
unregisterEvent: (type: ResizeEventType) => void
|
|
31
36
|
}
|
|
32
37
|
|
|
33
38
|
export class ResizableFoundation<P = Record<string, any>, S = Record<string, any>> extends BaseFoundation<ResizableAdapter<P, S>, P, S> {
|
|
@@ -53,6 +58,7 @@ export class ResizableFoundation<P = Record<string, any>, S = Record<string, any
|
|
|
53
58
|
}
|
|
54
59
|
|
|
55
60
|
flexDirection?: 'row' | 'column';
|
|
61
|
+
type?: ResizeEventType;
|
|
56
62
|
|
|
57
63
|
lockAspectRatio = 1;
|
|
58
64
|
resizable: HTMLElement | null = null;
|
|
@@ -202,11 +208,11 @@ export class ResizableFoundation<P = Record<string, any>, S = Record<string, any
|
|
|
202
208
|
}
|
|
203
209
|
|
|
204
210
|
registerEvents() {
|
|
205
|
-
this._adapter.registerEvent();
|
|
211
|
+
this._adapter.registerEvent(this.type);
|
|
206
212
|
}
|
|
207
213
|
|
|
208
214
|
unregisterEvents() {
|
|
209
|
-
this._adapter.unregisterEvent();
|
|
215
|
+
this._adapter.unregisterEvent(this.type);
|
|
210
216
|
}
|
|
211
217
|
|
|
212
218
|
getCssPropertySize(newSize: number | string, property: 'width' | 'height'): number | string {
|
|
@@ -380,7 +386,8 @@ export class ResizableFoundation<P = Record<string, any>, S = Record<string, any
|
|
|
380
386
|
}
|
|
381
387
|
|
|
382
388
|
|
|
383
|
-
onResizeStart = (e: MouseEvent, direction: Direction) => {
|
|
389
|
+
onResizeStart = (e: MouseEvent, direction: Direction, type: ResizeEventType) => {
|
|
390
|
+
this.type = type;
|
|
384
391
|
this.resizable = this._adapter.getResizable();
|
|
385
392
|
if (!this.resizable || !this.window) {
|
|
386
393
|
return;
|
|
@@ -456,6 +463,16 @@ export class ResizableFoundation<P = Record<string, any>, S = Record<string, any
|
|
|
456
463
|
|
|
457
464
|
|
|
458
465
|
onMouseMove = (event: MouseEvent) => {
|
|
466
|
+
this.changePosition(event);
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
onTouchMove = (event: TouchEvent) => {
|
|
470
|
+
event.preventDefault();
|
|
471
|
+
const touch = event.targetTouches[0];
|
|
472
|
+
this.changePosition(touch);
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
changePosition = (event: Touch | MouseEvent) => {
|
|
459
476
|
const states = this.getStates();
|
|
460
477
|
const props = this.getProps();
|
|
461
478
|
|
|
@@ -583,7 +600,7 @@ export class ResizableFoundation<P = Record<string, any>, S = Record<string, any
|
|
|
583
600
|
}
|
|
584
601
|
|
|
585
602
|
|
|
586
|
-
onMouseUp = (event: MouseEvent) => {
|
|
603
|
+
onMouseUp = (event: MouseEvent | TouchEvent) => {
|
|
587
604
|
const { isResizing, direction, original } = this.getStates();
|
|
588
605
|
|
|
589
606
|
if (!isResizing || !this.resizable) {
|
package/resizable/types.ts
CHANGED
|
@@ -14,9 +14,12 @@ export interface HandleClassName {
|
|
|
14
14
|
topLeft?: string
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
+
export type ResizeEventType = 'mouse' | 'touch';
|
|
18
|
+
|
|
17
19
|
export type HandlerCallback = (
|
|
18
20
|
e: MouseEvent,
|
|
19
|
-
direction: Direction
|
|
21
|
+
direction: Direction,
|
|
22
|
+
type?: ResizeEventType,
|
|
20
23
|
) => void;
|
|
21
24
|
|
|
22
25
|
export interface Enable {
|
|
@@ -51,12 +54,12 @@ export const DEFAULT_SIZE = {
|
|
|
51
54
|
|
|
52
55
|
export type ResizeCallback = (
|
|
53
56
|
size: Size,
|
|
54
|
-
event: MouseEvent,
|
|
57
|
+
event: MouseEvent | TouchEvent,
|
|
55
58
|
direction: Direction,
|
|
56
59
|
) => void;
|
|
57
60
|
|
|
58
61
|
export type ResizeStartCallback = (
|
|
59
|
-
e: MouseEvent,
|
|
62
|
+
e: MouseEvent | Touch,
|
|
60
63
|
dir: Direction,
|
|
61
64
|
) => void | boolean;
|
|
62
65
|
|
package/select/select.scss
CHANGED
|
@@ -309,6 +309,9 @@ $overflowList: #{$prefix}-overflow-list;
|
|
|
309
309
|
|
|
310
310
|
&-text {
|
|
311
311
|
margin: $spacing-select_prefix_suffix_text-marginY $spacing-select_prefix_suffix_text-marginX;
|
|
312
|
+
color: $color-select_prefix_suffix_text-default;
|
|
313
|
+
@include font-size-regular;
|
|
314
|
+
font-weight: $font-weight-bold;
|
|
312
315
|
}
|
|
313
316
|
|
|
314
317
|
&-icon {
|
package/select/variables.scss
CHANGED
|
@@ -59,6 +59,8 @@ $color-select_inset_label-text: var(--semi-color-text-2); // 分组选择器菜
|
|
|
59
59
|
$color-select_create_tips-text: var(--semi-color-text-2); // 分组选择器菜单项提示文本颜色
|
|
60
60
|
$color-select_group-text: var(--semi-color-text-2); // 分组选择器菜单项分组标题文本颜色
|
|
61
61
|
|
|
62
|
+
$color-select_prefix_suffix_text-default: var(--semi-color-text-2); // 选择器输入框前后缀文本颜色
|
|
63
|
+
|
|
62
64
|
// Width/Height
|
|
63
65
|
$width-select_icon_right: ($width-icon-medium + $spacing-tight * 2); // 选择器右侧图标大小
|
|
64
66
|
$height-select_large: $height-control-large; // 选择器输入框高度 - 大尺寸
|
|
@@ -337,6 +337,9 @@ $module: #{$prefix}-tree-select;
|
|
|
337
337
|
@include all-center;
|
|
338
338
|
|
|
339
339
|
&-text {
|
|
340
|
+
color: $color-treeSelect_prefix_suffix_text-default;
|
|
341
|
+
font-weight: $font-weight-bold;
|
|
342
|
+
@include font-size-regular;
|
|
340
343
|
margin: $spacing-treeSelect_prefix_text-marginY $spacing-treeSelect_prefix_text-marginX;
|
|
341
344
|
}
|
|
342
345
|
|
|
@@ -85,6 +85,7 @@ $color-treeSelect_inputTrigger-border-default: none; // 带搜索的树选择器
|
|
|
85
85
|
$color-treeSelect_inputTrigger-bg-default: transparent; // 带搜索的树选择器触发器背景颜色
|
|
86
86
|
$color-treeSelect_insertLabel-text-default: var(--semi-color-text-2); // 带搜索的树前缀标签文本颜色
|
|
87
87
|
$font-treeSelect_insertLabel-fontWeight: 600; // 带搜索的树前缀标签文本字重
|
|
88
|
+
$color-treeSelect_prefix_suffix_text-default: var(--semi-color-text-2); // 带搜索的树选择器前后缀文本颜色
|
|
88
89
|
|
|
89
90
|
$width-treeSelect_arrow: 32px; // 树选择器展开箭头宽度
|
|
90
91
|
$width-treeSelect_option: 230px; // 树选择器菜单项宽度
|