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.
Files changed (215) hide show
  1. package/README.md +30 -0
  2. package/lib/.DS_Store +0 -0
  3. package/lib/0.bri-components.min.js +2 -0
  4. package/lib/0.bri-components.min.js.map +1 -0
  5. package/lib/1.bri-components.min.js +2 -0
  6. package/lib/1.bri-components.min.js.map +1 -0
  7. package/lib/2.bri-components.min.js +2 -0
  8. package/lib/2.bri-components.min.js.map +1 -0
  9. package/lib/3.bri-components.min.js +2 -0
  10. package/lib/3.bri-components.min.js.gz +0 -0
  11. package/lib/3.bri-components.min.js.map +1 -0
  12. package/lib/4.bri-components.min.js +2 -0
  13. package/lib/4.bri-components.min.js.gz +0 -0
  14. package/lib/4.bri-components.min.js.map +1 -0
  15. package/lib/5.bri-components.min.js +2 -0
  16. package/lib/5.bri-components.min.js.map +1 -0
  17. package/lib/6.bri-components.min.js +2 -0
  18. package/lib/6.bri-components.min.js.map +1 -0
  19. package/lib/bri-components.min.js +21 -0
  20. package/lib/bri-components.min.js.gz +0 -0
  21. package/lib/bri-components.min.js.map +1 -0
  22. package/lib/styles/bri-components.css +1 -0
  23. package/lib/styles/bundle.css +14 -0
  24. package/lib/styles/font/fontello.eot +0 -0
  25. package/lib/styles/font/fontello.svg +32 -0
  26. package/lib/styles/font/fontello.ttf +0 -0
  27. package/lib/styles/font/fontello.woff +0 -0
  28. package/lib/styles/font/fontello.woff2 +0 -0
  29. package/package.json +121 -0
  30. package/src/.DS_Store +0 -0
  31. package/src/components/controls/base/DshBack.vue +36 -0
  32. package/src/components/controls/base/DshCascader.vue +366 -0
  33. package/src/components/controls/base/DshCascaderMultiple.vue +158 -0
  34. package/src/components/controls/base/DshCheckbox.vue +199 -0
  35. package/src/components/controls/base/DshCoordinates.vue +497 -0
  36. package/src/components/controls/base/DshDate.vue +148 -0
  37. package/src/components/controls/base/DshDaterange.vue +335 -0
  38. package/src/components/controls/base/DshDivider.vue +59 -0
  39. package/src/components/controls/base/DshEditor.vue +166 -0
  40. package/src/components/controls/base/DshInput.vue +139 -0
  41. package/src/components/controls/base/DshLabels.vue +302 -0
  42. package/src/components/controls/base/DshNumber/BriInputNumber/BriInputNumber.vue +425 -0
  43. package/src/components/controls/base/DshNumber/BriInputNumber/mixins/emitter.js +34 -0
  44. package/src/components/controls/base/DshNumber/BriInputNumber/mixins/form.js +14 -0
  45. package/src/components/controls/base/DshNumber/BriInputNumber/utils/assist.js +322 -0
  46. package/src/components/controls/base/DshNumber/DshNumber.vue +148 -0
  47. package/src/components/controls/base/DshNumberange.vue +137 -0
  48. package/src/components/controls/base/DshPackage.vue +72 -0
  49. package/src/components/controls/base/DshSelect.vue +231 -0
  50. package/src/components/controls/base/DshSwitch.vue +112 -0
  51. package/src/components/controls/base/DshUndeveloped.vue +39 -0
  52. package/src/components/controls/base/YSerialNumber.vue +37 -0
  53. package/src/components/controls/base/ZUpload/YUploadImage.vue +228 -0
  54. package/src/components/controls/base/ZUpload/index.vue +356 -0
  55. package/src/components/controls/base/ZUpload/upload-list.vue +277 -0
  56. package/src/components/controls/base/ZUpload/upload-listItem.vue +0 -0
  57. package/src/components/controls/base/ZUpload/uploadMixin.js +397 -0
  58. package/src/components/controls/base/selectMixin.js +110 -0
  59. package/src/components/controls/base/textMultiple/DshTextMultiple.vue +94 -0
  60. package/src/components/controls/base/textMultiple/MultipleInput.vue +106 -0
  61. package/src/components/controls/controlMap.js +94 -0
  62. package/src/components/controls/controlMixin.js +84 -0
  63. package/src/components/form/DshAdvSearchForm.vue +341 -0
  64. package/src/components/form/DshDefaultSearch.vue +203 -0
  65. package/src/components/form/DshForm.vue +364 -0
  66. package/src/components/form/searchMixin.js +205 -0
  67. package/src/components/list/DshBox/DshBox.vue +168 -0
  68. package/src/components/list/DshBox/DshCard.vue +219 -0
  69. package/src/components/list/DshBox/DshCrossTable.vue +624 -0
  70. package/src/components/list/DshBox/DshList.vue +442 -0
  71. package/src/components/list/DshBox/DshPanel.vue +407 -0
  72. package/src/components/list/DshBox/DshSingleData.vue +82 -0
  73. package/src/components/list/DshBox/DshTable.vue +273 -0
  74. package/src/components/list/DshCascaderTable.vue +817 -0
  75. package/src/components/list/DshFlatTable.vue +622 -0
  76. package/src/components/list/ZTree.vue +527 -0
  77. package/src/components/list/easyTable/index.js +23 -0
  78. package/src/components/list/easyTable/src/directives/clickoutside.js +32 -0
  79. package/src/components/list/easyTable/src/mixins/layerAdjustment.js +62 -0
  80. package/src/components/list/easyTable/src/settings/settings.js +11 -0
  81. package/src/components/list/easyTable/src/utils/deepClone.js +256 -0
  82. package/src/components/list/easyTable/src/utils/dom.js +41 -0
  83. package/src/components/list/easyTable/src/utils/utils.js +190 -0
  84. package/src/components/list/easyTable/v-checkbox/index.js +7 -0
  85. package/src/components/list/easyTable/v-checkbox/src/checkbox.vue +127 -0
  86. package/src/components/list/easyTable/v-checkbox-group/index.js +7 -0
  87. package/src/components/list/easyTable/v-checkbox-group/src/checkbox-group.vue +68 -0
  88. package/src/components/list/easyTable/v-dropdown/index.js +7 -0
  89. package/src/components/list/easyTable/v-dropdown/src/dropdown.vue +337 -0
  90. package/src/components/list/easyTable/v-table/index.js +7 -0
  91. package/src/components/list/easyTable/v-table/src/body-cell-merge-mixin.js +141 -0
  92. package/src/components/list/easyTable/v-table/src/cell-edit-mixin.js +102 -0
  93. package/src/components/list/easyTable/v-table/src/checkbox-selection-mixin.js +189 -0
  94. package/src/components/list/easyTable/v-table/src/classes-mixin.js +56 -0
  95. package/src/components/list/easyTable/v-table/src/drag-width-mixin.js +202 -0
  96. package/src/components/list/easyTable/v-table/src/export-csv.js +74 -0
  97. package/src/components/list/easyTable/v-table/src/frozen-columns-mixin.js +134 -0
  98. package/src/components/list/easyTable/v-table/src/loading.vue +49 -0
  99. package/src/components/list/easyTable/v-table/src/scroll-bar-control-mixin.js +21 -0
  100. package/src/components/list/easyTable/v-table/src/scroll-control-mixin.js +92 -0
  101. package/src/components/list/easyTable/v-table/src/sort-control-mixin.js +108 -0
  102. package/src/components/list/easyTable/v-table/src/table-empty-mixin.js +73 -0
  103. package/src/components/list/easyTable/v-table/src/table-empty.vue +66 -0
  104. package/src/components/list/easyTable/v-table/src/table-filters-mixin.js +126 -0
  105. package/src/components/list/easyTable/v-table/src/table-footer-mixin.js +122 -0
  106. package/src/components/list/easyTable/v-table/src/table-resize-mixin.js +279 -0
  107. package/src/components/list/easyTable/v-table/src/table-row-mouse-events-mixin.js +123 -0
  108. package/src/components/list/easyTable/v-table/src/table.vue +1565 -0
  109. package/src/components/list/easyTable/v-table/src/title-cell-merge-mixin.js +115 -0
  110. package/src/components/list/evTable/EvTable.vue +323 -0
  111. package/src/components/list/evTable/EvTableMixin.js +26 -0
  112. package/src/components/other/DshAvatar.vue +149 -0
  113. package/src/components/other/DshBtnModal.vue +64 -0
  114. package/src/components/other/DshColorPanel.vue +128 -0
  115. package/src/components/other/DshEditPanel.vue +130 -0
  116. package/src/components/other/InfoCascader.vue +258 -0
  117. package/src/components/other/YNoPermission.vue +45 -0
  118. package/src/components/other/ZCode.vue +125 -0
  119. package/src/components/other/ZCollapseTree.vue +84 -0
  120. package/src/components/other/ZGantt.vue +669 -0
  121. package/src/components/other/ZIframe.vue +105 -0
  122. package/src/components/other/ZLoading.vue +59 -0
  123. package/src/components/other/menu/DshMenu.vue +133 -0
  124. package/src/components/other/menu/DshMenuNav.vue +104 -0
  125. package/src/components/pages/Error/Error403.vue +34 -0
  126. package/src/components/pages/Error/Error404.vue +34 -0
  127. package/src/components/pages/Error/Error500.vue +34 -0
  128. package/src/components/pages/Error/error.less +163 -0
  129. package/src/components/pages/Error/errorBack.vue +38 -0
  130. package/src/components/small/Ctooltip.vue +90 -0
  131. package/src/components/small/DshButtons.vue +195 -0
  132. package/src/components/small/DshControlDefine.vue +110 -0
  133. package/src/components/small/DshCrumbs.vue +61 -0
  134. package/src/components/small/DshCrumbsItem.vue +107 -0
  135. package/src/components/small/DshDropdown.vue +159 -0
  136. package/src/components/small/DshFileShow.vue +212 -0
  137. package/src/components/small/DshIcons.vue +63 -0
  138. package/src/components/small/DshModal.vue +255 -0
  139. package/src/components/small/DshPage.vue +98 -0
  140. package/src/components/small/DshSteps.vue +68 -0
  141. package/src/components/small/DshTabs.vue +227 -0
  142. package/src/components/small/DshTags.vue +58 -0
  143. package/src/components/small/DshTdRender.js +21 -0
  144. package/src/components/small/DshTitle.vue +36 -0
  145. package/src/components/small/render.js +20 -0
  146. package/src/components/unit/DshFormItem.vue +157 -0
  147. package/src/components/unit/DshUnit.vue +72 -0
  148. package/src/components/unit/unitMixin.js +43 -0
  149. package/src/datas/.DS_Store +0 -0
  150. package/src/datas/common/region.json +1 -0
  151. package/src/datas/common/resourceData.json +20 -0
  152. package/src/datas/index.js +11 -0
  153. package/src/index.js +243 -0
  154. package/src/styles/animate.less +16 -0
  155. package/src/styles/bundle.css +14 -0
  156. package/src/styles/common/box.less +157 -0
  157. package/src/styles/common/common.less +31 -0
  158. package/src/styles/common/flex.less +282 -0
  159. package/src/styles/common/index.less +4 -0
  160. package/src/styles/common/text.less +43 -0
  161. package/src/styles/components/controls/DshCascader.less +75 -0
  162. package/src/styles/components/controls/DshCheckbox.less +156 -0
  163. package/src/styles/components/controls/DshCoordinates.less +72 -0
  164. package/src/styles/components/controls/DshDaterange.less +49 -0
  165. package/src/styles/components/controls/DshDivider.less +115 -0
  166. package/src/styles/components/controls/DshEditor.less +52 -0
  167. package/src/styles/components/controls/DshInput.less +40 -0
  168. package/src/styles/components/controls/DshLabels.less +187 -0
  169. package/src/styles/components/controls/DshNumberange.less +24 -0
  170. package/src/styles/components/controls/DshPackage.less +25 -0
  171. package/src/styles/components/controls/DshSelect.less +172 -0
  172. package/src/styles/components/controls/MultipleInput.less +55 -0
  173. package/src/styles/components/controls/ZUpload.less +446 -0
  174. package/src/styles/components/form/DshAdvSearchForm.less +159 -0
  175. package/src/styles/components/form/DshDefaultSearch.less +71 -0
  176. package/src/styles/components/index.less +49 -0
  177. package/src/styles/components/list/DshCascaderTable.less +113 -0
  178. package/src/styles/components/list/DshCrossTable.less +175 -0
  179. package/src/styles/components/list/DshFlatTable.less +98 -0
  180. package/src/styles/components/list/DshSingleData.less +30 -0
  181. package/src/styles/components/list/evTable.less +79 -0
  182. package/src/styles/components/list/evtable/animation.less +141 -0
  183. package/src/styles/components/list/evtable/font/fontello.eot +0 -0
  184. package/src/styles/components/list/evtable/font/fontello.svg +32 -0
  185. package/src/styles/components/list/evtable/font/fontello.ttf +0 -0
  186. package/src/styles/components/list/evtable/font/fontello.woff +0 -0
  187. package/src/styles/components/list/evtable/font/fontello.woff2 +0 -0
  188. package/src/styles/components/list/evtable/fontello.less +68 -0
  189. package/src/styles/components/list/evtable/index.less +5 -0
  190. package/src/styles/components/list/evtable/v-checkbox.less +167 -0
  191. package/src/styles/components/list/evtable/v-dropdown.less +235 -0
  192. package/src/styles/components/list/evtable/v-table.less +334 -0
  193. package/src/styles/components/list/ivu_reset.less +49 -0
  194. package/src/styles/components/other/DshEditPanel.less +70 -0
  195. package/src/styles/components/other/DshMenu.less +37 -0
  196. package/src/styles/components/other/DshMenuNav.less +82 -0
  197. package/src/styles/components/other/InfoCascader.less +55 -0
  198. package/src/styles/components/other/ZCode.less +1 -0
  199. package/src/styles/components/other/ZCollapseTree.less +62 -0
  200. package/src/styles/components/other/ZGantt.less +278 -0
  201. package/src/styles/components/other/ZLoading.less +36 -0
  202. package/src/styles/components/small/Ctooltip.less +5 -0
  203. package/src/styles/components/small/DshButtons.less +40 -0
  204. package/src/styles/components/small/DshControlDefine.less +64 -0
  205. package/src/styles/components/small/DshDropdown.less +61 -0
  206. package/src/styles/components/small/DshPage.less +94 -0
  207. package/src/styles/components/small/DshSteps.less +58 -0
  208. package/src/styles/components/small/DshTabs.less +82 -0
  209. package/src/styles/components/small/DshTitle.less +18 -0
  210. package/src/styles/components/unit/DshFormItem.less +124 -0
  211. package/src/styles/define.less +374 -0
  212. package/src/styles/index.less +10 -0
  213. package/src/styles/reset.less +83 -0
  214. package/src/styles/variables.less +98 -0
  215. 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,7 @@
1
+ import VCheckbox from "./src/checkbox.vue";
2
+
3
+ VCheckbox.install = function (Vue) {
4
+ Vue.component(VCheckbox.name, VCheckbox);
5
+ };
6
+
7
+ export default VCheckbox;
@@ -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,7 @@
1
+ import VCheckboxGroup from "./src/checkbox-group.vue";
2
+
3
+ VCheckboxGroup.install = function (Vue) {
4
+ Vue.component(VCheckboxGroup.name, VCheckboxGroup);
5
+ };
6
+
7
+ export default VCheckboxGroup;
@@ -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>