vxe-pc-ui 3.3.40 → 3.3.42

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 (57) hide show
  1. package/es/color-picker/src/color-picker.js +10 -1
  2. package/es/form/src/render.js +3 -2
  3. package/es/icon/style.css +1 -1
  4. package/es/list/src/list.js +60 -12
  5. package/es/style.css +1 -1
  6. package/es/style.min.css +1 -1
  7. package/es/ui/index.js +2 -1
  8. package/es/ui/src/log.js +1 -1
  9. package/es/upload/src/upload.js +9 -2
  10. package/es/upload/style.css +9 -7
  11. package/es/upload/style.min.css +1 -1
  12. package/es/vxe-upload/style.css +9 -7
  13. package/es/vxe-upload/style.min.css +1 -1
  14. package/lib/color-picker/src/color-picker.js +10 -1
  15. package/lib/color-picker/src/color-picker.min.js +1 -1
  16. package/lib/form/src/render.js +2 -1
  17. package/lib/form/src/render.min.js +1 -1
  18. package/lib/icon/style/style.css +1 -1
  19. package/lib/icon/style/style.min.css +1 -1
  20. package/lib/index.umd.js +82 -16
  21. package/lib/index.umd.min.js +1 -1
  22. package/lib/list/src/list.js +58 -11
  23. package/lib/list/src/list.min.js +1 -1
  24. package/lib/style.css +1 -1
  25. package/lib/style.min.css +1 -1
  26. package/lib/ui/index.js +2 -1
  27. package/lib/ui/index.min.js +1 -1
  28. package/lib/ui/src/log.js +1 -1
  29. package/lib/ui/src/log.min.js +1 -1
  30. package/lib/upload/src/upload.js +9 -1
  31. package/lib/upload/src/upload.min.js +1 -1
  32. package/lib/upload/style/style.css +9 -7
  33. package/lib/upload/style/style.min.css +1 -1
  34. package/lib/vxe-upload/style/style.css +9 -7
  35. package/lib/vxe-upload/style/style.min.css +1 -1
  36. package/package.json +1 -1
  37. package/packages/color-picker/src/color-picker.ts +8 -0
  38. package/packages/form/src/render.ts +3 -2
  39. package/packages/list/src/list.ts +63 -13
  40. package/packages/ui/index.ts +1 -0
  41. package/packages/upload/src/upload.ts +10 -3
  42. package/styles/components/upload.scss +12 -11
  43. package/types/components/color-picker.d.ts +42 -2
  44. package/types/components/list.d.ts +3 -1
  45. package/types/components/table-module/edit.d.ts +26 -7
  46. /package/es/icon/{iconfont.1734517198871.ttf → iconfont.1734675929343.ttf} +0 -0
  47. /package/es/icon/{iconfont.1734517198871.woff → iconfont.1734675929343.woff} +0 -0
  48. /package/es/icon/{iconfont.1734517198871.woff2 → iconfont.1734675929343.woff2} +0 -0
  49. /package/es/{iconfont.1734517198871.ttf → iconfont.1734675929343.ttf} +0 -0
  50. /package/es/{iconfont.1734517198871.woff → iconfont.1734675929343.woff} +0 -0
  51. /package/es/{iconfont.1734517198871.woff2 → iconfont.1734675929343.woff2} +0 -0
  52. /package/lib/icon/style/{iconfont.1734517198871.ttf → iconfont.1734675929343.ttf} +0 -0
  53. /package/lib/icon/style/{iconfont.1734517198871.woff → iconfont.1734675929343.woff} +0 -0
  54. /package/lib/icon/style/{iconfont.1734517198871.woff2 → iconfont.1734675929343.woff2} +0 -0
  55. /package/lib/{iconfont.1734517198871.ttf → iconfont.1734675929343.ttf} +0 -0
  56. /package/lib/{iconfont.1734517198871.woff → iconfont.1734675929343.woff} +0 -0
  57. /package/lib/{iconfont.1734517198871.woff2 → iconfont.1734675929343.woff2} +0 -0
@@ -2,7 +2,7 @@ import { PropType, CreateElement, VNode } from 'vue'
2
2
  import { defineVxeComponent } from '../../ui/src/comp'
3
3
  import XEUtils from 'xe-utils'
4
4
  import { getConfig, globalEvents, globalResize, createEvent, globalMixins } from '../../ui'
