vxe-pc-ui 4.6.3 → 4.6.5

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 (139) hide show
  1. package/es/button/src/button.js +20 -73
  2. package/es/button/style.css +24 -2
  3. package/es/button/style.min.css +1 -1
  4. package/es/color-picker/src/color-picker.js +19 -72
  5. package/es/color-picker/style.css +15 -0
  6. package/es/color-picker/style.min.css +1 -1
  7. package/es/date-picker/src/date-picker.js +19 -74
  8. package/es/date-picker/style.css +3 -2
  9. package/es/date-picker/style.min.css +1 -1
  10. package/es/date-range-picker/src/date-range-picker.js +24 -79
  11. package/es/date-range-picker/style.css +3 -2
  12. package/es/date-range-picker/style.min.css +1 -1
  13. package/es/icon/style.css +1 -1
  14. package/es/print/src/print.js +2 -2
  15. package/es/print/src/util.js +72 -40
  16. package/es/pulldown/src/pulldown.js +19 -74
  17. package/es/pulldown/style.css +0 -4
  18. package/es/pulldown/style.min.css +1 -1
  19. package/es/select/src/select.js +19 -72
  20. package/es/style.css +1 -1
  21. package/es/style.min.css +1 -1
  22. package/es/table-select/src/table-select.js +19 -72
  23. package/es/table-select/style.css +0 -1
  24. package/es/table-select/style.min.css +1 -1
  25. package/es/tree-select/src/tree-select.js +19 -72
  26. package/es/tree-select/style.css +0 -1
  27. package/es/tree-select/style.min.css +1 -1
  28. package/es/ui/index.js +1 -1
  29. package/es/ui/src/dom.js +92 -0
  30. package/es/ui/src/log.js +1 -1
  31. package/es/vxe-button/style.css +24 -2
  32. package/es/vxe-button/style.min.css +1 -1
  33. package/es/vxe-color-picker/style.css +15 -0
  34. package/es/vxe-color-picker/style.min.css +1 -1
  35. package/es/vxe-date-picker/style.css +3 -2
  36. package/es/vxe-date-picker/style.min.css +1 -1
  37. package/es/vxe-date-range-picker/style.css +3 -2
  38. package/es/vxe-date-range-picker/style.min.css +1 -1
  39. package/es/vxe-pulldown/style.css +0 -4
  40. package/es/vxe-pulldown/style.min.css +1 -1
  41. package/es/vxe-table-select/style.css +0 -1
  42. package/es/vxe-table-select/style.min.css +1 -1
  43. package/es/vxe-tree-select/style.css +0 -1
  44. package/es/vxe-tree-select/style.min.css +1 -1
  45. package/lib/button/src/button.js +23 -79
  46. package/lib/button/src/button.min.js +1 -1
  47. package/lib/button/style/style.css +24 -2
  48. package/lib/button/style/style.min.css +1 -1
  49. package/lib/color-picker/src/color-picker.js +22 -77
  50. package/lib/color-picker/src/color-picker.min.js +1 -1
  51. package/lib/color-picker/style/style.css +15 -0
  52. package/lib/color-picker/style/style.min.css +1 -1
  53. package/lib/date-picker/src/date-picker.js +22 -79
  54. package/lib/date-picker/src/date-picker.min.js +1 -1
  55. package/lib/date-picker/style/style.css +3 -2
  56. package/lib/date-picker/style/style.min.css +1 -1
  57. package/lib/date-range-picker/src/date-range-picker.js +26 -83
  58. package/lib/date-range-picker/src/date-range-picker.min.js +1 -1
  59. package/lib/date-range-picker/style/style.css +3 -2
  60. package/lib/date-range-picker/style/style.min.css +1 -1
  61. package/lib/icon/style/style.css +1 -1
  62. package/lib/icon/style/style.min.css +1 -1
  63. package/lib/index.umd.js +333 -670
  64. package/lib/index.umd.min.js +1 -1
  65. package/lib/print/src/print.js +1 -1
  66. package/lib/print/src/print.min.js +1 -1
  67. package/lib/print/src/util.js +54 -38
  68. package/lib/print/src/util.min.js +1 -1
  69. package/lib/pulldown/src/pulldown.js +22 -80
  70. package/lib/pulldown/src/pulldown.min.js +1 -1
  71. package/lib/pulldown/style/style.css +0 -4
  72. package/lib/pulldown/style/style.min.css +1 -1
  73. package/lib/select/src/select.js +22 -77
  74. package/lib/select/src/select.min.js +1 -1
  75. package/lib/style.css +1 -1
  76. package/lib/style.min.css +1 -1
  77. package/lib/table-select/src/table-select.js +22 -77
  78. package/lib/table-select/src/table-select.min.js +1 -1
  79. package/lib/table-select/style/style.css +0 -1
  80. package/lib/table-select/style/style.min.css +1 -1
  81. package/lib/tree-select/src/tree-select.js +22 -77
  82. package/lib/tree-select/src/tree-select.min.js +1 -1
  83. package/lib/tree-select/style/style.css +0 -1
  84. package/lib/tree-select/style/style.min.css +1 -1
  85. package/lib/ui/index.js +1 -1
  86. package/lib/ui/index.min.js +1 -1
  87. package/lib/ui/src/dom.js +97 -0
  88. package/lib/ui/src/dom.min.js +1 -1
  89. package/lib/ui/src/log.js +1 -1
  90. package/lib/ui/src/log.min.js +1 -1
  91. package/lib/vxe-button/style/style.css +24 -2
  92. package/lib/vxe-button/style/style.min.css +1 -1
  93. package/lib/vxe-color-picker/style/style.css +15 -0
  94. package/lib/vxe-color-picker/style/style.min.css +1 -1
  95. package/lib/vxe-date-picker/style/style.css +3 -2
  96. package/lib/vxe-date-picker/style/style.min.css +1 -1
  97. package/lib/vxe-date-range-picker/style/style.css +3 -2
  98. package/lib/vxe-date-range-picker/style/style.min.css +1 -1
  99. package/lib/vxe-pulldown/style/style.css +0 -4
  100. package/lib/vxe-pulldown/style/style.min.css +1 -1
  101. package/lib/vxe-table-select/style/style.css +0 -1
  102. package/lib/vxe-table-select/style/style.min.css +1 -1
  103. package/lib/vxe-tree-select/style/style.css +0 -1
  104. package/lib/vxe-tree-select/style/style.min.css +1 -1
  105. package/package.json +1 -1
  106. package/packages/button/src/button.ts +20 -70
  107. package/packages/color-picker/src/color-picker.ts +19 -69
  108. package/packages/date-picker/src/date-picker.ts +20 -72
  109. package/packages/date-range-picker/src/date-range-picker.ts +24 -76
  110. package/packages/print/src/print.ts +2 -2
  111. package/packages/print/src/util.ts +73 -39
  112. package/packages/pulldown/src/pulldown.ts +20 -72
  113. package/packages/select/src/select.ts +19 -69
  114. package/packages/table-select/src/table-select.ts +19 -69
  115. package/packages/tree-select/src/tree-select.ts +19 -69
  116. package/packages/ui/src/dom.ts +96 -1
  117. package/styles/components/button.scss +3 -20
  118. package/styles/components/color-picker.scss +2 -27
  119. package/styles/components/date-picker.scss +2 -34
  120. package/styles/components/date-range-picker.scss +2 -34
  121. package/styles/components/pulldown.scss +2 -41
  122. package/styles/components/select.scss +2 -35
  123. package/styles/components/table-select.scss +2 -36
  124. package/styles/components/tree-select.scss +2 -36
  125. package/styles/helpers/placement.scss +39 -0
  126. package/types/components/print.d.ts +21 -0
  127. package/types/components/table.d.ts +51 -0
  128. /package/es/icon/{iconfont.1747005800508.ttf → iconfont.1747094595378.ttf} +0 -0
  129. /package/es/icon/{iconfont.1747005800508.woff → iconfont.1747094595378.woff} +0 -0
  130. /package/es/icon/{iconfont.1747005800508.woff2 → iconfont.1747094595378.woff2} +0 -0
  131. /package/es/{iconfont.1747005800508.ttf → iconfont.1747094595378.ttf} +0 -0
  132. /package/es/{iconfont.1747005800508.woff → iconfont.1747094595378.woff} +0 -0
  133. /package/es/{iconfont.1747005800508.woff2 → iconfont.1747094595378.woff2} +0 -0
  134. /package/lib/icon/style/{iconfont.1747005800508.ttf → iconfont.1747094595378.ttf} +0 -0
  135. /package/lib/icon/style/{iconfont.1747005800508.woff → iconfont.1747094595378.woff} +0 -0
  136. /package/lib/icon/style/{iconfont.1747005800508.woff2 → iconfont.1747094595378.woff2} +0 -0
  137. /package/lib/{iconfont.1747005800508.ttf → iconfont.1747094595378.ttf} +0 -0
  138. /package/lib/{iconfont.1747005800508.woff → iconfont.1747094595378.woff} +0 -0
  139. /package/lib/{iconfont.1747005800508.woff2 → iconfont.1747094595378.woff2} +0 -0
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, ref, h, PropType, computed, inject, watch, provide, nextTick, Teleport, onMounted, onUnmounted, reactive } from 'vue'
2
2
  import XEUtils from 'xe-utils'
