xt-element-ui 1.1.0 → 1.1.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.
Files changed (74) hide show
  1. package/lib/css/2.3f7aa432.css +1 -0
  2. package/lib/css/3.ffcc175d.css +1 -0
  3. package/lib/css/4.9abd1f2b.css +1 -0
  4. package/lib/css/5.1a31ed8a.css +1 -0
  5. package/lib/css/6.c2d0d77e.css +1 -0
  6. package/lib/index.common.0.js +120208 -0
  7. package/lib/index.common.2.js +1053 -0
  8. package/lib/index.common.3.js +996 -0
  9. package/lib/index.common.4.js +1108 -0
  10. package/lib/index.common.5.js +1009 -0
  11. package/lib/index.common.6.js +973 -0
  12. package/lib/index.common.js +8003 -211
  13. package/lib/index.css +1 -1
  14. package/lib/index.umd.0.js +120208 -0
  15. package/lib/index.umd.2.js +1053 -0
  16. package/lib/index.umd.3.js +996 -0
  17. package/lib/index.umd.4.js +1108 -0
  18. package/lib/index.umd.5.js +1009 -0
  19. package/lib/index.umd.6.js +973 -0
  20. package/lib/index.umd.js +8003 -211
  21. package/lib/index.umd.min.0.js +34 -0
  22. package/lib/index.umd.min.2.js +1 -0
  23. package/lib/index.umd.min.3.js +1 -0
  24. package/lib/index.umd.min.4.js +1 -0
  25. package/lib/index.umd.min.5.js +1 -0
  26. package/lib/index.umd.min.6.js +1 -0
  27. package/lib/index.umd.min.js +1 -1
  28. package/package.json +7 -3
  29. package/src/components/button/index.vue +5 -5
  30. package/src/components/button/style/index.scss +743 -90
  31. package/src/components/chart/ExBar.vue +203 -0
  32. package/src/components/chart/ExLine.vue +146 -0
  33. package/src/components/chart/ExMulti.vue +257 -0
  34. package/src/components/chart/ExPie.vue +159 -0
  35. package/src/components/chart/ExTrend.vue +121 -0
  36. package/src/components/chart/index.js +2 -0
  37. package/src/components/chart/index.vue +51 -0
  38. package/src/components/chart/pieList.vue +110 -0
  39. package/src/components/chart/theme/blue.js +91 -0
  40. package/src/components/chart/theme/dark.js +91 -0
  41. package/src/components/chart/theme/orange.js +92 -0
  42. package/src/components/chart/theme/starry.js +106 -0
  43. package/src/components/chart/theme/white.js +110 -0
  44. package/src/components/chart/utils.js +273 -0
  45. package/src/components/config-provider/index.vue +150 -51
  46. package/src/components/config-provider/style/index.scss +2 -2
  47. package/src/components/date-picker/SearchDate.vue +45 -0
  48. package/src/components/date-picker/index.js +2 -0
  49. package/src/components/date-picker/index.vue +131 -0
  50. package/src/components/date-picker/quarter.vue +152 -0
  51. package/src/components/grid-box/index.js +2 -0
  52. package/src/components/grid-box/index.vue +42 -0
  53. package/src/components/layout/BaseCollapse.vue +48 -0
  54. package/src/components/layout/ExFieldset.vue +204 -0
  55. package/src/components/page/index.js +0 -0
  56. package/src/components/page/index.vue +109 -0
  57. package/src/components/select-tree/index.js +0 -0
  58. package/src/components/select-tree/index.vue +386 -0
  59. package/src/components/table/ExCell.vue +27 -0
  60. package/src/components/table/ExColumn.vue +36 -0
  61. package/src/components/table/index.js +2 -0
  62. package/src/components/table/index.vue +731 -0
  63. package/src/components/table/processor.js +380 -0
  64. package/src/components/text/index.vue +79 -2
  65. package/src/components/text/style/index.scss +28 -6
  66. package/src/components/upload/index.js +2 -0
  67. package/src/components/upload/index.vue +225 -0
  68. package/src/components/upload/preview.vue +333 -0
  69. package/src/index.js +11 -2
  70. package/src/styles/css-variables.scss +238 -148
  71. package/src/styles/theme/background.scss +1 -1
  72. package/src/styles/theme/colors.scss +90 -1
  73. package/src/styles/variables.scss +1 -1
  74. package/src/components/button/style/index copy.scss +0 -221
