cy-element-ui 1.1.6 → 1.1.7

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 (142) hide show
  1. package/lib/alert.js +420 -0
  2. package/lib/aside.js +277 -0
  3. package/lib/autocomplete.js +952 -0
  4. package/lib/avatar.js +363 -0
  5. package/lib/backtop.js +404 -0
  6. package/lib/badge.js +334 -0
  7. package/lib/breadcrumb-item.js +322 -0
  8. package/lib/breadcrumb.js +293 -0
  9. package/lib/button-group.js +262 -0
  10. package/lib/button.js +357 -0
  11. package/lib/calendar.js +933 -0
  12. package/lib/card.js +297 -0
  13. package/lib/carousel-item.js +434 -0
  14. package/lib/carousel.js +707 -0
  15. package/lib/cascader-panel.js +1558 -0
  16. package/lib/cascader.js +1439 -0
  17. package/lib/checkbox-button.js +583 -0
  18. package/lib/checkbox-group.js +313 -0
  19. package/lib/checkbox.js +627 -0
  20. package/lib/col.js +177 -0
  21. package/lib/collapse-item.js +497 -0
  22. package/lib/collapse.js +329 -0
  23. package/lib/color-picker.js +1943 -0
  24. package/lib/container.js +288 -0
  25. package/lib/date-picker.js +6336 -0
  26. package/lib/descriptions-item.js +140 -0
  27. package/lib/descriptions.js +457 -0
  28. package/lib/dialog.js +598 -0
  29. package/lib/directives/mousewheel.js +26 -0
  30. package/lib/directives/repeat-click.js +33 -0
  31. package/lib/divider.js +313 -0
  32. package/lib/drawer.js +592 -0
  33. package/lib/dropdown-item.js +316 -0
  34. package/lib/dropdown-menu.js +351 -0
  35. package/lib/dropdown.js +643 -0
  36. package/lib/element-ui.common.js +44659 -0
  37. package/lib/empty.js +730 -0
  38. package/lib/footer.js +277 -0
  39. package/lib/form-item.js +826 -0
  40. package/lib/form.js +466 -0
  41. package/lib/header.js +277 -0
  42. package/lib/icon.js +265 -0
  43. package/lib/image.js +1138 -0
  44. package/lib/index.js +1 -1
  45. package/lib/infinite-scroll.js +301 -0
  46. package/lib/input-number.js +757 -0
  47. package/lib/input.js +998 -0
  48. package/lib/link.js +332 -0
  49. package/lib/loading.js +631 -0
  50. package/lib/locale/format.js +56 -0
  51. package/lib/locale/index.js +63 -0
  52. package/lib/locale/lang/en.js +126 -0
  53. package/lib/locale/lang/zh-CN.js +126 -0
  54. package/lib/locale/lang/zh-TW.js +126 -0
  55. package/lib/main.js +264 -0
  56. package/lib/menu-item-group.js +308 -0
  57. package/lib/menu-item.js +491 -0
  58. package/lib/menu.js +865 -0
  59. package/lib/message-box.js +1192 -0
  60. package/lib/message.js +548 -0
  61. package/lib/mixins/emitter.js +36 -0
  62. package/lib/mixins/focus.js +15 -0
  63. package/lib/mixins/locale.js +17 -0
  64. package/lib/mixins/migrating.js +69 -0
  65. package/lib/notification.js +615 -0
  66. package/lib/option-group.js +344 -0
  67. package/lib/option.js +474 -0
  68. package/lib/page-header.js +319 -0
  69. package/lib/pagination.js +950 -0
  70. package/lib/popconfirm.js +457 -0
  71. package/lib/popover.js +617 -0
  72. package/lib/progress.js +595 -0
  73. package/lib/radio-button.js +463 -0
  74. package/lib/radio-group.js +391 -0
  75. package/lib/radio.js +497 -0
  76. package/lib/rate.js +670 -0
  77. package/lib/result.js +578 -0
  78. package/lib/row.js +149 -0
  79. package/lib/scrollbar.js +423 -0
  80. package/lib/select.js +2167 -0
  81. package/lib/skeleton-item.js +342 -0
  82. package/lib/skeleton.js +372 -0
  83. package/lib/slider.js +1199 -0
  84. package/lib/spinner.js +301 -0
  85. package/lib/statistic.js +533 -0
  86. package/lib/step.js +522 -0
  87. package/lib/steps.js +342 -0
  88. package/lib/submenu.js +701 -0
  89. package/lib/switch.js +554 -0
  90. package/lib/tab-pane.js +332 -0
  91. package/lib/tabDialog.js +1184 -0
  92. package/lib/table-column.js +952 -0
  93. package/lib/table.js +5011 -0
  94. package/lib/tabs.js +920 -0
  95. package/lib/tag.js +304 -0
  96. package/lib/theme-chalk/index.css +1 -1
  97. package/lib/theme-chalk/tabDialog.css +1 -0
  98. package/lib/time-picker.js +2967 -0
  99. package/lib/time-select.js +1765 -0
  100. package/lib/timeline-item.js +371 -0
  101. package/lib/timeline.js +275 -0
  102. package/lib/tooltip.js +425 -0
  103. package/lib/transfer.js +1102 -0
  104. package/lib/transitions/collapse-transition.js +91 -0
  105. package/lib/tree.js +2263 -0
  106. package/lib/treeSelect.js +746 -0
  107. package/lib/umd/locale/en.js +142 -0
  108. package/lib/umd/locale/zh-CN.js +142 -0
  109. package/lib/umd/locale/zh-TW.js +142 -0
  110. package/lib/upload.js +1390 -0
  111. package/lib/utils/after-leave.js +35 -0
  112. package/lib/utils/aria-dialog.js +104 -0
  113. package/lib/utils/aria-utils.js +126 -0
  114. package/lib/utils/clickoutside.js +79 -0
  115. package/lib/utils/date-util.js +310 -0
  116. package/lib/utils/date.js +369 -0
  117. package/lib/utils/dom.js +234 -0
  118. package/lib/utils/lodash.js +9421 -0
  119. package/lib/utils/menu/aria-menubar.js +24 -0
  120. package/lib/utils/menu/aria-menuitem.js +62 -0
  121. package/lib/utils/menu/aria-submenu.js +69 -0
  122. package/lib/utils/merge.js +21 -0
  123. package/lib/utils/popper.js +1261 -0
  124. package/lib/utils/popup/index.js +233 -0
  125. package/lib/utils/popup/popup-manager.js +205 -0
  126. package/lib/utils/resize-event.js +59 -0
  127. package/lib/utils/scroll-into-view.js +38 -0
  128. package/lib/utils/scrollbar-width.js +39 -0
  129. package/lib/utils/shared.js +12 -0
  130. package/lib/utils/types.js +52 -0
  131. package/lib/utils/util.js +272 -0
  132. package/lib/utils/vdom.js +13 -0
  133. package/lib/utils/vue-popper.js +202 -0
  134. package/package.json +1 -1
  135. package/packages/tabDialog/index.js +23 -0
  136. package/packages/tabDialog/src/dialog/drag.js +63 -0
  137. package/packages/tabDialog/src/dialog/dragHeight.js +34 -0
  138. package/packages/tabDialog/src/dialog/dragWidth.js +30 -0
  139. package/packages/tabDialog/src/main.vue +277 -0
  140. package/packages/theme-chalk/src/index.scss +1 -0
  141. package/packages/theme-chalk/src/tabDialog.scss +43 -0
  142. package/src/index.js +7 -4
