ele-admin-plus 1.1.9-beta.10 → 1.1.9-beta.11

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 (157) hide show
  1. package/es/ele-alert/index.js +2 -2
  2. package/es/ele-basic-select/index.d.ts +1 -1
  3. package/es/ele-basic-select/index.js +7 -1
  4. package/es/ele-config-provider/types.d.ts +3 -1
  5. package/es/ele-cropper-modal/index.js +1 -1
  6. package/es/ele-drawer/index.d.ts +8 -5
  7. package/es/ele-drawer/index.js +107 -113
  8. package/es/ele-drawer/style/index.scss +48 -105
  9. package/es/ele-edit-tag/index.js +1 -1
  10. package/es/ele-file-list/components/file-grid-item.js +1 -1
  11. package/es/ele-file-list/components/file-table-item.js +1 -1
  12. package/es/ele-icon-select/components/icon-grid.js +1 -1
  13. package/es/ele-loading/index.d.ts +0 -4
  14. package/es/ele-loading/index.js +10 -16
  15. package/es/ele-map-picker/components/map-view.js +1 -1
  16. package/es/ele-map-picker/index.js +1 -1
  17. package/es/ele-menus/index.d.ts +4 -6
  18. package/es/ele-menus/index.js +1 -1
  19. package/es/ele-menus/props.d.ts +1 -3
  20. package/es/ele-menus/props.js +1 -3
  21. package/es/ele-menus/style/css-var.scss +1 -5
  22. package/es/ele-modal/index.d.ts +12 -6
  23. package/es/ele-modal/index.js +163 -184
  24. package/es/ele-modal/props.d.ts +2 -0
  25. package/es/ele-modal/props.js +2 -0
  26. package/es/ele-modal/style/index.scss +85 -146
  27. package/es/ele-modal/util.d.ts +18 -44
  28. package/es/ele-modal/util.js +53 -179
  29. package/es/ele-pagination/index.d.ts +9 -0
  30. package/es/ele-pagination/index.js +4 -1
  31. package/es/ele-pagination/props.d.ts +5 -0
  32. package/es/ele-pagination/props.js +5 -0
  33. package/es/ele-popconfirm/index.d.ts +3 -3
  34. package/es/ele-popconfirm/index.js +6 -28
  35. package/es/ele-popover/index.d.ts +2 -2
  36. package/es/ele-popover/index.js +6 -14
  37. package/es/ele-pro-layout/components/pro-header.d.ts +66 -11
  38. package/es/ele-pro-layout/components/pro-header.js +110 -20
  39. package/es/ele-pro-layout/components/pro-sidebar.d.ts +2 -7
  40. package/es/ele-pro-layout/components/pro-sidebar.js +2 -5
  41. package/es/ele-pro-layout/components/pro-sidebox.d.ts +2 -7
  42. package/es/ele-pro-layout/components/pro-sidebox.js +2 -5
  43. package/es/ele-pro-layout/components/tab-dropdown.js +1 -1
  44. package/es/ele-pro-layout/index.d.ts +25 -27
  45. package/es/ele-pro-layout/index.js +45 -29
  46. package/es/ele-pro-layout/props.d.ts +3 -6
  47. package/es/ele-pro-layout/props.js +2 -4
  48. package/es/ele-pro-layout/style/css-var.scss +3 -18
  49. package/es/ele-pro-layout/style/header.scss +74 -9
  50. package/es/ele-pro-layout/style/layout-mobile.scss +2 -2
  51. package/es/ele-pro-layout/style/layout-style.scss +8 -3
  52. package/es/ele-pro-layout/style/layout-theme.scss +48 -23
  53. package/es/ele-pro-layout/style/layout.scss +23 -3
  54. package/es/ele-pro-layout/style/sidebar.scss +0 -1
  55. package/es/ele-pro-layout/style/tabs.scss +19 -11
  56. package/es/ele-pro-layout/types.d.ts +1 -1
  57. package/es/ele-pro-table/components/tool-print.js +0 -3
  58. package/es/ele-pro-table/index.d.ts +3 -5
  59. package/es/ele-pro-table/index.js +2 -1
  60. package/es/ele-pro-table/util.d.ts +1 -1
  61. package/es/ele-tab-wrap/index.js +2 -1
  62. package/es/ele-table-select/index.d.ts +13 -12
  63. package/es/ele-table-select/index.js +27 -26
  64. package/es/ele-tabs/index.js +1 -0
  65. package/es/ele-tabs/style/css-var.scss +1 -30
  66. package/es/ele-tabs/style/index.scss +372 -241
  67. package/es/ele-tabs/types.d.ts +2 -1
  68. package/es/ele-tooltip/index.js +3 -0
  69. package/es/ele-tooltip/props.d.ts +5 -0
  70. package/es/ele-tooltip/props.js +2 -0
  71. package/es/ele-virtual-table/style/index.scss +1 -1
  72. package/es/icons/ResizeOutlined.d.ts +2 -0
  73. package/es/icons/ResizeOutlined.js +30 -0
  74. package/es/icons/index.d.ts +1 -0
  75. package/es/icons/index.js +50 -48
  76. package/es/style/themes/dark.scss +9 -15
  77. package/es/style/themes/default.scss +56 -80
  78. package/es/style/themes/rounded.scss +16 -30
  79. package/lib/ele-alert/index.cjs +2 -2
  80. package/lib/ele-basic-select/index.cjs +7 -1
  81. package/lib/ele-basic-select/index.d.ts +1 -1
  82. package/lib/ele-config-provider/types.d.ts +3 -1
  83. package/lib/ele-cropper-modal/index.cjs +1 -1
  84. package/lib/ele-drawer/index.cjs +105 -111
  85. package/lib/ele-drawer/index.d.ts +8 -5
  86. package/lib/ele-drawer/style/index.scss +48 -105
  87. package/lib/ele-edit-tag/index.cjs +1 -1
  88. package/lib/ele-file-list/components/file-grid-item.cjs +1 -1
  89. package/lib/ele-file-list/components/file-table-item.cjs +1 -1
  90. package/lib/ele-icon-select/components/icon-grid.cjs +1 -1
  91. package/lib/ele-loading/index.cjs +9 -15
  92. package/lib/ele-loading/index.d.ts +0 -4
  93. package/lib/ele-map-picker/components/map-view.cjs +1 -1
  94. package/lib/ele-map-picker/index.cjs +1 -1
  95. package/lib/ele-menus/index.cjs +1 -1
  96. package/lib/ele-menus/index.d.ts +4 -6
  97. package/lib/ele-menus/props.cjs +1 -3
  98. package/lib/ele-menus/props.d.ts +1 -3
  99. package/lib/ele-menus/style/css-var.scss +1 -5
  100. package/lib/ele-modal/index.cjs +176 -197
  101. package/lib/ele-modal/index.d.ts +12 -6
  102. package/lib/ele-modal/props.cjs +2 -0
  103. package/lib/ele-modal/props.d.ts +2 -0
  104. package/lib/ele-modal/style/index.scss +85 -146
  105. package/lib/ele-modal/util.cjs +53 -179
  106. package/lib/ele-modal/util.d.ts +18 -44
  107. package/lib/ele-pagination/index.cjs +4 -1
  108. package/lib/ele-pagination/index.d.ts +9 -0
  109. package/lib/ele-pagination/props.cjs +5 -0
  110. package/lib/ele-pagination/props.d.ts +5 -0
  111. package/lib/ele-popconfirm/index.cjs +5 -27
  112. package/lib/ele-popconfirm/index.d.ts +3 -3
  113. package/lib/ele-popover/index.cjs +5 -13
  114. package/lib/ele-popover/index.d.ts +2 -2
  115. package/lib/ele-pro-layout/components/pro-header.cjs +109 -19
  116. package/lib/ele-pro-layout/components/pro-header.d.ts +66 -11
  117. package/lib/ele-pro-layout/components/pro-sidebar.cjs +2 -5
  118. package/lib/ele-pro-layout/components/pro-sidebar.d.ts +2 -7
  119. package/lib/ele-pro-layout/components/pro-sidebox.cjs +2 -5
  120. package/lib/ele-pro-layout/components/pro-sidebox.d.ts +2 -7
  121. package/lib/ele-pro-layout/components/tab-dropdown.cjs +1 -1
  122. package/lib/ele-pro-layout/index.cjs +45 -29
  123. package/lib/ele-pro-layout/index.d.ts +25 -27
  124. package/lib/ele-pro-layout/props.cjs +2 -4
  125. package/lib/ele-pro-layout/props.d.ts +3 -6
  126. package/lib/ele-pro-layout/style/css-var.scss +3 -18
  127. package/lib/ele-pro-layout/style/header.scss +74 -9
  128. package/lib/ele-pro-layout/style/layout-mobile.scss +2 -2
  129. package/lib/ele-pro-layout/style/layout-style.scss +8 -3
  130. package/lib/ele-pro-layout/style/layout-theme.scss +48 -23
  131. package/lib/ele-pro-layout/style/layout.scss +23 -3
  132. package/lib/ele-pro-layout/style/sidebar.scss +0 -1
  133. package/lib/ele-pro-layout/style/tabs.scss +19 -11
  134. package/lib/ele-pro-layout/types.d.ts +1 -1
  135. package/lib/ele-pro-table/components/tool-print.cjs +0 -3
  136. package/lib/ele-pro-table/index.cjs +2 -1
  137. package/lib/ele-pro-table/index.d.ts +3 -5
  138. package/lib/ele-pro-table/util.d.ts +1 -1
  139. package/lib/ele-tab-wrap/index.cjs +2 -1
  140. package/lib/ele-table-select/index.cjs +27 -26
  141. package/lib/ele-table-select/index.d.ts +13 -12
  142. package/lib/ele-tabs/index.cjs +1 -0
  143. package/lib/ele-tabs/style/css-var.scss +1 -30
  144. package/lib/ele-tabs/style/index.scss +372 -241
  145. package/lib/ele-tabs/types.d.ts +2 -1
  146. package/lib/ele-tooltip/index.cjs +3 -0
  147. package/lib/ele-tooltip/props.cjs +2 -0
  148. package/lib/ele-tooltip/props.d.ts +5 -0
  149. package/lib/ele-virtual-table/style/index.scss +1 -1
  150. package/lib/icons/ResizeOutlined.cjs +29 -0
  151. package/lib/icons/ResizeOutlined.d.ts +2 -0
  152. package/lib/icons/index.cjs +2 -0
  153. package/lib/icons/index.d.ts +1 -0
  154. package/lib/style/themes/dark.scss +9 -15
  155. package/lib/style/themes/default.scss +56 -80
  156. package/lib/style/themes/rounded.scss +16 -30
  157. package/package.json +9 -9
