vxe-pc-ui 4.6.4 → 4.6.6

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 (131) hide show
  1. package/es/button/src/button.js +83 -90
  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/pulldown/src/pulldown.js +19 -74
  15. package/es/pulldown/style.css +0 -4
  16. package/es/pulldown/style.min.css +1 -1
  17. package/es/select/src/select.js +19 -72
  18. package/es/style.css +1 -1
  19. package/es/style.min.css +1 -1
  20. package/es/table-select/src/table-select.js +19 -72
  21. package/es/table-select/style.css +0 -1
  22. package/es/table-select/style.min.css +1 -1
  23. package/es/tree-select/src/tree-select.js +19 -72
  24. package/es/tree-select/style.css +0 -1
  25. package/es/tree-select/style.min.css +1 -1
  26. package/es/ui/index.js +1 -1
  27. package/es/ui/src/dom.js +92 -0
  28. package/es/ui/src/log.js +1 -1
  29. package/es/vxe-button/style.css +24 -2
  30. package/es/vxe-button/style.min.css +1 -1
  31. package/es/vxe-color-picker/style.css +15 -0
  32. package/es/vxe-color-picker/style.min.css +1 -1
  33. package/es/vxe-date-picker/style.css +3 -2
  34. package/es/vxe-date-picker/style.min.css +1 -1
  35. package/es/vxe-date-range-picker/style.css +3 -2
  36. package/es/vxe-date-range-picker/style.min.css +1 -1
  37. package/es/vxe-pulldown/style.css +0 -4
  38. package/es/vxe-pulldown/style.min.css +1 -1
  39. package/es/vxe-table-select/style.css +0 -1
  40. package/es/vxe-table-select/style.min.css +1 -1
  41. package/es/vxe-tree-select/style.css +0 -1
  42. package/es/vxe-tree-select/style.min.css +1 -1
  43. package/lib/button/src/button.js +88 -93
  44. package/lib/button/src/button.min.js +1 -1
  45. package/lib/button/style/style.css +24 -2
  46. package/lib/button/style/style.min.css +1 -1
  47. package/lib/color-picker/src/color-picker.js +22 -77
  48. package/lib/color-picker/src/color-picker.min.js +1 -1
  49. package/lib/color-picker/style/style.css +15 -0
  50. package/lib/color-picker/style/style.min.css +1 -1
  51. package/lib/date-picker/src/date-picker.js +22 -79
  52. package/lib/date-picker/src/date-picker.min.js +1 -1
  53. package/lib/date-picker/style/style.css +3 -2
  54. package/lib/date-picker/style/style.min.css +1 -1
  55. package/lib/date-range-picker/src/date-range-picker.js +26 -83
  56. package/lib/date-range-picker/src/date-range-picker.min.js +1 -1
  57. package/lib/date-range-picker/style/style.css +3 -2
  58. package/lib/date-range-picker/style/style.min.css +1 -1
  59. package/lib/icon/style/style.css +1 -1
  60. package/lib/icon/style/style.min.css +1 -1
  61. package/lib/index.umd.js +344 -645
  62. package/lib/index.umd.min.js +1 -1
  63. package/lib/pulldown/src/pulldown.js +22 -80
  64. package/lib/pulldown/src/pulldown.min.js +1 -1
  65. package/lib/pulldown/style/style.css +0 -4
  66. package/lib/pulldown/style/style.min.css +1 -1
  67. package/lib/select/src/select.js +22 -77
  68. package/lib/select/src/select.min.js +1 -1
  69. package/lib/style.css +1 -1
  70. package/lib/style.min.css +1 -1
  71. package/lib/table-select/src/table-select.js +22 -77
  72. package/lib/table-select/src/table-select.min.js +1 -1
  73. package/lib/table-select/style/style.css +0 -1
  74. package/lib/table-select/style/style.min.css +1 -1
  75. package/lib/tree-select/src/tree-select.js +22 -77
  76. package/lib/tree-select/src/tree-select.min.js +1 -1
  77. package/lib/tree-select/style/style.css +0 -1
  78. package/lib/tree-select/style/style.min.css +1 -1
  79. package/lib/ui/index.js +1 -1
  80. package/lib/ui/index.min.js +1 -1
  81. package/lib/ui/src/dom.js +97 -0
  82. package/lib/ui/src/dom.min.js +1 -1
  83. package/lib/ui/src/log.js +1 -1
  84. package/lib/ui/src/log.min.js +1 -1
  85. package/lib/vxe-button/style/style.css +24 -2
  86. package/lib/vxe-button/style/style.min.css +1 -1
  87. package/lib/vxe-color-picker/style/style.css +15 -0
  88. package/lib/vxe-color-picker/style/style.min.css +1 -1
  89. package/lib/vxe-date-picker/style/style.css +3 -2
  90. package/lib/vxe-date-picker/style/style.min.css +1 -1
  91. package/lib/vxe-date-range-picker/style/style.css +3 -2
  92. package/lib/vxe-date-range-picker/style/style.min.css +1 -1
  93. package/lib/vxe-pulldown/style/style.css +0 -4
  94. package/lib/vxe-pulldown/style/style.min.css +1 -1
  95. package/lib/vxe-table-select/style/style.css +0 -1
  96. package/lib/vxe-table-select/style/style.min.css +1 -1
  97. package/lib/vxe-tree-select/style/style.css +0 -1
  98. package/lib/vxe-tree-select/style/style.min.css +1 -1
  99. package/package.json +1 -1
  100. package/packages/button/src/button.ts +87 -88
  101. package/packages/color-picker/src/color-picker.ts +19 -69
  102. package/packages/date-picker/src/date-picker.ts +20 -72
  103. package/packages/date-range-picker/src/date-range-picker.ts +24 -76
  104. package/packages/pulldown/src/pulldown.ts +20 -72
  105. package/packages/select/src/select.ts +19 -69
  106. package/packages/table-select/src/table-select.ts +19 -69
  107. package/packages/tree-select/src/tree-select.ts +19 -69
  108. package/packages/ui/src/dom.ts +95 -0
  109. package/styles/components/button.scss +3 -20
  110. package/styles/components/color-picker.scss +2 -27
  111. package/styles/components/date-picker.scss +2 -34
  112. package/styles/components/date-range-picker.scss +2 -34
  113. package/styles/components/pulldown.scss +2 -41
  114. package/styles/components/select.scss +2 -35
  115. package/styles/components/table-select.scss +2 -36
  116. package/styles/components/tree-select.scss +2 -36
  117. package/styles/helpers/placement.scss +39 -0
  118. package/types/components/button.d.ts +12 -1
  119. package/types/components/table.d.ts +56 -3
  120. /package/es/icon/{iconfont.1747024965925.ttf → iconfont.1747109497236.ttf} +0 -0
  121. /package/es/icon/{iconfont.1747024965925.woff → iconfont.1747109497236.woff} +0 -0
  122. /package/es/icon/{iconfont.1747024965925.woff2 → iconfont.1747109497236.woff2} +0 -0
  123. /package/es/{iconfont.1747024965925.ttf → iconfont.1747109497236.ttf} +0 -0
  124. /package/es/{iconfont.1747024965925.woff → iconfont.1747109497236.woff} +0 -0
  125. /package/es/{iconfont.1747024965925.woff2 → iconfont.1747109497236.woff2} +0 -0
  126. /package/lib/icon/style/{iconfont.1747024965925.ttf → iconfont.1747109497236.ttf} +0 -0
  127. /package/lib/icon/style/{iconfont.1747024965925.woff → iconfont.1747109497236.woff} +0 -0
  128. /package/lib/icon/style/{iconfont.1747024965925.woff2 → iconfont.1747109497236.woff2} +0 -0
  129. /package/lib/{iconfont.1747024965925.ttf → iconfont.1747109497236.ttf} +0 -0
  130. /package/lib/{iconfont.1747024965925.woff → iconfont.1747109497236.woff} +0 -0
  131. /package/lib/{iconfont.1747024965925.woff2 → iconfont.1747109497236.woff2} +0 -0
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, h, Teleport, ref, onUnmounted, reactive, inject, computed, nextTick, watch, createCommentVNode } from 'vue';
2
2
  import XEUtils from 'xe-utils';