@@ -0,0 +1,277 @@
1
+ <template>
2
+ <div class="cy-tab-dialog">
3
+ <div
4
+ v-show="visible && modal"
5
+ contenteditable="false"
6
+ class="cy-tab-dialog-modal"
7
+ :style="{ zIndex: modelZIndex, height: modelHeight ? modelHeight : '100%' }"
8
+ @click="closeOnClickModal && handleClose"
9
+ ></div>
10
+
11
+ <el-dialog
12
+ :visible="visible"
13
+ :title="title"
14
+ :width="width"
15
+ :fullscreen="fullscreen"
16
+ :modal="false"
17
+ :modal-append-to-body="false"
18
+ :append-to-body="false"
19
+ :lock-scroll="true"
20
+ :custom-class="customClass"
21
+ :close-on-click-modal="appendToTagsView ? false : closeOnClickModal"
22
+ :close-on-press-escape="appendToTagsView ? false : closeOnPressEscape"
23
+ :show-close="showClose"
24
+ :center="center"
25
+ :destroy-on-close="destroyOnClose"
26
+ contenteditable="false"
27
+ v-dialog-drag="isDrag"
28
+ v-dialog-drag-width="isDrag"
29
+ v-dialog-drag-height="isDrag"
30
+ :before-close="beforeClose"
31
+ @open="handleOpen"
32
+ @opened="handleOpened"
33
+ @close="handleClose"
34
+ @closed="handleClosed"
35
+ >
36
+ <template v-if="$slots.title" slot="title">
37
+ <slot name="title"></slot>
38
+ </template>
39
+
40
+ <slot></slot>
41
+
42
+ <template v-if="$slots.footer" slot="footer">
43
+ <slot name="footer"></slot>
44
+ </template>
45
+ </el-dialog>
46
+ </div>
47
+ </template>
48
+
49
+ <script>
50
+ import ElDialog from '../../dialog';
51
+ import Vue from 'vue';
52
+
53
+ export default {
54
+ name: 'CyTabDialog',
55
+ components: {
56
+ ElDialog
57
+ },
58
+ props: {
59
+ // 是否显示 Dialog,支持 .sync 修饰符
60
+ visible: {
61
+ type: Boolean,
62
+ default: false
63
+ },
64
+ // Dialog 的标题,也可通过具名 slot
65
+ title: {
66
+ type: String,
67
+ default: ''
68
+ },
69
+ // Dialog 的宽度
70
+ width: {
71
+ type: String,
72
+ default: '50%'
73
+ },
74
+ // 是否为全屏 Dialog
75
+ fullscreen: {
76
+ type: Boolean,
77
+ default: false
78
+ },
79
+ // Dialog CSS 中的 margin-top 值
80
+ top: {
81
+ type: String,
82
+ default: '6vh'
83
+ },
84
+ // 是否需要遮罩层
85
+ modal: {
86
+ type: Boolean,
87
+ default: true
88
+ },
89
+ // 遮罩层是否插入至 body 元素上,若为 false,则遮罩层会插入至 Dialog 的父元素上
90
+ appendToBody: {
91
+ type: Boolean,
92
+ default: false
93
+ },
94
+ // 是否在 Dialog 出现时将 body或上层 滚动锁定
95
+ lockScroll: {
96
+ type: Boolean,
97
+ default: true
98
+ },
99
+ // Dialog 的自定义类名
100
+ customClass: {
101
+ type: String,
102
+ default: ''
103
+ },
104
+ // 是否可以通过点击 modal 关闭 Dialog
105
+ closeOnClickModal: {
106
+ type: Boolean,
107
+ default: false
108
+ },
109
+ // 是否可以通过按下 ESC 关闭 Dialog
110
+ closeOnPressEscape: {
111
+ type: Boolean,
112
+ default: true
113
+ },
114
+ // 是否显示关闭按钮
115
+ showClose: {
116
+ type: Boolean,
117
+ default: true
118
+ },
119
+ // 是否对头部和底部采用居中布局
120
+ center: {
121
+ type: Boolean,
122
+ default: false
123
+ },
124
+ // 关闭时销毁 Dialog 中的元素
125
+ destroyOnClose: {
126
+ type: Boolean,
127
+ default: false
128
+ },
129
+ // 是否放到tagsView中,即当前app-views下面,此属性true时,appendToBody无效
130
+ appendToTagsView: {
131
+ type: Boolean,
132
+ default: false
133
+ },
134
+ // 对话框是否可拖拽
135
+ isDrag: {
136
+ type: Boolean,
137
+ default: true
138
+ },
139
+ // 关闭前的回调,会暂停 Dialog 的关闭
140
+ beforeClose: {
141
+ type: Function
142
+ }
143
+ },
144
+ data() {
145
+ return {
146
+ // 判断dialog是否已经放到对应的div下
147
+ rendered: false,
148
+ modelZIndex: 1000,
149
+ modelHeight: 0,
150
+ // 当前app-views的dom元素
151
+ parentDom: null,
152
+ // 当前el-dialog的dom元素
153
+ elDialogDom: null
154
+ };
155
+ },
156
+ watch: {
157
+ visible: {
158
+ immediate: true,
159
+ handler(val) {
160
+ if (val) {
161
+ this.$emit('open');
162
+ Vue.nextTick(() => {
163
+ const dom = this.$el;
164
+ // 首次打开
165
+ if (!this.rendered) {
166
+ this.rendered = true;
167
+ if (this.appendToTagsView) {
168
+ // 将当前dialog挪到当前app-views里面 app-container
169
+ this.parentDom = dom.closest('.app-container');
170
+ if (!this.parentDom) this.parentDom = document.body;
171
+ this.parentDom.append(dom);
172
+ } else if (this.appendToBody) {
173
+ // 将当前dialog挪到当前body里面
174
+ this.parentDom = document.body;
175
+ this.parentDom.append(dom);
176
+ }
177
+ // 添加键盘监听事件
178
+ if (this.closeOnPressEscape) {
179
+ document.addEventListener('keydown', this.escKeyDown);
180
+ }
181
+ }
182
+
183
+ setTimeout(() => {
184
+ if (this.parentDom) this.modelHeight = this.parentDom.scrollHeight + 'px';
185
+ // 当前VDialog不在body中时
186
+ if (!this.parentDom || this.parentDom.tagName.toUpperCase() !== 'BODY') {
187
+ // 获取el-dialog的宽度,如果大于app-views的宽度,则el-dialog不居中显示
188
+ let elDialogWidth = dom.getElementsByClassName('el-dialog')[0].clientWidth;
189
+ if (!this.parentDom || elDialogWidth < this.parentDom.clientWidth) {
190
+ dom.getElementsByClassName('el-dialog')[0].style.left = '50%';
191
+ dom.getElementsByClassName('el-dialog')[0].style.transform = 'translateX(-50%)';
192
+ } else {
193
+ dom.getElementsByClassName('el-dialog')[0].style.left = '0';
194
+ }
195
+ }
196
+ dom.getElementsByClassName('el-dialog')[0].style.marginTop = this.top;
197
+ }, 50);
198
+
199
+ // 获取el-dialog的z-index,赋值给model,用于处理model的层级问题
200
+ this.elDialogDom = dom.children[1];
201
+ setTimeout(() => {
202
+ this.modelZIndex = this.elDialogDom.style.zIndex;
203
+ }, 50);
204
+ });
205
+ } else {
206
+ // immediate=true时,首次打开不需要触发close事件
207
+ if (this.rendered) this.$emit('close');
208
+ }
209
+ }
210
+ }
211
+ },
212
+ methods: {
213
+ handleOpen() {
214
+ this.$emit('open');
215
+ },
216
+
217
+ handleOpened() {
218
+ this.$emit('opened');
219
+ },
220
+
221
+ handleClose() {
222
+ this.$emit('update:visible', false);
223
+ this.$emit('close');
224
+ },
225
+
226
+ handleClosed() {
227
+ this.$emit('closed');
228
+ },
229
+
230
+ /**
231
+ * 监听esc键
232
+ */
233
+ escKeyDown(event) {
234
+ if (event.keyCode === 27) {
235
+ // 获取body下的直接子节点中的已打开的vDialog
236
+ let bodyVDialogDomArr = [];
237
+ let bodyChildrenArr = document.body.childNodes;
238
+ for (let i = 0; i < bodyChildrenArr.length; i++) {
239
+ let item = bodyChildrenArr[i];
240
+ if (item.tagName && item.tagName.toUpperCase() === 'DIV' && item.className && item.className.split(' ').includes('cy-tab-dialog-opened')) {
241
+ bodyVDialogDomArr.push(item);
242
+ }
243
+ }
244
+ // 判断body中是否有已打开的vDialog,如果有,优先关闭body下的vDialog
245
+ if (bodyVDialogDomArr.length > 0) {
246
+ // 获取当前cy-tab-dialog在当前body中的下标
247
+ let curDomIndex = [].indexOf.call(bodyVDialogDomArr, this.$el);
248
+ if (curDomIndex === bodyVDialogDomArr.length - 1) {
249
+ this.handleClose();
250
+ }
251
+ } else if (document.getElementById('tags-view-container') && this.parentDom.parentElement.getAttribute('include_name')) {
252
+ // 获取当前app-views对应的include_name值
253
+ let includeName = this.parentDom.parentElement.getAttribute('include_name');
254
+ // 根据includeName获取tagsView中的tag标签页
255
+ let tagDom = document.getElementById('tags-view-container').querySelectorAll(`[include_name=${ includeName }]`);
256
+ if (tagDom && tagDom[0]) {
257
+ // 判断此标签页是否为选中状态,只有选中状态中的vDialog才可以进行关闭
258
+ if (tagDom[0].className.split(' ').includes('active')) {
259
+ let vDialogList = this.parentDom.getElementsByClassName('cy-tab-dialog-opened');
260
+ // 获取当前cy-tab-dialog在当前app-views中的下标
261
+ let curDomIndex = [].indexOf.call(vDialogList, this.$el);
262
+ if (curDomIndex === vDialogList.length - 1) {
263
+ this.handleClose();
264
+ }
265
+ }
266
+ }
267
+ } else {
268
+ this.handleClose();
269
+ }
270
+ }
271
+ }
272
+ },
273
+ beforeDestroy() {
274
+ document.removeEventListener('keydown', this.escKeyDown);
275
+ }
276
+ };
277
+ </script>
@@ -86,3 +86,4 @@
86
86
  @import "./descriptions-item.scss";
