vxe-pc-ui 3.3.67 → 3.3.69

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 (183) hide show
  1. package/es/button/src/button-group.js +3 -2
  2. package/es/button/src/button.js +21 -7
  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 +103 -22
  8. package/es/date-picker/style.css +37 -12
  9. package/es/date-picker/style.min.css +1 -1
  10. package/es/form/src/form-group.js +2 -2
  11. package/es/form/src/form-item.js +2 -2
  12. package/es/form/src/form.js +2 -2
  13. package/es/icon/style.css +1 -1
  14. package/es/image/src/group.js +2 -2
  15. package/es/image/src/image.js +2 -2
  16. package/es/input/src/input.js +2 -2
  17. package/es/language/ar-EG.js +1 -0
  18. package/es/language/de-DE.js +1 -0
  19. package/es/language/en-US.js +1 -0
  20. package/es/language/es-ES.js +1 -0
  21. package/es/language/fr-FR.js +1 -0
  22. package/es/language/hu-HU.js +1 -0
  23. package/es/language/hy-AM.js +1 -0
  24. package/es/language/it-IT.js +1 -0
  25. package/es/language/ja-JP.js +1 -0
  26. package/es/language/ko-KR.js +1 -0
  27. package/es/language/nb-NO.js +1 -0
  28. package/es/language/pt-BR.js +1 -0
  29. package/es/language/ru-RU.js +1 -0
  30. package/es/language/th-TH.js +1 -0
  31. package/es/language/ug-CN.js +1 -0
  32. package/es/language/uk-UA.js +1 -0
  33. package/es/language/vi-VN.js +1 -0
  34. package/es/language/zh-CHT.js +1 -0
  35. package/es/language/zh-CN.js +1 -0
  36. package/es/layout-aside/src/layout-aside.js +2 -2
  37. package/es/layout-body/src/layout-body.js +2 -2
  38. package/es/layout-container/src/layout-container.js +2 -2
  39. package/es/layout-footer/src/layout-footer.js +2 -2
  40. package/es/layout-header/src/layout-header.js +2 -2
  41. package/es/modal/src/modal.js +2 -2
  42. package/es/pager/src/pager.js +2 -2
  43. package/es/pulldown/src/pulldown.js +2 -2
  44. package/es/select/src/optgroup.js +2 -2
  45. package/es/select/src/option.js +2 -2
  46. package/es/select/src/select.js +2 -2
  47. package/es/style.css +1 -1
  48. package/es/style.min.css +1 -1
  49. package/es/switch/src/switch.js +2 -2
  50. package/es/table-select/src/table-select.js +2 -2
  51. package/es/tabs/src/tab-pane.js +2 -2
  52. package/es/tabs/src/tabs.js +2 -2
  53. package/es/tree/src/tree.js +2 -2
  54. package/es/tree-select/src/tree-select.js +2 -2
  55. package/es/ui/index.js +8 -2
  56. package/es/ui/src/log.js +1 -1
  57. package/es/upload/src/upload.js +2 -2
  58. package/es/vxe-button/style.css +4 -3
  59. package/es/vxe-button/style.min.css +1 -1
  60. package/es/vxe-button-group/style.css +8 -2
  61. package/es/vxe-button-group/style.min.css +1 -1
  62. package/es/vxe-date-picker/style.css +37 -12
  63. package/es/vxe-date-picker/style.min.css +1 -1
  64. package/helper/vetur/attributes.json +1 -1
  65. package/helper/vetur/tags.json +1 -1
  66. package/lib/button/src/button-group.js +1 -0
  67. package/lib/button/src/button-group.min.js +1 -1
  68. package/lib/button/src/button.js +18 -5
  69. package/lib/button/src/button.min.js +1 -1
  70. package/lib/button/style/style.css +4 -3
  71. package/lib/button/style/style.min.css +1 -1
  72. package/lib/button-group/style/style.css +8 -2
  73. package/lib/button-group/style/style.min.css +1 -1
  74. package/lib/date-picker/src/date-picker.js +103 -19
  75. package/lib/date-picker/src/date-picker.min.js +1 -1
  76. package/lib/date-picker/style/style.css +37 -12
  77. package/lib/date-picker/style/style.min.css +1 -1
  78. package/lib/icon/style/style.css +1 -1
  79. package/lib/icon/style/style.min.css +1 -1
  80. package/lib/index.umd.js +132 -27
  81. package/lib/index.umd.min.js +1 -1
  82. package/lib/language/ar-EG.js +1 -0
  83. package/lib/language/ar-EG.min.js +1 -1
  84. package/lib/language/de-DE.js +1 -0
  85. package/lib/language/de-DE.min.js +1 -1
  86. package/lib/language/en-US.js +1 -0
  87. package/lib/language/en-US.min.js +1 -1
  88. package/lib/language/en-US.umd.js +1 -0
  89. package/lib/language/es-ES.js +1 -0
  90. package/lib/language/es-ES.min.js +1 -1
  91. package/lib/language/es-ES.umd.js +1 -0
  92. package/lib/language/fr-FR.js +1 -0
  93. package/lib/language/fr-FR.min.js +1 -1
  94. package/lib/language/hu-HU.js +1 -0
  95. package/lib/language/hu-HU.min.js +1 -1
  96. package/lib/language/hu-HU.umd.js +1 -0
  97. package/lib/language/hy-AM.js +1 -0
  98. package/lib/language/hy-AM.min.js +1 -1
  99. package/lib/language/it-IT.js +1 -0
  100. package/lib/language/it-IT.min.js +1 -1
  101. package/lib/language/ja-JP.js +1 -0
  102. package/lib/language/ja-JP.min.js +1 -1
  103. package/lib/language/ja-JP.umd.js +1 -0
  104. package/lib/language/ko-KR.js +1 -0
  105. package/lib/language/ko-KR.min.js +1 -1
  106. package/lib/language/ko-KR.umd.js +1 -0
  107. package/lib/language/nb-NO.js +1 -0
  108. package/lib/language/nb-NO.min.js +1 -1
  109. package/lib/language/pt-BR.js +1 -0
  110. package/lib/language/pt-BR.min.js +1 -1
  111. package/lib/language/pt-BR.umd.js +1 -0
  112. package/lib/language/ru-RU.js +1 -0
  113. package/lib/language/ru-RU.min.js +1 -1
  114. package/lib/language/ru-RU.umd.js +1 -0
  115. package/lib/language/th-TH.js +1 -0
  116. package/lib/language/th-TH.min.js +1 -1
  117. package/lib/language/ug-CN.js +1 -0
  118. package/lib/language/ug-CN.min.js +1 -1
  119. package/lib/language/uk-UA.js +1 -0
  120. package/lib/language/uk-UA.min.js +1 -1
  121. package/lib/language/uk-UA.umd.js +1 -0
  122. package/lib/language/vi-VN.js +1 -0
  123. package/lib/language/vi-VN.min.js +1 -1
  124. package/lib/language/zh-CHT.js +1 -0
  125. package/lib/language/zh-CHT.min.js +1 -1
  126. package/lib/language/zh-CHT.umd.js +1 -0
  127. package/lib/language/zh-CN.js +1 -0
  128. package/lib/language/zh-CN.min.js +1 -1
  129. package/lib/language/zh-CN.umd.js +1 -0
  130. package/lib/style.css +1 -1
  131. package/lib/style.min.css +1 -1
  132. package/lib/ui/index.js +8 -2
  133. package/lib/ui/index.min.js +1 -1
  134. package/lib/ui/src/log.js +1 -1
  135. package/lib/ui/src/log.min.js +1 -1
  136. package/lib/vxe-button/style/style.css +4 -3
  137. package/lib/vxe-button/style/style.min.css +1 -1
  138. package/lib/vxe-button-group/style/style.css +8 -2
  139. package/lib/vxe-button-group/style/style.min.css +1 -1
  140. package/lib/vxe-date-picker/style/style.css +37 -12
  141. package/lib/vxe-date-picker/style/style.min.css +1 -1
  142. package/package.json +1 -1
  143. package/packages/button/src/button-group.ts +1 -0
  144. package/packages/button/src/button.ts +20 -5
  145. package/packages/date-picker/src/date-picker.ts +104 -21
  146. package/packages/language/ar-EG.ts +1 -0
  147. package/packages/language/de-DE.ts +1 -0
  148. package/packages/language/en-US.ts +1 -0
  149. package/packages/language/es-ES.ts +1 -0
  150. package/packages/language/fr-FR.ts +1 -0
  151. package/packages/language/hu-HU.ts +1 -0
  152. package/packages/language/hy-AM.ts +1 -0
  153. package/packages/language/it-IT.ts +1 -0
  154. package/packages/language/ja-JP.ts +1 -0
  155. package/packages/language/ko-KR.ts +1 -0
  156. package/packages/language/nb-NO.ts +1 -0
  157. package/packages/language/pt-BR.ts +1 -0
  158. package/packages/language/ru-RU.ts +1 -0
  159. package/packages/language/th-TH.ts +1 -0
  160. package/packages/language/ug-CN.ts +1 -0
  161. package/packages/language/uk-UA.ts +1 -0
  162. package/packages/language/vi-VN.ts +1 -0
  163. package/packages/language/zh-CHT.ts +1 -0
  164. package/packages/language/zh-CN.ts +1 -0
  165. package/packages/ui/index.ts +7 -1
  166. package/styles/components/button-group.scss +14 -2
  167. package/styles/components/button.scss +7 -5
  168. package/styles/components/date-picker.scss +33 -11
  169. package/types/components/button-group.d.ts +3 -1
  170. package/types/components/button.d.ts +2 -2
  171. package/types/components/date-picker.d.ts +33 -2
  172. /package/es/icon/{iconfont.1736058590017.ttf → iconfont.1736122964282.ttf} +0 -0
  173. /package/es/icon/{iconfont.1736058590017.woff → iconfont.1736122964282.woff} +0 -0
  174. /package/es/icon/{iconfont.1736058590017.woff2 → iconfont.1736122964282.woff2} +0 -0
  175. /package/es/{iconfont.1736058590017.ttf → iconfont.1736122964282.ttf} +0 -0
  176. /package/es/{iconfont.1736058590017.woff → iconfont.1736122964282.woff} +0 -0
  177. /package/es/{iconfont.1736058590017.woff2 → iconfont.1736122964282.woff2} +0 -0
  178. /package/lib/icon/style/{iconfont.1736058590017.ttf → iconfont.1736122964282.ttf} +0 -0
  179. /package/lib/icon/style/{iconfont.1736058590017.woff → iconfont.1736122964282.woff} +0 -0
  180. /package/lib/icon/style/{iconfont.1736058590017.woff2 → iconfont.1736122964282.woff2} +0 -0
  181. /package/lib/{iconfont.1736058590017.ttf → iconfont.1736122964282.ttf} +0 -0
  182. /package/lib/{iconfont.1736058590017.woff → iconfont.1736122964282.woff} +0 -0
  183. /package/lib/{iconfont.1736058590017.woff2 → iconfont.1736122964282.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
  : [])