3
3
  import { getConfig, globalEvents, createEvent, useSize } from '../../ui';
4
- import { getAbsolutePos, getEventTargetNode } from '../../ui/src/dom';
4
+ import { getEventTargetNode, updatePanelPlacement } from '../../ui/src/dom';
5
5
  import { getLastZIndex, nextZIndex } from '../../ui/src/utils';
6
6
  export default defineComponent({
7
7
  name: 'VxePulldown',
@@ -98,79 +98,24 @@ export default defineComponent({
98
98
  * 手动更新位置
99
99
  */
100
100
  const updatePlacement = () => {
101
- return nextTick().then(() => {
102
- const { placement } = props;
103
- const { panelIndex, visiblePanel } = reactData;
104
- const btnTransfer = computeBtnTransfer.value;
105
- if (visiblePanel) {
106
- const targetElem = refPulldownContent.value;
107
- const panelElem = refPulldownPanel.value;
108
- if (panelElem && targetElem) {
109
- const targetHeight = targetElem.offsetHeight;
110
- const targetWidth = targetElem.offsetWidth;
111
- const panelHeight = panelElem.offsetHeight;
112
- const panelWidth = panelElem.offsetWidth;
113
- const marginSize = 5;
114
- const panelStyle = {
115
- zIndex: panelIndex
116
- };
117
- const { boundingTop, boundingLeft, visibleHeight, visibleWidth } = getAbsolutePos(targetElem);
118
- let panelPlacement = 'bottom';
119
- if (btnTransfer) {
120
- let left = boundingLeft;
121
- let top = boundingTop + targetHeight;
122
- if (placement === 'top') {
123
- panelPlacement = 'top';
124
- top = boundingTop - panelHeight;
125
- }
126
- else if (!placement) {
127
- // 如果下面不够放,则向上
128
- if (top + panelHeight + marginSize > visibleHeight) {
129
- panelPlacement = 'top';
130
- top = boundingTop - panelHeight;
131
- }
132
- // 如果上面不够放,则向下(优先)
133
- if (top < marginSize) {
134
- panelPlacement = 'bottom';
135
- top = boundingTop + targetHeight;
136
- }
137
- }
138
- // 如果溢出右边
139
- if (left + panelWidth + marginSize > visibleWidth) {
140
- left -= left + panelWidth + marginSize - visibleWidth;
141
- }
142
- // 如果溢出左边
143
- if (left < marginSize) {
144
- left = marginSize;
145
- }
146
- Object.assign(panelStyle, {
147
- left: `${left}px`,
148
- top: `${top}px`,
149
- minWidth: `${targetWidth}px`
150
- });
151
- }
152
- else {
153
- if (placement === 'top') {
154
- panelPlacement = 'top';
155
- panelStyle.bottom = `${targetHeight}px`;
156
- }
157
- else if (!placement) {
158
- // 如果下面不够放,则向上
159
- if (boundingTop + targetHeight + panelHeight > visibleHeight) {
160
- // 如果上面不够放,则向下(优先)
161
- if (boundingTop - targetHeight - panelHeight > marginSize) {
162
- panelPlacement = 'top';
163
- panelStyle.bottom = `${targetHeight}px`;
164
- }
165
- }
166
- }
167
- }
168
- reactData.panelStyle = panelStyle;
169
- reactData.panelPlacement = panelPlacement;
170
- }
171
- }
172
- return nextTick();
173
- });
101
+ const { placement } = props;
102
+ const { panelIndex } = reactData;
103
+ const targetElem = refPulldownContent.value;
104
+ const panelElem = refPulldownPanel.value;
105
+ const btnTransfer = computeBtnTransfer.value;
106
+ const handleStyle = () => {
107
+ const ppObj = updatePanelPlacement(targetElem, panelElem, {
108
+ placement,
109
+ teleportTo: btnTransfer
110
+ });
111
+ const panelStyle = Object.assign(ppObj.style, {
112
+ zIndex: panelIndex
113
+ });
114
+ reactData.panelStyle = panelStyle;
115
+ reactData.panelPlacement = ppObj.placement;
116
+ };
117
+ handleStyle();
118
+ return nextTick().then(handleStyle);
174
119
  };
175
120
  /**
176
121
  * 显示下拉面板
@@ -13,14 +13,10 @@
13
13
  padding: 4px 0;
14
14
  color: var(--vxe-ui-font-color);
15
15
  text-align: left;
16
- outline: 0;
17
16
  }
18
17
  .vxe-pulldown--panel:not(.is--transfer) {
19
18
  min-width: 100%;
20
19
  }
21
- .vxe-pulldown--panel.is--shadow .vxe-pulldown--panel-wrapper {
22
- box-shadow: var(--vxe-ui-base-popup-box-shadow);
23
- }
24
20
  .vxe-pulldown--panel.is--transfer {
25
21
  position: fixed;
26
22
  }
@@ -1 +1 @@
1
- .vxe-pulldown{position:relative;display:inline-block;color:var(--vxe-ui-font-color);font-family:var(--vxe-ui-font-family);text-align:left}.vxe-pulldown--panel{display:none;position:absolute;left:0;padding:4px 0;color:var(--vxe-ui-font-color);text-align:left;outline:0}.vxe-pulldown--panel:not(.is--transfer){min-width:100%}.vxe-pulldown--panel.is--shadow .vxe-pulldown--panel-wrapper{box-shadow:var(--vxe-ui-base-popup-box-shadow)}.vxe-pulldown--panel.is--transfer{position:fixed}.vxe-pulldown--panel.ani--leave{display:block;opacity:0;transform:scaleY(.5);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transform-origin:center top;backface-visibility:hidden}.vxe-pulldown--panel.ani--leave[placement=top]{transform-origin:center bottom}.vxe-pulldown--panel.ani--enter{opacity:1;transform:scaleY(1)}.vxe-pulldown--panel.ani--enter>div::after{display:none}.vxe-pulldown--panel>div::after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-pulldown--panel-wrapper{background-color:var(--vxe-ui-layout-background-color)}.vxe-pulldown--panel-list .vxe-pulldown--panel-item{line-height:30px;max-width:50vw;padding:0 var(--vxe-ui-layout-padding-default);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-pulldown--panel-list .vxe-pulldown--panel-item:not(.is--disabled){cursor:pointer}.vxe-pulldown--panel-list .vxe-pulldown--panel-item:not(.is--disabled):hover{background-color:var(--vxe-ui-base-hover-background-color)}.vxe-pulldown--panel-list .vxe-pulldown--panel-item.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:no-drop}.vxe-pulldown,.vxe-pulldown--panel{font-size:var(--vxe-ui-font-size-default)}.vxe-pulldown--panel.size--medium,.vxe-pulldown.size--medium{font-size:var(--vxe-ui-font-size-medium)}.vxe-pulldown--panel.size--small,.vxe-pulldown.size--small{font-size:var(--vxe-ui-font-size-small)}.vxe-pulldown--panel.size--mini,.vxe-pulldown.size--mini{font-size:var(--vxe-ui-font-size-mini)}.vxe-pulldown--panel .vxe-pulldown--panel-item{height:var(--vxe-ui-pulldown-option-height-default)}.vxe-pulldown--panel.size--medium .vxe-pulldown--panel-item{height:var(--vxe-ui-pulldown-option-height-medium)}.vxe-pulldown--panel.size--small .vxe-pulldown--panel-item{height:var(--vxe-ui-pulldown-option-height-medium)}.vxe-pulldown--panel.size--mini .vxe-pulldown--panel-item{height:var(--vxe-ui-pulldown-option-height-medium)}
1
+ .vxe-pulldown{position:relative;display:inline-block;color:var(--vxe-ui-font-color);font-family:var(--vxe-ui-font-family);text-align:left}.vxe-pulldown--panel{display:none;position:absolute;left:0;padding:4px 0;color:var(--vxe-ui-font-color);text-align:left}.vxe-pulldown--panel:not(.is--transfer){min-width:100%}.vxe-pulldown--panel.is--transfer{position:fixed}.vxe-pulldown--panel.ani--leave{display:block;opacity:0;transform:scaleY(.5);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transform-origin:center top;backface-visibility:hidden}.vxe-pulldown--panel.ani--leave[placement=top]{transform-origin:center bottom}.vxe-pulldown--panel.ani--enter{opacity:1;transform:scaleY(1)}.vxe-pulldown--panel.ani--enter>div::after{display:none}.vxe-pulldown--panel>div::after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-pulldown--panel-wrapper{background-color:var(--vxe-ui-layout-background-color)}.vxe-pulldown--panel-list .vxe-pulldown--panel-item{line-height:30px;max-width:50vw;padding:0 var(--vxe-ui-layout-padding-default);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-pulldown--panel-list .vxe-pulldown--panel-item:not(.is--disabled){cursor:pointer}.vxe-pulldown--panel-list .vxe-pulldown--panel-item:not(.is--disabled):hover{background-color:var(--vxe-ui-base-hover-background-color)}.vxe-pulldown--panel-list .vxe-pulldown--panel-item.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:no-drop}.vxe-pulldown,.vxe-pulldown--panel{font-size:var(--vxe-ui-font-size-default)}.vxe-pulldown--panel.size--medium,.vxe-pulldown.size--medium{font-size:var(--vxe-ui-font-size-medium)}.vxe-pulldown--panel.size--small,.vxe-pulldown.size--small{font-size:var(--vxe-ui-font-size-small)}.vxe-pulldown--panel.size--mini,.vxe-pulldown.size--mini{font-size:var(--vxe-ui-font-size-mini)}.vxe-pulldown--panel .vxe-pulldown--panel-item{height:var(--vxe-ui-pulldown-option-height-default)}.vxe-pulldown--panel.size--medium .vxe-pulldown--panel-item{height:var(--vxe-ui-pulldown-option-height-medium)}.vxe-pulldown--panel.size--small .vxe-pulldown--panel-item{height:var(--vxe-ui-pulldown-option-height-medium)}.vxe-pulldown--panel.size--mini .vxe-pulldown--panel-item{height:var(--vxe-ui-pulldown-option-height-medium)}
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, h, Teleport, ref, inject, computed, provide, onUnmounted, reactive, nextTick, watch, onMounted } from 'vue';
2
2
  import XEUtils from 'xe-utils';
3
3
  import { getConfig, getIcon, getI18n, globalEvents, GLOBAL_EVENT_KEYS, createEvent, useSize, renderEmptyElement } from '../../ui';
4
- import { getEventTargetNode, getAbsolutePos } from '../../ui/src/dom';
4
+ import { getEventTargetNode, updatePanelPlacement } from '../../ui/src/dom';
5
5
  import { getLastZIndex, nextZIndex, getFuncText } from '../../ui/src/utils';
6
6
  import { getSlotVNs } from '../../ui/src/vn';
7
7
  import VxeInputComponent from '../../input/src/input';
@@ -367,77 +367,24 @@ export default defineComponent({
367
367
  }
368
368
  };
369
369
  const updatePlacement = () => {
370
- return nextTick().then(() => {
371
- const { placement } = props;
372
- const { panelIndex } = reactData;
373
- const el = refElem.value;
374
- const panelElem = refOptionPanel.value;
375
- const btnTransfer = computeBtnTransfer.value;
376
- if (panelElem && el) {
377
- const targetHeight = el.offsetHeight;
378
- const targetWidth = el.offsetWidth;
379
- const panelHeight = panelElem.offsetHeight;
380
- const panelWidth = panelElem.offsetWidth;
381
- const marginSize = 5;
382
- const panelStyle = {
383
- zIndex: panelIndex
384
- };
385
- const { boundingTop, boundingLeft, visibleHeight, visibleWidth } = getAbsolutePos(el);
386
- let panelPlacement = 'bottom';
387
- if (btnTransfer) {
388
- let left = boundingLeft;
389
- let top = boundingTop + targetHeight;
390
- if (placement === 'top') {
391
- panelPlacement = 'top';
392
- top = boundingTop - panelHeight;
393
- }
394
- else if (!placement) {
395
- // 如果下面不够放,则向上
396
- if (top + panelHeight + marginSize > visibleHeight) {
397
- panelPlacement = 'top';
398
- top = boundingTop - panelHeight;
399
- }
400
- // 如果上面不够放,则向下(优先)
401
- if (top < marginSize) {
402
- panelPlacement = 'bottom';
403
- top = boundingTop + targetHeight;
404
- }
405
- }
406
- // 如果溢出右边
407
- if (left + panelWidth + marginSize > visibleWidth) {
408
- left -= left + panelWidth + marginSize - visibleWidth;
409
- }
410
- // 如果溢出左边
411
- if (left < marginSize) {
412
- left = marginSize;
413
- }
414
- Object.assign(panelStyle, {
415
- left: `${left}px`,
416
- top: `${top}px`,
417
- minWidth: `${targetWidth}px`
418
- });
419
- }
420
- else {
421
- if (placement === 'top') {
422
- panelPlacement = 'top';
423
- panelStyle.bottom = `${targetHeight}px`;
424
- }
425
- else if (!placement) {
426
- // 如果下面不够放,则向上
427
- if (boundingTop + targetHeight + panelHeight > visibleHeight) {
428
- // 如果上面不够放,则向下(优先)
429
- if (boundingTop - targetHeight - panelHeight > marginSize) {
430
- panelPlacement = 'top';
431
- panelStyle.bottom = `${targetHeight}px`;
432
- }
433
- }
434
- }
435
- }
436
- reactData.panelStyle = panelStyle;
437
- reactData.panelPlacement = panelPlacement;
438
- return nextTick();
439
- }
440
- });
370
+ const { placement } = props;
371
+ const { panelIndex } = reactData;
372
+ const targetElem = refElem.value;
373
+ const panelElem = refOptionPanel.value;
374
+ const btnTransfer = computeBtnTransfer.value;
375
+ const handleStyle = () => {
376
+ const ppObj = updatePanelPlacement(targetElem, panelElem, {
377
+ placement,
378
+ teleportTo: btnTransfer
379
+ });
380
+ const panelStyle = Object.assign(ppObj.style, {
381
+ zIndex: panelIndex
382
+ });
383
+ reactData.panelStyle = panelStyle;
384
+ reactData.panelPlacement = ppObj.placement;
385
+ };
386
+ handleStyle();
387
+ return nextTick().then(handleStyle);
441
388
  };
442
389
  const showOptionPanel = () => {
443
390
  const { loading, filterable, remote } = props;