vxe-pc-ui 4.14.26 → 4.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 (92) hide show
  1. package/dist/all.esm.js +318 -200
  2. package/dist/style.css +1 -1
  3. package/dist/style.min.css +1 -1
  4. package/es/date-panel/src/date-panel.js +11 -10
  5. package/es/date-panel/style.css +4 -0
  6. package/es/date-panel/style.min.css +1 -1
  7. package/es/date-range-picker/src/date-range-picker.js +15 -0
  8. package/es/form/src/form-config-item.js +10 -6
  9. package/es/form/src/form.js +55 -15
  10. package/es/form/style.css +2 -2
  11. package/es/form/style.min.css +1 -1
  12. package/es/radio/style.css +2 -2
  13. package/es/radio/style.min.css +1 -1
  14. package/es/select/src/select.js +4 -1
  15. package/es/style.css +1 -1
  16. package/es/style.min.css +1 -1
  17. package/es/table-select/src/table-select.js +4 -1
  18. package/es/tree-select/src/tree-select.js +4 -1
  19. package/es/ui/index.js +1 -1
  20. package/es/ui/src/log.js +1 -1
  21. package/es/upload/src/upload.js +56 -6
  22. package/es/vxe-date-panel/style.css +4 -0
  23. package/es/vxe-date-panel/style.min.css +1 -1
  24. package/es/vxe-form/style.css +2 -2
  25. package/es/vxe-form/style.min.css +1 -1
  26. package/es/vxe-radio/style.css +2 -2
  27. package/es/vxe-radio/style.min.css +1 -1
  28. package/lib/date-panel/src/date-panel.js +46 -10
  29. package/lib/date-panel/src/date-panel.min.js +1 -1
  30. package/lib/date-panel/style/style.css +4 -0
  31. package/lib/date-panel/style/style.min.css +1 -1
  32. package/lib/date-range-picker/src/date-range-picker.js +17 -0
  33. package/lib/date-range-picker/src/date-range-picker.min.js +1 -1
  34. package/lib/form/src/form-config-item.js +11 -4
  35. package/lib/form/src/form-config-item.min.js +1 -1
  36. package/lib/form/src/form.js +69 -17
  37. package/lib/form/src/form.min.js +1 -1
  38. package/lib/form/style/style.css +2 -2
  39. package/lib/form/style/style.min.css +1 -1
  40. package/lib/index.umd.js +403 -220
  41. package/lib/index.umd.min.js +1 -1
  42. package/lib/radio/style/style.css +2 -2
  43. package/lib/radio/style/style.min.css +1 -1
  44. package/lib/select/src/select.js +4 -1
  45. package/lib/select/src/select.min.js +1 -1
  46. package/lib/style.css +1 -1
  47. package/lib/style.min.css +1 -1
  48. package/lib/table-select/src/table-select.js +4 -1
  49. package/lib/table-select/src/table-select.min.js +1 -1
  50. package/lib/tree-select/src/tree-select.js +4 -1
  51. package/lib/tree-select/src/tree-select.min.js +1 -1
  52. package/lib/ui/index.js +1 -1
  53. package/lib/ui/index.min.js +1 -1
  54. package/lib/ui/src/log.js +1 -1
  55. package/lib/ui/src/log.min.js +1 -1
  56. package/lib/upload/src/upload.js +72 -10
  57. package/lib/upload/src/upload.min.js +1 -1
  58. package/lib/vxe-date-panel/style/style.css +4 -0
  59. package/lib/vxe-date-panel/style/style.min.css +1 -1
  60. package/lib/vxe-form/style/style.css +2 -2
  61. package/lib/vxe-form/style/style.min.css +1 -1
  62. package/lib/vxe-radio/style/style.css +2 -2
  63. package/lib/vxe-radio/style/style.min.css +1 -1
  64. package/package.json +1 -1
  65. package/packages/date-panel/src/date-panel.ts +11 -10
  66. package/packages/date-range-picker/src/date-range-picker.ts +17 -1
  67. package/packages/form/src/form-config-item.ts +12 -4
  68. package/packages/form/src/form.ts +58 -15
  69. package/packages/form/src/util.ts +1 -1
  70. package/packages/select/src/select.ts +4 -1
  71. package/packages/table-select/src/table-select.ts +4 -1
  72. package/packages/tree-select/src/tree-select.ts +4 -1
  73. package/packages/upload/src/upload.ts +66 -6
  74. package/styles/components/date-panel.scss +4 -0
  75. package/styles/components/form.scss +2 -2
  76. package/styles/components/radio.scss +2 -2
  77. package/types/components/date-panel.d.ts +7 -0
  78. package/types/components/form.d.ts +22 -3
  79. package/types/components/notice-bar.d.ts +4 -0
  80. package/types/components/upload.d.ts +37 -2
  81. /package/es/icon/{iconfont.1780292459831.ttf → iconfont.1780570418794.ttf} +0 -0
  82. /package/es/icon/{iconfont.1780292459831.woff → iconfont.1780570418794.woff} +0 -0
  83. /package/es/icon/{iconfont.1780292459831.woff2 → iconfont.1780570418794.woff2} +0 -0
  84. /package/es/{iconfont.1780292459831.ttf → iconfont.1780570418794.ttf} +0 -0
  85. /package/es/{iconfont.1780292459831.woff → iconfont.1780570418794.woff} +0 -0
  86. /package/es/{iconfont.1780292459831.woff2 → iconfont.1780570418794.woff2} +0 -0
  87. /package/lib/icon/style/{iconfont.1780292459831.ttf → iconfont.1780570418794.ttf} +0 -0
  88. /package/lib/icon/style/{iconfont.1780292459831.woff → iconfont.1780570418794.woff} +0 -0
  89. /package/lib/icon/style/{iconfont.1780292459831.woff2 → iconfont.1780570418794.woff2} +0 -0
  90. /package/lib/{iconfont.1780292459831.ttf → iconfont.1780570418794.ttf} +0 -0
  91. /package/lib/{iconfont.1780292459831.woff → iconfont.1780570418794.woff} +0 -0
  92. /package/lib/{iconfont.1780292459831.woff2 → iconfont.1780570418794.woff2} +0 -0