@@ -39,72 +39,69 @@
39
39
  }
40
40
  }
41
41
  }
42
+ }
42
43
 
43
- /* header */
44
- .ele-modal-header {
45
- display: flex;
46
- align-items: center;
47
- box-sizing: border-box;
48
- padding: eleVar('modal', 'header-padding');
49
- border-bottom: eleVar('modal', 'header-border');
50
- }
44
+ /* header */
45
+ .ele-modal-header {
46
+ display: flex;
47
+ align-items: center;
48
+ box-sizing: border-box;
49
+ padding: eleVar('modal', 'header-padding');
50
+ border-bottom: eleVar('modal', 'header-border');
51
+ }
51
52
 
52
- .ele-modal-title {
53
- flex: 1;
54
- color: eleVar('modal', 'header-color');
55
- font-size: eleVar('modal', 'header-font-size');
56
- line-height: eleVar('modal', 'header-line-height');
57
- font-weight: eleVar('modal', 'header-font-weight');
58
- box-sizing: border-box;
59
- }
53
+ .ele-modal-title {
54
+ flex: 1;
55
+ color: eleVar('modal', 'header-color');
56
+ font-size: eleVar('modal', 'header-font-size');
57
+ line-height: eleVar('modal', 'header-line-height');
58
+ font-weight: eleVar('modal', 'header-font-weight');
59
+ box-sizing: border-box;
60
+ }
60
61
 
