yy-vue-easytable 2.27.2
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/LICENSE +22 -0
- package/README.md +187 -0
- package/libs/font/demo.css +539 -0
- package/libs/font/demo_index.html +400 -0
- package/libs/font/iconfont.css +57 -0
- package/libs/font/iconfont.eot +0 -0
- package/libs/font/iconfont.js +1 -0
- package/libs/font/iconfont.json +79 -0
- package/libs/font/iconfont.svg +56 -0
- package/libs/font/iconfont.ttf +0 -0
- package/libs/font/iconfont.woff +0 -0
- package/libs/font/iconfont.woff2 +0 -0
- package/libs/locale/lang/af-ZA.js +48 -0
- package/libs/locale/lang/en-US.js +48 -0
- package/libs/locale/lang/fr-FR.js +48 -0
- package/libs/locale/lang/ko-KR.js +48 -0
- package/libs/locale/lang/pt-BR.js +48 -0
- package/libs/locale/lang/ru-RU.js +48 -0
- package/libs/locale/lang/zh-CN.js +48 -0
- package/libs/locale/lang/zh-TW.js +48 -0
- package/libs/locale/lang/zu-ZA.js +48 -0
- package/libs/main.js +1 -0
- package/libs/theme-dark/base.css +1 -0
- package/libs/theme-dark/index.css +1253 -0
- package/libs/theme-dark/var.css +7 -0
- package/libs/theme-dark/ve-checkbox.css +150 -0
- package/libs/theme-dark/ve-contextmenu.css +71 -0
- package/libs/theme-dark/ve-dropdown.css +177 -0
- package/libs/theme-dark/ve-icon.css +10 -0
- package/libs/theme-dark/ve-loading.css +218 -0
- package/libs/theme-dark/ve-pagination.css +136 -0
- package/libs/theme-dark/ve-radio.css +111 -0
- package/libs/theme-dark/ve-select.css +50 -0
- package/libs/theme-dark/ve-table.css +385 -0
- package/libs/theme-default/base.css +1 -0
- package/libs/theme-default/index.css +1253 -0
- package/libs/theme-default/var.css +7 -0
- package/libs/theme-default/ve-checkbox.css +150 -0
- package/libs/theme-default/ve-contextmenu.css +71 -0
- package/libs/theme-default/ve-dropdown.css +177 -0
- package/libs/theme-default/ve-icon.css +10 -0
- package/libs/theme-default/ve-loading.css +218 -0
- package/libs/theme-default/ve-pagination.css +136 -0
- package/libs/theme-default/ve-radio.css +111 -0
- package/libs/theme-default/ve-select.css +50 -0
- package/libs/theme-default/ve-table.css +385 -0
- package/libs/umd/index.js +9 -0
- package/libs/ve-checkbox-group.js +1 -0
- package/libs/ve-checkbox.js +1 -0
- package/libs/ve-contextmenu.js +1 -0
- package/libs/ve-dropdown.js +1 -0
- package/libs/ve-icon.js +1 -0
- package/libs/ve-loading.js +1 -0
- package/libs/ve-locale.js +1 -0
- package/libs/ve-pagination.js +1 -0
- package/libs/ve-radio.js +1 -0
- package/libs/ve-select.js +1 -0
- package/libs/ve-table.js +1 -0
- package/package.json +142 -0
- package/packages/font/demo.css +539 -0
- package/packages/font/demo_index.html +400 -0
- package/packages/font/iconfont.css +57 -0
- package/packages/font/iconfont.eot +0 -0
- package/packages/font/iconfont.js +1 -0
- package/packages/font/iconfont.json +79 -0
- package/packages/font/iconfont.svg +56 -0
- package/packages/font/iconfont.ttf +0 -0
- package/packages/font/iconfont.woff +0 -0
- package/packages/font/iconfont.woff2 +0 -0
- package/packages/index.js +75 -0
- package/packages/src/comps/resize-observer/index.js +2 -0
- package/packages/src/comps/resize-observer/src/index.jsx +38 -0
- package/packages/src/directives/clickoutside.js +31 -0
- package/packages/src/directives/events-outside.js +79 -0
- package/packages/src/directives/focus.js +28 -0
- package/packages/src/locale/index.js +27 -0
- package/packages/src/locale/lang/af-ZA.js +29 -0
- package/packages/src/locale/lang/en-US.js +30 -0
- package/packages/src/locale/lang/fr-FR.js +29 -0
- package/packages/src/locale/lang/ko-KR.js +29 -0
- package/packages/src/locale/lang/pt-BR.js +29 -0
- package/packages/src/locale/lang/ru-RU.js +29 -0
- package/packages/src/locale/lang/zh-CN.js +30 -0
- package/packages/src/locale/lang/zh-TW.js +29 -0
- package/packages/src/locale/lang/zu-ZA.js +29 -0
- package/packages/src/mixins/emitter.js +39 -0
- package/packages/src/utils/animation-frame.js +39 -0
- package/packages/src/utils/auto-resize.js +179 -0
- package/packages/src/utils/constant.js +42 -0
- package/packages/src/utils/dom.js +239 -0
- package/packages/src/utils/event-key-codes.js +53 -0
- package/packages/src/utils/hooks-manager.js +76 -0
- package/packages/src/utils/index.js +161 -0
- package/packages/src/utils/mouse-event.js +24 -0
- package/packages/src/utils/random.js +6 -0
- package/packages/src/utils/request-animation-timeout.js +36 -0
- package/packages/src/utils/resize-event.js +40 -0
- package/packages/src/utils/scroll-bar.js +27 -0
- package/packages/style/ve-checkbox.less +179 -0
- package/packages/style/ve-contextmenu.less +76 -0
- package/packages/style/ve-dropdown.less +204 -0
- package/packages/style/ve-icon.less +3 -0
- package/packages/style/ve-loading.less +242 -0
- package/packages/style/ve-pagination.less +153 -0
- package/packages/style/ve-radio.less +126 -0
- package/packages/style/ve-select.less +48 -0
- package/packages/style/ve-table.less +539 -0
- package/packages/theme-dark/base.less +1 -0
- package/packages/theme-dark/index.less +12 -0
- package/packages/theme-dark/var.less +111 -0
- package/packages/theme-dark/ve-checkbox.less +2 -0
- package/packages/theme-dark/ve-contextmenu.less +2 -0
- package/packages/theme-dark/ve-dropdown.less +2 -0
- package/packages/theme-dark/ve-icon.less +2 -0
- package/packages/theme-dark/ve-loading.less +2 -0
- package/packages/theme-dark/ve-pagination.less +2 -0
- package/packages/theme-dark/ve-radio.less +2 -0
- package/packages/theme-dark/ve-select.less +2 -0
- package/packages/theme-dark/ve-table.less +2 -0
- package/packages/theme-default/base.less +1 -0
- package/packages/theme-default/index.less +12 -0
- package/packages/theme-default/var.less +111 -0
- package/packages/theme-default/ve-checkbox.less +2 -0
- package/packages/theme-default/ve-contextmenu.less +2 -0
- package/packages/theme-default/ve-dropdown.less +2 -0
- package/packages/theme-default/ve-icon.less +2 -0
- package/packages/theme-default/ve-loading.less +2 -0
- package/packages/theme-default/ve-pagination.less +2 -0
- package/packages/theme-default/ve-radio.less +2 -0
- package/packages/theme-default/ve-select.less +2 -0
- package/packages/theme-default/ve-table.less +2 -0
- package/packages/ve-checkbox/index.js +7 -0
- package/packages/ve-checkbox/src/index.jsx +175 -0
- package/packages/ve-checkbox/src/util/constant.js +14 -0
- package/packages/ve-checkbox/src/util/index.js +10 -0
- package/packages/ve-checkbox-group/index.js +7 -0
- package/packages/ve-checkbox-group/src/index.jsx +53 -0
- package/packages/ve-checkbox-group/src/util/constant.js +14 -0
- package/packages/ve-checkbox-group/src/util/index.js +10 -0
- package/packages/ve-contextmenu/index.js +7 -0
- package/packages/ve-contextmenu/src/index.jsx +731 -0
- package/packages/ve-contextmenu/src/util/constant.js +29 -0
- package/packages/ve-contextmenu/src/util/index.js +10 -0
- package/packages/ve-dropdown/index.js +7 -0
- package/packages/ve-dropdown/src/index.jsx +720 -0
- package/packages/ve-dropdown/src/util/constant.js +15 -0
- package/packages/ve-dropdown/src/util/index.js +10 -0
- package/packages/ve-icon/index.js +7 -0
- package/packages/ve-icon/src/index.jsx +52 -0
- package/packages/ve-icon/src/util/constant.js +10 -0
- package/packages/ve-icon/src/util/index.js +10 -0
- package/packages/ve-loading/index.js +8 -0
- package/packages/ve-loading/src/bounce.jsx +50 -0
- package/packages/ve-loading/src/flow.jsx +51 -0
- package/packages/ve-loading/src/grid.jsx +57 -0
- package/packages/ve-loading/src/index.js +106 -0
- package/packages/ve-loading/src/loading.jsx +63 -0
- package/packages/ve-loading/src/plane.jsx +38 -0
- package/packages/ve-loading/src/pulse.jsx +38 -0
- package/packages/ve-loading/src/util/constant.js +31 -0
- package/packages/ve-loading/src/util/index.js +10 -0
- package/packages/ve-loading/src/wave.jsx +53 -0
- package/packages/ve-locale/index.js +28 -0
- package/packages/ve-pagination/index.js +7 -0
- package/packages/ve-pagination/src/index.jsx +304 -0
- package/packages/ve-pagination/src/pager.jsx +166 -0
- package/packages/ve-pagination/src/util/constant.js +16 -0
- package/packages/ve-pagination/src/util/index.js +10 -0
- package/packages/ve-radio/index.js +7 -0
- package/packages/ve-radio/src/index.jsx +121 -0
- package/packages/ve-radio/src/util/constant.js +13 -0
- package/packages/ve-radio/src/util/index.js +10 -0
- package/packages/ve-select/index.js +7 -0
- package/packages/ve-select/src/index.jsx +193 -0
- package/packages/ve-select/src/util/constant.js +13 -0
- package/packages/ve-select/src/util/index.js +10 -0
- package/packages/ve-table/index.js +7 -0
- package/packages/ve-table/src/body/body-checkbox-content.jsx +126 -0
- package/packages/ve-table/src/body/body-radio-content.jsx +113 -0
- package/packages/ve-table/src/body/body-td.jsx +671 -0
- package/packages/ve-table/src/body/body-tr-scrolling.jsx +38 -0
- package/packages/ve-table/src/body/body-tr.jsx +383 -0
- package/packages/ve-table/src/body/expand-tr-icon.jsx +80 -0
- package/packages/ve-table/src/body/expand-tr.jsx +147 -0
- package/packages/ve-table/src/body/index.jsx +943 -0
- package/packages/ve-table/src/colgroup/index.jsx +48 -0
- package/packages/ve-table/src/column-resizer/index.jsx +318 -0
- package/packages/ve-table/src/editor/constant.js +5 -0
- package/packages/ve-table/src/editor/index.jsx +533 -0
- package/packages/ve-table/src/footer/footer-td.jsx +396 -0
- package/packages/ve-table/src/footer/footer-tr.jsx +249 -0
- package/packages/ve-table/src/footer/index.jsx +108 -0
- package/packages/ve-table/src/header/header-checkbox-content.jsx +69 -0
- package/packages/ve-table/src/header/header-filter-content.jsx +100 -0
- package/packages/ve-table/src/header/header-filter-custom-content.jsx +110 -0
- package/packages/ve-table/src/header/header-th.jsx +664 -0
- package/packages/ve-table/src/header/header-tr.jsx +255 -0
- package/packages/ve-table/src/header/index.jsx +195 -0
- package/packages/ve-table/src/index.jsx +4196 -0
- package/packages/ve-table/src/selection/constant.js +5 -0
- package/packages/ve-table/src/selection/index.jsx +1643 -0
- package/packages/ve-table/src/util/clipboard.js +428 -0
- package/packages/ve-table/src/util/constant.js +269 -0
- package/packages/ve-table/src/util/index.js +1585 -0
- package/packages/ve-table/src/util/store.js +14 -0
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { createI18N } from "../locale/index";
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* @createLocale
|
|
5
|
+
* @desc create namespace by comp name
|
|
6
|
+
* @param {string} compName
|
|
7
|
+
* @return {function}
|
|
8
|
+
*/
|
|
9
|
+
export function createLocale(compName) {
|
|
10
|
+
return createI18N(compName);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/*
|
|
14
|
+
* @isEmptyArray
|
|
15
|
+
* @desc is empty array
|
|
16
|
+
* @param {array} arr
|
|
17
|
+
*/
|
|
18
|
+
export function isEmptyArray(arr) {
|
|
19
|
+
return !(Array.isArray(arr) && arr.length > 0);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/*
|
|
23
|
+
* @isEmptyValue
|
|
24
|
+
* @desc is empty value
|
|
25
|
+
* @param {array} arr
|
|
26
|
+
*/
|
|
27
|
+
export function isEmptyValue(value) {
|
|
28
|
+
return !(value !== "" && value !== undefined && value !== null);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/*
|
|
32
|
+
* @isDefined
|
|
33
|
+
* @desc is defined
|
|
34
|
+
* @param {any} val
|
|
35
|
+
*/
|
|
36
|
+
export function isDefined(val) {
|
|
37
|
+
return val !== undefined && val !== null;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/*
|
|
41
|
+
* @isObject
|
|
42
|
+
* @desc is object
|
|
43
|
+
* @param {any} val
|
|
44
|
+
*/
|
|
45
|
+
export function isObject(val) {
|
|
46
|
+
return val !== null && typeof val === "object";
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/*
|
|
50
|
+
* @isFunction
|
|
51
|
+
* @desc is function
|
|
52
|
+
* @param {any} val
|
|
53
|
+
*/
|
|
54
|
+
export function isFunction(val) {
|
|
55
|
+
return typeof val === "function";
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/*
|
|
59
|
+
* @isBoolean
|
|
60
|
+
* @desc is boolean
|
|
61
|
+
* @param {any} val
|
|
62
|
+
*/
|
|
63
|
+
export function isBoolean(val) {
|
|
64
|
+
return typeof val === "boolean";
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/*
|
|
68
|
+
* @isNumber
|
|
69
|
+
* @desc is number
|
|
70
|
+
* @param {any} val
|
|
71
|
+
*/
|
|
72
|
+
export function isNumber(val) {
|
|
73
|
+
return typeof val === "number";
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/*
|
|
77
|
+
* @isTrue
|
|
78
|
+
* @desc is equal true
|
|
79
|
+
* @param {any} val
|
|
80
|
+
*/
|
|
81
|
+
export function isTrue(val) {
|
|
82
|
+
return isBoolean(val) && val;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/*
|
|
86
|
+
* @isFalse
|
|
87
|
+
* @desc is equal false
|
|
88
|
+
* @param {any} val
|
|
89
|
+
*/
|
|
90
|
+
export function isFalse(val) {
|
|
91
|
+
return isBoolean(val) && !val;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/*
|
|
95
|
+
* @getValByUnit
|
|
96
|
+
* @desc get value by unit
|
|
97
|
+
* @param {number|string} width - 宽度
|
|
98
|
+
*/
|
|
99
|
+
export function getValByUnit(width) {
|
|
100
|
+
return typeof width === "number" ? width + "px" : width;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/*
|
|
104
|
+
* @getParentCompByName
|
|
105
|
+
* @desc get parent comp by name
|
|
106
|
+
* @param {object} context
|
|
107
|
+
* @param {string} name - parent comp name
|
|
108
|
+
*/
|
|
109
|
+
export function getParentCompByName(context, name) {
|
|
110
|
+
let parent = context.$parent;
|
|
111
|
+
|
|
112
|
+
while (parent) {
|
|
113
|
+
if (parent.$options.name !== name) {
|
|
114
|
+
parent = parent.$parent;
|
|
115
|
+
} else {
|
|
116
|
+
return parent;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/*
|
|
124
|
+
* @getChildCompsByName
|
|
125
|
+
* @desc get child comps by name
|
|
126
|
+
* @param {object} context
|
|
127
|
+
* @param {string} name - child comp name
|
|
128
|
+
*/
|
|
129
|
+
export function getChildCompsByName(context, name) {
|
|
130
|
+
let result = [];
|
|
131
|
+
|
|
132
|
+
let childrens = context.$children;
|
|
133
|
+
|
|
134
|
+
while (childrens && childrens.length > 0) {
|
|
135
|
+
childrens.forEach((child) => {
|
|
136
|
+
childrens = child.$children ? child.$children : null;
|
|
137
|
+
|
|
138
|
+
if (child.$options.name === name) {
|
|
139
|
+
result.push(child);
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
return result;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/*
|
|
148
|
+
* @scrollTo
|
|
149
|
+
* @desc element scrollTo https://developer.mozilla.org/zh-CN/docs/Web/API/Element/scrollTo
|
|
150
|
+
* @param {element} el - element
|
|
151
|
+
* @param {object} option - scroll option
|
|
152
|
+
*/
|
|
153
|
+
export function scrollTo(el, option) {
|
|
154
|
+
if (isFunction(el.scrollTo)) {
|
|
155
|
+
el.scrollTo(option);
|
|
156
|
+
} else {
|
|
157
|
+
const { top, left } = option;
|
|
158
|
+
el.scrollTop = top;
|
|
159
|
+
el.scrollLeft = left;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { MOUSE_EVENT_CLICK_TYPE } from "./constant";
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
get mouse event key type by mousedown\mouseup\... event
|
|
5
|
+
*/
|
|
6
|
+
export function getMouseEventClickType(event) {
|
|
7
|
+
let result = null;
|
|
8
|
+
|
|
9
|
+
if (!event) {
|
|
10
|
+
return result;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const button =
|
|
14
|
+
typeof event.which != "undefined" ? event.which : event.button;
|
|
15
|
+
if (button == 1) {
|
|
16
|
+
result = MOUSE_EVENT_CLICK_TYPE.LEFT_MOUSE;
|
|
17
|
+
} else if (button == 2) {
|
|
18
|
+
result = MOUSE_EVENT_CLICK_TYPE.MIDDLE_MOUSE;
|
|
19
|
+
} else if (button == 3) {
|
|
20
|
+
result = MOUSE_EVENT_CLICK_TYPE.RIGHT_MOUSE;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return result;
|
|
24
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/*
|
|
2
|
+
fork from:
|
|
3
|
+
https://github.com/bvaughn/react-virtualized/blob/HEAD/source/utils/requestAnimationTimeout.js
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { caf, raf } from "./animation-frame";
|
|
7
|
+
|
|
8
|
+
export const cancelAnimationTimeout = (frame) => caf(frame.id);
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Recursively calls requestAnimationFrame until a specified delay has been met or exceeded.
|
|
12
|
+
* When the delay time has been reached the function you're timing out will be called.
|
|
13
|
+
*
|
|
14
|
+
* Credit: Joe Lambert (https://gist.github.com/joelambert/1002116#file-requesttimeout-js)
|
|
15
|
+
*/
|
|
16
|
+
export const requestAnimationTimeout = (callback, delay) => {
|
|
17
|
+
let start;
|
|
18
|
+
// wait for end of processing current event handler, because event handler may be long
|
|
19
|
+
Promise.resolve().then(() => {
|
|
20
|
+
start = Date.now();
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
const timeout = () => {
|
|
24
|
+
if (Date.now() - start >= delay) {
|
|
25
|
+
callback.call();
|
|
26
|
+
} else {
|
|
27
|
+
frame.id = raf(timeout);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const frame = {
|
|
32
|
+
id: raf(timeout),
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
return frame;
|
|
36
|
+
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/*
|
|
2
|
+
fork from:
|
|
3
|
+
https://github.com/ElemeFE/element
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import ResizeObserver from "resize-observer-polyfill";
|
|
7
|
+
|
|
8
|
+
/* istanbul ignore next */
|
|
9
|
+
const resizeHandler = function (entries) {
|
|
10
|
+
for (let entry of entries) {
|
|
11
|
+
const listeners = entry.target.__resizeListeners__ || [];
|
|
12
|
+
if (listeners.length) {
|
|
13
|
+
listeners.forEach((fn) => {
|
|
14
|
+
fn(entry.contentRect);
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
/* istanbul ignore next */
|
|
21
|
+
export const addResizeListener = function (element, fn) {
|
|
22
|
+
if (!element.__resizeListeners__) {
|
|
23
|
+
element.__resizeListeners__ = [];
|
|
24
|
+
element.__ro__ = new ResizeObserver(resizeHandler);
|
|
25
|
+
element.__ro__.observe(element);
|
|
26
|
+
}
|
|
27
|
+
element.__resizeListeners__.push(fn);
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
/* istanbul ignore next */
|
|
31
|
+
export const removeResizeListener = function (element, fn) {
|
|
32
|
+
if (!element || !element.__resizeListeners__) return;
|
|
33
|
+
element.__resizeListeners__.splice(
|
|
34
|
+
element.__resizeListeners__.indexOf(fn),
|
|
35
|
+
1,
|
|
36
|
+
);
|
|
37
|
+
if (!element.__resizeListeners__.length) {
|
|
38
|
+
element.__ro__.disconnect();
|
|
39
|
+
}
|
|
40
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @getScrollbarWidth
|
|
3
|
+
* @desc get scroll bar width
|
|
4
|
+
* @param
|
|
5
|
+
* @return
|
|
6
|
+
*/
|
|
7
|
+
export function getScrollbarWidth() {
|
|
8
|
+
const outer = document.createElement("div");
|
|
9
|
+
outer.className = "ve-scrollbar-wrap";
|
|
10
|
+
outer.style.visibility = "hidden";
|
|
11
|
+
outer.style.width = "100px";
|
|
12
|
+
outer.style.position = "absolute";
|
|
13
|
+
outer.style.top = "-9999px";
|
|
14
|
+
document.body.appendChild(outer);
|
|
15
|
+
|
|
16
|
+
const widthNoScroll = outer.offsetWidth;
|
|
17
|
+
outer.style.overflow = "scroll";
|
|
18
|
+
|
|
19
|
+
const inner = document.createElement("div");
|
|
20
|
+
inner.style.width = "100%";
|
|
21
|
+
outer.appendChild(inner);
|
|
22
|
+
|
|
23
|
+
const widthWithScroll = inner.offsetWidth;
|
|
24
|
+
outer.parentNode.removeChild(outer);
|
|
25
|
+
|
|
26
|
+
return widthNoScroll - widthWithScroll;
|
|
27
|
+
}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
.ve-checkbox {
|
|
2
|
+
cursor: pointer;
|
|
3
|
+
font-size: 12px;
|
|
4
|
+
display: inline-block;
|
|
5
|
+
position: relative;
|
|
6
|
+
vertical-align: middle;
|
|
7
|
+
|
|
8
|
+
&:hover {
|
|
9
|
+
.ve-checkbox-inner {
|
|
10
|
+
border-color: @ve-checkbox-checked-border-color;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
&-content {
|
|
15
|
+
white-space: nowrap;
|
|
16
|
+
cursor: pointer;
|
|
17
|
+
outline: none;
|
|
18
|
+
display: inline-block;
|
|
19
|
+
line-height: 1;
|
|
20
|
+
position: relative;
|
|
21
|
+
vertical-align: text-bottom;
|
|
22
|
+
|
|
23
|
+
&:hover {
|
|
24
|
+
.ve-checkbox-inner {
|
|
25
|
+
border-color: @ve-checkbox-checked-border-color;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// input
|
|
30
|
+
.ve-checkbox-input {
|
|
31
|
+
position: absolute;
|
|
32
|
+
left: 0;
|
|
33
|
+
z-index: 1;
|
|
34
|
+
cursor: pointer;
|
|
35
|
+
opacity: 0;
|
|
36
|
+
filter: alpha(opacity=0);
|
|
37
|
+
top: 0;
|
|
38
|
+
bottom: 0;
|
|
39
|
+
right: 0;
|
|
40
|
+
|
|
41
|
+
&:focus {
|
|
42
|
+
.ve-checkbox-inner {
|
|
43
|
+
border-color: @ve-checkbox-checked-border-color;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// checkbox 框
|
|
49
|
+
.ve-checkbox-inner {
|
|
50
|
+
position: relative;
|
|
51
|
+
top: 0;
|
|
52
|
+
left: 0;
|
|
53
|
+
display: block;
|
|
54
|
+
width: 16px;
|
|
55
|
+
height: 16px;
|
|
56
|
+
border: 1px solid #abbacc;
|
|
57
|
+
border-radius: 2px;
|
|
58
|
+
background-color: #fff;
|
|
59
|
+
transition: all 0.3s;
|
|
60
|
+
&:after {
|
|
61
|
+
transform: rotate(45deg) scale(0);
|
|
62
|
+
position: absolute;
|
|
63
|
+
left: 4px;
|
|
64
|
+
top: 2px;
|
|
65
|
+
display: table;
|
|
66
|
+
width: 6px;
|
|
67
|
+
height: 9px;
|
|
68
|
+
border: 2px solid #fff;
|
|
69
|
+
border-top: 0;
|
|
70
|
+
border-left: 0;
|
|
71
|
+
content: " ";
|
|
72
|
+
transition: all 0.1s cubic-bezier(0.71, -0.46, 0.88, 0.6);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// 选中时
|
|
78
|
+
.ve-checkbox-checked {
|
|
79
|
+
&:after {
|
|
80
|
+
position: absolute;
|
|
81
|
+
top: 0;
|
|
82
|
+
left: 0;
|
|
83
|
+
width: 100%;
|
|
84
|
+
height: 100%;
|
|
85
|
+
border-radius: 2px;
|
|
86
|
+
border: 1px solid @ve-checkbox-checked-background-color;
|
|
87
|
+
content: "";
|
|
88
|
+
animation-fill-mode: both;
|
|
89
|
+
visibility: hidden;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.ve-checkbox-inner {
|
|
93
|
+
background-color: @ve-checkbox-checked-background-color;
|
|
94
|
+
border-color: @ve-checkbox-checked-background-color;
|
|
95
|
+
&:after {
|
|
96
|
+
transform: rotate(45deg) scale(1);
|
|
97
|
+
position: absolute;
|
|
98
|
+
display: table;
|
|
99
|
+
border: 2px solid #fff;
|
|
100
|
+
border-top: 0;
|
|
101
|
+
border-left: 0;
|
|
102
|
+
content: " ";
|
|
103
|
+
transition: all 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46) 0.1s;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// 半选状态
|
|
109
|
+
.ve-checkbox-indeterminate {
|
|
110
|
+
.ve-checkbox-inner {
|
|
111
|
+
background-color: #fff;
|
|
112
|
+
border-color: #d9d9d9;
|
|
113
|
+
position: relative;
|
|
114
|
+
top: 0;
|
|
115
|
+
left: 0;
|
|
116
|
+
direction: ltr;
|
|
117
|
+
background-color: #fff;
|
|
118
|
+
border: 1px solid #d9d9d9;
|
|
119
|
+
border-radius: 2px;
|
|
120
|
+
border-collapse: separate;
|
|
121
|
+
transition: all 0.3s;
|
|
122
|
+
&:after {
|
|
123
|
+
top: 50%;
|
|
124
|
+
left: 50%;
|
|
125
|
+
width: 8px;
|
|
126
|
+
height: 8px;
|
|
127
|
+
background-color: @ve-checkbox-checked-border-color;
|
|
128
|
+
border: 0;
|
|
129
|
+
-webkit-transform: translate(-50%, -50%) scale(1);
|
|
130
|
+
transform: translate(-50%, -50%) scale(1);
|
|
131
|
+
opacity: 1;
|
|
132
|
+
content: " ";
|
|
133
|
+
}
|
|
134
|
+
&:hover {
|
|
135
|
+
border-color: @ve-checkbox-checked-border-color;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
&.ve-checkbox-disabled {
|
|
140
|
+
.ve-checkbox-inner:after {
|
|
141
|
+
border-color: rgba(0, 0, 0, 0.25);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// 禁用选择
|
|
147
|
+
.ve-checkbox-disabled {
|
|
148
|
+
cursor: not-allowed;
|
|
149
|
+
// 禁用的选中
|
|
150
|
+
&.ve-checkbox-checked {
|
|
151
|
+
.ve-checkbox-inner:after {
|
|
152
|
+
animation-name: none;
|
|
153
|
+
border-color: rgba(0, 0, 0, 0.25);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.ve-checkbox-input {
|
|
158
|
+
cursor: not-allowed;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// 禁用状态的框
|
|
162
|
+
.ve-checkbox-inner {
|
|
163
|
+
color: rgba(0, 0, 0, 0.25);
|
|
164
|
+
cursor: not-allowed;
|
|
165
|
+
border-color: #d9d9d9 !important;
|
|
166
|
+
background-color: #f7f7f7;
|
|
167
|
+
&:after {
|
|
168
|
+
animation-name: none;
|
|
169
|
+
border-color: #f7f7f7;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// label
|
|
174
|
+
&-label {
|
|
175
|
+
margin: 0 6px 0 3px;
|
|
176
|
+
width: 100%;
|
|
177
|
+
color: @ve-checkbox-label-text-color !important;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
// popper
|
|
2
|
+
.ve-contextmenu-popper {
|
|
3
|
+
z-index: 9999;
|
|
4
|
+
overflow: hidden;
|
|
5
|
+
border-radius: @ve-contextmenu-border-radius;
|
|
6
|
+
border: 1px solid @ve-contextmenu-border-color;
|
|
7
|
+
background-color: @ve-contextmenu-background-color;
|
|
8
|
+
box-shadow: 0 2px 12px 0 @ve-contextmenu-box-shadow-color;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.ve-contextmenu {
|
|
12
|
+
display: flex;
|
|
13
|
+
flex-direction: row;
|
|
14
|
+
|
|
15
|
+
&-panel {
|
|
16
|
+
min-width: @ve-contextmenu-min-width;
|
|
17
|
+
min-height: @ve-contextmenu-min-height;
|
|
18
|
+
overflow: hidden;
|
|
19
|
+
|
|
20
|
+
.ve-contextmenu-list {
|
|
21
|
+
min-height: 100%;
|
|
22
|
+
margin: 0;
|
|
23
|
+
padding: 6px 0;
|
|
24
|
+
list-style: none;
|
|
25
|
+
box-sizing: border-box;
|
|
26
|
+
|
|
27
|
+
.ve-contextmenu-node {
|
|
28
|
+
display: flex;
|
|
29
|
+
align-items: center;
|
|
30
|
+
padding: 0 30px 0 20px;
|
|
31
|
+
height: 34px;
|
|
32
|
+
justify-content: center;
|
|
33
|
+
outline: none;
|
|
34
|
+
color: @ve-contextmenu-node-text-color;
|
|
35
|
+
cursor: pointer;
|
|
36
|
+
|
|
37
|
+
&:not(&-disabled):hover {
|
|
38
|
+
background: @ve-contextmenu-node-hover-background-color;
|
|
39
|
+
color: @ve-contextmenu-node-hover-text-color;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
&-active {
|
|
43
|
+
background: @ve-contextmenu-node-hover-background-color;
|
|
44
|
+
color: @ve-contextmenu-node-active-text-color;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
&-label {
|
|
48
|
+
flex: 1;
|
|
49
|
+
padding: 0 10px;
|
|
50
|
+
white-space: nowrap;
|
|
51
|
+
overflow: hidden;
|
|
52
|
+
text-overflow: ellipsis;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
&-icon-postfix {
|
|
56
|
+
color: @ve-contextmenu-node-icon-postfix-color;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
&-disabled {
|
|
60
|
+
color: @ve-contextmenu-node-disabled-text-color;
|
|
61
|
+
cursor: not-allowed;
|
|
62
|
+
.ve-contextmenu-node-icon-postfix {
|
|
63
|
+
color: @ve-contextmenu-node-disabled-icon-postfix-color;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.ve-contextmenu-node-separator {
|
|
69
|
+
height: 1px;
|
|
70
|
+
margin: 5px 0px;
|
|
71
|
+
border-bottom: 1px solid
|
|
72
|
+
@ve-contextmenu-node-separator-line-color;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|