87
87
  @import "./result.scss";
88
88
  @import "./treeSelect.scss";
89
+ @import "./tabDialog.scss";
@@ -0,0 +1,43 @@
1
+ @import "./base.scss";
2
+
3
+ .cy-tab-dialog {
4
+ line-height: 0;
5
+ }
6
+
7
+ .cy-tab-dialog-modal {
8
+ position: absolute;
9
+ top: 0;
10
+ bottom: 0;
11
+ left: 0;
12
+ right: 0;
13
+ opacity: 0.5;
14
+ background: #000000;
15
+ }
16
+
17
+ .cy-tab-dialog .el-dialog__wrapper {
18
+ position: absolute !important;
19
+ line-height: 18px;
20
+
21
+ .el-dialog {
22
+ box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .4);
23
+ display: flex;
24
+ flex-direction: column;
25
+
26
+ .el-dialog__header {
27
+ flex-shrink: 0;
28
+ }
29
+
30
+ .el-dialog__body {
31
+ height: 100%;
32
+ }
33
+ }
34
+ }
35
+
36
+ .cy-tab-dialog.cy-tab-dialog-fullscreen .el-dialog__wrapper {
37
+ position: fixed !important;
38
+
39
+ .el-dialog {
40
+ left: 0 !important;
41
+ top: 0;
42
+ }
43
+ }
package/src/index.js CHANGED
@@ -89,7 +89,8 @@ import Empty from '../packages/empty/index.js';
89
89
  import Descriptions from '../packages/descriptions/index.js';