61
- /* 图标按钮 */
62
- .ele-modal-tool {
63
- flex-shrink: 0;
64
- display: flex;
65
- align-items: center;
66
- justify-content: center;
67
- width: eleVar('modal', 'icon-size');
68
- height: eleVar('modal', 'icon-size');
69
- line-height: eleVar('modal', 'icon-size');
70
- color: eleVar('modal', 'icon-color');
71
- font-size: eleVar('modal', 'icon-font-size');
72
- border-radius: eleVar('modal', 'icon-radius');
73
- transition: (color $ele-transition, background-color $ele-transition);
74
- box-sizing: border-box;
75
- cursor: pointer;
76
-
77
- &:hover {
78
- color: eleVar('modal', 'icon-hover-color');
79
- background: eleVar('modal', 'icon-hover-bg');
80
- }
62
+ /* 图标按钮 */
63
+ .ele-modal-tool {
64
+ flex-shrink: 0;
65
+ display: flex;
66
+ align-items: center;
67
+ justify-content: center;
68
+ width: eleVar('modal', 'icon-size');
69
+ height: eleVar('modal', 'icon-size');
70
+ line-height: eleVar('modal', 'icon-size');
71
+ color: eleVar('modal', 'icon-color');
72
+ font-size: eleVar('modal', 'icon-font-size');
73
+ border-radius: eleVar('modal', 'icon-radius');
74
+ transition: (color $ele-transition, background-color $ele-transition);
75
+ box-sizing: border-box;
76
+ cursor: pointer;
81
77
 
82
- & + .ele-modal-tool {
83
- margin-left: eleVar('modal', 'icon-space');
84
- }
78
+ &:hover {
79
+ color: eleVar('modal', 'icon-hover-color');
80
+ background: eleVar('modal', 'icon-hover-bg');
85
81
  }
86
82
 
87
- /* body */
88
- .ele-modal-body {
89
- padding: eleVar('modal', 'body-padding');
90
- box-sizing: border-box;
83
+ & + .ele-modal-tool {
84
+ margin-left: eleVar('modal', 'icon-space');
91
85
  }
86
+ }
92
87
 
93
- /* footer */
94
- .ele-modal-footer {
95
- padding: eleVar('modal', 'footer-padding');
96
- border-top: eleVar('modal', 'footer-border');
97
- box-sizing: border-box;
98
- }
88
+ /* body */
89
+ .ele-modal-body {
90
+ padding: eleVar('modal', 'body-padding');
91
+ box-sizing: border-box;
99
92
 
100
- /* 表单弹窗 */
101
- &.ele-modal-form > .el-overlay-dialog > .el-dialog > .el-dialog__body {
102
- & > .ele-modal-body {
103
- padding: eleVar('modal', 'form-body-padding');
104
- }
93
+ &.is-form {
94
+ padding: eleVar('modal', 'form-body-padding');
105
95
  }
106
96
  }
107
97
 
98
+ /* footer */
99
+ .ele-modal-footer {
100
+ padding: eleVar('modal', 'footer-padding');
101
+ border-top: eleVar('modal', 'footer-border');
102
+ box-sizing: border-box;
103
+ }
104
+
108
105
  /* 默认位置 */
109
106
  .ele-modal-top > .el-overlay-dialog > .el-dialog {
110
107
  margin: 0;
@@ -149,26 +146,24 @@
149
146
  }
150
147
 
151
148
  /* 支持拉伸 */
152
- .ele-modal-resizable > .el-overlay-dialog > .el-dialog::after {
153
- content: '';
149
+ .ele-modal-resize-icon {
154
150
  position: absolute;
155
- right: 0;
156
- bottom: 0;
157
- width: 12px;
158
- height: 12px;
151
+ right: 2px;
152
+ bottom: 2px;
153
+ display: flex;
154
+ align-items: center;
155
+ justify-content: center;
156
+ color: eleVar('modal', 'icon-color');
157
+ font-size: 12px;
159
158
  cursor: se-resize;
160
- background-image: eleVar('modal', 'resize-bg');
161
- background-position: 0 0;
162
- background-size: 10px 10px;
163
- background-repeat: no-repeat;
164
- }
165
159
 
166
- .ele-modal-resizable-horizontal > .el-overlay-dialog > .el-dialog::after {
167
- cursor: e-resize;
168
- }
160
+ &.is-horizontal {
161
+ cursor: e-resize;
162
+ }
169
163
 
170
- .ele-modal-resizable-vertical > .el-overlay-dialog > .el-dialog::after {
171
- cursor: s-resize;
164
+ &.is-vertical {
165
+ cursor: s-resize;
166
+ }
172
167
  }
173
168
 
174
169
  .ele-modal-resizable > .el-overlay-dialog > .el-dialog,
@@ -190,35 +185,36 @@
190
185
  width: 100% !important;
191
186
  height: 100% !important;
192
187
  display: flex !important;
193
- max-width: inherit !important;
194
- min-width: inherit !important;
195
- max-height: inherit !important;
196
- min-height: inherit !important;
197
- border: eleVar('modal', 'fullscreen-border');
198
- border-radius: 0;
188
+ max-width: none !important;
189
+ min-width: auto !important;
190
+ max-height: none !important;
191
+ min-height: auto !important;
192
+ border-radius: 0 !important;
199
193
 
200
194
  & > .el-dialog__header {
201
- cursor: default !important;
202
- }
195
+ cursor: default;
203
196
 
204
- &::after {
205
- display: none;
197
+ & > .ele-modal-resize-icon {
198
+ display: none;
199
+ }
206
200
  }
207
201
  }
208
202
 
209
- /* 支持打开多个 */
210
- #ele-modal-container {
203
+ /* 同时打开多个 */
204
+ .ele-modal-container {
211
205
  position: absolute;
212
206
  top: 0;
213
207
  left: 0;
214
208
  right: 0;
215
209
  bottom: 0;
210
+ width: 100%;
211
+ height: 100%;
216
212
  pointer-events: none;
217
213
  z-index: elVar('index', 'popper');
218
214
  }
219
215
 
220
216
  .ele-modal-multiple {
221
- pointer-events: none;
217
+ pointer-events: none !important;
222
218
  position: absolute !important;
223
219
 
224
220
  & > .el-overlay-dialog {
@@ -236,70 +232,13 @@
236
232
  display: none !important;
237
233
  }
238
234
 
239
- /* 移动端 */
235
+ /* 最大宽度适应屏幕 */
240
236
  .ele-modal-responsive > .el-overlay-dialog > .el-dialog {
241
- max-width: calc(100vw - #{eleVar('modal', 'mobile-space')} * 2);
237
+ max-width: calc(100% - #{eleVar('modal', 'mobile-space')} * 2);
242
238
  }
243
239
 
244
- /* 限制在内部并适配布局状态 */
245
- .ele-modal-inner {
246
- &.ele-modal {
247
- top: eleVar('header', 'height', 0);
248
- left: eleVar('sidebar', 'width', 0);
249
- }
250
-
251
- &:not(.dialog-fade-leave-active):not(.dialog-fade-enter-active) {
252
- transition: (width $ele-transition, left $ele-transition);
253
- }
254
-
255
- &.ele-state-has-tab {
256
- top: calc(#{eleVar('header', 'height')} + #{eleVar('tab', 'height')});
257
- }
258
-
259
- &.ele-state-collapse {
260
- left: eleVar('sidebar', 'collapse-width');
261
- }
262
-
263
- &.ele-state-mix-sidebar {
264
- $box-width: eleVar('sidebox', 'width');
265
- left: calc(#{$box-width} + #{eleVar('sidebar', 'mix-width')});
266
-
267
- &.ele-state-collapse {
268
- left: $box-width;
269
- }
270
-
271
- &.ele-state-single-sidebar {
272
- left: $box-width;
273
- }
274
- }
275
-
276
- &.ele-state-compact {
277
- $collapse-width: eleVar('sidebar', 'collapse-width');
278
- left: calc(#{$collapse-width} + #{eleVar('sidebar', 'mix-width')});
279
-
280
- &.ele-state-single-sidebar {
281
- left: $collapse-width;
282
- }
283
-
284
- &.ele-state-collapse {
285
- left: $collapse-width;
286
- }
287
- }
288
-
289
- &.ele-state-top-layout {
290
- left: 0;
291
- }
292
-
293
- &.ele-state-maximized {
294
- top: eleVar('tab', 'height');
295
- left: 0 !important;
296
- }
297
-
298
- &.ele-state-expanded {
299
- top: 0 !important;
300
- }
301
-
302
- &.ele-state-mobile {
303
- left: 0 !important;
304
- }
240
+ /* 限制在主体区域 */
241
+ .ele-admin-modals > .ele-modal {
242
+ pointer-events: auto;
243
+ position: absolute !important;
305
244
  }
@@ -1,71 +1,45 @@
1
1
  import { ModalProps } from './props';
2
- import { Resizable, PositionObject, MoveOut } from './types';
2
+ import { Position } from './types';
3
3
 
4
+ export declare const containerClass = "ele-modal-container";
4
5
  export declare const wrapperClass = "ele-modal";
5
- export declare const containerId = "ele-modal-container";
6
- export declare const movableClass = "ele-modal-movable";
7
- export declare const resizableClass = "ele-modal-resizable";
8
- export declare const multipleClass = "ele-modal-multiple";
9
- export declare const fullscreenClass = "ele-modal-fullscreen";
10
- export declare const innerClass = "ele-modal-inner";
11
- export declare const responsiveClass = "ele-modal-responsive";
12
6
  export declare const closedClass = "ele-modal-closed";
13
- export declare const hideClass = "ele-modal-hide";
14
- export declare const collapseClass = "ele-state-collapse";
15
- export declare const compactClass = "ele-state-compact";
16
- export declare const maximizedClass = "ele-state-maximized";
17
- export declare const hasTabClass = "ele-state-has-tab";
18
- export declare const mixSidebarClass = "ele-state-mix-sidebar";
19
- export declare const singleSidebarClass = "ele-state-single-sidebar";
20
- export declare const topLayoutClass = "ele-state-top-layout";
21
- export declare const expandedClass = "ele-state-expanded";
22
- export declare const mobileClass = "ele-state-mobile";
23
7
  /**
24
- * 创建并获取弹窗容器
8
+ * 获取弹窗容器
9
+ * @param inner 是否限制在主体内部
25
10
  * @param multiple 是否支持同时打开多个
26
- * @param appendTo 自定义插入的位置
11
+ * @param appendTo 自定义插入的容器
12
+ * @param modalsEl 限制在主体内部时的容器
27
13
  */
28
- export declare function getModalContainer(multiple?: boolean, appendTo?: string): Element | string;
14
+ export declare function getModalContainer(inner?: boolean, multiple?: boolean, appendTo?: string, modalsEl?: HTMLElement | null): Element | string;
29
15
  /**
30
16
  * 弹窗移动事件处理
17
+ * @param modalEl 弹窗节点
31
18
  * @param event 事件
32
19
  * @param props 属性
33
20
  */
34
- export declare function handleMovable(event: MouseEvent, props: ModalProps): void;
21
+ export declare function handleMove(modalEl: HTMLElement, event: MouseEvent, props: ModalProps): void;
35
22
  /**
36
23
  * 弹窗拉伸事件处理
37
24
  * @param event 事件
38
25
  * @param props 属性
39
26
  */
40
- export declare function handleResizable(event: MouseEvent, props: ModalProps): void;
27
+ export declare function handleResize(modalEl: HTMLElement, event: MouseEvent, props: ModalProps): void;
41
28
  /**
42
29
  * 置顶弹窗
43
- * @param modalEl 弹窗节点
30
+ * @param modalEl 弹窗
44
31
  * @param zIndex 弹窗初始层级
45
- * @returns
46
32
  */
47
- export declare function setModalTop(modalEl?: HTMLElement, zIndex?: number): void;
33
+ export declare function topModal(modalEl?: HTMLElement, zIndex?: number): void;
48
34
  /**
49
- * 重置弹窗位置及大小
50
- * @param modalEl 弹窗节点
51
- * @param width 初始宽度
52
- * @param top 初始顶部距离
53
- */
54
- export declare function resetModalStyle(modalEl?: HTMLElement, width?: string | number, top?: string | number): void;
55
- /**
56
- * 设置弹窗位置
57
- * @param modalEl 弹窗节点
35
+ * 获取位置对应的外间距值
58
36
  * @param position 位置
59
- * @param resizable 是否可以拉伸
60
- * @param moveOut 是否可以拉出容器
61
37
  */
62
- export declare function setModalPosition(modalEl?: HTMLElement, resizable?: Resizable, position?: PositionObject, moveOut?: MoveOut): void;
38
+ export declare function getPositionMargin(position?: Position): string | undefined;
63
39
  /**
64
- * 设置弹窗初始位置
40
+ * 重置弹窗位置及大小
65
41
  * @param modalEl 弹窗节点
66
- * @param position 位置
67
- * @param resizable 是否可以拉伸
68
- * @param moveOut 是否可以拉出容器
69
- * @param force 是否强制更新
42
+ * @param width 初始宽度
43
+ * @param top 初始顶部距离
70
44
  */
71
- export declare function setInitPosition(modalEl?: HTMLElement, resizable?: Resizable, position?: PositionObject, moveOut?: MoveOut, force?: boolean): void;
45
+ export declare function resetModalStyle(modalEl?: HTMLElement, width?: string | number, position?: Position): void;
@@ -1,102 +1,47 @@
1
1
  import { getCurrentStyle } from "../utils/core";
2
- const titleClass = "ele-modal-title";
3
- const headerClass = "ele-modal-header";
2
+ const containerClass = "ele-modal-container";
4
3
  const wrapperClass = "ele-modal";
5
- const containerId = "ele-modal-container";
6
- const movableClass = "ele-modal-movable";
7
- const resizableClass = "ele-modal-resizable";
8
- const multipleClass = "ele-modal-multiple";
9
- const fullscreenClass = "ele-modal-fullscreen";
10
- const innerClass = "ele-modal-inner";
11
- const responsiveClass = "ele-modal-responsive";
12
4
  const closedClass = "ele-modal-closed";
13
- const hideClass = "ele-modal-hide";
14
- const collapseClass = "ele-state-collapse";
15
- const compactClass = "ele-state-compact";
16
- const maximizedClass = "ele-state-maximized";
17
- const hasTabClass = "ele-state-has-tab";
18
- const mixSidebarClass = "ele-state-mix-sidebar";
19
- const singleSidebarClass = "ele-state-single-sidebar";
20
- const topLayoutClass = "ele-state-top-layout";
21
- const expandedClass = "ele-state-expanded";
22
- const mobileClass = "ele-state-mobile";
23
5
  const fixTop = 0.65;
24
6
  const fixLeft = 0.65;
25
- function initModalStyle(modalEl, resizable) {
7
+ function initModalStyle(modalEl) {
26
8
  modalEl.style.top = modalEl.offsetTop + "px";
27
9
  modalEl.style.left = modalEl.offsetLeft + "px";
28
- modalEl.style.bottom = "auto";
29
10
  modalEl.style.right = "auto";
30
- modalEl.style.margin = "0";
11
+ modalEl.style.bottom = "auto";
31
12
  modalEl.style.position = "absolute";
32
- modalEl.style.display = resizable ? "inline-flex" : "inline-block";
33
- modalEl.style.verticalAlign = "top";
34
- }
35
- function getModalContainer(multiple, appendTo) {
36
- if (!multiple) {
37
- return appendTo || "body";
38
- }
39
- const container = document.getElementById(containerId);
40
- if (container) {
41
- return container;
42
- }
43
- const elem = document.createElement("div");
44
- elem.id = containerId;
45
- document.body.appendChild(elem);
46
- return elem;
47
- }
48
- function getVisibleModals() {
49
- const el = getModalContainer(true);
50
- const modals = el.querySelectorAll(`.${wrapperClass}:not(.${closedClass})`);
51
- return modals ? Array.from(modals) : [];
52
- }
53
- function getModalMaxIndex(el) {
54
- const modals = getVisibleModals();
55
- let maxIndex = 0;
56
- modals.forEach((modalEl) => {
57
- const zIndex = getCurrentStyle(modalEl).zIndex;
58
- if (zIndex != null) {
59
- const index = Number(zIndex);
60
- if (index >= maxIndex && (!el || modalEl !== el)) {
61
- maxIndex = index + 1;
62
- }
63
- }
64
- });
65
- return maxIndex;
13
+ modalEl.style.margin = "0";
66
14
  }
67
15
  function canMoveOut(moveOut, direction) {
68
- if (direction && moveOut != null && typeof moveOut === "object" && typeof moveOut.includes === "function") {
16
+ if (direction && moveOut != null && Array.isArray(moveOut)) {
69
17
  return moveOut.includes(direction);
70
18
  }
71
19
  return false;
72
20
  }
73
- function handleMovable(event, props) {
74
- var _a;
75
- if (!props.draggable) {
76
- return;
21
+ function getModalContainer(inner, multiple, appendTo, modalsEl) {
22
+ if (multiple) {
23
+ const parent = (inner ? modalsEl : void 0) || document.body;
24
+ const wrapper = parent.querySelector(`.${containerClass}`);
25
+ if (wrapper) {
26
+ return wrapper;
27
+ }
28
+ const elem = document.createElement("div");
29
+ elem.classList.add(containerClass);
30
+ parent.appendChild(elem);
31
+ return elem;
77
32
  }
78
- const modalEl = event.currentTarget;
79
- if (!modalEl) {
80
- return;
33
+ if (inner && modalsEl) {
34
+ return modalsEl;
81
35
  }
36
+ return appendTo || "body";
37
+ }
38
+ function handleMove(modalEl, event, props) {
82
39
  const wrapEl = modalEl.parentElement;
83
40
  if (!wrapEl) {
84
41
  return;
85
42
  }
86
- const headerEl = modalEl.querySelector("." + headerClass);
87
- if (!headerEl) {
88
- return;
89
- }
90
- const titleEl = headerEl.querySelector("." + titleClass);
91
- if (!titleEl || event.target !== headerEl && event.target !== titleEl) {
92
- return;
93
- }
94
- const modalClass = (_a = wrapEl.parentElement) == null ? void 0 : _a.classList;
95
- if (modalClass && modalClass.contains(fullscreenClass)) {
96
- return;
97
- }
98
43
  modalEl.style.userSelect = "none";
99
- initModalStyle(modalEl, props.resizable);
44
+ initModalStyle(modalEl);
100
45
  const downX = event.clientX;
101
46
  const downY = event.clientY;
102
47
  const downOL = modalEl.offsetLeft;
@@ -153,32 +98,13 @@ function handleMovable(event, props) {
153
98
  document.addEventListener("mousemove", mousemoveFn);
154
99
  document.addEventListener("mouseup", mouseupFn);
155
100
  }
156
- function handleResizable(event, props) {
157
- if (!props.resizable) {
158
- return;
159
- }
160
- const modalEl = event.currentTarget;
161
- if (!modalEl) {
162
- return;
163
- }
101
+ function handleResize(modalEl, event, props) {
164
102
  const wrapEl = modalEl.parentElement;
165
103
  if (!wrapEl) {
166
104
  return;
167
105
  }
168
- const overlayEl = wrapEl.parentElement;
169
- if (!overlayEl) {
170
- return;
171
- }
172
- if (overlayEl.classList.contains(fullscreenClass)) {
173
- return;
174
- }
175
- const limitX = modalEl.clientWidth + modalEl.offsetLeft - wrapEl.scrollLeft + overlayEl.offsetLeft;
176
- const limitY = modalEl.clientHeight + modalEl.offsetTop - wrapEl.scrollTop + overlayEl.offsetTop;
177
- if (event.clientX > limitX || limitX - event.clientX > 12 || event.clientY > limitY || limitY - event.clientY > 12) {
178
- return;
179
- }
180
106
  modalEl.style.userSelect = "none";
181
- initModalStyle(modalEl, true);
107
+ initModalStyle(modalEl);
182
108
  const downX = event.clientX;
183
109
  const downY = event.clientY;
184
110
  const downW = modalEl.clientWidth;
@@ -209,34 +135,45 @@ function handleResizable(event, props) {
209
135
  document.addEventListener("mousemove", mousemoveFn);
210
136
  document.addEventListener("mouseup", mouseupFn);
211
137
  }
212
- function setModalTop(modalEl, zIndex) {
138
+ function topModal(modalEl, zIndex) {
213
139
  var _a;
214
- if (!modalEl) {
215
- return;
216
- }
217
- const overlayEl = (_a = modalEl.parentElement) == null ? void 0 : _a.parentElement;
218
- if (!overlayEl || !overlayEl.classList || !overlayEl.classList.contains(multipleClass)) {
140
+ const overlayEl = (_a = modalEl == null ? void 0 : modalEl.parentElement) == null ? void 0 : _a.parentElement;
141
+ if (!overlayEl) {
219
142
  return;
220
143
  }
221
144
  const currentIndex = getCurrentStyle(overlayEl).zIndex;
222
- const maxIndex = getModalMaxIndex(overlayEl);
145
+ const containerEl = overlayEl.parentElement;
146
+ const modals = containerEl ? containerEl.querySelectorAll(`.${wrapperClass}:not(.${closedClass})`) : void 0;
147
+ let maxIndex = 0;
148
+ (modals ? Array.from(modals) : []).forEach((modalEl2) => {
149
+ const zIndex2 = getCurrentStyle(modalEl2).zIndex;
150
+ if (zIndex2 != null) {
151
+ const index = Number(zIndex2);
152
+ if (index >= maxIndex && (!overlayEl || modalEl2 !== overlayEl)) {
153
+ maxIndex = index + 1;
154
+ }
155
+ }
156
+ });
223
157
  if (maxIndex > Number(currentIndex || zIndex || 0)) {
224
158
  overlayEl.style.zIndex = String(maxIndex);
225
159
  }
226
160
  }
227
- function resetModalStyle(modalEl, width, top) {
161
+ function getPositionMargin(position) {
162
+ if (position == null || typeof position !== "object" || position.top == null && position.right == null && position.bottom == null && position.left == null) {
163
+ return;
164
+ }
165
+ return [position.top, position.right, position.bottom, position.left].map((p) => typeof p === "number" ? `${p}px` : p || "auto").join(" ");
166
+ }
167
+ function resetModalStyle(modalEl, width, position) {
228
168
  if (!modalEl) {
229
169
  return;
230
170
  }
171
+ modalEl.style.margin = getPositionMargin(position) || "";
172
+ modalEl.style.position = "";
231
173
  modalEl.style.top = "";
232
174
  modalEl.style.left = "";
233
175
  modalEl.style.right = "";
234
176
  modalEl.style.bottom = "";
235
- modalEl.style.margin = "";
236
- modalEl.style.marginTop = typeof top === "number" ? `${top}px` : top ?? "";
237
- modalEl.style.display = "";
238
- modalEl.style.position = "";
239
- modalEl.style.verticalAlign = "";
240
177
  modalEl.style.height = "";
241
178
  modalEl.style.maxHeight = "";
242
179
  modalEl.style.minHeight = "";
@@ -244,77 +181,14 @@ function resetModalStyle(modalEl, width, top) {
244
181
  modalEl.style.maxWidth = "";
245
182
  modalEl.style.minWidth = "";
246
183
  }
247
- function setModalPosition(modalEl, resizable, position, moveOut) {
248
- if (!position || typeof position !== "object" || !modalEl) {
249
- return;
250
- }
251
- const wrapEl = modalEl.parentElement;
252
- if (!wrapEl) {
253
- return;
254
- }
255
- initModalStyle(modalEl, resizable);
256
- const location = {};
257
- const canOutB = canMoveOut(moveOut, "bottom");
258
- const canOutR = canMoveOut(moveOut, "right");
259
- const t = wrapEl.clientHeight - modalEl.clientHeight - (canOutB ? 0 : fixTop);
260
- const maxTop = t < 0 ? 0 : t;
261
- const l = wrapEl.clientWidth - modalEl.clientWidth - (canOutR ? 0 : fixLeft);
262
- const maxLeft = l < 0 ? 0 : l;
263
- if (position.top != null) {
264
- location.top = position.top;
265
- } else if (position.bottom != null) {
266
- location.bottom = position.bottom;
267
- } else if (position.left != null || position.right != null) {
268
- location.top = maxTop / 2;
269
- }
270
- if (position.left != null) {
271
- location.left = position.left;
272
- } else if (position.right != null) {
273
- location.right = position.right;
274
- } else if (position.top != null || position.bottom != null) {
275
- location.left = maxLeft / 2;
276
- }
277
- Object.keys(location).forEach((key) => {
278
- const value = location[key];
279
- if (typeof value === "number") {
280
- modalEl.style[key] = `${Math.floor(value)}px`;
281
- } else if (value != null) {
282
- modalEl.style[key] = value;
283
- }
284
- });
285
- }
286
- function setInitPosition(modalEl, resizable, position, moveOut, force) {
287
- const attr = "ele-position";
288
- if (modalEl && position && (force || !modalEl.getAttribute(attr))) {
289
- modalEl.setAttribute(attr, "1");
290
- setModalPosition(modalEl, resizable, position, moveOut);
291
- }
292
- }
293
184
  export {
294
185
  closedClass,
295
- collapseClass,
296
- compactClass,
297
- containerId,
298
- expandedClass,
299
- fullscreenClass,
186
+ containerClass,
300
187
  getModalContainer,
301
- handleMovable,
302
- handleResizable,
303
- hasTabClass,
304
- hideClass,
305
- innerClass,
306
- maximizedClass,
307
- mixSidebarClass,
308
- mobileClass,
309
- movableClass,
310
- multipleClass,
188
+ getPositionMargin,
189
+ handleMove,
190
+ handleResize,
311
191
  resetModalStyle,
312
- resizableClass,
313
- responsiveClass,
314
- setInitPosition,
315
- setModalPosition,
316
- setModalTop,
317
- singleSidebarClass,
318
- topLayoutClass,
192
+ topModal,
319
193
  wrapperClass
320
194
  };