5
- import { browse } from '../../ui/src/dom'
5
+ import { browse, isScale } from '../../ui/src/dom'
6
6
  import { getSlotVNs } from '../../ui/src/vn'
7
7
  import VxeLoadingComponent from '../../loading/src/loading'
8
8
 
@@ -29,7 +29,9 @@ export default defineVxeComponent({
29
29
  const reactData: ListReactData = {
30
30
  scrollYLoad: false,
31
31
  bodyHeight: 0,
32
- rowHeight: 0,
32
+ customHeight: 0,
33
+ customMaxHeight: 0,
34
+ parentHeight: 0,
33
35
  topSpaceHeight: 0,
34
36
  items: []
35
37
  }
@@ -65,14 +67,16 @@ export default defineVxeComponent({
65
67
  computeStyles () {
66
68
  const $xeList = this
67
69
  const props = $xeList
70
+ const reactData = $xeList.reactData
68
71
 
69
72
  const { height, maxHeight } = props
73
+ const { customHeight, customMaxHeight } = reactData
70
74
  const style: { [key: string]: string | number } = {}
71
75
  if (height) {
72
- style.height = `${isNaN(height as number) ? height : `${height}px`}`
76
+ style.height = `${customHeight}px`
73
77
  } else if (maxHeight) {
74
78
  style.height = 'auto'
75
- style.maxHeight = `${isNaN(maxHeight as number) ? maxHeight : `${maxHeight}px`}`
79
+ style.maxHeight = `${customMaxHeight}px`
76
80
  }
77
81
  return style
78
82
  }
@@ -135,6 +139,35 @@ export default defineVxeComponent({
135
139
  $xeList.clearScroll()
136
140
  return $xeList.loadData(datas)
137
141
  },
142
+ calcTableHeight (key: 'height' | 'maxHeight') {
143
+ const $xeList = this
144
+ const props = $xeList
145
+ const reactData = $xeList.reactData
146
+
147
+ const { parentHeight } = reactData
148
+ const val = props[key]
149
+ let num = 0
150
+ if (val) {
151
+ if (val === '100%' || val === 'auto') {
152
+ num = parentHeight
153
+ } else {
154
+ if (isScale(val)) {
155
+ num = Math.floor((XEUtils.toInteger(val) || 1) / 100 * parentHeight)
156
+ } else {
157
+ num = XEUtils.toNumber(val)
158
+ }
159
+ num = Math.max(40, num)
160
+ }
161
+ }
162
+ return num
163
+ },
164
+ updateHeight () {
165
+ const $xeList = this
166
+ const reactData = $xeList.reactData
167
+
168
+ reactData.customHeight = $xeList.calcTableHeight('height')
169
+ reactData.customMaxHeight = $xeList.calcTableHeight('maxHeight')
170
+ },
138
171
  updateYSpace () {
139
172
  const $xeList = this
140
173
  const reactData = $xeList.reactData
@@ -169,7 +202,7 @@ export default defineVxeComponent({
169
202
  return $xeList.$nextTick().then(() => {
170
203
  const { scrollYLoad } = reactData
171
204
  const { scrollYStore } = internalData
172
- const virtualBodyElem = $xeList.$refs.refVirtualBody as HTMLElement
205
+ const virtualBodyElem = $xeList.$refs.refVirtualBody as HTMLDivElement
173
206
  const sYOpts = $xeList.computeSYOpts
174
207
  let rowHeight = 0
175
208
  let firstItemElem: HTMLElement | undefined
@@ -193,12 +226,11 @@ export default defineVxeComponent({
193
226
  const offsetYSize = sYOpts.oSize ? XEUtils.toNumber(sYOpts.oSize) : (browse.edge ? 10 : 0)
194
227
  scrollYStore.offsetSize = offsetYSize
195
228
  scrollYStore.visibleSize = visibleYSize
196
- scrollYStore.endIndex = Math.max(scrollYStore.startIndex, visibleYSize + offsetYSize, scrollYStore.endIndex)
229
+ scrollYStore.endIndex = Math.max(scrollYStore.startIndex + visibleYSize + offsetYSize, scrollYStore.endIndex)
197
230
  $xeList.updateYData()
198
231
  } else {
199
232
  $xeList.updateYSpace()
200
233
  }
201
- reactData.rowHeight = rowHeight
202
234
  })
203
235
  },
204
236
  /**
@@ -261,12 +293,18 @@ export default defineVxeComponent({
261
293
  */
262
294
  recalculate () {
263
295
  const $xeList = this
296
+ const reactData = $xeList.reactData
264
297
 
265
298
  const el = $xeList.$refs.refElem as HTMLDivElement
266
- if (el.clientWidth && el.clientHeight) {
267
- return $xeList.computeScrollLoad()
299
+ if (el) {
300
+ const parentEl = el.parentElement
301
+ reactData.parentHeight = parentEl ? parentEl.clientHeight : 0
302
+ $xeList.updateHeight()
303
+ if (el.clientWidth && el.clientHeight) {
304
+ return $xeList.computeScrollLoad()
305
+ }
268
306
  }
269
- return Promise.resolve()
307
+ return $xeList.$nextTick()
270
308
  },
271
309
  loadYData (evnt: Event) {
272
310
  const $xeList = this
@@ -367,6 +405,16 @@ export default defineVxeComponent({
367
405
 
368
406
  $xeList.loadData(props.data || [])
369
407
  },
408
+ height () {
409
+ const $xeList = this
410
+
411
+ $xeList.recalculate()
412
+ },
413
+ maxHeight () {
414
+ const $xeList = this
415
+
416
+ $xeList.recalculate()
417
+ },
370
418
  syncResize (val) {
371
419
  const $xeList = this
372
420
 
@@ -380,9 +428,6 @@ export default defineVxeComponent({
380
428
  const $xeList = this
381
429
  const props = $xeList
382
430
 
383
- globalEvents.on($xeList, 'resize', () => {
384
- $xeList.recalculate()
385
- })
386
431
  $xeList.loadData(props.data || [])
387
432
  },
388
433
  mounted () {
@@ -390,12 +435,17 @@ export default defineVxeComponent({
390
435
  const props = $xeList
391
436
  const internalData = $xeList.internalData
392
437
 
438
+ $xeList.recalculate()
393
439
  if (props.autoResize) {
394
440
  const el = $xeList.$refs.refElem as HTMLDivElement
395
441
  const resizeObserver = globalResize.create(() => $xeList.recalculate())
396
442
  resizeObserver.observe(el)
443
+ if (el) {
444
+ resizeObserver.observe(el.parentElement as HTMLDivElement)
445
+ }
397
446
  internalData.resizeObserver = resizeObserver
398
447
  }
448
+ globalEvents.on($xeList, 'resize', $xeList.recalculate)
399
449
  },
400
450
  activated () {
401
451
  const $xeList = this
@@ -79,6 +79,7 @@ setConfig({
79
79
  },
80
80
  collapsePane: {},
81
81
  countdown: {},
82
+ colorPicker: {},
82
83
  datePicker: {
83
84
  // size: null,
84
85
  // transfer: false
@@ -1008,7 +1008,7 @@ export default defineVxeComponent({
1008
1008
  slots: {
1009
1009
  default (params, h) {
1010
1010
  const { showErrorStatus, dragToUpload, dragSort } = props
1011
- const { isDragMove, isDragUploadStatus, dragIndex } = reactData
1011
+ const { isActivated, isDragMove, isDragUploadStatus, dragIndex } = reactData
1012
1012
  const { fileList } = reactData
1013
1013
  const isDisabled = $xeUpload.computeIsDisabled
1014
1014
 
@@ -1026,6 +1026,7 @@ export default defineVxeComponent({
1026
1026
  class: ['vxe-upload--more-popup', {
1027
1027
  'is--readonly': formReadonly,
1028
1028
  'is--disabled': isDisabled,
1029
+ 'is--active': isActivated,
1029
1030
  'show--error': showErrorStatus,
1030
1031
  'is--drag': isDragUploadStatus
1031
1032
  }],
@@ -1199,8 +1200,14 @@ export default defineVxeComponent({
1199
1200
  const $xeUpload = this
1200
1201
  const reactData = $xeUpload.reactData
1201
1202
 
1202
- const el = $xeUpload.$refs.refElem
1203
- const isActivated = getEventTargetNode(evnt, el).flag
1203
+ const el = $xeUpload.$refs.refElem as HTMLDivElement
1204
+ const popupEl = $xeUpload.$refs.refPopupElem as HTMLDivElement
1205
+ let isActivated = getEventTargetNode(evnt, el).flag
1206
+ if (!isActivated && popupEl) {
1207
+ const parentEl = popupEl.parentElement || popupEl
1208
+ const modalEl = parentEl ? parentEl.parentElement : parentEl
1209
+ isActivated = getEventTargetNode(evnt, modalEl).flag
1210
+ }
1204
1211
  reactData.isActivated = isActivated
1205
1212
  },
1206
1213
  handleGlobalBlurEvent () {
@@ -2,17 +2,6 @@
2
2
  position: relative;
3
3
  color: var(--vxe-ui-font-color);
4
4
  font-family: var(--vxe-ui-font-family);
5
- &.is--active {
6
- .vxe-upload--image-action-box {
7
- border-color: var(--vxe-ui-font-primary-color);
8
- }
9
- .vxe-upload--file-action-btn {
10
- & > .vxe-button {
11
- border-color: var(--vxe-ui-font-primary-color);
12
- border-style: var(--vxe-ui-upload-file-button-border-style);
13
- }
14
- }
15
- }
16
5
  &.show--error {
17
6
  .vxe-upload--file-item {
18
7
  &.is--error {
@@ -29,8 +18,20 @@
29
18
  }
30
19
  }
31
20
  }
21
+
32
22
  .vxe-upload,
33
23
  .vxe-upload--more-popup {
24
+ &.is--active {
25
+ .vxe-upload--image-action-box {
26
+ border-color: var(--vxe-ui-font-primary-color);
27
+ }
28
+ .vxe-upload--file-action-btn {
29
+ & > .vxe-button {
30
+ border-color: var(--vxe-ui-font-primary-color);
31
+ border-style: var(--vxe-ui-upload-file-button-border-style);
32
+ }
33
+ }
34
+ }
34
35
  &.is--disabled {
35
36
  .vxe-upload--file-action-btn,
36
37
  .vxe-upload--image-action-box {
@@ -1,4 +1,4 @@
1
- import { DefineVxeComponentApp, DefineVxeComponentOptions, DefineVxeComponentInstance, VxeComponentEventParams } from '@vxe-ui/core'
1
+ import { DefineVxeComponentApp, DefineVxeComponentOptions, DefineVxeComponentInstance, VxeComponentEventParams, VxeComponentStyleType } from '@vxe-ui/core'
2
2
 
3
3
  /* eslint-disable @typescript-eslint/no-empty-interface,no-use-before-define,@typescript-eslint/ban-types */
4
4
 
@@ -16,9 +16,32 @@ export interface ColorPickerPrivateRef {
16
16
  export interface VxeColorPickerPrivateRef extends ColorPickerPrivateRef { }
17
17
 
18
18
  export namespace VxeColorPickerPropTypes {
19
+ export type ModelValue = string
20
+ export type Size = VxeComponentSizeType
21
+ export type ClassName = string | ((params: { $colorPicker: VxeColorPickerConstructor }) => string)
22
+ export type PopupClassName = string | ((params: {$colorPicker: VxeColorPickerConstructor }) => string)
23
+ export type Readonly = boolean
24
+ export type Disabled = boolean
25
+ export type Placeholder = string
26
+ export type Clearable = boolean
27
+ export type Placement = 'top' | 'bottom' | '' | null
28
+ export type Transfer = boolean
19
29
  }
20
30
 
21
31
  export interface VxeColorPickerProps {
32
+ /**
33
+ * 绑定值
34
+ */
35
+ modelValue?: VxeColorPickerPropTypes.ModelValue
36
+ size?: VxeColorPickerPropTypes.Size
37
+ className?: VxeColorPickerPropTypes.ClassName
38
+ popupClassName?: VxeColorPickerPropTypes.PopupClassName
39
+ readonly?: VxeColorPickerPropTypes.Readonly
40
+ disabled?: VxeColorPickerPropTypes.Disabled
41
+ placeholder?: VxeColorPickerPropTypes.Placeholder
42
+ clearable?: VxeColorPickerPropTypes.Clearable
43
+ placement?: VxeColorPickerPropTypes.Placement
44
+ transfer?: VxeColorPickerPropTypes.Transfer
22
45
  }
23
46
 
24
47
  export interface ColorPickerPrivateComputed {
@@ -26,6 +49,18 @@ export interface ColorPickerPrivateComputed {
26
49
  export interface VxeColorPickerPrivateComputed extends ColorPickerPrivateComputed { }
27
50
 
28
51
  export interface ColorPickerReactData {
52
+ initialized: boolean
53
+ selectColor: string
54
+ panelIndex: number
55
+ panelStyle: VxeComponentStyleType
56
+ panelPlacement: any
57
+ visiblePanel: boolean
58
+ isAniVisible: boolean
59
+ isActivated: boolean
60
+ }
61
+
62
+ export interface ColorPickerInternalData {
63
+ hpTimeout?: undefined | number
29
64
  }
30
65
 
31
66
  export interface ColorPickerMethods {
@@ -35,7 +70,12 @@ export interface VxeColorPickerMethods extends ColorPickerMethods { }
35
70
  export interface ColorPickerPrivateMethods { }
36
71
  export interface VxeColorPickerPrivateMethods extends ColorPickerPrivateMethods { }
37
72
 
38
- export type VxeColorPickerEmits = []
73
+ export type VxeColorPickerEmits = [
74
+ 'update:modelValue',
75
+ 'change',
76
+ 'clear',
77
+ 'click'
78
+ ]
39
79
 
40
80
  export namespace VxeColorPickerDefines {
41
81
  export interface ColorPickerEventParams extends VxeComponentEventParams {
@@ -63,7 +63,9 @@ export interface VxeListPrivateComputed extends ListPrivateComputed { }
63
63
  export interface ListReactData {
64
64
  scrollYLoad: boolean
65
65
  bodyHeight: number
66
- rowHeight: number
66
+ customHeight: number
67
+ customMaxHeight: number
68
+ parentHeight: number
67
69
  topSpaceHeight: number
68
70
  items: any[]
69
71
  }
@@ -14,18 +14,37 @@ export interface TableEditMethods<D = any> {
14
14
  * 如果 row 为 -1 则从插入到底部,如果为树结构,则插入到目标节点底部
15
15
  * 如果 row 为有效行则插入到该行的位置,如果为树结构,则有插入到效的目标节点该行的位置
16
16
  * @param {Object/Array} records 新的数据
17
- * @param {Row} row 指定行
17
+ * @param {Row} targetRow 指定行
18
18
  */
19
- insertAt(records: any, row: any | -1 | null): Promise<{ row: D, rows: D[] }>
19
+ insertAt(records: any, targetRow: any | -1 | null): Promise<{ row: D, rows: D[] }>
20
20
  /**
21
- * 往表格在指定行中的下一行插入临时数据
21
+ * 与 insertAt 行为一致,区别就是会插入指定目标的到下一行
22
+ * @param records records 新的数据
23
+ * @param targetRow row 指定行
24
+ */
25
+ insertNextAt(records: any, targetRow: any | -1 | null): Promise<{ row: D, rows: D[] }>
26
+ /**
27
+ * 用于树结构,往指定节点插入子级临时数据,从子级的第一行新增一行或多行新数据
28
+ * @param records 新数据
29
+ */
30
+ insertChild(records: any, parentRow: any): Promise<{ row: D, rows: D[] }>
31
+ /**
32
+ * 用于树结构,往指定节点插入子级临时数据
22
33
  * 如果 row 为空则从插入到顶部,如果为树结构,则插入到目标节点顶部
23
34
  * 如果 row 为 -1 则从插入到底部,如果为树结构,则插入到目标节点底部
24
- * 如果 row 为有效行则插入到该行的下一行位置,如果为树结构,则有插入到效的目标节点该行的下一行位置
25
- * @param records records 新的数据
26
- * @param row row 指定行
35
+ * 如果 row 为有效行则插入到该行的位置,如果为树结构,则有插入到效的目标节点该行的位置
36
+ * @param records 新的数据
37
+ * @param parentRow 父节点
38
+ * @param targetRow 指定子节点
39
+ */
40
+ insertChildAt(records: any, parentRow: any, targetRow: any | -1 | null): Promise<{ row: D, rows: D[] }>
41
+ /**
42
+ * 与 insertChildAt 行为一致,区别就是会插入指定目标子级的到下一行
43
+ * @param records 新的数据
44
+ * @param parentRow 父节点
45
+ * @param targetRow 指定子节点
27
46
  */
28
- insertNextAt(records: any, row: any | -1 | null): Promise<{ row: D, rows: D[] }>
47
+ insertChildNextAt(records: any, parentRow: any, targetRow: any | -1 | null): Promise<{ row: D, rows: D[] }>
29
48
  /**
30
49
  * 删除指定行数据,指定 row 或 [row, ...] 删除多条数据,如果为空则删除所有数据
31
50
  * @param rows 指定行