@@ -11,6 +11,7 @@ export default {
11
11
  },
12
12
  error: {
13
13
  downErr: '下载失败',
14
+ errLargeData: '当绑定的数据量过大时,应该请使用 {0},否则可能会出现卡顿',
14
15
  groupFixed: '如果使用分组表头,冻结列必须按组设置',
15
16
  groupMouseRange: '分组表头与 "{0}" 不能同时使用,这可能会出现错误',
16
17
  groupTag: '分组列头应该使用 "{0}" 而不是 "{1}",这可能会出现错误',
@@ -12,6 +12,7 @@ export default
12
12
  },
13
13
  error: {
14
14
  downErr: 'Der Download ist fehlgeschlagen',
15
+ errLargeData: '当绑定的数据量过大时,应该请使用 {0},否则可能会出现卡顿',
15
16
  groupFixed: 'Bei Verwendung von Gruppenköpfen müssen eingefrorene Spalten nach Gruppe festgelegt werden',
16
17
  groupMouseRange: 'Der Gruppenheader und „{0}“ können nicht gleichzeitig verwendet werden, was zu einem Fehler führen kann.',
17
18
  groupTag: 'Bei der Gruppierung von Spaltenüberschriften sollte „{0}“ anstelle von „{1}“ verwendet werden, was zu Fehlern führen kann',
@@ -11,6 +11,7 @@ export default {
11
11
  },
12
12
  error: {
13
13
  downErr: 'Download failed',
14
+ errLargeData: '当绑定的数据量过大时,应该请使用 {0},否则可能会出现卡顿',
14
15
  groupFixed: 'If using group headers, frozen columns must be set by group',
15
16
  groupMouseRange: 'The group header and "{0}" cannot be used at the same time, which may cause an error.',
16
17
  groupTag: 'Grouping column headers should use "{0}" instead of "{1}", which may cause errors',
@@ -11,6 +11,7 @@ export default {
11
11
  },
12
12
  error: {
13
13
  downErr: 'Download failed.',
14
+ errLargeData: '当绑定的数据量过大时,应该请使用 {0},否则可能会出现卡顿',
14
15
  groupFixed: 'If you use group headers, the freeze columns must be set by group.',
15
16
  groupMouseRange: 'Los encabezados de agrupación y "{0}" no pueden ser utilizados al mismo tiempo, lo que puede causar errores.',
16
17
  groupTag: 'El encabezado de columna de agrupación debería utilizar "{0}" en lugar de "{1}", lo que puede causar errores.',
@@ -11,6 +11,7 @@ export default {
11
11
  },
12
12
  error: {
13
13
  downErr: '下载失败',
14
+ errLargeData: '当绑定的数据量过大时,应该请使用 {0},否则可能会出现卡顿',
14
15
  groupFixed: '如果使用分组表头,冻结列必须按组设置',
15
16
  groupMouseRange: '分组表头与 "{0}" 不能同时使用,这可能会出现错误',
16
17
  groupTag: '分组列头应该使用 "{0}" 而不是 "{1}",这可能会出现错误',
@@ -11,6 +11,7 @@ export default {
11
11
  },
12
12
  error: {
13
13
  downErr: 'Letöltés sikertelen',
14
+ errLargeData: '当绑定的数据量过大时,应该请使用 {0},否则可能会出现卡顿',
14
15
  groupFixed: 'Csoportfejlécek használata esetén a rögzített oszlopokat csoportonként kell beállítani',
15
16
  groupMouseRange: 'A csoportfejléc és a „{0}” nem használhatók egyszerre, ami hibát okozhat.',
16
17
  groupTag: 'A csoportosító oszlopfejlécben a „{0}” értéket kell használni a „{1}” helyett, ami hibákat okozhat',
@@ -11,6 +11,7 @@ export default {
11
11
  },
12
12
  error: {
13
13
  downErr: '下载失败',
14
+ errLargeData: '当绑定的数据量过大时,应该请使用 {0},否则可能会出现卡顿',
14
15
  groupFixed: '如果使用分组表头,冻结列必须按组设置',
15
16
  groupMouseRange: '分组表头与 "{0}" 不能同时使用,这可能会出现错误',
16
17
  groupTag: '分组列头应该使用 "{0}" 而不是 "{1}",这可能会出现错误',
@@ -11,6 +11,7 @@ export default {
11
11
  },
12
12
  error: {
13
13
  downErr: 'Download non riuscito',
14
+ errLargeData: '当绑定的数据量过大时,应该请使用 {0},否则可能会出现卡顿',
14
15
  groupFixed: 'Se si utilizzano intestazioni di gruppo, le colonne bloccate devono essere impostate per gruppo',
15
16
  groupMouseRange: "L'intestazione del gruppo e \"{0}\" non possono essere utilizzate contemporaneamente, il che potrebbe causare un errore.",
16
17
  groupTag: 'Le intestazioni delle colonne di raggruppamento devono utilizzare "{0}" anziché "{1}", il che potrebbe causare errori',
@@ -11,6 +11,7 @@ export default {
11
11
  },
12
12
  error: {
13
13
  downErr: '下载失败',
14
+ errLargeData: '当绑定的数据量过大时,应该请使用 {0},否则可能会出现卡顿',
14
15
  groupFixed: 'ヘッダー結合を使用する場合、固定列はグループで設定しなければなりません',
15
16
  groupMouseRange: 'ヘッダー結合と「{0}」は同時に使用できません。これによりエラーが発生する可能性があります',
16
17
  groupTag: 'ヘッダー結合は "{0}" を使ってください。 "{1}" はエラーが発生する可能性があります',
@@ -11,6 +11,7 @@ export default {
11
11
  },
12
12
  error: {
13
13
  downErr: '下载失败',
14
+ errLargeData: '当绑定的数据量过大时,应该请使用 {0},否则可能会出现卡顿',
14
15
  groupFixed: '如果使用分组表头,冻结列必须按组设置',
15
16
  groupMouseRange: '分组表头与 "{0}" 不能同时使用,这可能会出现错误',
16
17
  groupTag: '分组列头应该使用 "{0}" 而不是 "{1}",这可能会出现错误',
@@ -11,6 +11,7 @@ export default {
11
11
  },
12
12
  error: {
13
13
  downErr: '下载失败',
14
+ errLargeData: '当绑定的数据量过大时,应该请使用 {0},否则可能会出现卡顿',
14
15
  groupFixed: '如果使用分组表头,冻结列必须按组设置',
15
16
  groupMouseRange: '分组表头与 "{0}" 不能同时使用,这可能会出现错误',
16
17
  groupTag: '分组列头应该使用 "{0}" 而不是 "{1}",这可能会出现错误',
@@ -11,6 +11,7 @@ export default {
11
11
  },
12
12
  error: {
13
13
  downErr: '下载失败',
14
+ errLargeData: '当绑定的数据量过大时,应该请使用 {0},否则可能会出现卡顿',
14
15
  groupFixed: 'If you use group headers, the freeze columns must be set by group.',
15
16
  groupMouseRange: 'Agrupar cabeçalhos e "{0}" não podem ser usados ao mesmo tempo, o que pode causar erros.',
16
17
  groupTag: 'O cabeçalho da coluna de agrupamento deve usar "{0}" em vez de "{1}", o que pode causar erros.',
@@ -11,6 +11,7 @@ export default {
11
11
  },
12
12
  error: {
13
13
  downErr: 'Загрузка не удалась',
14
+ errLargeData: '当绑定的数据量过大时,应该请使用 {0},否则可能会出现卡顿',
14
15
  groupFixed: 'При использовании заголовков групп замороженные столбцы должны быть установлены по группам.',
15
16
  groupMouseRange: 'Заголовок группы и "{0}" нельзя использовать одновременно, что может привести к ошибке.',
16
17
  groupTag: 'При группировке заголовков столбцов следует использовать "{0}" вместо "{1}", что может привести к ошибкам.',
@@ -11,6 +11,7 @@ export default {
11
11
  },
12
12
  error: {
13
13
  downErr: 'การดาวน์โหลดล้มเหลว',
14
+ errLargeData: '当绑定的数据量过大时,应该请使用 {0},否则可能会出现卡顿',
14
15
  groupFixed: 'หากใช้ส่วนหัวของกลุ่ม คอลัมน์ที่ตรึงจะต้องตั้งค่าตามกลุ่ม',
15
16
  groupMouseRange: 'ส่วนหัวของกลุ่มและ "{0}" ไม่สามารถนำมาใช้พร้อมกันได้ ซึ่งอาจทำให้เกิดข้อผิดพลาดได้',
16
17
  groupTag: 'การจัดกลุ่มส่วนหัวคอลัมน์ควรใช้ "{0}" แทน "{1}" ซึ่งอาจทำให้เกิดข้อผิดพลาด',
@@ -11,6 +11,7 @@ export default {
11
11
  },
12
12
  error: {
13
13
  downErr: 'چۈشۈرۈش مەغلۇپ بولدى',
14
+ errLargeData: '当绑定的数据量过大时,应该请使用 {0},否则可能会出现卡顿',
14
15
  groupFixed: 'ئەگەر گۇرۇپپا ئۇچۇر بىشىنى ئىشلەتكەن بولسىڭىز،توڭلاتماقچى بولغان قۇر چوقۇم گۇرۇپپا بويىچە تەڭشىلىشى كىرەك',
15
16
  groupMouseRange: 'گۇرۇپپا بىشى بىلەن "{0}" نى بىللە ئىشلىتىشكە بولمايدۇ,بۇ بەلكىم خاتالىق كەلتۈرۈپ چىقىرىشى مومكىن',
16
17
  groupTag: 'گۇرۇپپا قۇر بىشىغا چوقۇم "{0}" نى ئىشلىتىشىڭىز كىرەك،ھەرگىزمۇ "{1}"نى ئەمەس ،بولمىسا بۇ بەلكىم خاتالىق كەلتۈرۈپ چىقىرىشى مومكىن',
@@ -11,6 +11,7 @@ export default {
11
11
  },
12
12
  error: {
13
13
  downErr: '下载失败',
14
+ errLargeData: '当绑定的数据量过大时,应该请使用 {0},否则可能会出现卡顿',
14
15
  groupFixed: '如果使用分组表头,冻结列必须按组设置',
15
16
  groupMouseRange: '分组表头与 "{0}" 不能同时使用,这可能会出现错误',
16
17
  groupTag: '分组列头应该使用 "{0}" 而不是 "{1}",这可能会出现错误',
@@ -11,6 +11,7 @@ export default {
11
11
  },
12
12
  error: {
13
13
  downErr: '下载失败',
14
+ errLargeData: '当绑定的数据量过大时,应该请使用 {0},否则可能会出现卡顿',
14
15
  groupFixed: '如果使用分组表头,冻结列必须按组设置',
15
16
  groupMouseRange: '分组表头与 "{0}" 不能同时使用,这可能会出现错误',
16
17
  groupTag: '分组列头应该使用 "{0}" 而不是 "{1}",这可能会出现错误',
@@ -11,6 +11,7 @@ export default {
11
11
  },
12
12
  error: {
13
13
  downErr: '下載失敗',
14
+ errLargeData: '当绑定的数据量过大时,应该请使用 {0},否则可能会出现卡顿',
14
15
  groupFixed: '如果使用分組表頭,凍結列必須按群組設定',
15
16
  groupMouseRange: '分組表頭與 "{0}" 不能同時使用,這可能會出現錯誤',
16
17
  groupTag: '分組列頭應該使用 "{0}" 而不是 "{1}",這可能會出現錯誤',
@@ -11,6 +11,7 @@ export default {
11
11
  },
12
12
  error: {
13
13
  downErr: '下载失败',
14
+ errLargeData: '当绑定的数据量过大时,应该请使用 {0},否则可能会出现卡顿',
14
15
  groupFixed: '如果使用分组表头,冻结列必须按组设置',
15
16
  groupMouseRange: '分组表头与 "{0}" 不能同时使用,这可能会出现错误',
16
17
  groupTag: '分组列头应该使用 "{0}" 而不是 "{1}",这可能会出现错误',
@@ -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,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
  /**