bri-components 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -0
- package/lib/.DS_Store +0 -0
- package/lib/0.bri-components.min.js +2 -0
- package/lib/0.bri-components.min.js.map +1 -0
- package/lib/1.bri-components.min.js +2 -0
- package/lib/1.bri-components.min.js.map +1 -0
- package/lib/2.bri-components.min.js +2 -0
- package/lib/2.bri-components.min.js.map +1 -0
- package/lib/3.bri-components.min.js +2 -0
- package/lib/3.bri-components.min.js.gz +0 -0
- package/lib/3.bri-components.min.js.map +1 -0
- package/lib/4.bri-components.min.js +2 -0
- package/lib/4.bri-components.min.js.gz +0 -0
- package/lib/4.bri-components.min.js.map +1 -0
- package/lib/5.bri-components.min.js +2 -0
- package/lib/5.bri-components.min.js.map +1 -0
- package/lib/6.bri-components.min.js +2 -0
- package/lib/6.bri-components.min.js.map +1 -0
- package/lib/bri-components.min.js +21 -0
- package/lib/bri-components.min.js.gz +0 -0
- package/lib/bri-components.min.js.map +1 -0
- package/lib/styles/bri-components.css +1 -0
- package/lib/styles/bundle.css +14 -0
- package/lib/styles/font/fontello.eot +0 -0
- package/lib/styles/font/fontello.svg +32 -0
- package/lib/styles/font/fontello.ttf +0 -0
- package/lib/styles/font/fontello.woff +0 -0
- package/lib/styles/font/fontello.woff2 +0 -0
- package/package.json +121 -0
- package/src/.DS_Store +0 -0
- package/src/components/controls/base/DshBack.vue +36 -0
- package/src/components/controls/base/DshCascader.vue +366 -0
- package/src/components/controls/base/DshCascaderMultiple.vue +158 -0
- package/src/components/controls/base/DshCheckbox.vue +199 -0
- package/src/components/controls/base/DshCoordinates.vue +497 -0
- package/src/components/controls/base/DshDate.vue +148 -0
- package/src/components/controls/base/DshDaterange.vue +335 -0
- package/src/components/controls/base/DshDivider.vue +59 -0
- package/src/components/controls/base/DshEditor.vue +166 -0
- package/src/components/controls/base/DshInput.vue +139 -0
- package/src/components/controls/base/DshLabels.vue +302 -0
- package/src/components/controls/base/DshNumber/BriInputNumber/BriInputNumber.vue +425 -0
- package/src/components/controls/base/DshNumber/BriInputNumber/mixins/emitter.js +34 -0
- package/src/components/controls/base/DshNumber/BriInputNumber/mixins/form.js +14 -0
- package/src/components/controls/base/DshNumber/BriInputNumber/utils/assist.js +322 -0
- package/src/components/controls/base/DshNumber/DshNumber.vue +148 -0
- package/src/components/controls/base/DshNumberange.vue +137 -0
- package/src/components/controls/base/DshPackage.vue +72 -0
- package/src/components/controls/base/DshSelect.vue +231 -0
- package/src/components/controls/base/DshSwitch.vue +112 -0
- package/src/components/controls/base/DshUndeveloped.vue +39 -0
- package/src/components/controls/base/YSerialNumber.vue +37 -0
- package/src/components/controls/base/ZUpload/YUploadImage.vue +228 -0
- package/src/components/controls/base/ZUpload/index.vue +356 -0
- package/src/components/controls/base/ZUpload/upload-list.vue +277 -0
- package/src/components/controls/base/ZUpload/upload-listItem.vue +0 -0
- package/src/components/controls/base/ZUpload/uploadMixin.js +397 -0
- package/src/components/controls/base/selectMixin.js +110 -0
- package/src/components/controls/base/textMultiple/DshTextMultiple.vue +94 -0
- package/src/components/controls/base/textMultiple/MultipleInput.vue +106 -0
- package/src/components/controls/controlMap.js +94 -0
- package/src/components/controls/controlMixin.js +84 -0
- package/src/components/form/DshAdvSearchForm.vue +341 -0
- package/src/components/form/DshDefaultSearch.vue +203 -0
- package/src/components/form/DshForm.vue +364 -0
- package/src/components/form/searchMixin.js +205 -0
- package/src/components/list/DshBox/DshBox.vue +168 -0
- package/src/components/list/DshBox/DshCard.vue +219 -0
- package/src/components/list/DshBox/DshCrossTable.vue +624 -0
- package/src/components/list/DshBox/DshList.vue +442 -0
- package/src/components/list/DshBox/DshPanel.vue +407 -0
- package/src/components/list/DshBox/DshSingleData.vue +82 -0
- package/src/components/list/DshBox/DshTable.vue +273 -0
- package/src/components/list/DshCascaderTable.vue +817 -0
- package/src/components/list/DshFlatTable.vue +622 -0
- package/src/components/list/ZTree.vue +527 -0
- package/src/components/list/easyTable/index.js +23 -0
- package/src/components/list/easyTable/src/directives/clickoutside.js +32 -0
- package/src/components/list/easyTable/src/mixins/layerAdjustment.js +62 -0
- package/src/components/list/easyTable/src/settings/settings.js +11 -0
- package/src/components/list/easyTable/src/utils/deepClone.js +256 -0
- package/src/components/list/easyTable/src/utils/dom.js +41 -0
- package/src/components/list/easyTable/src/utils/utils.js +190 -0
- package/src/components/list/easyTable/v-checkbox/index.js +7 -0
- package/src/components/list/easyTable/v-checkbox/src/checkbox.vue +127 -0
- package/src/components/list/easyTable/v-checkbox-group/index.js +7 -0
- package/src/components/list/easyTable/v-checkbox-group/src/checkbox-group.vue +68 -0
- package/src/components/list/easyTable/v-dropdown/index.js +7 -0
- package/src/components/list/easyTable/v-dropdown/src/dropdown.vue +337 -0
- package/src/components/list/easyTable/v-table/index.js +7 -0
- package/src/components/list/easyTable/v-table/src/body-cell-merge-mixin.js +141 -0
- package/src/components/list/easyTable/v-table/src/cell-edit-mixin.js +102 -0
- package/src/components/list/easyTable/v-table/src/checkbox-selection-mixin.js +189 -0
- package/src/components/list/easyTable/v-table/src/classes-mixin.js +56 -0
- package/src/components/list/easyTable/v-table/src/drag-width-mixin.js +202 -0
- package/src/components/list/easyTable/v-table/src/export-csv.js +74 -0
- package/src/components/list/easyTable/v-table/src/frozen-columns-mixin.js +134 -0
- package/src/components/list/easyTable/v-table/src/loading.vue +49 -0
- package/src/components/list/easyTable/v-table/src/scroll-bar-control-mixin.js +21 -0
- package/src/components/list/easyTable/v-table/src/scroll-control-mixin.js +92 -0
- package/src/components/list/easyTable/v-table/src/sort-control-mixin.js +108 -0
- package/src/components/list/easyTable/v-table/src/table-empty-mixin.js +73 -0
- package/src/components/list/easyTable/v-table/src/table-empty.vue +66 -0
- package/src/components/list/easyTable/v-table/src/table-filters-mixin.js +126 -0
- package/src/components/list/easyTable/v-table/src/table-footer-mixin.js +122 -0
- package/src/components/list/easyTable/v-table/src/table-resize-mixin.js +279 -0
- package/src/components/list/easyTable/v-table/src/table-row-mouse-events-mixin.js +123 -0
- package/src/components/list/easyTable/v-table/src/table.vue +1565 -0
- package/src/components/list/easyTable/v-table/src/title-cell-merge-mixin.js +115 -0
- package/src/components/list/evTable/EvTable.vue +323 -0
- package/src/components/list/evTable/EvTableMixin.js +26 -0
- package/src/components/other/DshAvatar.vue +149 -0
- package/src/components/other/DshBtnModal.vue +64 -0
- package/src/components/other/DshColorPanel.vue +128 -0
- package/src/components/other/DshEditPanel.vue +130 -0
- package/src/components/other/InfoCascader.vue +258 -0
- package/src/components/other/YNoPermission.vue +45 -0
- package/src/components/other/ZCode.vue +125 -0
- package/src/components/other/ZCollapseTree.vue +84 -0
- package/src/components/other/ZGantt.vue +669 -0
- package/src/components/other/ZIframe.vue +105 -0
- package/src/components/other/ZLoading.vue +59 -0
- package/src/components/other/menu/DshMenu.vue +133 -0
- package/src/components/other/menu/DshMenuNav.vue +104 -0
- package/src/components/pages/Error/Error403.vue +34 -0
- package/src/components/pages/Error/Error404.vue +34 -0
- package/src/components/pages/Error/Error500.vue +34 -0
- package/src/components/pages/Error/error.less +163 -0
- package/src/components/pages/Error/errorBack.vue +38 -0
- package/src/components/small/Ctooltip.vue +90 -0
- package/src/components/small/DshButtons.vue +195 -0
- package/src/components/small/DshControlDefine.vue +110 -0
- package/src/components/small/DshCrumbs.vue +61 -0
- package/src/components/small/DshCrumbsItem.vue +107 -0
- package/src/components/small/DshDropdown.vue +159 -0
- package/src/components/small/DshFileShow.vue +212 -0
- package/src/components/small/DshIcons.vue +63 -0
- package/src/components/small/DshModal.vue +255 -0
- package/src/components/small/DshPage.vue +98 -0
- package/src/components/small/DshSteps.vue +68 -0
- package/src/components/small/DshTabs.vue +227 -0
- package/src/components/small/DshTags.vue +58 -0
- package/src/components/small/DshTdRender.js +21 -0
- package/src/components/small/DshTitle.vue +36 -0
- package/src/components/small/render.js +20 -0
- package/src/components/unit/DshFormItem.vue +157 -0
- package/src/components/unit/DshUnit.vue +72 -0
- package/src/components/unit/unitMixin.js +43 -0
- package/src/datas/.DS_Store +0 -0
- package/src/datas/common/region.json +1 -0
- package/src/datas/common/resourceData.json +20 -0
- package/src/datas/index.js +11 -0
- package/src/index.js +243 -0
- package/src/styles/animate.less +16 -0
- package/src/styles/bundle.css +14 -0
- package/src/styles/common/box.less +157 -0
- package/src/styles/common/common.less +31 -0
- package/src/styles/common/flex.less +282 -0
- package/src/styles/common/index.less +4 -0
- package/src/styles/common/text.less +43 -0
- package/src/styles/components/controls/DshCascader.less +75 -0
- package/src/styles/components/controls/DshCheckbox.less +156 -0
- package/src/styles/components/controls/DshCoordinates.less +72 -0
- package/src/styles/components/controls/DshDaterange.less +49 -0
- package/src/styles/components/controls/DshDivider.less +115 -0
- package/src/styles/components/controls/DshEditor.less +52 -0
- package/src/styles/components/controls/DshInput.less +40 -0
- package/src/styles/components/controls/DshLabels.less +187 -0
- package/src/styles/components/controls/DshNumberange.less +24 -0
- package/src/styles/components/controls/DshPackage.less +25 -0
- package/src/styles/components/controls/DshSelect.less +172 -0
- package/src/styles/components/controls/MultipleInput.less +55 -0
- package/src/styles/components/controls/ZUpload.less +446 -0
- package/src/styles/components/form/DshAdvSearchForm.less +159 -0
- package/src/styles/components/form/DshDefaultSearch.less +71 -0
- package/src/styles/components/index.less +49 -0
- package/src/styles/components/list/DshCascaderTable.less +113 -0
- package/src/styles/components/list/DshCrossTable.less +175 -0
- package/src/styles/components/list/DshFlatTable.less +98 -0
- package/src/styles/components/list/DshSingleData.less +30 -0
- package/src/styles/components/list/evTable.less +79 -0
- package/src/styles/components/list/evtable/animation.less +141 -0
- package/src/styles/components/list/evtable/font/fontello.eot +0 -0
- package/src/styles/components/list/evtable/font/fontello.svg +32 -0
- package/src/styles/components/list/evtable/font/fontello.ttf +0 -0
- package/src/styles/components/list/evtable/font/fontello.woff +0 -0
- package/src/styles/components/list/evtable/font/fontello.woff2 +0 -0
- package/src/styles/components/list/evtable/fontello.less +68 -0
- package/src/styles/components/list/evtable/index.less +5 -0
- package/src/styles/components/list/evtable/v-checkbox.less +167 -0
- package/src/styles/components/list/evtable/v-dropdown.less +235 -0
- package/src/styles/components/list/evtable/v-table.less +334 -0
- package/src/styles/components/list/ivu_reset.less +49 -0
- package/src/styles/components/other/DshEditPanel.less +70 -0
- package/src/styles/components/other/DshMenu.less +37 -0
- package/src/styles/components/other/DshMenuNav.less +82 -0
- package/src/styles/components/other/InfoCascader.less +55 -0
- package/src/styles/components/other/ZCode.less +1 -0
- package/src/styles/components/other/ZCollapseTree.less +62 -0
- package/src/styles/components/other/ZGantt.less +278 -0
- package/src/styles/components/other/ZLoading.less +36 -0
- package/src/styles/components/small/Ctooltip.less +5 -0
- package/src/styles/components/small/DshButtons.less +40 -0
- package/src/styles/components/small/DshControlDefine.less +64 -0
- package/src/styles/components/small/DshDropdown.less +61 -0
- package/src/styles/components/small/DshPage.less +94 -0
- package/src/styles/components/small/DshSteps.less +58 -0
- package/src/styles/components/small/DshTabs.less +82 -0
- package/src/styles/components/small/DshTitle.less +18 -0
- package/src/styles/components/unit/DshFormItem.less +124 -0
- package/src/styles/define.less +374 -0
- package/src/styles/index.less +10 -0
- package/src/styles/reset.less +83 -0
- package/src/styles/variables.less +98 -0
- package/src/styles/view_reset.less +446 -0
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
/*
|
|
2
|
+
*
|
|
3
|
+
* source:https://github.com/pvorb/clone/blob/master/clone.js
|
|
4
|
+
*
|
|
5
|
+
*
|
|
6
|
+
* */
|
|
7
|
+
|
|
8
|
+
let clone = (function () {
|
|
9
|
+
"use strict";
|
|
10
|
+
|
|
11
|
+
function _instanceof (obj, type) {
|
|
12
|
+
return type != null && obj instanceof type;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
let NativeMap;
|
|
16
|
+
try {
|
|
17
|
+
NativeMap = Map;
|
|
18
|
+
} catch (_) {
|
|
19
|
+
// maybe a reference error because no `Map`. Give it a dummy value that no
|
|
20
|
+
// value will ever be an instanceof.
|
|
21
|
+
NativeMap = function () {};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
let NativeSet;
|
|
25
|
+
try {
|
|
26
|
+
NativeSet = Set;
|
|
27
|
+
} catch (_) {
|
|
28
|
+
NativeSet = function () {};
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
let NativePromise;
|
|
32
|
+
try {
|
|
33
|
+
NativePromise = Promise;
|
|
34
|
+
} catch (_) {
|
|
35
|
+
NativePromise = function () {};
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Clones (copies) an Object using deep copying.
|
|
40
|
+
*
|
|
41
|
+
* This function supports circular references by default, but if you are certain
|
|
42
|
+
* there are no circular references in your object, you can save some CPU time
|
|
43
|
+
* by calling clone(obj, false).
|
|
44
|
+
*
|
|
45
|
+
* Caution: if `circular` is false and `parent` contains circular references,
|
|
46
|
+
* your program may enter an infinite loop and crash.
|
|
47
|
+
*
|
|
48
|
+
* @param `parent` - the object to be cloned
|
|
49
|
+
* @param `circular` - set to true if the object to be cloned may contain
|
|
50
|
+
* circular references. (optional - true by default)
|
|
51
|
+
* @param `depth` - set to a number if the object is only to be cloned to
|
|
52
|
+
* a particular depth. (optional - defaults to Infinity)
|
|
53
|
+
* @param `prototype` - sets the prototype to be used when cloning an object.
|
|
54
|
+
* (optional - defaults to parent prototype).
|
|
55
|
+
* @param `includeNonEnumerable` - set to true if the non-enumerable properties
|
|
56
|
+
* should be cloned as well. Non-enumerable properties on the prototype
|
|
57
|
+
* chain will be ignored. (optional - false by default)
|
|
58
|
+
*/
|
|
59
|
+
function clone (parent, circular, depth, prototype, includeNonEnumerable) {
|
|
60
|
+
if (typeof circular === "object") {
|
|
61
|
+
depth = circular.depth;
|
|
62
|
+
prototype = circular.prototype;
|
|
63
|
+
includeNonEnumerable = circular.includeNonEnumerable;
|
|
64
|
+
circular = circular.circular;
|
|
65
|
+
}
|
|
66
|
+
// maintain two arrays for circular references, where corresponding parents
|
|
67
|
+
// and children have the same index
|
|
68
|
+
let allParents = [];
|
|
69
|
+
let allChildren = [];
|
|
70
|
+
|
|
71
|
+
let useBuffer = typeof Buffer != "undefined";
|
|
72
|
+
|
|
73
|
+
if (typeof circular == "undefined")
|
|
74
|
+
{ circular = true; }
|
|
75
|
+
|
|
76
|
+
if (typeof depth == "undefined")
|
|
77
|
+
{ depth = Infinity; }
|
|
78
|
+
|
|
79
|
+
// recurse this function so we don't reset allParents and allChildren
|
|
80
|
+
function _clone (parent, depth) {
|
|
81
|
+
// cloning null always returns null
|
|
82
|
+
if (parent === null)
|
|
83
|
+
{ return null; }
|
|
84
|
+
|
|
85
|
+
if (depth === 0)
|
|
86
|
+
{ return parent; }
|
|
87
|
+
|
|
88
|
+
let child;
|
|
89
|
+
let proto;
|
|
90
|
+
if (typeof parent != "object") {
|
|
91
|
+
return parent;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if (_instanceof(parent, NativeMap)) {
|
|
95
|
+
child = new NativeMap();
|
|
96
|
+
} else if (_instanceof(parent, NativeSet)) {
|
|
97
|
+
child = new NativeSet();
|
|
98
|
+
} else if (_instanceof(parent, NativePromise)) {
|
|
99
|
+
child = new NativePromise(function (resolve, reject) {
|
|
100
|
+
parent.then(function (value) {
|
|
101
|
+
resolve(_clone(value, depth - 1));
|
|
102
|
+
}, function (err) {
|
|
103
|
+
reject(_clone(err, depth - 1));
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
} else if (clone.__isArray(parent)) {
|
|
107
|
+
child = [];
|
|
108
|
+
} else if (clone.__isRegExp(parent)) {
|
|
109
|
+
child = new RegExp(parent.source, __getRegExpFlags(parent));
|
|
110
|
+
if (parent.lastIndex) child.lastIndex = parent.lastIndex;
|
|
111
|
+
} else if (clone.__isDate(parent)) {
|
|
112
|
+
child = new Date(parent.getTime());
|
|
113
|
+
} else if (useBuffer && Buffer.isBuffer(parent)) {
|
|
114
|
+
child = Buffer.alloc(parent.length);
|
|
115
|
+
parent.copy(child);
|
|
116
|
+
return child;
|
|
117
|
+
} else if (_instanceof(parent, Error)) {
|
|
118
|
+
child = Object.create(parent);
|
|
119
|
+
} else {
|
|
120
|
+
if (typeof prototype == "undefined") {
|
|
121
|
+
proto = Object.getPrototypeOf(parent);
|
|
122
|
+
child = Object.create(proto);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
child = Object.create(prototype);
|
|
126
|
+
proto = prototype;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
if (circular) {
|
|
131
|
+
let index = allParents.indexOf(parent);
|
|
132
|
+
|
|
133
|
+
if (index != -1) {
|
|
134
|
+
return allChildren[index];
|
|
135
|
+
}
|
|
136
|
+
allParents.push(parent);
|
|
137
|
+
allChildren.push(child);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if (_instanceof(parent, NativeMap)) {
|
|
141
|
+
parent.forEach(function (value, key) {
|
|
142
|
+
let keyChild = _clone(key, depth - 1);
|
|
143
|
+
let valueChild = _clone(value, depth - 1);
|
|
144
|
+
child.set(keyChild, valueChild);
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
if (_instanceof(parent, NativeSet)) {
|
|
148
|
+
parent.forEach(function (value) {
|
|
149
|
+
let entryChild = _clone(value, depth - 1);
|
|
150
|
+
child.add(entryChild);
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
for (let i in parent) {
|
|
155
|
+
let attrs;
|
|
156
|
+
if (proto) {
|
|
157
|
+
attrs = Object.getOwnPropertyDescriptor(proto, i);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
if (attrs && attrs.set == null) {
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
child[i] = _clone(parent[i], depth - 1);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
if (Object.getOwnPropertySymbols) {
|
|
167
|
+
let symbols = Object.getOwnPropertySymbols(parent);
|
|
168
|
+
for (let i = 0; i < symbols.length; i++) {
|
|
169
|
+
// Don't need to worry about cloning a symbol because it is a primitive,
|
|
170
|
+
// like a number or string.
|
|
171
|
+
let symbol = symbols[i];
|
|
172
|
+
let descriptor = Object.getOwnPropertyDescriptor(parent, symbol);
|
|
173
|
+
if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
child[symbol] = _clone(parent[symbol], depth - 1);
|
|
177
|
+
if (!descriptor.enumerable) {
|
|
178
|
+
Object.defineProperty(child, symbol, {
|
|
179
|
+
enumerable: false
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
if (includeNonEnumerable) {
|
|
186
|
+
let allPropertyNames = Object.getOwnPropertyNames(parent);
|
|
187
|
+
for (let i = 0; i < allPropertyNames.length; i++) {
|
|
188
|
+
let propertyName = allPropertyNames[i];
|
|
189
|
+
let descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);
|
|
190
|
+
if (descriptor && descriptor.enumerable) {
|
|
191
|
+
continue;
|
|
192
|
+
}
|
|
193
|
+
child[propertyName] = _clone(parent[propertyName], depth - 1);
|
|
194
|
+
Object.defineProperty(child, propertyName, {
|
|
195
|
+
enumerable: false
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
return child;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
return _clone(parent, depth);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Simple flat clone using prototype, accepts only objects, usefull for property
|
|
208
|
+
* override on FLAT configuration object (no nested props).
|
|
209
|
+
*
|
|
210
|
+
* USE WITH CAUTION! This may not behave as you wish if you do not know how this
|
|
211
|
+
* works.
|
|
212
|
+
*/
|
|
213
|
+
clone.clonePrototype = function clonePrototype (parent) {
|
|
214
|
+
if (parent === null)
|
|
215
|
+
{ return null; }
|
|
216
|
+
|
|
217
|
+
let C = function () {};
|
|
218
|
+
C.prototype = parent;
|
|
219
|
+
return new C();
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
// private utility functions
|
|
223
|
+
|
|
224
|
+
function __objToStr (o) {
|
|
225
|
+
return Object.prototype.toString.call(o);
|
|
226
|
+
}
|
|
227
|
+
clone.__objToStr = __objToStr;
|
|
228
|
+
|
|
229
|
+
function __isDate (o) {
|
|
230
|
+
return typeof o === "object" && __objToStr(o) === "[object Date]";
|
|
231
|
+
}
|
|
232
|
+
clone.__isDate = __isDate;
|
|
233
|
+
|
|
234
|
+
function __isArray (o) {
|
|
235
|
+
return typeof o === "object" && __objToStr(o) === "[object Array]";
|
|
236
|
+
}
|
|
237
|
+
clone.__isArray = __isArray;
|
|
238
|
+
|
|
239
|
+
function __isRegExp (o) {
|
|
240
|
+
return typeof o === "object" && __objToStr(o) === "[object RegExp]";
|
|
241
|
+
}
|
|
242
|
+
clone.__isRegExp = __isRegExp;
|
|
243
|
+
|
|
244
|
+
function __getRegExpFlags (re) {
|
|
245
|
+
let flags = "";
|
|
246
|
+
if (re.global) flags += "g";
|
|
247
|
+
if (re.ignoreCase) flags += "i";
|
|
248
|
+
if (re.multiline) flags += "m";
|
|
249
|
+
return flags;
|
|
250
|
+
}
|
|
251
|
+
clone.__getRegExpFlags = __getRegExpFlags;
|
|
252
|
+
|
|
253
|
+
return clone;
|
|
254
|
+
})();
|
|
255
|
+
|
|
256
|
+
export default clone;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
|
|
2
|
+
// has class
|
|
3
|
+
export function hasClass (el, cls) {
|
|
4
|
+
if (!el || !cls) return false;
|
|
5
|
+
if (cls.indexOf(" ") !== -1) throw new Error("className should not contain space.");
|
|
6
|
+
if (el.classList) {
|
|
7
|
+
return el.classList.contains(cls);
|
|
8
|
+
} else {
|
|
9
|
+
return (" " + el.className + " ").indexOf(" " + cls + " ") > -1;
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
// add class
|
|
14
|
+
export function addClass (el, cls) {
|
|
15
|
+
if (!el || !cls) return;
|
|
16
|
+
|
|
17
|
+
if (el.classList) {
|
|
18
|
+
el.classList.add(cls);
|
|
19
|
+
|
|
20
|
+
} else {
|
|
21
|
+
|
|
22
|
+
let clsArr = el.className.split(" ");
|
|
23
|
+
|
|
24
|
+
if (clsArr.indexOf(cls) === -1) {
|
|
25
|
+
el.className += " " + cls;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
// remove class
|
|
31
|
+
export function removeClass (el, cls) {
|
|
32
|
+
if (!el || !cls) return;
|
|
33
|
+
|
|
34
|
+
if (el.classList) {
|
|
35
|
+
el.classList.remove(cls);
|
|
36
|
+
} else {
|
|
37
|
+
|
|
38
|
+
let reg = new RegExp("(\\s|^)" + cls + "(\\s|$)");
|
|
39
|
+
el.className = el.className.replace(reg, " "); // For IE9 and earlier
|
|
40
|
+
}
|
|
41
|
+
};
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import settings from "../settings/settings";
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
/* 获取当前元素的left、top偏移
|
|
5
|
+
* left:元素最左侧距离文档左侧的距离
|
|
6
|
+
* top:元素最顶端距离文档顶端的距离
|
|
7
|
+
* right:元素最右侧距离文档右侧的距离
|
|
8
|
+
* bottom:元素最底端距离文档底端的距离
|
|
9
|
+
* right2:元素最左侧距离文档右侧的距离
|
|
10
|
+
* bottom2:元素最底端距离文档最底部的距离
|
|
11
|
+
* */
|
|
12
|
+
getViewportOffset (element) {
|
|
13
|
+
|
|
14
|
+
let doc = document.documentElement;
|
|
15
|
+
let box = typeof element.getBoundingClientRect !== "undefined" ? element.getBoundingClientRect() : 0;
|
|
16
|
+
let scrollLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);
|
|
17
|
+
let scrollTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);
|
|
18
|
+
let offsetLeft = box.left + window.pageXOffset;
|
|
19
|
+
let offsetTop = box.top + window.pageYOffset;
|
|
20
|
+
|
|
21
|
+
let left = offsetLeft - scrollLeft;
|
|
22
|
+
let top = offsetTop - scrollTop;
|
|
23
|
+
|
|
24
|
+
return {
|
|
25
|
+
left: left,
|
|
26
|
+
top: top,
|
|
27
|
+
right: window.document.documentElement.clientWidth - box.width - left,
|
|
28
|
+
bottom: window.document.documentElement.clientHeight - box.height - top,
|
|
29
|
+
right2: window.document.documentElement.clientWidth - left,
|
|
30
|
+
bottom2: window.document.documentElement.clientHeight - top
|
|
31
|
+
};
|
|
32
|
+
},
|
|
33
|
+
|
|
34
|
+
/*
|
|
35
|
+
* 事件绑定
|
|
36
|
+
*
|
|
37
|
+
* @method bind
|
|
38
|
+
* @param {dom||window} elem 需要绑定的dom节点或window对象
|
|
39
|
+
* @param {String} event 绑定的事件名称
|
|
40
|
+
* @param {Function} handler 事件处理方法
|
|
41
|
+
*/
|
|
42
|
+
bind (elem, event, handler) {
|
|
43
|
+
if (elem && elem !== "undefined" && event && handler) {
|
|
44
|
+
|
|
45
|
+
event = event === "mousewheel" ? (document.onmousewheel !== undefined ? "mousewheel" : "DOMMouseScroll") : event;
|
|
46
|
+
|
|
47
|
+
if (document.attachEvent) { // if IE (and Opera depending on user setting)
|
|
48
|
+
|
|
49
|
+
elem.attachEvent("on" + event, handler);
|
|
50
|
+
}
|
|
51
|
+
else { // WC3 browsers
|
|
52
|
+
|
|
53
|
+
elem.addEventListener(event, handler, false);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
|
|
58
|
+
/*
|
|
59
|
+
* 移除事件绑定
|
|
60
|
+
*
|
|
61
|
+
* @method unbind
|
|
62
|
+
* @param {dom||window} elem 需要移除绑定的dom节点或window对象
|
|
63
|
+
* @param {String} event 绑定的事件名称
|
|
64
|
+
* @param {Function||Array<Function>} handler 事件处理方法,可以为数组
|
|
65
|
+
*/
|
|
66
|
+
unbind (elem, event, handler) {
|
|
67
|
+
if (elem && elem !== "undefined" && event && handler) {
|
|
68
|
+
|
|
69
|
+
event = event === "mousewheel" ? (document.onmousewheel !== undefined ? "mousewheel" : "DOMMouseScroll") : event;
|
|
70
|
+
|
|
71
|
+
let handlers = [];
|
|
72
|
+
if (Array.isArray(handler) && handler.length > 0) {
|
|
73
|
+
handlers = handler;
|
|
74
|
+
} else {
|
|
75
|
+
handlers.push(handler);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if (document.removeEventListener) {
|
|
79
|
+
|
|
80
|
+
handlers.forEach(e => {
|
|
81
|
+
elem.removeEventListener(event, e, false);
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
|
|
86
|
+
handlers.forEach(e => {
|
|
87
|
+
elem.removeEventListener("on" + event, e);
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
|
|
93
|
+
// 判断当前是否包含html元素
|
|
94
|
+
isHtml (val) {
|
|
95
|
+
return /<[a-z][\s\S]*>/i.test(val);
|
|
96
|
+
},
|
|
97
|
+
|
|
98
|
+
// 获取当前dislpay值
|
|
99
|
+
getDisplayValue (ele) {
|
|
100
|
+
|
|
101
|
+
if (ele) {
|
|
102
|
+
return ele.currentStyle ? ele.currentStyle.display : getComputedStyle(ele, null).display;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
},
|
|
106
|
+
|
|
107
|
+
// 是否包含横向滚动条
|
|
108
|
+
hasHorizontalScrollBar (ele) {
|
|
109
|
+
|
|
110
|
+
if (ele) {
|
|
111
|
+
|
|
112
|
+
return ele.scrollWidth > ele.clientWidth;
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
|
|
116
|
+
// 是否包含纵向滚动条
|
|
117
|
+
hasVerticalScrollBar (ele) {
|
|
118
|
+
|
|
119
|
+
if (ele) {
|
|
120
|
+
|
|
121
|
+
return ele.scrollHeight > ele.clientHeight;
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
|
|
125
|
+
// 获取滚动条的宽度
|
|
126
|
+
getScrollbarWidth () {
|
|
127
|
+
|
|
128
|
+
const outer = document.createElement("div");
|
|
129
|
+
outer.className = settings.scrollbarClass;
|
|
130
|
+
outer.style.visibility = "hidden";
|
|
131
|
+
outer.style.width = "100px";
|
|
132
|
+
outer.style.position = "absolute";
|
|
133
|
+
outer.style.top = "-9999px";
|
|
134
|
+
document.body.appendChild(outer);
|
|
135
|
+
|
|
136
|
+
const widthNoScroll = outer.offsetWidth;
|
|
137
|
+
outer.style.overflow = "scroll";
|
|
138
|
+
|
|
139
|
+
const inner = document.createElement("div");
|
|
140
|
+
inner.style.width = "100%";
|
|
141
|
+
outer.appendChild(inner);
|
|
142
|
+
|
|
143
|
+
const widthWithScroll = inner.offsetWidth;
|
|
144
|
+
outer.parentNode.removeChild(outer);
|
|
145
|
+
|
|
146
|
+
return widthNoScroll - widthWithScroll;
|
|
147
|
+
|
|
148
|
+
},
|
|
149
|
+
|
|
150
|
+
// 获取父组件信息
|
|
151
|
+
getParentCompByName (context, name) {
|
|
152
|
+
|
|
153
|
+
let parent = context.$parent;
|
|
154
|
+
|
|
155
|
+
while (parent) {
|
|
156
|
+
if (parent.$options.name !== name) {
|
|
157
|
+
parent = parent.$parent;
|
|
158
|
+
} else {
|
|
159
|
+
return parent;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
return null;
|
|
164
|
+
},
|
|
165
|
+
|
|
166
|
+
// 获取多个符合条件的子组件信息
|
|
167
|
+
getChildCompsByName (context, name) {
|
|
168
|
+
|
|
169
|
+
let result = [];
|
|
170
|
+
|
|
171
|
+
let childrens = context.$children;
|
|
172
|
+
|
|
173
|
+
while (childrens && childrens.length > 0) {
|
|
174
|
+
|
|
175
|
+
childrens.forEach(child => {
|
|
176
|
+
|
|
177
|
+
childrens = child.$children ? child.$children : null;
|
|
178
|
+
|
|
179
|
+
if (child.$options.name === name) {
|
|
180
|
+
|
|
181
|
+
result.push(child);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
return result;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
};
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<label class="v-checkbox-wrapper" :style="{'display':displayType}">
|
|
3
|
+
<span :class="checkboxClasses">
|
|
4
|
+
<input
|
|
5
|
+
class="v-checkbox-input"
|
|
6
|
+
type="checkbox"
|
|
7
|
+
:value="label"
|
|
8
|
+
v-model="model"
|
|
9
|
+
@change="change"
|
|
10
|
+
/>
|
|
11
|
+
|
|
12
|
+
<span class="v-checkbox-inner"></span>
|
|
13
|
+
</span>
|
|
14
|
+
<span><slot v-if="showSlot">{{ label }}</slot></span>
|
|
15
|
+
</label>
|
|
16
|
+
</template>
|
|
17
|
+
|
|
18
|
+
<script>
|
|
19
|
+
import utils from "../../src/utils/utils.js";
|
|
20
|
+
|
|
21
|
+
export default{
|
|
22
|
+
name: "v-checkbox",
|
|
23
|
+
props: {
|
|
24
|
+
value: {
|
|
25
|
+
type: [String, Number, Boolean]
|
|
26
|
+
},
|
|
27
|
+
// use in checkbox-group
|
|
28
|
+
label: {
|
|
29
|
+
type: [String, Number],
|
|
30
|
+
require: true
|
|
31
|
+
},
|
|
32
|
+
disabled: Boolean,
|
|
33
|
+
// partial selection effect
|
|
34
|
+
indeterminate: Boolean,
|
|
35
|
+
showSlot: {
|
|
36
|
+
type: Boolean,
|
|
37
|
+
default: true
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
},
|
|
41
|
+
data () {
|
|
42
|
+
return {
|
|
43
|
+
model: this.value,
|
|
44
|
+
checkboxGroup2: {}
|
|
45
|
+
};
|
|
46
|
+
},
|
|
47
|
+
|
|
48
|
+
computed: {
|
|
49
|
+
checkboxClasses () {
|
|
50
|
+
return [
|
|
51
|
+
"v-checkbox",
|
|
52
|
+
{
|
|
53
|
+
"v-checkbox-checked": this.model,
|
|
54
|
+
"v-checkbox-disabled": this.disabled,
|
|
55
|
+
"v-checkbox-indeterminate": this.indeterminate
|
|
56
|
+
}
|
|
57
|
+
];
|
|
58
|
+
},
|
|
59
|
+
// 是否横向显示还是纵向显示
|
|
60
|
+
displayType () {
|
|
61
|
+
let style = "inline-block";
|
|
62
|
+
if (this.checkboxGroup2) {
|
|
63
|
+
style = this.checkboxGroup2.isVerticalShow ? "block" : "inline-block";
|
|
64
|
+
}
|
|
65
|
+
return style;
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
methods: {
|
|
69
|
+
isCheckBoxGroup () {
|
|
70
|
+
this.checkboxGroup2 = utils.getParentCompByName(this, "v-checkbox-group");
|
|
71
|
+
return !!this.checkboxGroup2;
|
|
72
|
+
},
|
|
73
|
+
change (event) {
|
|
74
|
+
if (this.disabled) {
|
|
75
|
+
this.model = !this.model;
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
const checked = event.target.checked;
|
|
79
|
+
this.$emit("input", checked);
|
|
80
|
+
this.$emit("change");
|
|
81
|
+
this.isCheckBoxGroup();
|
|
82
|
+
if (this.checkboxGroup2) {
|
|
83
|
+
this.checkboxGroup2.updateModel(this.label, checked);
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
initModel () {
|
|
87
|
+
this.isCheckBoxGroup();
|
|
88
|
+
if (this.checkboxGroup2) {
|
|
89
|
+
let checkboxGroup = this.checkboxGroup2;
|
|
90
|
+
if (Array.isArray(checkboxGroup.value) && checkboxGroup.value.length > 0) {
|
|
91
|
+
if (checkboxGroup.value.indexOf(this.label) > -1) {
|
|
92
|
+
this.model = true;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
} else {
|
|
96
|
+
this.model = this.value;
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
// 通过单选更新 model
|
|
100
|
+
updateModelBySingle () {
|
|
101
|
+
if (!this.disabled) {
|
|
102
|
+
this.model = this.value;
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
// 父组件调用更新 model
|
|
106
|
+
updateModelByGroup (checkBoxGroup) {
|
|
107
|
+
if (checkBoxGroup.indexOf(this.label) > -1) {
|
|
108
|
+
if (!this.disabled) {
|
|
109
|
+
this.model = true;
|
|
110
|
+
}
|
|
111
|
+
} else {
|
|
112
|
+
if (!this.disabled) {
|
|
113
|
+
this.model = false;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
created () {
|
|
119
|
+
this.initModel();
|
|
120
|
+
},
|
|
121
|
+
watch: {
|
|
122
|
+
"value" (val) {
|
|
123
|
+
this.updateModelBySingle();
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
</script>
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="v-checkbox-group">
|
|
3
|
+
<slot></slot>
|
|
4
|
+
</div>
|
|
5
|
+
</template>
|
|
6
|
+
|
|
7
|
+
<script>
|
|
8
|
+
import utils from "../../src/utils/utils.js";
|
|
9
|
+
|
|
10
|
+
export default{
|
|
11
|
+
name: "v-checkbox-group",
|
|
12
|
+
|
|
13
|
+
props: {
|
|
14
|
+
value: {
|
|
15
|
+
type: Array,
|
|
16
|
+
default () {
|
|
17
|
+
return [];
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
// 是否垂直排列显示(当时checkbox组时生效)
|
|
21
|
+
isVerticalShow: {
|
|
22
|
+
type: Boolean,
|
|
23
|
+
default: false
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
|
|
27
|
+
methods: {
|
|
28
|
+
|
|
29
|
+
updateModel (label, checkedVal) {
|
|
30
|
+
|
|
31
|
+
let index = this.value.indexOf(label);
|
|
32
|
+
if (index > -1) {
|
|
33
|
+
|
|
34
|
+
if (!checkedVal) {
|
|
35
|
+
|
|
36
|
+
this.value.splice(index, 1);
|
|
37
|
+
}
|
|
38
|
+
} else {
|
|
39
|
+
|
|
40
|
+
if (checkedVal) {
|
|
41
|
+
|
|
42
|
+
this.value.push(label);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
this.$emit("input", this.value);
|
|
47
|
+
this.$emit("change");
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
|
|
51
|
+
watch: {
|
|
52
|
+
// 更新子组件选中状态
|
|
53
|
+
"value" (newVal) {
|
|
54
|
+
|
|
55
|
+
let children = utils.getChildCompsByName(this, "v-checkbox");
|
|
56
|
+
|
|
57
|
+
if (children.length > 0) {
|
|
58
|
+
|
|
59
|
+
children.forEach(child => {
|
|
60
|
+
|
|
61
|
+
child.updateModelByGroup(newVal);
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
</script>
|