vxe-pc-ui 3.3.66 → 3.3.68

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 (81) hide show
  1. package/es/button/src/button-group.js +1 -0
  2. package/es/button/src/button.js +19 -5
  3. package/es/button/style.css +4 -3
  4. package/es/button/style.min.css +1 -1
  5. package/es/button-group/style.css +8 -2
  6. package/es/button-group/style.min.css +1 -1
  7. package/es/date-picker/src/date-picker.js +101 -20
  8. package/es/date-picker/style.css +37 -12
  9. package/es/date-picker/style.min.css +1 -1
  10. package/es/icon/style.css +1 -1
  11. package/es/image/style.css +4 -0
  12. package/es/image/style.min.css +1 -1
  13. package/es/style.css +1 -1
  14. package/es/style.min.css +1 -1
  15. package/es/ui/index.js +8 -2
  16. package/es/ui/src/log.js +1 -1
  17. package/es/vxe-button/style.css +4 -3
  18. package/es/vxe-button/style.min.css +1 -1
  19. package/es/vxe-button-group/style.css +8 -2
  20. package/es/vxe-button-group/style.min.css +1 -1
  21. package/es/vxe-date-picker/style.css +37 -12
  22. package/es/vxe-date-picker/style.min.css +1 -1
  23. package/es/vxe-image/style.css +4 -0
  24. package/es/vxe-image/style.min.css +1 -1
  25. package/lib/button/src/button-group.js +1 -0
  26. package/lib/button/src/button-group.min.js +1 -1
  27. package/lib/button/src/button.js +18 -5
  28. package/lib/button/src/button.min.js +1 -1
  29. package/lib/button/style/style.css +4 -3
  30. package/lib/button/style/style.min.css +1 -1
  31. package/lib/button-group/style/style.css +8 -2
  32. package/lib/button-group/style/style.min.css +1 -1
  33. package/lib/date-picker/src/date-picker.js +103 -19
  34. package/lib/date-picker/src/date-picker.min.js +1 -1
  35. package/lib/date-picker/style/style.css +37 -12
  36. package/lib/date-picker/style/style.min.css +1 -1
  37. package/lib/icon/style/style.css +1 -1
  38. package/lib/icon/style/style.min.css +1 -1
  39. package/lib/image/style/style.css +4 -0
  40. package/lib/image/style/style.min.css +1 -1
  41. package/lib/index.umd.js +131 -27
  42. package/lib/index.umd.min.js +1 -1
  43. package/lib/style.css +1 -1
  44. package/lib/style.min.css +1 -1
  45. package/lib/ui/index.js +8 -2
  46. package/lib/ui/index.min.js +1 -1
  47. package/lib/ui/src/log.js +1 -1
  48. package/lib/ui/src/log.min.js +1 -1
  49. package/lib/vxe-button/style/style.css +4 -3
  50. package/lib/vxe-button/style/style.min.css +1 -1
  51. package/lib/vxe-button-group/style/style.css +8 -2
  52. package/lib/vxe-button-group/style/style.min.css +1 -1
  53. package/lib/vxe-date-picker/style/style.css +37 -12
  54. package/lib/vxe-date-picker/style/style.min.css +1 -1
  55. package/lib/vxe-image/style/style.css +4 -0
  56. package/lib/vxe-image/style/style.min.css +1 -1
  57. package/package.json +1 -1
  58. package/packages/button/src/button-group.ts +1 -0
  59. package/packages/button/src/button.ts +20 -5
  60. package/packages/date-picker/src/date-picker.ts +104 -21
  61. package/packages/ui/index.ts +7 -1
  62. package/styles/components/button-group.scss +14 -2
  63. package/styles/components/button.scss +7 -5
  64. package/styles/components/date-picker.scss +33 -11
  65. package/styles/components/image.scss +2 -0
  66. package/types/components/button-group.d.ts +3 -1
  67. package/types/components/button.d.ts +2 -2
  68. package/types/components/date-picker.d.ts +33 -2
  69. package/types/components/table.d.ts +24 -1
  70. /package/es/icon/{iconfont.1735974857067.ttf → iconfont.1736093232006.ttf} +0 -0
  71. /package/es/icon/{iconfont.1735974857067.woff → iconfont.1736093232006.woff} +0 -0
  72. /package/es/icon/{iconfont.1735974857067.woff2 → iconfont.1736093232006.woff2} +0 -0
  73. /package/es/{iconfont.1735974857067.ttf → iconfont.1736093232006.ttf} +0 -0
  74. /package/es/{iconfont.1735974857067.woff → iconfont.1736093232006.woff} +0 -0
  75. /package/es/{iconfont.1735974857067.woff2 → iconfont.1736093232006.woff2} +0 -0
  76. /package/lib/icon/style/{iconfont.1735974857067.ttf → iconfont.1736093232006.ttf} +0 -0
  77. /package/lib/icon/style/{iconfont.1735974857067.woff → iconfont.1736093232006.woff} +0 -0
  78. /package/lib/icon/style/{iconfont.1735974857067.woff2 → iconfont.1736093232006.woff2} +0 -0
  79. /package/lib/{iconfont.1735974857067.ttf → iconfont.1736093232006.ttf} +0 -0
  80. /package/lib/{iconfont.1735974857067.woff → iconfont.1736093232006.woff} +0 -0
  81. /package/lib/{iconfont.1735974857067.woff2 → iconfont.1736093232006.woff2} +0 -0
