vxe-pc-ui 3.14.26 → 3.14.28

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 (85) hide show
  1. package/es/date-panel/src/date-panel.js +11 -10
  2. package/es/date-panel/style.css +4 -0
  3. package/es/date-panel/style.min.css +1 -1
  4. package/es/date-range-picker/src/date-range-picker.js +17 -0
  5. package/es/form/src/form.js +56 -15
  6. package/es/form/style.css +2 -2
  7. package/es/form/style.min.css +1 -1
  8. package/es/radio/style.css +2 -2
  9. package/es/radio/style.min.css +1 -1
  10. package/es/select/src/select.js +4 -1
  11. package/es/style.css +1 -1
  12. package/es/style.min.css +1 -1
  13. package/es/table-select/src/table-select.js +4 -1
  14. package/es/tree-select/src/tree-select.js +4 -1
  15. package/es/ui/index.js +1 -1
  16. package/es/ui/src/log.js +1 -1
  17. package/es/upload/src/upload.js +53 -3
  18. package/es/vxe-date-panel/style.css +4 -0
  19. package/es/vxe-date-panel/style.min.css +1 -1
  20. package/es/vxe-form/style.css +2 -2
  21. package/es/vxe-form/style.min.css +1 -1
  22. package/es/vxe-radio/style.css +2 -2
  23. package/es/vxe-radio/style.min.css +1 -1
  24. package/lib/date-panel/src/date-panel.js +46 -10
  25. package/lib/date-panel/src/date-panel.min.js +1 -1
  26. package/lib/date-panel/style/style.css +4 -0
  27. package/lib/date-panel/style/style.min.css +1 -1
  28. package/lib/date-range-picker/src/date-range-picker.js +21 -3
  29. package/lib/date-range-picker/src/date-range-picker.min.js +1 -1
  30. package/lib/form/src/form.js +64 -19
  31. package/lib/form/src/form.min.js +1 -1
  32. package/lib/form/style/style.css +2 -2
  33. package/lib/form/style/style.min.css +1 -1
  34. package/lib/index.umd.js +211 -42
  35. package/lib/index.umd.min.js +1 -1
  36. package/lib/radio/style/style.css +2 -2
  37. package/lib/radio/style/style.min.css +1 -1
  38. package/lib/select/src/select.js +6 -1
  39. package/lib/select/src/select.min.js +1 -1
  40. package/lib/style.css +1 -1
  41. package/lib/style.min.css +1 -1
  42. package/lib/table-select/src/table-select.js +4 -1
  43. package/lib/table-select/src/table-select.min.js +1 -1
  44. package/lib/tree-select/src/tree-select.js +4 -1
  45. package/lib/tree-select/src/tree-select.min.js +1 -1
  46. package/lib/ui/index.js +1 -1
  47. package/lib/ui/index.min.js +1 -1
  48. package/lib/ui/src/log.js +1 -1
  49. package/lib/ui/src/log.min.js +1 -1
  50. package/lib/upload/src/upload.js +65 -5
  51. package/lib/upload/src/upload.min.js +1 -1
  52. package/lib/vxe-date-panel/style/style.css +4 -0
  53. package/lib/vxe-date-panel/style/style.min.css +1 -1
  54. package/lib/vxe-form/style/style.css +2 -2
  55. package/lib/vxe-form/style/style.min.css +1 -1
  56. package/lib/vxe-radio/style/style.css +2 -2
  57. package/lib/vxe-radio/style/style.min.css +1 -1
  58. package/package.json +1 -1
  59. package/packages/date-panel/src/date-panel.ts +11 -10
  60. package/packages/date-range-picker/src/date-range-picker.ts +18 -0
  61. package/packages/form/src/form.ts +63 -18
  62. package/packages/form/src/util.ts +1 -1
  63. package/packages/select/src/select.ts +4 -1
  64. package/packages/table-select/src/table-select.ts +4 -1
  65. package/packages/tree-select/src/tree-select.ts +4 -1
  66. package/packages/upload/src/upload.ts +73 -5
  67. package/styles/components/date-panel.scss +4 -0
  68. package/styles/components/form.scss +2 -2
  69. package/styles/components/radio.scss +2 -2
  70. package/types/components/date-panel.d.ts +7 -0
  71. package/types/components/form.d.ts +21 -2
  72. package/types/components/notice-bar.d.ts +4 -0
  73. package/types/components/upload.d.ts +36 -1
  74. /package/es/icon/{iconfont.1780292452483.ttf → iconfont.1780570410811.ttf} +0 -0
  75. /package/es/icon/{iconfont.1780292452483.woff → iconfont.1780570410811.woff} +0 -0
  76. /package/es/icon/{iconfont.1780292452483.woff2 → iconfont.1780570410811.woff2} +0 -0
  77. /package/es/{iconfont.1780292452483.ttf → iconfont.1780570410811.ttf} +0 -0
  78. /package/es/{iconfont.1780292452483.woff → iconfont.1780570410811.woff} +0 -0
  79. /package/es/{iconfont.1780292452483.woff2 → iconfont.1780570410811.woff2} +0 -0
  80. /package/lib/icon/style/{iconfont.1780292452483.ttf → iconfont.1780570410811.ttf} +0 -0
  81. /package/lib/icon/style/{iconfont.1780292452483.woff → iconfont.1780570410811.woff} +0 -0
  82. /package/lib/icon/style/{iconfont.1780292452483.woff2 → iconfont.1780570410811.woff2} +0 -0
  83. /package/lib/{iconfont.1780292452483.ttf → iconfont.1780570410811.ttf} +0 -0
  84. /package/lib/{iconfont.1780292452483.woff → iconfont.1780570410811.woff} +0 -0
  85. /package/lib/{iconfont.1780292452483.woff2 → iconfont.1780570410811.woff2} +0 -0