3
3
  import { VxeUI, getConfig, getIcon, globalEvents, getI18n, createEvent, useSize, renderEmptyElement } from '../../ui'
4
- import { getEventTargetNode, getAbsolutePos, toCssUnit } from '../../ui/src/dom'
4
+ import { getEventTargetNode, updatePanelPlacement, toCssUnit } from '../../ui/src/dom'
5
5
  import { getOnName } from '../../ui/src/vn'
6
6
  import { getLastZIndex, nextZIndex } from '../../ui/src/utils'
7
7
  import { errLog } from '../../ui/src/log'
@@ -340,74 +340,24 @@ export default defineComponent({
340
340
  }
341
341
 
342
342
  const updatePlacement = () => {
343
- return nextTick().then(() => {
344
- const { placement } = props
345
- const { panelIndex } = reactData
346
- const el = refElem.value
347
- const panelElem = refOptionPanel.value
348
- const btnTransfer = computeBtnTransfer.value
349
- if (panelElem && el) {
350
- const targetHeight = el.offsetHeight
351
- const targetWidth = el.offsetWidth
352
- const panelHeight = panelElem.offsetHeight
353
- const panelWidth = panelElem.offsetWidth
354
- const marginSize = 5
355
- const panelStyle: { [key: string]: any } = {
356
- zIndex: panelIndex
357
- }
358
- const { boundingTop, boundingLeft, visibleHeight, visibleWidth } = getAbsolutePos(el)
359
- let panelPlacement = 'bottom'
360
- if (btnTransfer) {
361
- let left = boundingLeft
362
- let top = boundingTop + targetHeight
363
- if (placement === 'top') {
364
- panelPlacement = 'top'
365
- top = boundingTop - panelHeight
366
- } else if (!placement) {
367
- // 如果下面不够放,则向上
368
- if (top + panelHeight + marginSize > visibleHeight) {
369
- panelPlacement = 'top'
370
- top = boundingTop - panelHeight
371
- }
372
- // 如果上面不够放,则向下(优先)
373
- if (top < marginSize) {
374
- panelPlacement = 'bottom'
375
- top = boundingTop + targetHeight
376
- }
377
- }
378
- // 如果溢出右边
379
- if (left + panelWidth + marginSize > visibleWidth) {
380
- left -= left + panelWidth + marginSize - visibleWidth
381
- }
382
- // 如果溢出左边
383
- if (left < marginSize) {
384
- left = marginSize
385
- }
386
- Object.assign(panelStyle, {
387
- left: `${left}px`,
388
- top: `${top}px`,
389
- minWidth: `${targetWidth}px`
390
- })
391
- } else {
392
- if (placement === 'top') {
393
- panelPlacement = 'top'
394
- panelStyle.bottom = `${targetHeight}px`
395
- } else if (!placement) {
396
- // 如果下面不够放,则向上
397
- if (boundingTop + targetHeight + panelHeight > visibleHeight) {
398
- // 如果上面不够放,则向下(优先)
399
- if (boundingTop - targetHeight - panelHeight > marginSize) {
400
- panelPlacement = 'top'
401
- panelStyle.bottom = `${targetHeight}px`
402
- }
403
- }
404
- }
405
- }
406
- reactData.panelStyle = panelStyle
407
- reactData.panelPlacement = panelPlacement
408
- return nextTick()
409
- }
410
- })
343
+ const { placement } = props
344
+ const { panelIndex } = reactData
345
+ const targetElem = refElem.value
346
+ const panelElem = refOptionPanel.value
347
+ const btnTransfer = computeBtnTransfer.value
348
+ const handleStyle = () => {
349
+ const ppObj = updatePanelPlacement(targetElem, panelElem, {
350
+ placement,
351
+ teleportTo: btnTransfer
352
+ })
353
+ const panelStyle: { [key: string]: string | number } = Object.assign(ppObj.style, {
354
+ zIndex: panelIndex
355
+ })
356
+ reactData.panelStyle = panelStyle
357
+ reactData.panelPlacement = ppObj.placement
358
+ }
359
+ handleStyle()
360
+ return nextTick().then(handleStyle)
411
361
  }
412
362
 
413
363
  const showOptionPanel = () => {
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, ref, computed, h, PropType, nextTick, inject, provide, reactive, Teleport, onMounted, onUnmounted, watch } from 'vue'
2
2
  import { getConfig, getI18n, getIcon, globalEvents, createEvent, useSize, renderEmptyElement } from '../../ui'
3
- import { getEventTargetNode, getAbsolutePos, toCssUnit } from '../../ui/src/dom'
3
+ import { getEventTargetNode, updatePanelPlacement, toCssUnit } from '../../ui/src/dom'
4
4
  import { getLastZIndex, nextZIndex } from '../../ui/src/utils'
5
5
  import { errLog } from '../../ui/src/log'
6
6
  import XEUtils from 'xe-utils'
@@ -296,74 +296,24 @@ export default defineComponent({
296
296
  }
297
297
 
298
298
  const updatePlacement = () => {
299
- return nextTick().then(() => {
300
- const { placement } = props
301
- const { panelIndex } = reactData
302
- const el = refElem.value
303
- const panelElem = refOptionPanel.value
304
- const btnTransfer = computeBtnTransfer.value
305
- if (panelElem && el) {
306
- const targetHeight = el.offsetHeight
307
- const targetWidth = el.offsetWidth
308
- const panelHeight = panelElem.offsetHeight
309
- const panelWidth = panelElem.offsetWidth
310
- const marginSize = 5
311
- const panelStyle: { [key: string]: any } = {
312
- zIndex: panelIndex
313
- }
314
- const { boundingTop, boundingLeft, visibleHeight, visibleWidth } = getAbsolutePos(el)
315
- let panelPlacement = 'bottom'
316
- if (btnTransfer) {
317
- let left = boundingLeft
318
- let top = boundingTop + targetHeight
319
- if (placement === 'top') {
320
- panelPlacement = 'top'
321
- top = boundingTop - panelHeight
322
- } else if (!placement) {
323
- // 如果下面不够放,则向上
324
- if (top + panelHeight + marginSize > visibleHeight) {
325
- panelPlacement = 'top'
326
- top = boundingTop - panelHeight
327
- }
328
- // 如果上面不够放,则向下(优先)
329
- if (top < marginSize) {
330
- panelPlacement = 'bottom'
331
- top = boundingTop + targetHeight
332
- }
333
- }
334
- // 如果溢出右边
335
- if (left + panelWidth + marginSize > visibleWidth) {
336
- left -= left + panelWidth + marginSize - visibleWidth
337
- }
338
- // 如果溢出左边
339
- if (left < marginSize) {
340
- left = marginSize
341
- }
342
- Object.assign(panelStyle, {
343
- left: `${left}px`,
344
- top: `${top}px`,
345
- minWidth: `${targetWidth}px`
346
- })
347
- } else {
348
- if (placement === 'top') {
349
- panelPlacement = 'top'
350
- panelStyle.bottom = `${targetHeight}px`
351
- } else if (!placement) {
352
- // 如果下面不够放,则向上
353
- if (boundingTop + targetHeight + panelHeight > visibleHeight) {
354
- // 如果上面不够放,则向下(优先)
355
- if (boundingTop - targetHeight - panelHeight > marginSize) {
356
- panelPlacement = 'top'
357
- panelStyle.bottom = `${targetHeight}px`
358
- }
359
- }
360
- }
361
- }
362
- reactData.panelStyle = panelStyle
363
- reactData.panelPlacement = panelPlacement
364
- return nextTick()
365
- }
366
- })
299
+ const { placement } = props
300
+ const { panelIndex } = reactData
301
+ const targetElem = refElem.value
302
+ const panelElem = refOptionPanel.value
303
+ const btnTransfer = computeBtnTransfer.value
304
+ const handleStyle = () => {
305
+ const ppObj = updatePanelPlacement(targetElem, panelElem, {
306
+ placement,
307
+ teleportTo: btnTransfer
308
+ })
309
+ const panelStyle: { [key: string]: string | number } = Object.assign(ppObj.style, {
310
+ zIndex: panelIndex
311
+ })
312
+ reactData.panelStyle = panelStyle
313
+ reactData.panelPlacement = ppObj.placement
314
+ }
315
+ handleStyle()
316
+ return nextTick().then(handleStyle)
367
317
  }
368
318
 
369
319
  const showOptionPanel = () => {
@@ -71,7 +71,7 @@ export function hasControlKey (evnt: KeyboardEvent | MouseEvent | DragEvent) {
71
71
  return evnt.ctrlKey || evnt.metaKey
72
72
  }
73
73
 
74
- export function toCssUnit (val?: number | string, unit = 'px') {
74
+ export function toCssUnit (val?: number | string | null, unit = 'px') {
75
75
  if (XEUtils.isNumber(val) || /^\d+$/.test(`${val}`)) {
76
76
  return `${val}${unit}`
77
77
  }
@@ -143,3 +143,98 @@ export function triggerEvent (targetElem: Element, type: string) {
143
143
  export function isNodeElement (elem: any): elem is HTMLElement {
144
144
  return elem && elem.nodeType === 1
145
145
  }
146
+
147
+ export function updatePanelPlacement (targetElem: HTMLElement | null | undefined, panelElem: HTMLElement | null | undefined, options: {
148
+ placement?: '' | 'top' | 'bottom' | null
149
+ teleportTo?: boolean
150
+ marginSize?: number
151
+ }) {
152
+ const { placement, teleportTo, marginSize } = Object.assign({ teleportTo: false, marginSize: 5 }, options)
153
+ let panelPlacement: 'top' | 'bottom' = 'bottom'
154
+ let top: number | '' = ''
155
+ let bottom: number | '' = ''
156
+ let left: number | '' = ''
157
+ const right: number | '' = ''
158
+ let minWidth: number | '' = ''
159
+ const stys: Record<string, string> = {}
160
+ if (panelElem && targetElem) {
161
+ const documentElement = document.documentElement
162
+ const bodyElem = document.body
163
+ const targetHeight = targetElem.offsetHeight
164
+ const panelHeight = panelElem.offsetHeight
165
+ const panelWidth = panelElem.offsetWidth
166
+
167
+ const bounding = targetElem.getBoundingClientRect()
168
+ const boundingTop = bounding.top
169
+ const boundingLeft = bounding.left
170
+ const visibleHeight = documentElement.clientHeight || bodyElem.clientHeight
171
+ const visibleWidth = documentElement.clientWidth || bodyElem.clientWidth
172
+ minWidth = targetElem.offsetWidth
173
+ if (teleportTo) {
174
+ left = boundingLeft
175
+ top = boundingTop + targetHeight
176
+ if (placement === 'top') {
177
+ panelPlacement = 'top'
178
+ top = boundingTop - panelHeight
179
+ } else if (!placement) {
180
+ // 如果下面不够放,则向上
181
+ if (top + panelHeight + marginSize > visibleHeight) {
182
+ panelPlacement = 'top'
183
+ top = boundingTop - panelHeight
184
+ }
185
+ // 如果上面不够放,则向下(优先)
186
+ if (top < marginSize) {
187
+ panelPlacement = 'bottom'
188
+ top = boundingTop + targetHeight
189
+ }
190
+ }
191
+ // 如果溢出右边
192
+ if (left + panelWidth + marginSize > visibleWidth) {
193
+ left -= left + panelWidth + marginSize - visibleWidth
194
+ }
195
+ // 如果溢出左边
196
+ if (left < marginSize) {
197
+ left = marginSize
198
+ }
199
+ } else {
200
+ if (placement === 'top') {
201
+ panelPlacement = 'top'
202
+ bottom = targetHeight
203
+ } else if (!placement) {
204
+ // 如果下面不够放,则向上
205
+ top = targetHeight
206
+ if (boundingTop + targetHeight + panelHeight > visibleHeight) {
207
+ // 如果上面不够放,则向下(优先)
208
+ if (boundingTop - targetHeight - panelHeight > marginSize) {
209
+ panelPlacement = 'top'
210
+ top = ''
211
+ bottom = targetHeight
212
+ }
213
+ }
214
+ }
215
+ }
216
+ if (XEUtils.isNumber(top)) {
217
+ stys.top = toCssUnit(top)
218
+ }
219
+ if (XEUtils.isNumber(bottom)) {
220
+ stys.bottom = toCssUnit(bottom)
221
+ }
222
+ if (XEUtils.isNumber(left)) {
223
+ stys.left = toCssUnit(left)
224
+ }
225
+ if (XEUtils.isNumber(right)) {
226
+ stys.right = toCssUnit(right)
227
+ }
228
+ if (XEUtils.isNumber(minWidth)) {
229
+ stys.minWidth = toCssUnit(minWidth)
230
+ }
231
+ }
232
+ return {
233
+ top: top || 0,
234
+ bottom: bottom || 0,
235
+ left: left || 0,
236
+ right: right || 0,
237
+ style: stys,
238
+ placement: panelPlacement
239
+ }
240
+ }
@@ -1,6 +1,7 @@
1
1
  @use "sass:map";
2
2
  @use "sass:list";
3
3
  @use '../helpers/baseMixin.scss';
4
+ @use '../helpers/placement.scss';
4
5
 
5
6
  $btnThemeList: (
6
7
  (
@@ -356,27 +357,9 @@ $btnThemeList: (
356
357
  }
357
358
 
358
359
  .vxe-button--dropdown-panel {
359
- display: none;
360
- position: absolute;
361
- right: 0;
362
- padding: 4px 0;
363
- &.ani--leave {
364
- display: block;
365
- opacity: 0;
366
- transform: scaleY(0.5);
367
- transition: transform .3s cubic-bezier(.23,1,.32,1), opacity .3s cubic-bezier(.23,1,.32,1);
368
- transform-origin: center top;
369
- backface-visibility: hidden;
370
- transform-style: preserve-3d;
371
- &[placement="top"] {
372
- transform-origin: center bottom;
373
- }
374
- }
375
- &.ani--enter {
376
- opacity: 1;
377
- transform: scaleY(1);
378
- }
360
+ @include placement.createPlacementPanel();
379
361
  }
362
+
380
363
  .vxe-button--dropdown-wrapper {
381
364
  padding: 5px;
382
365
  background-color: var(--vxe-ui-layout-background-color);
@@ -1,4 +1,5 @@
1
1
  @use '../helpers/baseMixin.scss';
2
+ @use '../helpers/placement.scss';
2
3
 
3
4
  .vxe-color-picker {
4
5
  &.is--selected {
@@ -71,33 +72,7 @@
71
72
  }
72
73
 
73
74
  .vxe-color-picker--panel {
74
- display: none;
75
- position: absolute;
76
- left: 0;
77
- padding: 4px 0;
78
- color: var(--vxe-ui-font-color);
79
- text-align: left;
80
- &:not(.is--transfer) {
81
- min-width: 100%;
82
- }
83
- &.is--transfer {
84
- position: fixed;
85
- }
86
- &.ani--leave {
87
- display: block;
88
- opacity: 0;
89
- transform: scaleY(0.5);
90
- transition: transform .3s cubic-bezier(.23,1,.32,1), opacity .3s cubic-bezier(.23,1,.32,1);
91
- transform-origin: center top;
92
- backface-visibility: hidden;
93
- &[placement="top"] {
94
- transform-origin: center bottom;
95
- }
96
- }
97
- &.ani--enter {
98
- opacity: 1;
99
- transform: scaleY(1);
100
- }
75
+ @include placement.createPlacementPanel();
101
76
  }
102
77
 
103
78
  .vxe-color-picker--color-wrapper {
@@ -1,5 +1,6 @@
1
1
  @use "sass:list";
2
2
  @use '../helpers/baseMixin.scss';
3
+ @use '../helpers/placement.scss';
3
4
 
4
5
  .vxe-date-picker--readonly {
5
6
  color: var(--vxe-ui-font-color);
@@ -106,40 +107,7 @@
106
107
  }
107
108
 
108
109
  .vxe-date-picker--panel {
109
- display: none;
110
- position: absolute;
111
- left: 0;
112
- padding: 4px 0;
113
- color: var(--vxe-ui-font-color);
114
- font-size: var(--vxe-ui-font-size-default);
115
- text-align: left;
116
- &.is--transfer {
117
- position: fixed;
118
- }
119
- &.ani--leave {
120
- display: block;
121
- opacity: 0;
122
- transform: scaleY(0.5);
123
- transition: transform .3s cubic-bezier(.23,1,.32,1), opacity .3s cubic-bezier(.23,1,.32,1);
124
- transform-origin: center top;
125
- backface-visibility: hidden;
126
- transform-style: preserve-3d;
127
- &[placement="top"] {
128
- transform-origin: center bottom;
129
- }
130
- }
131
- &.ani--enter {
132
- opacity: 1;
133
- transform: scaleY(1);
134
- & > div {
135
- &::after {
136
- display: none;
137
- }
138
- }
139
- }
140
- & > div {
141
- @include baseMixin.createEmptyMask();
142
- }
110
+ @include placement.createPlacementPanel();
143
111
  }
144
112
 
145
113
  .vxe-date-picker--panel {
@@ -1,5 +1,6 @@
1
1
  @use "sass:list";
2
2
  @use '../helpers/baseMixin.scss';
3
+ @use '../helpers/placement.scss';
3
4
 
4
5
  .vxe-date-range-picker--readonly {
5
6
  color: var(--vxe-ui-font-color);
@@ -106,40 +107,7 @@
106
107
  }
107
108
 
108
109
  .vxe-date-range-picker--panel {
109
- display: none;
110
- position: absolute;
111
- left: 0;
112
- padding: 4px 0;
113
- color: var(--vxe-ui-font-color);
114
- font-size: var(--vxe-ui-font-size-default);
115
- text-align: left;
116
- &.is--transfer {
117
- position: fixed;
118
- }
119
- &.ani--leave {
120
- display: block;
121
- opacity: 0;
122
- transform: scaleY(0.5);
123
- transition: transform .3s cubic-bezier(.23,1,.32,1), opacity .3s cubic-bezier(.23,1,.32,1);
124
- transform-origin: center top;
125
- backface-visibility: hidden;
126
- transform-style: preserve-3d;
127
- &[placement="top"] {
128
- transform-origin: center bottom;
129
- }
130
- }
131
- &.ani--enter {
132
- opacity: 1;
133
- transform: scaleY(1);
134
- & > div {
135
- &::after {
136
- display: none;
137
- }
138
- }
139
- }
140
- & > div {
141
- @include baseMixin.createEmptyMask();
142
- }
110
+ @include placement.createPlacementPanel();
143
111
  }
144
112
 
145
113
  .vxe-date-range-picker--panel {
@@ -1,4 +1,5 @@
1
1
  @use '../helpers/baseMixin.scss';
2
+ @use '../helpers/placement.scss';
2
3
 
3
4
  .vxe-pulldown {
4
5
  position: relative;
@@ -9,47 +10,7 @@
9
10
  }
10
11
 
11
12
  .vxe-pulldown--panel {
12
- display: none;
13
- position: absolute;
14
- left: 0;
15
- padding: 4px 0;
16
- color: var(--vxe-ui-font-color);
17
- text-align: left;
18
- outline: 0;
19
- &:not(.is--transfer) {
20
- min-width: 100%;
21
- }
22
- &.is--shadow {
23
- .vxe-pulldown--panel-wrapper {
24
- box-shadow: var(--vxe-ui-base-popup-box-shadow);
25
- }
26
- }
27
- &.is--transfer {
28
- position: fixed;
29
- }
30
- &.ani--leave {
31
- display: block;
32
- opacity: 0;
33
- transform: scaleY(0.5);
34
- transition: transform .3s cubic-bezier(.23,1,.32,1), opacity .3s cubic-bezier(.23,1,.32,1);
35
- transform-origin: center top;
36
- backface-visibility: hidden;
37
- &[placement="top"] {
38
- transform-origin: center bottom;
39
- }
40
- }
41
- &.ani--enter {
42
- opacity: 1;
43
- transform: scaleY(1);
44
- & > div {
45
- &::after {
46
- display: none;
47
- }
48
- }
49
- }
50
- & > div {
51
- @include baseMixin.createEmptyMask();
52
- }
13
+ @include placement.createPlacementPanel();
53
14
  }
54
15
  .vxe-pulldown--panel-wrapper {
55
16
  background-color: var(--vxe-ui-layout-background-color);
@@ -1,4 +1,5 @@
1
1
  @use '../helpers/baseMixin.scss';
2
+ @use '../helpers/placement.scss';
2
3
 
3
4
  .vxe-select {
4
5
  position: relative;
@@ -50,41 +51,7 @@
50
51
  }
51
52
 
52
53
  .vxe-select--panel {
53
- display: none;
54
- position: absolute;
55
- left: 0;
56
- padding: 4px 0;
57
- color: var(--vxe-ui-font-color);
58
- text-align: left;
59
- &:not(.is--transfer) {
60
- min-width: 100%;
61
- }
62
- &.is--transfer {
63
- position: fixed;
64
- }
65
- &.ani--leave {
66
- display: block;
67
- opacity: 0;
68
- transform: scaleY(0.5);
69
- transition: transform .3s cubic-bezier(.23,1,.32,1), opacity .3s cubic-bezier(.23,1,.32,1);
70
- transform-origin: center top;
71
- backface-visibility: hidden;
72
- &[placement="top"] {
73
- transform-origin: center bottom;
74
- }
75
- }
76
- &.ani--enter {
77
- opacity: 1;
78
- transform: scaleY(1);
79
- & > div {
80
- &::after {
81
- display: none;
82
- }
83
- }
84
- }
85
- & > div {
86
- @include baseMixin.createEmptyMask();
87
- }
54
+ @include placement.createPlacementPanel();
88
55
  }
89
56
 
90
57
  .vxe-select--panel-search {
@@ -1,4 +1,5 @@
1
1
  @use '../helpers/baseMixin.scss';
2
+ @use '../helpers/placement.scss';
2
3
 
3
4
  .vxe-table-select {
4
5
  position: relative;
@@ -46,42 +47,7 @@
46
47
  }
47
48
 
48
49
  .vxe-table-select--panel {
49
- display: none;
50
- position: absolute;
51
- left: 0;
52
- padding: 4px 0;
53
- color: var(--vxe-ui-font-color);
54
- text-align: left;
55
- pointer-events: none;
56
- &:not(.is--transfer) {
57
- min-width: 100%;
58
- }
59
- &.is--transfer {
60
- position: fixed;
61
- }
62
- &.ani--leave {
63
- display: block;
64
- opacity: 0;
65
- transform: scaleY(0.5);
66
- transition: transform .3s cubic-bezier(.23,1,.32,1), opacity .3s cubic-bezier(.23,1,.32,1);
67
- transform-origin: center top;
68
- backface-visibility: hidden;
69
- &[placement="top"] {
70
- transform-origin: center bottom;
71
- }
72
- }
73
- &.ani--enter {
74
- opacity: 1;
75
- transform: scaleY(1);
76
- & > div {
77
- &::after {
78
- display: none;
79
- }
80
- }
81
- }
82
- & > div {
83
- @include baseMixin.createEmptyMask();
84
- }
50
+ @include placement.createPlacementPanel();
85
51
  }
86
52
 
87
53
  .vxe-table-select--panel-search {
@@ -1,4 +1,5 @@
1
1
  @use '../helpers/baseMixin.scss';
2
+ @use '../helpers/placement.scss';
2
3
 
3
4
  .vxe-tree-select {
4
5
  position: relative;
@@ -46,42 +47,7 @@
46
47
  }
47
48
 
48
49
  .vxe-tree-select--panel {
49
- display: none;
50
- position: absolute;
51
- left: 0;
52
- padding: 4px 0;
53
- color: var(--vxe-ui-font-color);
54
- text-align: left;
55
- pointer-events: none;
56
- &:not(.is--transfer) {
57
- min-width: 100%;
58
- }
59
- &.is--transfer {
60
- position: fixed;
61
- }
62
- &.ani--leave {
63
- display: block;
64
- opacity: 0;
65
- transform: scaleY(0.5);
66
- transition: transform .3s cubic-bezier(.23,1,.32,1), opacity .3s cubic-bezier(.23,1,.32,1);
67
- transform-origin: center top;
68
- backface-visibility: hidden;
69
- &[placement="top"] {
70
- transform-origin: center bottom;
71
- }
72
- }
73
- &.ani--enter {
74
- opacity: 1;
75
- transform: scaleY(1);
76
- & > div {
77
- &::after {
78
- display: none;
79
- }
80
- }
81
- }
82
- & > div {
83
- @include baseMixin.createEmptyMask();
84
- }
50
+ @include placement.createPlacementPanel();
85
51
  }
86
52
 
87
53
  .vxe-tree-select--panel-search {