@@ -2,12 +2,13 @@ import { CreateElement, PropType, VNode } from 'vue'
2
2
  import { defineVxeComponent } from '../../ui/src/comp'
3
3
  import XEUtils from 'xe-utils'
4
4
  import { getConfig, getIcon, getI18n, globalEvents, GLOBAL_EVENT_KEYS, createEvent, globalMixins, renderEmptyElement } from '../../ui'
5
- import { getFuncText, getLastZIndex, nextZIndex } from '../../ui/src/utils'
5
+ import { getFuncText, getLastZIndex, nextZIndex, isEnableConf } from '../../ui/src/utils'
6
6
  import { getAbsolutePos, getEventTargetNode } from '../../ui/src/dom'
7
7
  import { toStringTimeDate, getDateQuarter } from './util'
8
8
  import { getSlotVNs } from '../..//ui/src/vn'
9
+ import VxeButtonGroupComponent from '../../button/src/button-group'
9
10
 
10
- import type { VxeDatePickerConstructor, DatePickerInternalData, VxeDatePickerEmits, DatePickerReactData, VxeDatePickerPropTypes, VxeComponentStyleType, VxeFormConstructor, VxeFormPrivateMethods, VxeFormDefines, VxeDrawerConstructor, VxeDrawerMethods, VxeModalConstructor, VxeModalMethods, VxeDatePickerDefines, VxeComponentSizeType, ValueOf } from '../../../types'
11
+ import type { VxeDatePickerConstructor, DatePickerInternalData, VxeDatePickerEmits, DatePickerReactData, VxeDatePickerPropTypes, VxeComponentStyleType, VxeFormConstructor, VxeFormPrivateMethods, VxeFormDefines, VxeDrawerConstructor, VxeDrawerMethods, VxeModalConstructor, VxeModalMethods, VxeDatePickerDefines, VxeComponentSizeType, ValueOf, VxeButtonGroupDefines } from '../../../types'
11
12
  import type { VxeTableConstructor, VxeTablePrivateMethods } from '../../../types/components/table'
12
13
 