@@ -407,6 +407,7 @@ export default defineVxeComponent({
407
407
  })
408
408
 
409
409
  const computeMaps: VxeUploadPrivateComputed = {
410
+ computeUrlProp
410
411
  }
411
412
 
412
413
  const $xeUpload = {
@@ -827,21 +828,23 @@ export default defineVxeComponent({
827
828
  })
828
829
  }
829
830
 
830
- const handleRemoveEvent = (evnt: MouseEvent, item: VxeUploadDefines.FileObjItem, index: number) => {
831
+ const handleRemoveEvent = (evnt: Event | null, item: VxeUploadDefines.FileObjItem, index: number) => {
831
832
  const { fileList } = reactData
832
833
  fileList.splice(index, 1)
833
834
  handleChange(fileList)
834
835
  // 自动更新校验状态
835
836
  if ($xeForm && formItemInfo) {
836
- $xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, fileList)
837
+ $xeForm.triggerItemEvent(evnt || { type: 'remove' }, formItemInfo.itemConfig.field, fileList)
838
+ }
839
+ if (evnt) {
840
+ dispatchEvent('remove', { option: item }, evnt)
837
841
  }
838
- dispatchEvent('remove', { option: item }, evnt)
839
842
  }
840
843
 
841
- const removeFileEvent = (evnt: MouseEvent, item: VxeUploadDefines.FileObjItem, index: number) => {
844
+ const removeFileEvent = (evnt: Event | null, item: VxeUploadDefines.FileObjItem, index: number) => {
842
845
  const beforeRemoveFn = props.beforeRemoveMethod || getConfig().upload.beforeRemoveMethod
843
846
  const removeFn = props.removeMethod || getConfig().upload.removeMethod
844
- Promise.resolve(
847
+ return Promise.resolve(
845
848
  beforeRemoveFn
846
849
  ? beforeRemoveFn({
847
850
  $upload: $xeUpload,
@@ -863,8 +866,11 @@ export default defineVxeComponent({
863
866
  handleRemoveEvent(evnt, item, index)
864
867
  }
865
868
  } else {
866
- dispatchEvent('remove-fail', { option: item }, evnt)
869
+ if (evnt) {
870
+ dispatchEvent('remove-fail', { option: item }, evnt)
871
+ }
867
872
  }
873
+ return status
868
874
  })
869
875
  }
870
876
 
@@ -1250,11 +1256,58 @@ export default defineVxeComponent({
1250
1256
  reactData.isActivated = false
1251
1257
  }
1252
1258
 
1259
+ const handleClearFile = (evnt: Event | null) => {
1260
+ const { fileList } = reactData
1261
+ const urlProp = computeUrlProp.value
1262
+ const rest: Promise<{
1263
+ url: string
1264
+ status: boolean
1265
+ }>[] = []
1266
+ XEUtils.lastEach(fileList, (item, index) => {
1267
+ rest.push(
1268
+ removeFileEvent(evnt, item, index).then((status) => {
1269
+ return { url: item[urlProp], status }
1270
+ })
1271
+ )
1272
+ })
1273
+ return Promise.all(rest)
1274
+ }
1275
+
1276
+ const handleRemoveFile = (evnt: Event | null, urlOrItem: string | VxeUploadDefines.FileObjItem | string[] | VxeUploadDefines.FileObjItem[] | null) => {
1277
+ const { fileList } = reactData
1278
+ const urlProp = computeUrlProp.value
1279
+ const urls = (XEUtils.isArray(urlOrItem) ? urlOrItem : [urlOrItem])
1280
+ const rest: Promise<{
1281
+ url: string
1282
+ status: boolean
1283
+ }>[] = []
1284
+ urls.forEach((obj) => {
1285
+ if (obj) {
1286
+ const url = XEUtils.isString(obj) ? obj : obj[urlProp]
1287
+ const index = XEUtils.findIndexOf(fileList, fileItem => fileItem[urlProp] === url)
1288
+ if (index > -1) {
1289
+ rest.push(
1290
+ removeFileEvent(evnt, fileList[index], index).then(status => {
1291
+ return { url, status }
1292
+ })
1293
+ )
1294
+ }
1295
+ }
1296
+ })
1297
+ return Promise.all(rest)
1298
+ }
1299
+
1253
1300
  const uploadMethods: UploadMethods = {
1254
1301
  dispatchEvent,
1255
1302
  choose () {
1256
1303
  return handleChoose(null)
1257
1304
  },
1305
+ clear () {
1306
+ return handleClearFile(null)
1307
+ },
1308
+ clearByEvent (evnt) {
1309
+ return handleClearFile(evnt)
1310
+ },
1258
1311
  getPendingFiles () {
1259
1312
  const { fileList, fileCacheMaps } = reactData
1260
1313
  const pendingFiles: File[] = []
@@ -1320,10 +1373,17 @@ export default defineVxeComponent({
1320
1373
  VxeUI.modal.close(internalData.moreId)
1321
1374
  }
1322
1375
  return nextTick()
1376
+ },
1377
+ remove (urlOrItem) {
1378
+ return handleRemoveFile(null, urlOrItem)
1379
+ },
1380
+ removeByEvent (evnt, urlOrItem) {
1381
+ return handleRemoveFile(evnt, urlOrItem)
1323
1382
  }
1324
1383
  }
1325
1384
 
1326
1385
  const uploadPrivateMethods: UploadPrivateMethods = {
1386
+ removeFileEvent
1327
1387
  }
1328
1388
 
1329
1389
  Object.assign($xeUpload, uploadMethods, uploadPrivateMethods)
@@ -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;
@@ -27,6 +27,12 @@ export namespace VxeDatePanelPropTypes {
27
27
  export type Size = VxeComponentSizeType
28
28
  export type ModelValue = string | number | Date | null
29
29
  export type ClassName = string
30
+ export type CellClassName = string | ((params: {
31
+ $datePanel: VxeDatePanelConstructor
32
+ type: string
33
+ viewType: VxeDatePanelDefines.DatePanelType
34
+ date: Date
35
+ }) => string)
30
36
  export type Type = 'date' | 'time' | 'datetime' | 'week' | 'month' | 'quarter' | 'year'
31
37
  export type Multiple = boolean
32
38
  export type LimitCount = string | number
@@ -76,6 +82,7 @@ export interface VxeDatePanelProps {
76
82
  size?: VxeDatePanelPropTypes.Size
77
83
  modelValue?: VxeDatePanelPropTypes.ModelValue
78
84
  className?: VxeDatePanelPropTypes.ClassName
85
+ cellClassName?: VxeDatePanelPropTypes.CellClassName
79
86
  type?: VxeDatePanelPropTypes.Type
80
87
  multiple?: VxeDatePanelPropTypes.Multiple
81
88
  limitCount?: VxeDatePanelPropTypes.LimitCount
@@ -189,6 +189,8 @@ export interface FormInternalData {
189
189
  label?: any
190
190
  }
191
191
  }>
192
+ fullItemIdData: Record<string, VxeFormDefines.ItemCacheItem>
193
+ fullItemFieldData: Record<string, VxeFormDefines.ItemCacheItem>
192
194
  }
193
195
 
194
196
  export interface FormMethods<D = any> {
@@ -216,7 +218,6 @@ export interface FormMethods<D = any> {
216
218
  /**
217
219
  * 更新项状态
218
220
  * 当使用自定义渲染时可能会用到
219
- * @param params 插槽对象
220
221
  */
221
222
  updateStatus(
222
223
  params: {
@@ -228,14 +229,26 @@ export interface FormMethods<D = any> {
228
229
  * 获取表单项列表
229
230
  */
230
231
  getItems(): VxeFormDefines.ItemInfo[]
232
+ /**
233
+ * 加载表单项
234
+ */
235
+ loadItems(items: VxeFormPropTypes.Items | VxeFormDefines.ItemInfo[]): Promise<any>
236
+ /**
237
+ * 隐藏指定项
238
+ */
239
+ hideItem(fieldOrItems?: VxeFormItemPropTypes.Field | VxeFormItemPropTypes.Field[] | VxeFormDefines.ItemInfo | VxeFormDefines.ItemInfo[] | null): Promise<void>
240
+ /**
241
+ * 显示指定项
242
+ */
243
+ showItem(fieldOrItems?: VxeFormItemPropTypes.Field | VxeFormItemPropTypes.Field[] | VxeFormDefines.ItemInfo | VxeFormDefines.ItemInfo[] | null): Promise<void>
244
+ /**
231
245
  /**
232
246
  * 根据列的字段名获取表单项
233
- * @param field 字段名
234
247
  *
235
248
  */
236
249
  getItemByField(field: VxeFormItemPropTypes.Field): VxeFormDefines.ItemInfo | null
237
250
  /**
238
- * 关闭 tooltip 提示
251
+ * 手动关闭 tooltip 提示
239
252
  */
240
253
  closeTooltip(): Promise<any>
241
254
  /**
@@ -292,6 +305,12 @@ export type VxeFormEmits = [
292
305
  ]
293
306
 
294
307
  export namespace VxeFormDefines {
308
+ export interface ItemCacheItem {
309
+ item: ItemInfo
310
+ index: number
311
+ items: ItemInfo[]
312
+ }
313
+
295
314
  export class ItemInfo {
296
315
  id: string
297
316
 
@@ -92,10 +92,14 @@ export namespace VxeNoticeBarEvents {
92
92
 
93
93
  export namespace VxeNoticeBarSlotTypes {
94
94
  export interface DefaultSlotParams {}
95
+ export interface PrefixSlotParams {}
96
+ export interface SuffixSlotParams {}
95
97
  }
96
98
 
97
99
  export interface VxeNoticeBarSlots {
98
100
  default?: (params: VxeNoticeBarSlotTypes.DefaultSlotParams) => any
101
+ prefix?: (params: VxeNoticeBarSlotTypes.PrefixSlotParams) => any
102
+ suffix?: (params: VxeNoticeBarSlotTypes.SuffixSlotParams) => any
99
103
  }
100
104
 
101
105
  export const NoticeBar: typeof VxeNoticeBar
@@ -1,4 +1,4 @@
1
- import { RenderFunction, SetupContext, Ref } from 'vue'
1
+ import { RenderFunction, SetupContext, Ref, ComputedRef } from 'vue'
2
2
  import { DefineVxeComponentApp, DefineVxeComponentOptions, DefineVxeComponentInstance, VxeComponentBaseOptions, VxeComponentEventParams, ValueOf, VxeComponentSizeType } from '@vxe-ui/core'
3
3
  import { VxeImagePropTypes } from './image'
4
4
  import { VxeImagePreviewProps } from './image-preview'
@@ -219,6 +219,7 @@ export interface VxeUploadProps {
219
219
  }
220
220
 
221
221
  export interface UploadPrivateComputed {
222
+ computeUrlProp: ComputedRef<string>
222
223
  }
223
224
  export interface VxeUploadPrivateComputed extends UploadPrivateComputed { }
224
225
 
@@ -258,6 +259,20 @@ export interface UploadMethods {
258
259
  * 用于 auto-upload 模式,手动调用上传附件;如果传 true,这包含未上传和上传失败的都会重新提交
259
260
  */
260
261
  submit(isFull?: boolean): Promise<void>
262
+ /**
263
+ * 清除所有文件
264
+ */
265
+ clear(): Promise<{
266
+ url: string
267
+ status: boolean
268
+ }[]>
269
+ /**
270
+ * 区别就是会触发对应的事件
271
+ */
272
+ clearByEvent(event: Event): Promise<{
273
+ url: string
274
+ status: boolean
275
+ }[]>
261
276
  /**
262
277
  * 获取更多弹窗的可视状态
263
278
  */
@@ -274,10 +289,30 @@ export interface UploadMethods {
274
289
  * 关闭更多弹窗
275
290
  */
276
291
  closeMore(): Promise<void>
292
+ /**
293
+ * 删除指定文件
294
+ */
295
+ remove(urlOrItem: string | VxeUploadDefines.FileObjItem | string[] | VxeUploadDefines.FileObjItem[] | null): Promise<{
296
+ url: string
297
+ status: boolean
298
+ }[]>
299
+ /**
300
+ * 区别就是会触发对应的事件
301
+ */
302
+ removeByEvent(event: Event, urlOrItem: string | VxeUploadDefines.FileObjItem | string[] | VxeUploadDefines.FileObjItem[] | null): Promise<{
303
+ url: string
304
+ status: boolean
305
+ }[]>
277
306
  }
278
307
  export interface VxeUploadMethods extends UploadMethods { }
279
308
 
280
- export interface UploadPrivateMethods { }
309
+ export interface UploadPrivateMethods {
310
+ /**
311
+ * 内部方法
312
+ * @private
313
+ */
314
+ removeFileEvent(evnt: Event | null, item: VxeUploadDefines.FileObjItem, index: number): Promise<any>
315
+ }
281
316
  export interface VxeUploadPrivateMethods extends UploadPrivateMethods { }
282
317
 
283
318
  export type VxeUploadEmits = [