90
90
  import DescriptionsItem from '../packages/descriptions-item/index.js';
91
91
  import Result from '../packages/result/index.js';
92
- import TreeSelect from '../packages/treeSelect/index.js';
92
+ import TreeSelect from '../packages/treeSelect/index.js';
93
+ import TabDialog from '../packages/tabDialog/index.js';
93
94
  import locale from 'element-ui/src/locale';
94
95
  import CollapseTransition from 'element-ui/src/transitions/collapse-transition';
95
96
 
@@ -178,7 +179,8 @@ const components = [
178
179
  Descriptions,
179
180
  DescriptionsItem,
180
181
  Result,
181
- TreeSelect,
182
+ TreeSelect,
183
+ TabDialog,
182
184
  CollapseTransition
183
185
  ];
184
186
 
@@ -214,7 +216,7 @@ if (typeof window !== 'undefined' && window.Vue) {
214
216
  }
215
217
 
216
218
  export default {
217
- version: '1.1.4',
219
+ version: '1.1.7',
218
220
  locale: locale.use,
219
221
  i18n: locale.i18n,
220
222
  install,
@@ -308,5 +310,6 @@ export default {
308
310
  Descriptions,
309
311
  DescriptionsItem,
310
312
  Result,
311
- TreeSelect
313
+ TreeSelect,
314
+ TabDialog
312
315
  };