13
14
  export default defineVxeComponent({
@@ -101,6 +102,8 @@ export default defineVxeComponent({
101
102
  default: null
102
103
  },
103
104
 
105
+ shortcutConfig: Object as PropType<VxeDatePickerPropTypes.ShortcutConfig>,
106
+
104
107
  // 已废弃 startWeek,被 startDay 替换
105
108
  startWeek: Number as PropType<VxeDatePickerPropTypes.StartDay>,
106
109
  // 已废弃
@@ -688,6 +691,12 @@ export default defineVxeComponent({
688
691
 
689
692
  const { immediate } = props
690
693
  return immediate
694
+ },
695
+ computeShortcutOpts () {
696
+ const $xeDatePicker = this
697
+ const props = $xeDatePicker
698
+
699
+ return Object.assign({}, getConfig().datePicker.shortcutConfig, props.shortcutConfig)
691
700
  }
692
701
  },
693
702
  methods: {
@@ -757,10 +766,16 @@ export default defineVxeComponent({
757
766
  const $xeDatePicker = this
758
767
  const props = $xeDatePicker
759
768
 
760
- const { type } = props
769
+ const { type, multiple } = props
761
770
  if (type === 'time') {
762
771
  return toStringTimeDate(value)
763
772
  }
773
+ if (XEUtils.isArray(value)) {
774
+ return XEUtils.toStringDate(value[0], format)
775
+ }
776
+ if (XEUtils.isString(value)) {
777
+ return XEUtils.toStringDate(multiple ? XEUtils.last(value.split(',')) : value, format)
778
+ }
764
779
  return XEUtils.toStringDate(value, format)
765
780
  },
766
781
  triggerEvent (evnt: Event & { type: 'input' | 'change' | 'keydown' | 'keyup' | 'wheel' | 'click' | 'focus' | 'blur' }) {
@@ -952,7 +967,7 @@ export default defineVxeComponent({
952
967
  reactData.selectMonth = month
953
968
  }
954
969
  },
955
- dateChange (date: Date) {
970
+ dateChange (date: Date, isReload?: boolean) {
956
971
  const $xeDatePicker = this
957
972
  const props = $xeDatePicker
958
973
  const reactData = $xeDatePicker.reactData
@@ -976,10 +991,9 @@ export default defineVxeComponent({
976
991
  $xeDatePicker.dateCheckMonth(date)
977
992
  if (multiple) {
978
993
  // 如果为多选
979
- const dateMultipleValue = $xeDatePicker.computeDateMultipleValue
980
994
  if (isDateTimeType) {
981
995
  // 如果是datetime特殊类型
982
- const dateListValue = [...$xeDatePicker.computeDateListValue]
996
+ const dateListValue = isReload ? [] : [...$xeDatePicker.computeDateListValue]
983
997
  const datetimeRest: Date[] = []
984
998
  const eqIndex = XEUtils.findIndexOf(dateListValue, val => XEUtils.isDateSame(date, val, 'yyyyMMdd'))
985
999
  if (eqIndex === -1) {
@@ -999,6 +1013,7 @@ export default defineVxeComponent({
999
1013
  })
1000
1014
  $xeDatePicker.handleChange(datetimeRest.map(date => XEUtils.toDateString(date, dateValueFormat)).join(','), { type: 'update' })
1001
1015
  } else {
1016
+ const dateMultipleValue = isReload ? [] : $xeDatePicker.computeDateMultipleValue
1002
1017
  // 如果是日期类型
1003
1018
  if (dateMultipleValue.some(val => XEUtils.isEqual(val, inpVal))) {
1004
1019
  $xeDatePicker.handleChange(dateMultipleValue.filter(val => !XEUtils.isEqual(val, inpVal)).join(','), { type: 'update' })
@@ -1114,9 +1129,24 @@ export default defineVxeComponent({
1114
1129
  },
1115
1130
  dateNowHandle () {
1116
1131
  const $xeDatePicker = this
1132
+ const props = $xeDatePicker
1117
1133
  const reactData = $xeDatePicker.reactData
1118
1134
 
1119
- const currentDate = XEUtils.getWhatDay(Date.now(), 0, 'first')
1135
+ const { type } = props
1136
+ const firstDayOfWeek = $xeDatePicker.computeFirstDayOfWeek
1137
+ let currentDate = new Date()
1138
+ switch (type) {
1139
+ case 'week':
1140
+ currentDate = XEUtils.getWhatWeek(currentDate, 0, firstDayOfWeek)
1141
+ break
1142
+ case 'datetime':
1143
+ currentDate = new Date()
1144
+ reactData.datetimePanelValue = new Date()
1145
+ break
1146
+ default:
1147
+ currentDate = XEUtils.getWhatDay(Date.now(), 0, 'first')
1148
+ break
1149
+ }
1120
1150
  reactData.currentDate = currentDate
1121
1151
  $xeDatePicker.dateMonthHandle(currentDate, 0)
1122
1152
  },
@@ -1172,8 +1202,8 @@ export default defineVxeComponent({
1172
1202
  const reactData = $xeDatePicker.reactData
1173
1203
 
1174
1204
  $xeDatePicker.dateNowHandle()
1205
+ $xeDatePicker.dateChange(reactData.currentDate, true)
1175
1206
  if (!props.multiple) {
1176
- $xeDatePicker.dateChange(reactData.currentDate)
1177
1207
  $xeDatePicker.hidePanel()
1178
1208
  }
1179
1209
  $xeDatePicker.dispatchEvent('date-today', { type: props.type }, evnt)
@@ -1483,17 +1513,25 @@ export default defineVxeComponent({
1483
1513
  offsetMonth = XEUtils.getWhatMonth(offsetMonth, 4)
1484
1514
  }
1485
1515
  $xeDatePicker.dateMoveMonth(offsetMonth)
1486
- } else {
1516
+ } else if (datePanelType === 'week') {
1487
1517
  let offsetDay = datePanelValue || XEUtils.getWhatDay(Date.now(), 0, 'first')
1488
1518
  const firstDayOfWeek = $xeDatePicker.computeFirstDayOfWeek
1519
+ if (isUpArrow) {
1520
+ offsetDay = XEUtils.getWhatWeek(offsetDay, -1, firstDayOfWeek)
1521
+ } else if (isDwArrow) {
1522
+ offsetDay = XEUtils.getWhatWeek(offsetDay, 1, firstDayOfWeek)
1523
+ }
1524
+ $xeDatePicker.dateMoveDay(offsetDay)
1525
+ } else {
1526
+ let offsetDay = datePanelValue || XEUtils.getWhatDay(Date.now(), 0, 'first')
1489
1527
  if (isLeftArrow) {
1490
1528
  offsetDay = XEUtils.getWhatDay(offsetDay, -1)
1491
1529
  } else if (isUpArrow) {
1492
- offsetDay = XEUtils.getWhatWeek(offsetDay, -1, firstDayOfWeek)
1530
+ offsetDay = XEUtils.getWhatWeek(offsetDay, -1, offsetDay.getDay() as VxeDatePickerPropTypes.StartDay)
1493
1531
  } else if (isRightArrow) {
1494
1532
  offsetDay = XEUtils.getWhatDay(offsetDay, 1)
1495
1533
  } else if (isDwArrow) {
1496
- offsetDay = XEUtils.getWhatWeek(offsetDay, 1, firstDayOfWeek)
1534
+ offsetDay = XEUtils.getWhatWeek(offsetDay, 1, offsetDay.getDay() as VxeDatePickerPropTypes.StartDay)
1497
1535
  }
1498
1536
  $xeDatePicker.dateMoveDay(offsetDay)
1499
1537
  }
@@ -1679,6 +1717,24 @@ export default defineVxeComponent({
1679
1717
 
1680
1718
  $xeDatePicker.triggerEvent(evnt)
1681
1719
  },
1720
+ handleShortcutEvent ({ option, $event }: VxeButtonGroupDefines.ClickEventParams) {
1721
+ const $xeDatePicker = this
1722
+
1723
+ const shortcutOpts = $xeDatePicker.computeShortcutOpts
1724
+ const { autoClose } = shortcutOpts
1725
+ const clickMethod = (option as VxeDatePickerDefines.ShortcutOption).clickMethod || shortcutOpts.clickMethod
1726
+ const shortcutParams = {
1727
+ $datePicker: $xeDatePicker as VxeDatePickerConstructor,
1728
+ option: option as VxeDatePickerDefines.ShortcutOption
1729
+ }
1730
+ if (clickMethod) {
1731
+ clickMethod(shortcutParams)
1732
+ }
1733
+ if (autoClose) {
1734
+ $xeDatePicker.hidePanel()
1735
+ }
1736
+ $xeDatePicker.dispatchEvent('shortcut-click', shortcutParams, $event)
1737
+ },
1682
1738
  // 全局事件
1683
1739
  handleGlobalMousedownEvent (evnt: Event) {
1684
1740
  const $xeDatePicker = this
@@ -2267,6 +2323,30 @@ export default defineVxeComponent({
2267
2323
  ])
2268
2324
  ]
2269
2325
  },
2326
+ renderShortcutBtn (h: CreateElement, pos: 'top' | 'bottom' | 'left' | 'right' | 'header' | 'footer', isVertical?: boolean) {
2327
+ const $xeDatePicker = this
2328
+
2329
+ const shortcutOpts = $xeDatePicker.computeShortcutOpts
2330
+ const { options, position, align, mode } = shortcutOpts
2331
+ if (isEnableConf(shortcutOpts) && options && options.length && (position || 'left') === pos) {
2332
+ return h('div', {
2333
+ class: `vxe-date-picker--panel-${pos}-wrapper`
2334
+ }, [
2335
+ h(VxeButtonGroupComponent, {
2336
+ props: {
2337
+ options: options,
2338
+ mode,
2339
+ align,
2340
+ vertical: isVertical
2341
+ },
2342
+ on: {
2343
+ click: $xeDatePicker.handleShortcutEvent
2344
+ }
2345
+ })
2346
+ ])
2347
+ }
2348
+ return renderEmptyElement($xeDatePicker)
2349
+ },
2270
2350
  renderPanel (h: CreateElement) {
2271
2351
  const $xeDatePicker = this
2272
2352
  const props = $xeDatePicker
@@ -2277,12 +2357,15 @@ export default defineVxeComponent({
2277
2357
  const { initialized, isAniVisible, visiblePanel, panelPlacement, panelStyle } = reactData
2278
2358
  const vSize = $xeDatePicker.computeSize
2279
2359
  const btnTransfer = $xeDatePicker.computeBtnTransfer
2360
+ const shortcutOpts = $xeDatePicker.computeShortcutOpts
2361
+ const { options, position } = shortcutOpts
2280
2362
  const headerSlot = slots.header
2281
2363
  const footerSlot = slots.footer
2282
2364
  const topSlot = slots.top
2283
2365
  const bottomSlot = slots.bottom
2284
2366
  const leftSlot = slots.left
2285
2367
  const rightSlot = slots.right
2368
+ const hasShortcutBtn = options && options.length
2286
2369
  const renders = []
2287
2370
  if (type === 'datetime') {
2288
2371
  renders.push(
@@ -2323,10 +2406,10 @@ export default defineVxeComponent({
2323
2406
  'is--transfer': btnTransfer,
2324
2407
  'ani--leave': isAniVisible,
2325
2408
  'ani--enter': visiblePanel,
2326
- 'show--top': !!(topSlot || headerSlot),
2327
- 'show--bottom': !!(bottomSlot || footerSlot),
2328
- 'show--left': !!leftSlot,
2329
- 'show--right': !!rightSlot
2409
+ 'show--top': !!(topSlot || headerSlot || (hasShortcutBtn && (position === 'top' || position === 'header'))),
2410
+ 'show--bottom': !!(bottomSlot || footerSlot || (hasShortcutBtn && (position === 'bottom' || position === 'footer'))),
2411
+ 'show--left': !!(leftSlot || (hasShortcutBtn && position === 'left')),
2412
+ 'show--right': !!(rightSlot || (hasShortcutBtn && position === 'right'))
2330
2413
  }],
2331
2414
  attrs: {
2332
2415
  placement: panelPlacement
@@ -2341,7 +2424,7 @@ export default defineVxeComponent({
2341
2424
  ? h('div', {
2342
2425
  class: 'vxe-date-picker--panel-top-wrapper'
2343
2426
  }, topSlot({}))
2344
- : renderEmptyElement($xeDatePicker),
2427
+ : $xeDatePicker.renderShortcutBtn(h, 'top'),
2345
2428
  h('div', {
2346
2429
  class: 'vxe-date-picker--panel-body-layout-wrapper'
2347
2430
  }, [
@@ -2349,7 +2432,7 @@ export default defineVxeComponent({
2349
2432
  ? h('div', {
2350
2433
  class: 'vxe-date-picker--panel-left-wrapper'
2351
2434
  }, leftSlot({}))
2352
- : renderEmptyElement($xeDatePicker),
2435
+ : $xeDatePicker.renderShortcutBtn(h, 'left', true),
2353
2436
  h('div', {
2354
2437
  class: 'vxe-date-picker--panel-body-content-wrapper'
2355
2438
  }, [
@@ -2357,7 +2440,7 @@ export default defineVxeComponent({
2357
2440
  ? h('div', {
2358
2441
  class: 'vxe-date-picker--panel-header-wrapper'
2359
2442
  }, headerSlot({}))
2360
- : renderEmptyElement($xeDatePicker),
2443
+ : $xeDatePicker.renderShortcutBtn(h, 'header'),
2361
2444
  h('div', {
2362
2445
  class: 'vxe-date-picker--panel-body-wrapper'
2363
2446
  }, renders),
@@ -2365,19 +2448,19 @@ export default defineVxeComponent({
2365
2448
  ? h('div', {
2366
2449
  class: 'vxe-date-picker--panel-footer-wrapper'
2367
2450
  }, footerSlot({}))
2368
- : renderEmptyElement($xeDatePicker)
2451
+ : $xeDatePicker.renderShortcutBtn(h, 'footer')
2369
2452
  ]),
2370
2453
  rightSlot
2371
2454
  ? h('div', {
2372
2455
  class: 'vxe-date-picker--panel-right-wrapper'
2373
2456
  }, rightSlot({}))
2374
- : renderEmptyElement($xeDatePicker)
2457
+ : $xeDatePicker.renderShortcutBtn(h, 'right', true)
2375
2458
  ]),
2376
2459
  bottomSlot
2377
2460
  ? h('div', {
2378
2461
  class: 'vxe-date-picker--panel-bottom-wrapper'
2379
2462
  }, bottomSlot({}))
2380
- : renderEmptyElement($xeDatePicker)
2463
+ : $xeDatePicker.renderShortcutBtn(h, 'bottom')
2381
2464
  ])
2382
2465
  ]
2383
2466
  : [])
@@ -91,7 +91,13 @@ setConfig({
91
91
  startDate: new Date(1900, 0, 1),
92
92
  endDate: new Date(2100, 0, 1),
93
93
  startDay: 1,
94
- selectDay: 1
94
+ selectDay: 1,
95
+ shortcutConfig: {
96
+ // position: 'left',
97
+ align: 'left',
98
+ mode: 'text',
99
+ autoClose: true
100
+ }
95
101
  },
96
102
  drawer: {
97
103
  // size: null,
@@ -2,8 +2,20 @@
2
2
  display: inline-flex;
3
3
  &.is--vertical {
4
4
  flex-direction: column;
5
- .vxe-button {
6
- margin: 0;
5
+ .vxe-button,
6
+ .vxe-button-wrapper {
7
+ &+.vxe-button-wrapper,
8
+ &+.vxe-button,
9
+ &+.vxe-button--dropdown {
10
+ margin-top: 0.5em;
11
+ }
12
+ }
13
+ .vxe-button--dropdown {
14
+ &+.vxe-button-wrapper,
15
+ &+.vxe-button,
16
+ &+.vxe-button--dropdown {
17
+ margin-top: 0.5em;
18
+ }
7
19
  }
8
20
  }
9
21
  }
@@ -274,6 +274,13 @@ $btnThemeList: (
274
274
  margin-left: 0.72em;
275
275
  }
276
276
  }
277
+ .vxe-button--dropdown {
278
+ &+.vxe-button-wrapper,
279
+ &+.vxe-button.type--button,
280
+ &+.vxe-button--dropdown {
281
+ margin-left: 0.72em;
282
+ }
283
+ }
277
284
  .vxe-button--loading-icon,
278
285
  .vxe-button--icon {
279
286
  min-width: var(--vxe-ui-font-size-default);
@@ -300,11 +307,6 @@ $btnThemeList: (
300
307
  .vxe-button--dropdown {
301
308
  position: relative;
302
309
  outline: 0;
303
- &+.vxe-button-wrapper,
304
- &+.vxe-button.type--button,
305
- &+.vxe-button--dropdown {
306
- margin-left: 12px;
307
- }
308
310
  & > .vxe-button {
309
311
  &.type--button {
310
312
  @for $index from 0 to list.length($btnThemeList) {
@@ -418,6 +418,8 @@
418
418
  box-shadow: inset 0 -1px 0 0 var(--vxe-ui-base-popup-border-color);
419
419
  }
420
420
  td {
421
+ border: 1px solid transparent;
422
+ border-radius: 1em;
421
423
  &.is--prev,
422
424
  &.is--next {
423
425
  color: var(--vxe-ui-font-disabled-color);
@@ -427,7 +429,7 @@
427
429
  }
428
430
  }
429
431
  &.is--now {
430
- box-shadow: inset 0 0 0 1px var(--vxe-ui-base-popup-border-color);
432
+ color: var(--vxe-ui-base-popup-border-color);
431
433
  &:not(.is--selected) {
432
434
  &.is--current {
433
435
  color: var(--vxe-ui-font-primary-color);
@@ -439,14 +441,21 @@
439
441
  }
440
442
  }
441
443
  &.is--hover {
442
- background-color: var(--vxe-ui-input-date-picker-hover-background-color);
444
+ border-color: var(--vxe-ui-font-primary-color);
445
+ background-color: var(--vxe-ui-font-primary-tinge-color);
443
446
  }
444
447
  &.is--selected {
445
448
  color: var(--vxe-ui-input-date-picker-selected-color);
446
449
  background-color: var(--vxe-ui-font-primary-color);
450
+ &.is--hover {
451
+ box-shadow: 0 0px 6px 1px var(--vxe-ui-font-primary-color);
452
+ }
447
453
  &.is--prev,
448
454
  &.is--next {
449
- background-color: var(--vxe-ui-font-primary-lighten-color);
455
+ .vxe-date-picker--date-label,
456
+ .vxe-date-picker--date-festival {
457
+ color: var(--vxe-ui-base-popup-border-color);
458
+ }
450
459
  }
451
460
  .vxe-date-picker--date-label,
452
461
  .vxe-date-picker--date-festival {
@@ -482,8 +491,23 @@
482
491
  }
483
492
  }
484
493
  td {
494
+ border-top-left-radius: 0;
495
+ border-top-right-radius: 0;
496
+ border-bottom-left-radius: 0;
497
+ border-bottom-right-radius: 0;
498
+ border-left-width: 0;
499
+ border-right-width: 0;
485
500
  &:first-child {
486
- box-shadow: inset -1px 0 0 0 var(--vxe-ui-base-popup-border-color);
501
+ border-bottom-left-radius: 1em;
502
+ border-top-left-radius: 1em;
503
+ border-left-width: 1px;
504
+ border-right-width: 1px;
505
+ border-right-color: var(--vxe-ui-base-popup-border-color);
506
+ }
507
+ &:last-child {
508
+ border-top-right-radius: 1em;
509
+ border-bottom-right-radius: 1em;
510
+ border-right-width: 1px;
487
511
  }
488
512
  }
489
513
  }
@@ -514,9 +538,8 @@
514
538
  position: absolute;
515
539
  right: 0.1em;
516
540
  top: -0.2em;
517
- font-size: 12px;
518
- line-height: 12px;
519
- transform: scale(0.7);
541
+ font-size: 0.86em;
542
+ transform: scale(0.85);
520
543
  color: var(--vxe-ui-input-date-extra-color);
521
544
  &.is-important {
522
545
  color: var(--vxe-ui-input-date-extra-important-color);
@@ -526,7 +549,6 @@
526
549
  .vxe-date-picker--date-festival {
527
550
  color: var(--vxe-ui-input-date-festival-color);
528
551
  height: 14px;
529
- line-height: 1;
530
552
  overflow: hidden;
531
553
  &.is-important {
532
554
  color: var(--vxe-ui-input-date-festival-important-color);
@@ -534,8 +556,8 @@
534
556
  }
535
557
  .vxe-date-picker--date-festival--label {
536
558
  display: block;
537
- font-size: 12px;
538
- transform: scale(0.8);
559
+ font-size: 0.86em;
560
+ transform: scale(0.9);
539
561
  }
540
562
 
541
563
  @keyframes festivalOverlap2 {
@@ -561,7 +583,7 @@
561
583
 
562
584
  .vxe-date-picker--date-festival--overlap {
563
585
  display: block;
564
- font-size: 12px;
586
+ font-size: 0.86em;
565
587
  &.overlap--2 {
566
588
  animation: festivalOverlap2 6s infinite ease-in-out;
567
589
  }
@@ -1,4 +1,6 @@
1
1
  .vxe-image {
2
+ vertical-align: middle;
3
+ border-style: none;
2
4
  &.is--circle {
3
5
  border-radius: 50%;
4
6
  }
@@ -1,4 +1,4 @@
1
- import { DefineVxeComponentApp, DefineVxeComponentOptions, DefineVxeComponentInstance, VxeComponentSizeType, VxeComponentEventParams, VxeComponentPermissionCodeType, ValueOf } from '@vxe-ui/core'
1
+ import { DefineVxeComponentApp, DefineVxeComponentOptions, DefineVxeComponentInstance, VxeComponentSizeType, VxeComponentAlignType, VxeComponentEventParams, VxeComponentPermissionCodeType, ValueOf } from '@vxe-ui/core'
2
2
  import { VxeButtonProps, VxeButtonPropTypes } from './button'
3
3
 
4
4
  /* eslint-disable @typescript-eslint/no-empty-interface,no-use-before-define,@typescript-eslint/ban-types */
@@ -23,6 +23,7 @@ export namespace VxeButtonGroupPropTypes {
23
23
  export type Round = boolean
24
24
  export type Vertical = boolean
25
25
  export type Circle = boolean
26
+ export type Align = VxeComponentAlignType
26
27
  export type Disabled = boolean
27
28
  export type Mode = VxeButtonPropTypes.Mode
28
29
  export type Status = VxeButtonPropTypes.Status
@@ -36,6 +37,7 @@ export interface VxeButtonGroupProps {
36
37
  mode?: VxeButtonGroupPropTypes.Mode
37
38
  status?: VxeButtonGroupPropTypes.Status
38
39
  round?: VxeButtonGroupPropTypes.Round
40
+ align?: VxeButtonGroupPropTypes.Align
39
41
  vertical?: VxeButtonGroupPropTypes.Vertical
40
42
  circle?: VxeButtonGroupPropTypes.Circle
41
43
  /**
@@ -1,4 +1,4 @@
1
- import { DefineVxeComponentApp, DefineVxeComponentOptions, DefineVxeComponentInstance, VxeComponentEventParams, VxeComponentPermissionCodeType, VxeComponentStatusType, VxeComponentSizeType, VxeComponentStyleType, ValueOf } from '@vxe-ui/core'
1
+ import { DefineVxeComponentApp, DefineVxeComponentOptions, DefineVxeComponentInstance, VxeComponentEventParams, VxeComponentAlignType, VxeComponentPermissionCodeType, VxeComponentStatusType, VxeComponentSizeType, VxeComponentStyleType, ValueOf } from '@vxe-ui/core'
2
2
  import { VxeTooltipDefines } from './tooltip'
3
3
 
4
4
  /* eslint-disable @typescript-eslint/no-empty-interface,no-use-before-define,@typescript-eslint/ban-types */
@@ -41,7 +41,7 @@ export namespace VxeButtonPropTypes {
41
41
  export type Disabled = boolean
42
42
  export type Loading = boolean
43
43
  export type Trigger = 'manual' | 'hover' | 'click' | '' | null
44
- export type Align = 'left' | 'center' | 'right' | '' | null
44
+ export type Align = VxeComponentAlignType
45
45
 
46
46
  export type PrefixTooltip = VxeTooltipDefines.TooltipHelperOption
47
47
  export type SuffixTooltip = VxeTooltipDefines.TooltipHelperOption
@@ -1,4 +1,6 @@
1
1
  import { DefineVxeComponentApp, DefineVxeComponentOptions, DefineVxeComponentInstance, VxeComponentEventParams, ValueOf, VxeComponentStyleType, VxeComponentSizeType } from '@vxe-ui/core'
2
+ import { VxeButtonGroupPropTypes } from './button-group'
3
+ import { VxeButtonProps } from './button'
2
4
 
3
5
  /* eslint-disable @typescript-eslint/no-empty-interface,no-use-before-define,@typescript-eslint/ban-types */
4
6
 
@@ -57,6 +59,19 @@ export namespace VxeDatePickerPropTypes {
57
59
  export type Placement = 'top' | 'bottom' | '' | null
58
60
  export type Transfer = boolean
59
61
 
62
+ export interface ShortcutConfig {
63
+ enabled?: boolean
64
+ position?: 'top' | 'bottom' | 'left' | 'right' | 'header' | 'footer' | null
65
+ align?: VxeButtonGroupPropTypes.Align
66
+ mode?: VxeButtonGroupPropTypes.Mode
67
+ options?: VxeDatePickerDefines.ShortcutOption[]
68
+ /**
69
+ * 点击按钮后自动关闭弹窗面板
70
+ */
71
+ autoClose?: boolean
72
+ clickMethod?: (params: VxeDatePickerDefines.ShortcutClickParams) => void
73
+ }
74
+
60
75
  /**
61
76
  * 请使用 AutoComplete
62
77
  * @deprecated
@@ -124,6 +139,8 @@ export interface VxeDatePickerProps {
124
139
  placement?: VxeDatePickerPropTypes.Placement
125
140
  transfer?: VxeDatePickerPropTypes.Transfer
126
141
 
142
+ shortcutConfig?: VxeDatePickerPropTypes.ShortcutConfig
143
+
127
144
  /**
128
145
  * 请使用 autoComplete
129
146
  * @deprecated
@@ -208,7 +225,8 @@ export type VxeDatePickerEmits = [
208
225
  'suffix-click',
209
226
  'date-prev',
210
227
  'date-today',
211
- 'date-next'
228
+ 'date-next',
229
+ 'shortcut-click'
212
230
  ]
213
231
 
214
232
  export namespace VxeDatePickerDefines {
@@ -260,6 +278,10 @@ export namespace VxeDatePickerDefines {
260
278
 
261
279
  export type DatePanelType = 'year' | 'quarter' | 'month' | 'week' | 'day'
262
280
 
281
+ export interface ShortcutOption extends VxeButtonProps {
282
+ clickMethod?: (params: VxeDatePickerDefines.ShortcutClickParams) => void
283
+ }
284
+
263
285
  interface DateFestivalItem {
264
286
  /**
265
287
  * 显示名称
@@ -308,21 +330,30 @@ export namespace VxeDatePickerDefines {
308
330
 
309
331
  export interface ChangeParams extends DatePickerParams {}
310
332
  export interface ChangeEventParams extends DatePickerEventParams, ChangeParams { }
333
+
334
+ export interface ShortcutClickParams {
335
+ $datePicker: VxeDatePickerConstructor
336
+ option: VxeDatePickerDefines.ShortcutOption
337
+ }
338
+ export interface ShortcutClickEventParams extends DatePickerEventParams, ShortcutClickParams {}
311
339
  }
312
340
 
313
341
  export type VxeDatePickerEventProps = {
314
342
  onInput?: VxeDatePickerEvents.Input
315
343
  onChange?: VxeDatePickerEvents.Change
344
+ onShortcutClick?: VxeDatePickerEvents.ShortcutClick
316
345
  }
317
346
 
318
347
  export interface VxeDatePickerListeners {
319
- value?: VxeDatePickerEvents.Input
348
+ input?: VxeDatePickerEvents.Input
320
349
  change?: VxeDatePickerEvents.Change
350
+ shortcutClick?: VxeDatePickerEvents.ShortcutClick
321
351
  }
322
352
 
323
353
  export namespace VxeDatePickerEvents {
324
354
  export type Input = (params: VxeDatePickerDefines.InputEventParams) => void
325
355
  export type Change = (params: VxeDatePickerDefines.ChangeEventParams) => void
356
+ export type ShortcutClick = (params: VxeDatePickerDefines.ShortcutClickEventParams) => void
326
357
  }
327
358
 
328
359
  export namespace VxeDatePickerSlotTypes {
@@ -727,7 +727,18 @@ export namespace VxeTablePropTypes {
727
727
  multiple?: boolean
728
728
  chronological?: boolean
729
729
  trigger?: 'default' | 'cell'
730
+ /**
731
+ * 是否显示排序按钮图标
732
+ */
730
733
  showIcon?: boolean
734
+ /**
735
+ * 排序按钮图标的显示方法,该方法的返回值用于决定该列是否显示排序按钮图标
736
+ * @param params
737
+ */
738
+ iconVisibleMethod?(params: {
739
+ $table: VxeTableConstructor<D>
740
+ column: VxeTableDefines.ColumnInfo<D>
741
+ }): boolean
731
742
  iconLayout?: 'horizontal' | 'vertical'
732
743
  iconAsc?: string
733
744
  iconDesc?: string
@@ -749,7 +760,18 @@ export namespace VxeTablePropTypes {
749
760
  column: VxeTableDefines.ColumnInfo<D>
750
761
  }) => any
751
762
  remote?: boolean
763
+ /**
764
+ * 是否显示筛选按钮图标
765
+ */
752
766
  showIcon?: boolean
767
+ /**
768
+ * 筛选按钮图标的显示方法,该方法的返回值用于决定该列是否显示筛选按钮图标
769
+ * @param params
770
+ */
771
+ iconVisibleMethod?(params: {
772
+ $table: VxeTableConstructor<D>
773
+ column: VxeTableDefines.ColumnInfo<D>
774
+ }): boolean
753
775
  iconNone?: string
754
776
  iconMatch?: string
755
777
  destroyOnClose?: boolean
@@ -3706,7 +3728,7 @@ export interface TablePrivateMethods<D = any> {
3706
3728
  updateAllCheckboxStatus(): void
3707
3729
  checkSelectionStatus(): void
3708
3730
  handleBatchSelectRows(rows: any[], value: any, isForce?: boolean): void
3709
- handleResizeDblclickEvent(evnt: MouseEvent, params: VxeTableDefines.CellRenderHeaderParams): void
3731
+ handleResizeDblclickEvent(evnt: MouseEvent, params: VxeTableDefines.CellRenderHeaderParams & { $table: VxeTableConstructor & VxeTablePrivateMethods }): void
3710
3732
  /**
3711
3733
  * use handleBatchSelectRows
3712
3734
  * @deprecated
@@ -4115,6 +4137,7 @@ export namespace VxeTableDefines {
4115
4137
  type: string
4116
4138
  isHidden: boolean
4117
4139
  hasFilter: boolean
4140
+ firstFilterOption: VxeColumnPropTypes.FilterItem | null
4118
4141
 
4119
4142
  checked?: boolean
4120
4143
  indeterminate?: boolean