@@ -66,6 +66,51 @@ function hideDropTip ($xeUpload: VxeUploadConstructor) {
66
66
  }
67
67
  }
68
68
 
69
+ const handleClearFile = ($xeUpload: VxeUploadConstructor, evnt: Event | null) => {
70
+ const reactData = $xeUpload.reactData
71
+
72
+ const { fileList } = reactData
73
+ const urlProp = $xeUpload.computeUrlProp
74
+ const rest: Promise<{
75
+ url: string
76
+ status: boolean
77
+ }>[] = []
78
+ XEUtils.lastEach(fileList, (item, index) => {
79
+ rest.push(
80
+ $xeUpload.removeFileEvent(evnt, item, index).then(status => {
81
+ return { url: item[urlProp], status }
82
+ })
83
+ )
84
+ })
85
+ return Promise.all(rest)
86
+ }
87
+
88
+ function handleRemoveFile ($xeUpload: VxeUploadConstructor, evnt: Event | null, urlOrItem: string | VxeUploadDefines.FileObjItem | string[] | VxeUploadDefines.FileObjItem[] | null) {
89
+ const reactData = $xeUpload.reactData
90
+
91
+ const { fileList } = reactData
92
+ const urlProp = $xeUpload.computeUrlProp
93
+ const urls = (XEUtils.isArray(urlOrItem) ? urlOrItem : [urlOrItem])
94
+ const rest: Promise<{
95
+ url: string
96
+ status: boolean
97
+ }>[] = []
98
+ urls.forEach((obj: any) => {
99
+ if (obj) {
100
+ const url = XEUtils.isString(obj) ? obj : obj[urlProp]
101
+ const index = XEUtils.findIndexOf(fileList, fileItem => fileItem[urlProp] === url)
102
+ if (index > -1) {
103
+ rest.push(
104
+ $xeUpload.removeFileEvent(evnt, fileList[index], index).then(status => {
105
+ return { url: url, status }
106
+ })
107
+ )
108
+ }
109
+ }
110
+ })
111
+ return Promise.all(rest)
112
+ }
113
+
69
114
  function createReactData (): UploadReactData {
70
115
  return {
71
116
  isDragUploadStatus: false,
@@ -528,6 +573,16 @@ export default /* define-vxe-component start */ defineVxeComponent({
528
573
  const $xeUpload = this
529
574
  return $xeUpload.handleChoose(null)
530
575
  },
576
+ clear () {
577
+ const $xeUpload = this
578
+
579
+ return handleClearFile($xeUpload, null)
580
+ },
581
+ clearByEvent (evnt: Event) {
582
+ const $xeUpload = this
583
+
584
+ return handleClearFile($xeUpload, evnt)
585
+ },
531
586
  getPendingFiles () {
532
587
  const $xeUpload = this
533
588
  const reactData = $xeUpload.reactData
@@ -611,6 +666,16 @@ export default /* define-vxe-component start */ defineVxeComponent({
611
666
  }
612
667
  return $xeUpload.$nextTick()
613
668
  },
669
+ remove (urlOrItem: string | string[] | VxeUploadDefines.FileObjItem | VxeUploadDefines.FileObjItem[] | null) {
670
+ const $xeUpload = this
671
+
672
+ return handleRemoveFile($xeUpload, null, urlOrItem)
673
+ },
674
+ removeByEvent (evnt: Event, urlOrItem: string | string[] | VxeUploadDefines.FileObjItem | VxeUploadDefines.FileObjItem[] | null) {
675
+ const $xeUpload = this
676
+
677
+ return handleRemoveFile($xeUpload, evnt, urlOrItem)
678
+ },
614
679
  getFieldKey (item: VxeUploadDefines.FileObjItem) {
615
680
  const $xeUpload = this
616
681
 
@@ -1040,7 +1105,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
1040
1105
  // 错误文件类型
1041
1106
  })
1042
1107
  },
1043
- handleRemoveEvent (evnt: MouseEvent, item: VxeUploadDefines.FileObjItem, index: number) {
1108
+ handleRemoveEvent (evnt: Event | null, item: VxeUploadDefines.FileObjItem, index: number) {
1044
1109
  const $xeUpload = this
1045
1110
  const reactData = $xeUpload.reactData
1046
1111
  const $xeForm = $xeUpload.$xeForm
@@ -1051,17 +1116,19 @@ export default /* define-vxe-component start */ defineVxeComponent({
1051
1116
  $xeUpload.handleChange(fileList)
1052
1117
  // 自动更新校验状态
1053
1118
  if ($xeForm && formItemInfo) {
1054
- $xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, fileList)
1119
+ $xeForm.triggerItemEvent(evnt || { type: 'remove' }, formItemInfo.itemConfig.field, fileList)
1120
+ }
1121
+ if (evnt) {
1122
+ $xeUpload.dispatchEvent('remove', { option: item }, evnt)
1055
1123
  }
1056
- $xeUpload.dispatchEvent('remove', { option: item }, evnt)
1057
1124
  },
1058
- removeFileEvent (evnt: MouseEvent, item: VxeUploadDefines.FileObjItem, index: number) {
1125
+ removeFileEvent (evnt: Event | null, item: VxeUploadDefines.FileObjItem, index: number) {
1059
1126
  const $xeUpload = this
1060
1127
  const props = $xeUpload
1061
1128
 
1062
1129
  const beforeRemoveFn = props.beforeRemoveMethod || getConfig().upload.beforeRemoveMethod
1063
1130
  const removeFn = props.removeMethod || getConfig().upload.removeMethod
1064
- Promise.resolve(
1131
+ return Promise.resolve(
1065
1132
  beforeRemoveFn
1066
1133
  ? beforeRemoveFn({
1067
1134
  $upload: $xeUpload,
@@ -1085,6 +1152,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
1085
1152
  } else {
1086
1153
  $xeUpload.dispatchEvent('remove-fail', { option: item }, evnt)
1087
1154
  }
1155
+ return status
1088
1156
  })
1089
1157
  },
1090
1158
  handleDownloadEvent (evnt: MouseEvent, item: VxeUploadDefines.FileObjItem) {
@@ -187,6 +187,7 @@
187
187
  flex-direction: row;
188
188
  }
189
189
  .vxe-date-panel--view-item {
190
+ position: relative;
190
191
  padding: 0.2em;
191
192
  &.is--prev,
192
193
  &.is--next {
@@ -246,6 +247,9 @@
246
247
  }
247
248
  }
248
249
  }
250
+ &.is--range-selected {
251
+ background-color: var(--vxe-ui-font-primary-tinge-color);
252
+ }
249
253
  &.is--range-disabled {
250
254
  .vxe-date-panel--view-item-inner {
251
255
  color: var(--vxe-ui-input-disabled-color);
@@ -139,7 +139,7 @@
139
139
  pointer-events: auto;
140
140
  }
141
141
  .vxe-form-item--valid-error-theme-beautify {
142
- padding: 0.2em 0.6em 0.25em 0.6em;
142
+ padding: 0.15em 0.6em 0.2em 0.6em;
143
143
  color: #fff;
144
144
  background-color: var(--vxe-ui-status-error-color);
145
145
  .vxe-form-item--valid-error-msg {
@@ -211,7 +211,7 @@
211
211
  box-shadow: 2px 2px 4px -2px rgba(0,0,0,.5);
212
212
  }
213
213
  .vxe-form-item--valid-error-icon-theme-beautify {
214
- padding: 0.2em 0.6em 0.25em 0.6em;
214
+ padding: 0.15em 0.6em 0.2em 0.6em;
215
215
  color: #fff;
216
216
  background-color: var(--vxe-ui-status-error-color);
217
217
  .vxe-form-item--valid-error-msg {
@@ -2,7 +2,7 @@
2
2
 
3
3
  /*radio-group*/
4
4
  .vxe-radio-group {
5
- display: inline-block;
5
+ display: inline-flex;
6
6
  vertical-align: middle;
7
7
  line-height: 1;
8
8
  font-size: 0;
@@ -15,7 +15,7 @@
15
15
 
16
16
  /*radio*/
17
17
  .vxe-radio {
18
- display: inline-block;
18
+ display: inline-flex;
19
19
  vertical-align: middle;
20
20
  white-space: nowrap;
21
21
  line-height: 1;
@@ -19,6 +19,12 @@ export namespace VxeDatePanelPropTypes {
19
19
  export type Size = VxeComponentSizeType
20
20
  export type ModelValue = string | number | Date | null
21
21
  export type ClassName = string
22
+ export type CellClassName = string | ((params: {
23
+ $datePanel: VxeDatePanelConstructor
24
+ type: string
25
+ viewType: VxeDatePanelDefines.DatePanelType
26
+ date: Date
27
+ }) => string)
22
28
  export type Type = 'date' | 'time' | 'datetime' | 'week' | 'month' | 'quarter' | 'year'
23
29
  export type Multiple = boolean
24
30
  export type LimitCount = string | number
@@ -68,6 +74,7 @@ export interface VxeDatePanelProps {
68
74
  size?: VxeDatePanelPropTypes.Size
69
75
  value?: VxeDatePanelPropTypes.ModelValue
70
76
  className?: VxeDatePanelPropTypes.ClassName
77
+ cellClassName?: VxeDatePanelPropTypes.CellClassName
71
78
  type?: VxeDatePanelPropTypes.Type
72
79
  multiple?: VxeDatePanelPropTypes.Multiple
73
80
  limitCount?: VxeDatePanelPropTypes.LimitCount
@@ -161,7 +161,7 @@ export interface FormPrivateComputed {
161
161
  }
162
162
  export interface VxeFormPrivateComputed extends FormPrivateComputed { }
163
163
 
164
- export interface FormReactData {
164
+ export interface FormReactData<D = any> {
165
165
  collapseAll: boolean
166
166
  staticItems: any[]
167
167
  formItems: VxeFormDefines.ItemInfo[]
@@ -182,6 +182,8 @@ export interface FormInternalData {
182
182
  label?: any
183
183
  }
184
184
  }>
185
+ fullItemIdData: Record<string, VxeFormDefines.ItemCacheItem>
186
+ fullItemFieldData: Record<string, VxeFormDefines.ItemCacheItem>
185
187
  }
186
188
 
187
189
  export interface FormMethods<D = any> {
@@ -221,6 +223,18 @@ export interface FormMethods<D = any> {
221
223
  * 获取表单项列表
222
224
  */
223
225
  getItems(): VxeFormDefines.ItemInfo[]
226
+ /**
227
+ * 加载表单项
228
+ */
229
+ loadItems(items: VxeFormPropTypes.Items | VxeFormDefines.ItemInfo[]): Promise<any>
230
+ /**
231
+ * 隐藏指定项
232
+ */
233
+ hideItem(fieldOrItems?: VxeFormItemPropTypes.Field | VxeFormItemPropTypes.Field[] | VxeFormDefines.ItemInfo | VxeFormDefines.ItemInfo[] | null): Promise<void>
234
+ /**
235
+ * 显示指定项
236
+ */
237
+ showItem(fieldOrItems?: VxeFormItemPropTypes.Field | VxeFormItemPropTypes.Field[] | VxeFormDefines.ItemInfo | VxeFormDefines.ItemInfo[] | null): Promise<void>
224
238
  /**
225
239
  * 根据列的字段名获取表单项
226
240
  * @param field 字段名
@@ -228,7 +242,7 @@ export interface FormMethods<D = any> {
228
242
  */
229
243
  getItemByField(field: VxeFormItemPropTypes.Field): VxeFormDefines.ItemInfo | null
230
244
  /**
231
- * 关闭 tooltip 提示
245
+ * 手动关闭 tooltip 提示
232
246
  */
233
247
  closeTooltip(): Promise<any>
234
248
  /**
@@ -288,6 +302,11 @@ export type VxeFormEmits = [
288
302
  ]
289
303
 
290
304
  export namespace VxeFormDefines {
305
+ export interface ItemCacheItem {
306
+ item: ItemInfo
307
+ index: number
308
+ items: ItemInfo[]
309
+ }
291
310
  export class ItemInfo {
292
311
  id: string
293
312
 
@@ -85,10 +85,14 @@ export namespace VxeNoticeBarEvents {
85
85
 
86
86
  export namespace VxeNoticeBarSlotTypes {
87
87
  export interface DefaultSlotParams {}
88
+ export interface PrefixSlotParams {}
89
+ export interface SuffixSlotParams {}
88
90
  }
89
91
 
90
92
  export interface VxeNoticeBarSlots {
91
93
  default?: (params: VxeNoticeBarSlotTypes.DefaultSlotParams) => any
94
+ prefix?: (params: VxeNoticeBarSlotTypes.PrefixSlotParams) => any
95
+ suffix?: (params: VxeNoticeBarSlotTypes.SuffixSlotParams) => any
92
96
  }
93
97
 
94
98
  export const NoticeBar: typeof VxeNoticeBar
@@ -212,6 +212,7 @@ export interface VxeUploadProps {
212
212
  }
213
213
 
214
214
  export interface UploadPrivateComputed {
215
+ computeUrlProp: string
215
216
  }
216
217
  export interface VxeUploadPrivateComputed extends UploadPrivateComputed { }
217
218
 
@@ -251,6 +252,20 @@ export interface UploadMethods {
251
252
  * 用于 auto-upload 模式,手动调用上传附件;如果传 true,这包含未上传和上传失败的都会重新提交
252
253
  */
253
254
  submit(isFull?: boolean): Promise<void>
255
+ /**
256
+ * 清除所有文件
257
+ */
258
+ clear(): Promise<{
259
+ url: string
260
+ status: boolean
261
+ }[]>
262
+ /**
263
+ * 区别就是会触发对应的事件
264
+ */
265
+ clearByEvent(event: Event): Promise<{
266
+ url: string
267
+ status: boolean
268
+ }[]>
254
269
  /**
255
270
  * 获取更多弹窗的可视状态
256
271
  */
@@ -267,8 +282,28 @@ export interface UploadMethods {
267
282
  * 关闭更多弹窗
268
283
  */
269
284
  closeMore(): Promise<void>
285
+ /**
286
+ * 删除指定文件
287
+ */
288
+ remove(urlOrItem: string | VxeUploadDefines.FileObjItem | string[] | VxeUploadDefines.FileObjItem[] | null): Promise<{
289
+ url: string
290
+ status: boolean
291
+ }[]>
292
+ /**
293
+ * 区别就是会触发对应的事件
294
+ */
295
+ removeByEvent(event: Event, urlOrItem: string | VxeUploadDefines.FileObjItem | string[] | VxeUploadDefines.FileObjItem[] | null): Promise<{
296
+ url: string
297
+ status: boolean
298
+ }[]>
299
+ }
300
+ export interface VxeUploadMethods extends UploadMethods {
301
+ /**
302
+ * 内部方法
303
+ * @private
304
+ */
305
+ removeFileEvent(evnt: Event | null, item: VxeUploadDefines.FileObjItem, index: number): Promise<any>
270
306
  }
271
- export interface VxeUploadMethods extends UploadMethods { }
272
307
 
273
308
  export interface UploadPrivateMethods { }
274
309
  export interface VxeUploadPrivateMethods extends UploadPrivateMethods { }