@@ -0,0 +1,386 @@
1
+ <template>
2
+ <div class="el-select select-tree">
3
+ <el-popover ref="elPopover" v-model="visible" transition="el-zoom-in-top" popper-class="select-tree__popover" trigger="click" :disabled="disabled" :placement="placement" :width="popoverWidth" @after-enter="handleScroll" @show="handleFocus" @hide="handleBlur">
4
+ <el-scrollbar ref="scrollbar" wrap-class="el-select-dropdown__wrap" view-class="el-select-dropdown__list">
5
+ <el-tree
6
+ ref="elTree"
7
+ class="select-tree__list"
8
+ :default-expand-keys="defaultExpandKeys"
9
+ :show-checkbox="multiple"
10
+ :expand-on-click-node="multiple"
11
+ :style="{minWidth: minWidth + 'px'}"
12
+ :data="data"
13
+ :props="props"
14
+ :node-key="propsValue"
15
+ :default-expand-all="defaultExpandAll"
16
+ :check-strictly="checkStrictly"
17
+ :lazy="lazy"
18
+ :load="load"
19
+ :icon-class="iconClass"
20
+ :highlight-current="highlightCurrent"
21
+ :indent="indent"
22
+ :accordion="accordion"
23
+ :filter-node-method="filterNodeMethod"
24
+ :auto-expand-parent="autoExpandParent"
25
+ :render-content="renderContent"
26
+ :render-after-expand="renderAfterExpand"
27
+ @check-change="checkChange"
28
+ @node-click="nodeClick"
29
+ @transitionend.native="$refs.elPopover.updatePopper()"
30
+ >
31
+ <div slot-scope="{data}" class="select-tree__item" :class="treeItemClass(data)">
32
+ {{ data[propsLabel] }}
33
+ </div>
34
+ </el-tree>
35
+ </el-scrollbar>
36
+ <el-input
37
+ ref="reference"
38
+ slot="reference"
39
+ v-model="selectedLabel"
40
+ :clearable="clearable"
41
+ :readonly="!filterable"
42
+ :validate-event="false"
43
+ :size="size"
44
+ :class="{'is-active': visible, 'is-selected': selectedLabel}"
45
+ :disabled="disabled"
46
+ :placeholder="query || placeholder"
47
+ @input="getTreeFilter"
48
+ @clear="clear"
49
+ >
50
+ <i slot="suffix" class="el-input__icon el-input__icon-arrow-down el-icon-arrow-down"></i>
51
+ </el-input>
52
+ </el-popover>
53
+ </div>
54
+ </template>
55
+ <script>
56
+ import Emitter from "element-ui/lib/mixins/emitter";
57
+ import { addResizeListener, removeResizeListener } from "element-ui/lib/utils/resize-event";
58
+ export default {
59
+ name: "XtSelectTree",
60
+ mixins: [Emitter],
61
+ inheritAttrs: false,
62
+ model: {
63
+ prop: "value",
64
+ event: "change"
65
+ },
66
+ props: {
67
+ data: {
68
+ type: Array,
69
+ default() {
70
+ return [];
71
+ }
72
+ },
73
+ props: {
74
+ type: Object,
75
+ default: () => {
76
+ return {
77
+ value: "value",
78
+ label: "label",
79
+ children: "children",
80
+ disabled: "disabled",
81
+ isLeaf: "isLeaf"
82
+ };
83
+ }
84
+ },
85
+ checkStrictly: Boolean,
86
+ nodeKey: String,
87
+ defaultExpandAll: Boolean,
88
+ lazy: Boolean,
89
+ load: Function,
90
+ iconClass: String,
91
+ indent: Number,
92
+ accordion: Boolean,
93
+ filterNodeMethod: {
94
+ type: Function,
95
+ default(v, data, node) {
96
+ if (!v) return true;
97
+ return node.label.indexOf(v) !== -1;
98
+ }
99
+ },
100
+ autoExpandParent: {
101
+ type: Boolean,
102
+ default: true
103
+ },
104
+ renderContent: Function,
105
+ renderAfterExpand: Boolean,
106
+ clearable: Boolean,
107
+ placeholder: {
108
+ type: String,
109
+ default: "请选择"
110
+ },
111
+ placement: {
112
+ type: String,
113
+ default: "bottom-start"
114
+ },
115
+ size: {
116
+ type: String,
117
+ default: ""
118
+ },
119
+ disabled: Boolean,
120
+ highlightCurrent: {
121
+ default: true,
122
+ type: Boolean
123
+ },
124
+ filterable: {
125
+ type: Boolean,
126
+ default: true
127
+ },
128
+ multiple: Boolean,
129
+ value: {
130
+ type: [Number, String, Array],
131
+ default: ""
132
+ },
133
+ defaultValue: {
134
+ type: [Number, String, Array],
135
+ default: ""
136
+ },
137
+ nodeAbleClick: {
138
+ type: Function,
139
+ default() {
140
+ return (node, data) => true;
141
+ }
142
+ },
143
+ popoverWidth: Number,
144
+ checkLeafOnly: {
145
+ default: false,
146
+ type: Boolean
147
+ },
148
+ includeHalfChecked: {
149
+ default: false,
150
+ type: Boolean
151
+ }
152
+ },
153
+ data() {
154
+ return {
155
+ timer: null,
156
+ selectedLabel: "",
157
+ minWidth: 0,
158
+ visible: false,
159
+ query: ""
160
+ };
161
+ },
162
+ computed: {
163
+ triggerEventImmediate() {
164
+ return this.defaultValue == this.value;
165
+ },
166
+ propsValue() {
167
+ return this.nodeKey || this.props.value || "value";
168
+ },
169
+ propsLabel() {
170
+ return this.props.label || "label";
171
+ },
172
+ propsIsLeaf() {
173
+ return this.props.isLeaf || "isLeaf";
174
+ },
175
+ defaultExpandKeys() {
176
+ return Array.isArray(this.value) ? this.value : (this.value || this.value === 0) ? [this.value] : [];
177
+ }
178
+ },
179
+ watch: {
180
+ value: {
181
+ handler() {
182
+ this.setSelected(this.triggerEventImmediate);
183
+ this.dispatch("ElFormItem", "el.form.change");
184
+ }
185
+ },
186
+ data() {
187
+ this.setSelected();
188
+ }
189
+ },
190
+ created() {
191
+ if (this.multiple && !Array.isArray(this.value)) {
192
+ throw new Error("[select-tree] props value must be array if use multiple");
193
+ }
194
+ },
195
+ mounted() {
196
+ this.$nextTick(() => {
197
+ this.setSelected();
198
+ });
199
+ addResizeListener(this.$el, this.handleResize);
200
+ },
201
+ beforeDestroy() {
202
+ if (this.$el && this.handleResize) {
203
+ removeResizeListener(this.$el, this.handleResize);
204
+ }
205
+ },
206
+ methods: {
207
+ getTreeFilter(v) {
208
+ this.$refs.elTree && this.$refs.elTree.filter(v);
209
+ },
210
+ handleFocus() {
211
+ if (this.filterable) {
212
+ this.$refs.elTree.filter("");
213
+ this.query = this.selectedLabel;
214
+ this.selectedLabel = "";
215
+ }
216
+ },
217
+ handleBlur() {
218
+ if (this.filterable) {
219
+ this.selectedLabel = this.query;
220
+ this.$refs.reference.blur();
221
+ }
222
+ },
223
+ valueChange(value, node) {
224
+ this.$emit("change", value, node);
225
+ },
226
+ clear() {
227
+ this.visible = false;
228
+ if (this.multiple) {
229
+ this.valueChange([]);
230
+ this.$nextTick(() => {
231
+ this.$refs.elTree.setCheckedKeys([]);
232
+ });
233
+ } else {
234
+ this.valueChange("");
235
+ }
236
+ this.$emit("clear");
237
+ },
238
+ handleScroll() {
239
+ this.$refs.scrollbar && this.$refs.scrollbar.handleScroll();
240
+ },
241
+ nodeClick(data, node, component) {
242
+ // const children = data[this.props.children];
243
+ const value = data[this.propsValue];
244
+ if (this.nodeAbleClick(data, node)) {
245
+ this.valueChange(value, data);
246
+ this.selectedLabel = data[this.propsLabel];
247
+ if (!this.multiple && !data.disabled) {
248
+ this.visible = false;
249
+ }
250
+ }
251
+ // if (((children && children.length) || (this.lazy && !data[this.propsIsLeaf])) && !this.checkStrictly) {
252
+ // component.handleExpandIconClick();
253
+ // } else if (!this.multiple && !data.disabled) {
254
+ // this.valueChange(value, data);
255
+ // this.selectedLabel = data[this.propsLabel];
256
+ // this.visible = false;
257
+ // }
258
+ },
259
+ checkChange(data, checked, inderterminate) {
260
+ if (this.timer) clearTimeout(this.timer);
261
+ this.timer = setTimeout(() => {
262
+ const elTree = this.$refs.elTree;
263
+ const leafOnly = this.checkLeafOnly;
264
+ const includeHalfChecked = this.includeHalfChecked;
265
+ const nodes = elTree.getCheckedNodes(leafOnly, includeHalfChecked);
266
+ const keys = elTree.getCheckedKeys(leafOnly);
267
+ this.valueChange(keys, nodes);
268
+ this.setMultipleSelectedLabel();
269
+ }, 50);
270
+ },
271
+ setSelected(triggerEvent) {
272
+ this.$nextTick(() => {
273
+ const elTree = this.$refs.elTree;
274
+ if (this.multiple) {
275
+ elTree.setCheckedKeys(this.value);
276
+ this.setMultipleSelectedLabel();
277
+ triggerEvent && this.checkChange();
278
+ } else {
279
+ if (this.value) {
280
+ const selectedNode = elTree.getNode(this.value);
281
+ elTree.setCurrentKey(this.value);
282
+ if (selectedNode && selectedNode.visible && !this.lazy) {
283
+ if (!selectedNode.isLeaf) {
284
+ selectedNode.expand();
285
+ } else {
286
+ selectedNode.parent.expand();
287
+ }
288
+ }
289
+ this.selectedLabel = selectedNode ? selectedNode.data[this.propsLabel] : "";
290
+ triggerEvent && this.valueChange(this.value, selectedNode);
291
+ } else {
292
+ elTree.setCurrentKey("");
293
+ this.selectedLabel = "";
294
+ triggerEvent && this.valueChange("");
295
+ }
296
+ }
297
+ });
298
+ },
299
+ setMultipleSelectedLabel() {
300
+ const elTree = this.$refs.elTree;
301
+ const selectedNodes = elTree.getCheckedNodes(!this.checkStrictly);
302
+ this.selectedLabel = selectedNodes.map((item) => item[this.propsLabel]).join(",");
303
+ },
304
+ treeItemClass(data) {
305
+ return {
306
+ "is-selected": this.multiple ? false : data[this.propsValue] === this.value, "is-disabled": data.disabled
307
+ };
308
+ },
309
+ handleResize() {
310
+ this.minWidth = this.$el.clientWidth - 2;
311
+ },
312
+ getNodeById(id) {
313
+ return this.$refs.elTree.getNode(id);
314
+ }
315
+ }
316
+ };
317
+ </script>
318
+ <style scoped lang="scss">
319
+ .select-tree{
320
+ display: inline-block;
321
+ .el-input__icon{
322
+ cursor: pointer;
323
+ transition: transform 0.3s;
324
+ &-close{
325
+ display: none;
326
+ }
327
+ }
328
+ .el-input__inner{
329
+ cursor: pointer;
330
+ padding-right: 30px;
331
+ }
332
+ .el-input{
333
+ &:hover:not(.is-disabled) {
334
+ .el-input__inner{
335
+ @include border_color("borderColor");
336
+ }
337
+ &.is-selected.isclearable{
338
+ .el-input__icon{
339
+ &.close{
340
+ display: inline-block;
341
+ }
342
+ &.arrow-down{
343
+ display: none;
344
+ }
345
+ }
346
+ }
347
+ }
348
+ &.is-active{
349
+ .el-input__icon-arrow-down{
350
+ transition: rotate(-180deg);
351
+ }
352
+ .el-input__inner{
353
+ @include border_color("$subMenuActiveText");
354
+ }
355
+ }
356
+ }
357
+ }
358
+ </style>
359
+ <style lang="scss">
360
+ .select-tree{
361
+ display: inline-block;
362
+ &__popover{
363
+ padding: 0 !important;
364
+ .popper__arrow{
365
+ left: 35px !important;
366
+ }
367
+ .el-tree-node__expand-icon.is-leaf{
368
+ cursor: pointer;
369
+ }
370
+ }
371
+ &__list{
372
+ &::-webkit-scrollbar{
373
+ width: 4px;
374
+ }
375
+ }
376
+ }
377
+ .el-tree-node__content{
378
+ height: 34px;
379
+ line-height: 34px;
380
+ }
381
+ .el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content{
382
+ color: #409EFF;
383
+ @include font_color("primaryColor");
384
+ font-weight: bold;
385
+ }
386
+ </style>
@@ -0,0 +1,27 @@
1
+ <script>
2
+ export default {
3
+ name: "ExCell",
4
+ functional: true,
5
+ props: {
6
+ row: Object,
7
+ index: Number,
8
+ formatter: Function,
9
+ column: {
10
+ type: Object,
11
+ default: null
12
+ }
13
+ },
14
+ render: (h, ctx) => {
15
+ const params = {
16
+ row: ctx.props.row,
17
+ index: ctx.props.index
18
+ };
19
+ debugger
20
+ if (ctx.props.column) params.column = ctx.props.column;
21
+ const isVnode = (it) => typeof it === "object" && it.hasOwnProperty("componentOptions");
22
+ const renderNode = ctx.props.formatter(h, params);
23
+ // 非Vnode 字符处理
24
+ return isVnode(renderNode) ? renderNode : h("span", renderNode);
25
+ }
26
+ };
27
+ </script>
@@ -0,0 +1,36 @@
1
+ <template>
2
+ <el-table-column v-bind="setAttrs(column)">
3
+ <template slot="header" slot-scope="scope">
4
+ <slot :name="column.slotHeader || 'header'" :column="scope.column">
5
+ <span> {{ scope.column.label }}</span>
6
+ </slot>
7
+ </template>
8
+ <ExColumn v-for="(child, index) in column.children" :key="index" :column="child" />
9
+ </el-table-column>
10
+ </template>
11
+ <script>
12
+ export default {
13
+ name: "ExColumn",
14
+ props: {
15
+ column: {
16
+ type: Object,
17
+ default: () => {
18
+ return undefined;
19
+ },
20
+ required: true
21
+ }
22
+ },
23
+ methods: {
24
+ setAttrs(params) {
25
+ const { ...options } = params;
26
+ if (!options.align) {
27
+ options.align = "center";
28
+ }
29
+ if (options.showTip) {
30
+ options.showOverflowTooltip = true;
31
+ }
32
+ return { ...options };
33
+ }
34
+ }
35
+ };
36
+ </script>
@@ -0,0 +1,2 @@
1
+ import XtTable from './index.vue'
2
+ export default XtTable