vxe-pc-ui 4.3.62 → 4.3.64
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.
- package/es/button/src/button-group.js +1 -0
- package/es/button/src/button.js +16 -5
- package/es/button/style.css +4 -3
- package/es/button/style.min.css +1 -1
- package/es/button-group/style.css +8 -2
- package/es/button-group/style.min.css +1 -1
- package/es/date-picker/src/date-picker.js +104 -32
- package/es/date-picker/style.css +37 -12
- package/es/date-picker/style.min.css +1 -1
- package/es/icon/style.css +1 -1
- package/es/image/style.css +4 -0
- package/es/image/style.min.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/ui/index.js +8 -2
- package/es/ui/src/log.js +1 -1
- package/es/vxe-button/style.css +4 -3
- package/es/vxe-button/style.min.css +1 -1
- package/es/vxe-button-group/style.css +8 -2
- package/es/vxe-button-group/style.min.css +1 -1
- package/es/vxe-date-picker/style.css +37 -12
- package/es/vxe-date-picker/style.min.css +1 -1
- package/es/vxe-image/style.css +4 -0
- package/es/vxe-image/style.min.css +1 -1
- package/lib/button/src/button-group.js +1 -0
- package/lib/button/src/button-group.min.js +1 -1
- package/lib/button/src/button.js +17 -5
- package/lib/button/src/button.min.js +1 -1
- package/lib/button/style/style.css +4 -3
- package/lib/button/style/style.min.css +1 -1
- package/lib/button-group/style/style.css +8 -2
- package/lib/button-group/style/style.min.css +1 -1
- package/lib/date-picker/src/date-picker.js +114 -31
- package/lib/date-picker/src/date-picker.min.js +1 -1
- package/lib/date-picker/style/style.css +37 -12
- package/lib/date-picker/style/style.min.css +1 -1
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.min.css +1 -1
- package/lib/image/style/style.css +4 -0
- package/lib/image/style/style.min.css +1 -1
- package/lib/index.umd.js +141 -39
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/ui/index.js +8 -2
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/lib/vxe-button/style/style.css +4 -3
- package/lib/vxe-button/style/style.min.css +1 -1
- package/lib/vxe-button-group/style/style.css +8 -2
- package/lib/vxe-button-group/style/style.min.css +1 -1
- package/lib/vxe-date-picker/style/style.css +37 -12
- package/lib/vxe-date-picker/style/style.min.css +1 -1
- package/lib/vxe-image/style/style.css +4 -0
- package/lib/vxe-image/style/style.min.css +1 -1
- package/package.json +1 -1
- package/packages/button/src/button-group.ts +1 -0
- package/packages/button/src/button.ts +17 -5
- package/packages/date-picker/src/date-picker.ts +106 -33
- package/packages/ui/index.ts +7 -1
- package/styles/components/button-group.scss +14 -2
- package/styles/components/button.scss +7 -5
- package/styles/components/date-picker.scss +33 -11
- package/styles/components/image.scss +2 -0
- package/types/components/button-group.d.ts +3 -1
- package/types/components/button.d.ts +2 -2
- package/types/components/date-picker.d.ts +32 -1
- package/types/components/table.d.ts +24 -1
- /package/es/icon/{iconfont.1735974888106.ttf → iconfont.1736093254019.ttf} +0 -0
- /package/es/icon/{iconfont.1735974888106.woff → iconfont.1736093254019.woff} +0 -0
- /package/es/icon/{iconfont.1735974888106.woff2 → iconfont.1736093254019.woff2} +0 -0
- /package/es/{iconfont.1735974888106.ttf → iconfont.1736093254019.ttf} +0 -0
- /package/es/{iconfont.1735974888106.woff → iconfont.1736093254019.woff} +0 -0
- /package/es/{iconfont.1735974888106.woff2 → iconfont.1736093254019.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1735974888106.ttf → iconfont.1736093254019.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1735974888106.woff → iconfont.1736093254019.woff} +0 -0
- /package/lib/icon/style/{iconfont.1735974888106.woff2 → iconfont.1736093254019.woff2} +0 -0
- /package/lib/{iconfont.1735974888106.ttf → iconfont.1736093254019.ttf} +0 -0
- /package/lib/{iconfont.1735974888106.woff → iconfont.1736093254019.woff} +0 -0
- /package/lib/{iconfont.1735974888106.woff2 → iconfont.1736093254019.woff2} +0 -0
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { defineComponent, h, Teleport, ref, Ref, computed, reactive, inject, nextTick, watch, onUnmounted, PropType, createCommentVNode } from 'vue'
|
|
2
2
|
import XEUtils from 'xe-utils'
|
|
3
3
|
import { getConfig, getIcon, getI18n, globalEvents, GLOBAL_EVENT_KEYS, createEvent, useSize, renderEmptyElement } from '../../ui'
|
|
4
|
-
import { getFuncText, getLastZIndex, nextZIndex } from '../../ui/src/utils'
|
|
4
|
+
import { getFuncText, getLastZIndex, nextZIndex, isEnableConf } from '../../ui/src/utils'
|
|
5
5
|
import { getAbsolutePos, getEventTargetNode } from '../../ui/src/dom'
|
|
6
6
|
import { toStringTimeDate, getDateQuarter } from './util'
|
|
7
7
|
import { getSlotVNs } from '../..//ui/src/vn'
|
|
8
|
+
import VxeButtonGroupComponent from '../../button/src/button-group'
|
|
8
9
|
|
|
9
|
-
import type { VxeDatePickerConstructor, VxeDatePickerEmits, DatePickerInternalData, DatePickerReactData, VxeComponentStyleType, DatePickerMethods, VxeDatePickerPropTypes, DatePickerPrivateRef, VxeFormConstructor, VxeFormPrivateMethods, VxeFormDefines, ValueOf, VxeModalConstructor, VxeDrawerConstructor, VxeModalMethods, VxeDrawerMethods, VxeDatePickerDefines } from '../../../types'
|
|
10
|
+
import type { VxeDatePickerConstructor, VxeDatePickerEmits, DatePickerInternalData, DatePickerReactData, VxeComponentStyleType, DatePickerMethods, VxeDatePickerPropTypes, DatePickerPrivateRef, VxeFormConstructor, VxeFormPrivateMethods, VxeFormDefines, ValueOf, VxeModalConstructor, VxeDrawerConstructor, VxeModalMethods, VxeDrawerMethods, VxeDatePickerDefines, VxeButtonGroupEvents } from '../../../types'
|
|
10
11
|
import type { VxeTableConstructor, VxeTablePrivateMethods } from '../../../types/components/table'
|
|
11
12
|
|
|
12
13
|
export default defineComponent({
|
|
@@ -93,6 +94,8 @@ export default defineComponent({
|
|
|
93
94
|
default: null
|
|
94
95
|
},
|
|
95
96
|
|
|
97
|
+
shortcutConfig: Object as PropType<VxeDatePickerPropTypes.ShortcutConfig>,
|
|
98
|
+
|
|
96
99
|
// 已废弃 startWeek,被 startDay 替换
|
|
97
100
|
startWeek: Number as PropType<VxeDatePickerPropTypes.StartDay>,
|
|
98
101
|
// 已废弃
|
|
@@ -115,7 +118,8 @@ export default defineComponent({
|
|
|
115
118
|
'suffix-click',
|
|
116
119
|
'date-prev',
|
|
117
120
|
'date-today',
|
|
118
|
-
'date-next'
|
|
121
|
+
'date-next',
|
|
122
|
+
'shortcut-click'
|
|
119
123
|
] as VxeDatePickerEmits,
|
|
120
124
|
setup (props, context) {
|
|
121
125
|
const { slots, emit } = context
|
|
@@ -623,6 +627,10 @@ export default defineComponent({
|
|
|
623
627
|
return immediate
|
|
624
628
|
})
|
|
625
629
|
|
|
630
|
+
const computeShortcutOpts = computed(() => {
|
|
631
|
+
return Object.assign({}, getConfig().datePicker.shortcutConfig, props.shortcutConfig)
|
|
632
|
+
})
|
|
633
|
+
|
|
626
634
|
const updateModelValue = (modelValue: VxeDatePickerPropTypes.ModelValue | undefined) => {
|
|
627
635
|
const { isActivated, visiblePanel } = reactData
|
|
628
636
|
let val: any = ''
|
|
@@ -640,23 +648,29 @@ export default defineComponent({
|
|
|
640
648
|
}
|
|
641
649
|
|
|
642
650
|
const parseDate = (value: VxeDatePickerPropTypes.ModelValue, format: string) => {
|
|
643
|
-
const { type } = props
|
|
651
|
+
const { type, multiple } = props
|
|
644
652
|
if (type === 'time') {
|
|
645
653
|
return toStringTimeDate(value)
|
|
646
654
|
}
|
|
655
|
+
if (XEUtils.isArray(value)) {
|
|
656
|
+
return XEUtils.toStringDate(value[0], format)
|
|
657
|
+
}
|
|
658
|
+
if (XEUtils.isString(value)) {
|
|
659
|
+
return XEUtils.toStringDate(multiple ? XEUtils.last(value.split(',')) : value, format)
|
|
660
|
+
}
|
|
647
661
|
return XEUtils.toStringDate(value, format)
|
|
648
662
|
}
|
|
649
663
|
|
|
650
664
|
const triggerEvent = (evnt: Event & { type: 'input' | 'change' | 'keydown' | 'keyup' | 'wheel' | 'click' | 'focus' | 'blur' }) => {
|
|
651
665
|
const { inputValue } = reactData
|
|
652
|
-
|
|
666
|
+
dispatchEvent(evnt.type, { value: inputValue }, evnt)
|
|
653
667
|
}
|
|
654
668
|
|
|
655
669
|
const handleChange = (value: string, evnt: Event | { type: string }) => {
|
|
656
670
|
reactData.inputValue = value
|
|
657
671
|
emit('update:modelValue', value)
|
|
658
672
|
if (XEUtils.toValueString(props.modelValue) !== value) {
|
|
659
|
-
|
|
673
|
+
dispatchEvent('change', { value }, evnt as any)
|
|
660
674
|
// 自动更新校验状态
|
|
661
675
|
if ($xeForm && formItemInfo) {
|
|
662
676
|
$xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, value)
|
|
@@ -674,7 +688,7 @@ export default defineComponent({
|
|
|
674
688
|
if (inpImmediate) {
|
|
675
689
|
handleChange(value, evnt)
|
|
676
690
|
} else {
|
|
677
|
-
|
|
691
|
+
dispatchEvent('input', { value }, evnt)
|
|
678
692
|
}
|
|
679
693
|
}
|
|
680
694
|
}
|
|
@@ -699,7 +713,7 @@ export default defineComponent({
|
|
|
699
713
|
const isDisabled = computeIsDisabled.value
|
|
700
714
|
if (!isDisabled) {
|
|
701
715
|
const { inputValue } = reactData
|
|
702
|
-
|
|
716
|
+
dispatchEvent('prefix-click', { value: inputValue }, evnt)
|
|
703
717
|
}
|
|
704
718
|
}
|
|
705
719
|
|
|
@@ -719,14 +733,14 @@ export default defineComponent({
|
|
|
719
733
|
hidePanel()
|
|
720
734
|
}
|
|
721
735
|
handleChange('', evnt)
|
|
722
|
-
|
|
736
|
+
dispatchEvent('clear', { value }, evnt)
|
|
723
737
|
}
|
|
724
738
|
|
|
725
739
|
const clickSuffixEvent = (evnt: Event) => {
|
|
726
740
|
const isDisabled = computeIsDisabled.value
|
|
727
741
|
if (!isDisabled) {
|
|
728
742
|
const { inputValue } = reactData
|
|
729
|
-
|
|
743
|
+
dispatchEvent('suffix-click', { value: inputValue }, evnt)
|
|
730
744
|
}
|
|
731
745
|
}
|
|
732
746
|
|
|
@@ -803,7 +817,7 @@ export default defineComponent({
|
|
|
803
817
|
}
|
|
804
818
|
}
|
|
805
819
|
|
|
806
|
-
const dateChange = (date: Date) => {
|
|
820
|
+
const dateChange = (date: Date, isReload?: boolean) => {
|
|
807
821
|
const { modelValue, multiple } = props
|
|
808
822
|
const { datetimePanelValue } = reactData
|
|
809
823
|
const isDateTimeType = computeIsDateTimeType.value
|
|
@@ -823,10 +837,9 @@ export default defineComponent({
|
|
|
823
837
|
dateCheckMonth(date)
|
|
824
838
|
if (multiple) {
|
|
825
839
|
// 如果为多选
|
|
826
|
-
const dateMultipleValue = computeDateMultipleValue.value
|
|
827
840
|
if (isDateTimeType) {
|
|
828
841
|
// 如果是datetime特殊类型
|
|
829
|
-
const dateListValue = [...computeDateListValue.value]
|
|
842
|
+
const dateListValue = isReload ? [] : [...computeDateListValue.value]
|
|
830
843
|
const datetimeRest: Date[] = []
|
|
831
844
|
const eqIndex = XEUtils.findIndexOf(dateListValue, val => XEUtils.isDateSame(date, val, 'yyyyMMdd'))
|
|
832
845
|
if (eqIndex === -1) {
|
|
@@ -846,6 +859,7 @@ export default defineComponent({
|
|
|
846
859
|
})
|
|
847
860
|
handleChange(datetimeRest.map(date => XEUtils.toDateString(date, dateValueFormat)).join(','), { type: 'update' })
|
|
848
861
|
} else {
|
|
862
|
+
const dateMultipleValue = isReload ? [] : computeDateMultipleValue.value
|
|
849
863
|
// 如果是日期类型
|
|
850
864
|
if (dateMultipleValue.some(val => XEUtils.isEqual(val, inpVal))) {
|
|
851
865
|
handleChange(dateMultipleValue.filter(val => !XEUtils.isEqual(val, inpVal)).join(','), { type: 'update' })
|
|
@@ -917,7 +931,7 @@ export default defineComponent({
|
|
|
917
931
|
if (!reactData.visiblePanel) {
|
|
918
932
|
reactData.isActivated = false
|
|
919
933
|
}
|
|
920
|
-
|
|
934
|
+
dispatchEvent('blur', { value }, evnt)
|
|
921
935
|
// 自动更新校验状态
|
|
922
936
|
if ($xeForm && formItemInfo) {
|
|
923
937
|
$xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, value)
|
|
@@ -949,7 +963,21 @@ export default defineComponent({
|
|
|
949
963
|
}
|
|
950
964
|
|
|
951
965
|
const dateNowHandle = () => {
|
|
952
|
-
const
|
|
966
|
+
const { type } = props
|
|
967
|
+
const firstDayOfWeek = computeFirstDayOfWeek.value
|
|
968
|
+
let currentDate = new Date()
|
|
969
|
+
switch (type) {
|
|
970
|
+
case 'week':
|
|
971
|
+
currentDate = XEUtils.getWhatWeek(currentDate, 0, firstDayOfWeek)
|
|
972
|
+
break
|
|
973
|
+
case 'datetime':
|
|
974
|
+
currentDate = new Date()
|
|
975
|
+
reactData.datetimePanelValue = new Date()
|
|
976
|
+
break
|
|
977
|
+
default:
|
|
978
|
+
currentDate = XEUtils.getWhatDay(Date.now(), 0, 'first')
|
|
979
|
+
break
|
|
980
|
+
}
|
|
953
981
|
reactData.currentDate = currentDate
|
|
954
982
|
dateMonthHandle(currentDate, 0)
|
|
955
983
|
}
|
|
@@ -990,17 +1018,17 @@ export default defineComponent({
|
|
|
990
1018
|
}
|
|
991
1019
|
}
|
|
992
1020
|
reactData.selectMonth = viewDate
|
|
993
|
-
|
|
1021
|
+
dispatchEvent('date-prev', { viewType: datePanelType, viewDate, value, type }, evnt)
|
|
994
1022
|
}
|
|
995
1023
|
}
|
|
996
1024
|
|
|
997
1025
|
const dateTodayMonthEvent = (evnt: Event) => {
|
|
998
1026
|
dateNowHandle()
|
|
1027
|
+
dateChange(reactData.currentDate, true)
|
|
999
1028
|
if (!props.multiple) {
|
|
1000
|
-
dateChange(reactData.currentDate)
|
|
1001
1029
|
hidePanel()
|
|
1002
1030
|
}
|
|
1003
|
-
|
|
1031
|
+
dispatchEvent('date-today', { type: props.type }, evnt)
|
|
1004
1032
|
}
|
|
1005
1033
|
|
|
1006
1034
|
const dateNextEvent = (evnt: Event) => {
|
|
@@ -1029,7 +1057,7 @@ export default defineComponent({
|
|
|
1029
1057
|
}
|
|
1030
1058
|
}
|
|
1031
1059
|
reactData.selectMonth = viewDate
|
|
1032
|
-
|
|
1060
|
+
dispatchEvent('date-next', { viewType: datePanelType, value, type }, evnt)
|
|
1033
1061
|
}
|
|
1034
1062
|
}
|
|
1035
1063
|
|
|
@@ -1278,17 +1306,25 @@ export default defineComponent({
|
|
|
1278
1306
|
offsetMonth = XEUtils.getWhatMonth(offsetMonth, 4)
|
|
1279
1307
|
}
|
|
1280
1308
|
dateMoveMonth(offsetMonth)
|
|
1281
|
-
} else {
|
|
1309
|
+
} else if (datePanelType === 'week') {
|
|
1282
1310
|
let offsetDay = datePanelValue || XEUtils.getWhatDay(Date.now(), 0, 'first')
|
|
1283
1311
|
const firstDayOfWeek = computeFirstDayOfWeek.value
|
|
1312
|
+
if (isUpArrow) {
|
|
1313
|
+
offsetDay = XEUtils.getWhatWeek(offsetDay, -1, firstDayOfWeek)
|
|
1314
|
+
} else if (isDwArrow) {
|
|
1315
|
+
offsetDay = XEUtils.getWhatWeek(offsetDay, 1, firstDayOfWeek)
|
|
1316
|
+
}
|
|
1317
|
+
dateMoveDay(offsetDay)
|
|
1318
|
+
} else {
|
|
1319
|
+
let offsetDay = datePanelValue || XEUtils.getWhatDay(Date.now(), 0, 'first')
|
|
1284
1320
|
if (isLeftArrow) {
|
|
1285
1321
|
offsetDay = XEUtils.getWhatDay(offsetDay, -1)
|
|
1286
1322
|
} else if (isUpArrow) {
|
|
1287
|
-
offsetDay = XEUtils.getWhatWeek(offsetDay, -1,
|
|
1323
|
+
offsetDay = XEUtils.getWhatWeek(offsetDay, -1, offsetDay.getDay() as VxeDatePickerPropTypes.StartDay)
|
|
1288
1324
|
} else if (isRightArrow) {
|
|
1289
1325
|
offsetDay = XEUtils.getWhatDay(offsetDay, 1)
|
|
1290
1326
|
} else if (isDwArrow) {
|
|
1291
|
-
offsetDay = XEUtils.getWhatWeek(offsetDay, 1,
|
|
1327
|
+
offsetDay = XEUtils.getWhatWeek(offsetDay, 1, offsetDay.getDay() as VxeDatePickerPropTypes.StartDay)
|
|
1292
1328
|
}
|
|
1293
1329
|
dateMoveDay(offsetDay)
|
|
1294
1330
|
}
|
|
@@ -1455,7 +1491,22 @@ export default defineComponent({
|
|
|
1455
1491
|
triggerEvent(evnt)
|
|
1456
1492
|
}
|
|
1457
1493
|
|
|
1458
|
-
|
|
1494
|
+
const handleShortcutEvent: VxeButtonGroupEvents.Click = ({ option, $event }) => {
|
|
1495
|
+
const shortcutOpts = computeShortcutOpts.value
|
|
1496
|
+
const { autoClose } = shortcutOpts
|
|
1497
|
+
const clickMethod = (option as VxeDatePickerDefines.ShortcutOption).clickMethod || shortcutOpts.clickMethod
|
|
1498
|
+
const shortcutParams = {
|
|
1499
|
+
$datePicker: $xeDatePicker,
|
|
1500
|
+
option: option as VxeDatePickerDefines.ShortcutOption
|
|
1501
|
+
}
|
|
1502
|
+
if (clickMethod) {
|
|
1503
|
+
clickMethod(shortcutParams)
|
|
1504
|
+
}
|
|
1505
|
+
if (autoClose) {
|
|
1506
|
+
hidePanel()
|
|
1507
|
+
}
|
|
1508
|
+
dispatchEvent('shortcut-click', shortcutParams, $event)
|
|
1509
|
+
}
|
|
1459
1510
|
|
|
1460
1511
|
// 全局事件
|
|
1461
1512
|
const handleGlobalMousedownEvent = (evnt: Event) => {
|
|
@@ -1998,17 +2049,39 @@ export default defineComponent({
|
|
|
1998
2049
|
]
|
|
1999
2050
|
}
|
|
2000
2051
|
|
|
2052
|
+
const renderShortcutBtn = (pos: 'top' | 'bottom' | 'left' | 'right' | 'header' | 'footer', isVertical?: boolean) => {
|
|
2053
|
+
const shortcutOpts = computeShortcutOpts.value
|
|
2054
|
+
const { options, position, align, mode } = shortcutOpts
|
|
2055
|
+
if (isEnableConf(shortcutOpts) && options && options.length && (position || 'left') === pos) {
|
|
2056
|
+
return h('div', {
|
|
2057
|
+
class: `vxe-date-picker--panel-${pos}-wrapper`
|
|
2058
|
+
}, [
|
|
2059
|
+
h(VxeButtonGroupComponent, {
|
|
2060
|
+
options,
|
|
2061
|
+
mode,
|
|
2062
|
+
align,
|
|
2063
|
+
vertical: isVertical,
|
|
2064
|
+
onClick: handleShortcutEvent
|
|
2065
|
+
})
|
|
2066
|
+
])
|
|
2067
|
+
}
|
|
2068
|
+
return renderEmptyElement($xeDatePicker)
|
|
2069
|
+
}
|
|
2070
|
+
|
|
2001
2071
|
const renderPanel = () => {
|
|
2002
2072
|
const { type } = props
|
|
2003
2073
|
const { initialized, isAniVisible, visiblePanel, panelPlacement, panelStyle } = reactData
|
|
2004
2074
|
const vSize = computeSize.value
|
|
2005
2075
|
const btnTransfer = computeBtnTransfer.value
|
|
2076
|
+
const shortcutOpts = computeShortcutOpts.value
|
|
2077
|
+
const { options, position } = shortcutOpts
|
|
2006
2078
|
const headerSlot = slots.header
|
|
2007
2079
|
const footerSlot = slots.footer
|
|
2008
2080
|
const topSlot = slots.top
|
|
2009
2081
|
const bottomSlot = slots.bottom
|
|
2010
2082
|
const leftSlot = slots.left
|
|
2011
2083
|
const rightSlot = slots.right
|
|
2084
|
+
const hasShortcutBtn = options && options.length
|
|
2012
2085
|
const renders = []
|
|
2013
2086
|
if (type === 'datetime') {
|
|
2014
2087
|
renders.push(
|
|
@@ -2053,10 +2126,10 @@ export default defineComponent({
|
|
|
2053
2126
|
'is--transfer': btnTransfer,
|
|
2054
2127
|
'ani--leave': isAniVisible,
|
|
2055
2128
|
'ani--enter': visiblePanel,
|
|
2056
|
-
'show--top': !!(topSlot || headerSlot),
|
|
2057
|
-
'show--bottom': !!(bottomSlot || footerSlot),
|
|
2058
|
-
'show--left': !!leftSlot,
|
|
2059
|
-
'show--right': !!rightSlot
|
|
2129
|
+
'show--top': !!(topSlot || headerSlot || (hasShortcutBtn && (position === 'top' || position === 'header'))),
|
|
2130
|
+
'show--bottom': !!(bottomSlot || footerSlot || (hasShortcutBtn && (position === 'bottom' || position === 'footer'))),
|
|
2131
|
+
'show--left': !!(leftSlot || (hasShortcutBtn && position === 'left')),
|
|
2132
|
+
'show--right': !!(rightSlot || (hasShortcutBtn && position === 'right'))
|
|
2060
2133
|
}],
|
|
2061
2134
|
placement: panelPlacement,
|
|
2062
2135
|
style: panelStyle
|
|
@@ -2069,7 +2142,7 @@ export default defineComponent({
|
|
|
2069
2142
|
? h('div', {
|
|
2070
2143
|
class: 'vxe-date-picker--panel-top-wrapper'
|
|
2071
2144
|
}, topSlot({}))
|
|
2072
|
-
:
|
|
2145
|
+
: renderShortcutBtn('top'),
|
|
2073
2146
|
h('div', {
|
|
2074
2147
|
class: 'vxe-date-picker--panel-body-layout-wrapper'
|
|
2075
2148
|
}, [
|
|
@@ -2077,7 +2150,7 @@ export default defineComponent({
|
|
|
2077
2150
|
? h('div', {
|
|
2078
2151
|
class: 'vxe-date-picker--panel-left-wrapper'
|
|
2079
2152
|
}, leftSlot({}))
|
|
2080
|
-
:
|
|
2153
|
+
: renderShortcutBtn('left', true),
|
|
2081
2154
|
h('div', {
|
|
2082
2155
|
class: 'vxe-date-picker--panel-body-content-wrapper'
|
|
2083
2156
|
}, [
|
|
@@ -2085,7 +2158,7 @@ export default defineComponent({
|
|
|
2085
2158
|
? h('div', {
|
|
2086
2159
|
class: 'vxe-date-picker--panel-header-wrapper'
|
|
2087
2160
|
}, headerSlot({}))
|
|
2088
|
-
:
|
|
2161
|
+
: renderShortcutBtn('header'),
|
|
2089
2162
|
h('div', {
|
|
2090
2163
|
class: 'vxe-date-picker--panel-body-wrapper'
|
|
2091
2164
|
}, renders),
|
|
@@ -2093,19 +2166,19 @@ export default defineComponent({
|
|
|
2093
2166
|
? h('div', {
|
|
2094
2167
|
class: 'vxe-date-picker--panel-footer-wrapper'
|
|
2095
2168
|
}, footerSlot({}))
|
|
2096
|
-
:
|
|
2169
|
+
: renderShortcutBtn('footer')
|
|
2097
2170
|
]),
|
|
2098
2171
|
rightSlot
|
|
2099
2172
|
? h('div', {
|
|
2100
2173
|
class: 'vxe-date-picker--panel-right-wrapper'
|
|
2101
2174
|
}, rightSlot({}))
|
|
2102
|
-
:
|
|
2175
|
+
: renderShortcutBtn('right', true)
|
|
2103
2176
|
]),
|
|
2104
2177
|
bottomSlot
|
|
2105
2178
|
? h('div', {
|
|
2106
2179
|
class: 'vxe-date-picker--panel-bottom-wrapper'
|
|
2107
2180
|
}, bottomSlot({}))
|
|
2108
|
-
:
|
|
2181
|
+
: renderShortcutBtn('bottom')
|
|
2109
2182
|
])
|
|
2110
2183
|
]
|
|
2111
2184
|
: [])
|
package/packages/ui/index.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
518
|
-
|
|
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:
|
|
538
|
-
transform: scale(0.
|
|
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:
|
|
586
|
+
font-size: 0.86em;
|
|
565
587
|
&.overlap--2 {
|
|
566
588
|
animation: festivalOverlap2 6s infinite ease-in-out;
|
|
567
589
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { RenderFunction, SetupContext, Ref } from 'vue'
|
|
2
|
-
import { DefineVxeComponentApp, DefineVxeComponentOptions, DefineVxeComponentInstance, VxeComponentBaseOptions, VxeComponentSizeType, VxeComponentEventParams, VxeComponentPermissionCodeType, ValueOf } from '@vxe-ui/core'
|
|
2
|
+
import { DefineVxeComponentApp, DefineVxeComponentOptions, DefineVxeComponentInstance, VxeComponentBaseOptions, VxeComponentAlignType, VxeComponentSizeType, VxeComponentEventParams, VxeComponentPermissionCodeType, ValueOf } from '@vxe-ui/core'
|
|
3
3
|
import { VxeButtonProps, VxeButtonPropTypes } from './button'
|
|
4
4
|
|
|
5
5
|
/* eslint-disable no-use-before-define,@typescript-eslint/ban-types */
|
|
@@ -30,6 +30,7 @@ export namespace VxeButtonGroupPropTypes {
|
|
|
30
30
|
export type Round = boolean
|
|
31
31
|
export type Vertical = boolean
|
|
32
32
|
export type Circle = boolean
|
|
33
|
+
export type Align = VxeComponentAlignType
|
|
33
34
|
export type Disabled = boolean
|
|
34
35
|
export type Mode = VxeButtonPropTypes.Mode
|
|
35
36
|
export type Status = VxeButtonPropTypes.Status
|
|
@@ -43,6 +44,7 @@ export type VxeButtonGroupProps = {
|
|
|
43
44
|
mode?: VxeButtonGroupPropTypes.Mode
|
|
44
45
|
status?: VxeButtonGroupPropTypes.Status
|
|
45
46
|
round?: VxeButtonGroupPropTypes.Round
|
|
47
|
+
align?: VxeButtonGroupPropTypes.Align
|
|
46
48
|
vertical?: VxeButtonGroupPropTypes.Vertical
|
|
47
49
|
circle?: VxeButtonGroupPropTypes.Circle
|
|
48
50
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { RenderFunction, SetupContext, Ref } from 'vue'
|
|
2
|
-
import { DefineVxeComponentApp, DefineVxeComponentOptions, VxeComponentBaseOptions, DefineVxeComponentInstance, VxeComponentEventParams, VxeComponentPermissionCodeType, VxeComponentStatusType, VxeComponentSizeType, VxeComponentStyleType, ValueOf } from '@vxe-ui/core'
|
|
2
|
+
import { DefineVxeComponentApp, DefineVxeComponentOptions, VxeComponentBaseOptions, DefineVxeComponentInstance, VxeComponentAlignType, VxeComponentEventParams, VxeComponentPermissionCodeType, VxeComponentStatusType, VxeComponentSizeType, VxeComponentStyleType, ValueOf } from '@vxe-ui/core'
|
|
3
3
|
import { VxeTooltipDefines } from './tooltip'
|
|
4
4
|
|
|
5
5
|
/* eslint-disable no-use-before-define,@typescript-eslint/ban-types */
|
|
@@ -49,7 +49,7 @@ export namespace VxeButtonPropTypes {
|
|
|
49
49
|
export type Disabled = boolean
|
|
50
50
|
export type Loading = boolean
|
|
51
51
|
export type Trigger = 'manual' | 'hover' | 'click' | '' | null
|
|
52
|
-
export type Align =
|
|
52
|
+
export type Align = VxeComponentAlignType
|
|
53
53
|
|
|
54
54
|
export type PrefixTooltip = VxeTooltipDefines.TooltipHelperOption
|
|
55
55
|
export type SuffixTooltip = VxeTooltipDefines.TooltipHelperOption
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { RenderFunction, SetupContext, Ref } from 'vue'
|
|
2
2
|
import { DefineVxeComponentApp, DefineVxeComponentOptions, DefineVxeComponentInstance, VxeComponentBaseOptions, VxeComponentEventParams, ValueOf, VxeComponentStyleType, VxeComponentSizeType } from '@vxe-ui/core'
|
|
3
|
+
import { VxeButtonGroupPropTypes } from './button-group'
|
|
4
|
+
import { VxeButtonProps } from './button'
|
|
3
5
|
|
|
4
6
|
/* eslint-disable no-use-before-define,@typescript-eslint/ban-types */
|
|
5
7
|
|
|
@@ -65,6 +67,19 @@ export namespace VxeDatePickerPropTypes {
|
|
|
65
67
|
export type Placement = 'top' | 'bottom' | '' | null
|
|
66
68
|
export type Transfer = boolean
|
|
67
69
|
|
|
70
|
+
export interface ShortcutConfig {
|
|
71
|
+
enabled?: boolean
|
|
72
|
+
position?: 'top' | 'bottom' | 'left' | 'right' | 'header' | 'footer' | null
|
|
73
|
+
align?: VxeButtonGroupPropTypes.Align
|
|
74
|
+
mode?: VxeButtonGroupPropTypes.Mode
|
|
75
|
+
options?: VxeDatePickerDefines.ShortcutOption[]
|
|
76
|
+
/**
|
|
77
|
+
* 点击按钮后自动关闭弹窗面板
|
|
78
|
+
*/
|
|
79
|
+
autoClose?: boolean
|
|
80
|
+
clickMethod?: (params: VxeDatePickerDefines.ShortcutClickParams) => void
|
|
81
|
+
}
|
|
82
|
+
|
|
68
83
|
/**
|
|
69
84
|
* 请使用 AutoComplete
|
|
70
85
|
* @deprecated
|
|
@@ -124,6 +139,8 @@ export interface VxeDatePickerProps {
|
|
|
124
139
|
festivalMethod?: VxeDatePickerPropTypes.FestivalMethod
|
|
125
140
|
disabledMethod?: VxeDatePickerPropTypes.DisabledMethod
|
|
126
141
|
|
|
142
|
+
shortcutConfig?: VxeDatePickerPropTypes.ShortcutConfig
|
|
143
|
+
|
|
127
144
|
// week
|
|
128
145
|
selectDay?: VxeDatePickerPropTypes.SelectDay
|
|
129
146
|
|
|
@@ -205,7 +222,8 @@ export type VxeDatePickerEmits = [
|
|
|
205
222
|
'suffix-click',
|
|
206
223
|
'date-prev',
|
|
207
224
|
'date-today',
|
|
208
|
-
'date-next'
|
|
225
|
+
'date-next',
|
|
226
|
+
'shortcut-click'
|
|
209
227
|
]
|
|
210
228
|
|
|
211
229
|
export namespace VxeDatePickerDefines {
|
|
@@ -257,6 +275,10 @@ export namespace VxeDatePickerDefines {
|
|
|
257
275
|
|
|
258
276
|
export type DatePanelType = 'year' | 'quarter' | 'month' | 'week' | 'day'
|
|
259
277
|
|
|
278
|
+
export interface ShortcutOption extends VxeButtonProps {
|
|
279
|
+
clickMethod?: (params: VxeDatePickerDefines.ShortcutClickParams) => void
|
|
280
|
+
}
|
|
281
|
+
|
|
260
282
|
interface DateFestivalItem {
|
|
261
283
|
/**
|
|
262
284
|
* 显示名称
|
|
@@ -305,21 +327,30 @@ export namespace VxeDatePickerDefines {
|
|
|
305
327
|
|
|
306
328
|
export interface ChangeParams extends DatePickerParams {}
|
|
307
329
|
export interface ChangeEventParams extends DatePickerEventParams, ChangeParams { }
|
|
330
|
+
|
|
331
|
+
export interface ShortcutClickParams {
|
|
332
|
+
$datePicker: VxeDatePickerConstructor
|
|
333
|
+
option: VxeDatePickerDefines.ShortcutOption
|
|
334
|
+
}
|
|
335
|
+
export interface ShortcutClickEventParams extends DatePickerEventParams, ShortcutClickParams {}
|
|
308
336
|
}
|
|
309
337
|
|
|
310
338
|
export type VxeDatePickerEventProps = {
|
|
311
339
|
onInput?: VxeDatePickerEvents.Input
|
|
312
340
|
onChange?: VxeDatePickerEvents.Change
|
|
341
|
+
onShortcutClick?: VxeDatePickerEvents.ShortcutClick
|
|
313
342
|
}
|
|
314
343
|
|
|
315
344
|
export interface VxeDatePickerListeners {
|
|
316
345
|
input?: VxeDatePickerEvents.Input
|
|
317
346
|
change?: VxeDatePickerEvents.Change
|
|
347
|
+
shortcutClick?: VxeDatePickerEvents.ShortcutClick
|
|
318
348
|
}
|
|
319
349
|
|
|
320
350
|
export namespace VxeDatePickerEvents {
|
|
321
351
|
export type Input = (params: VxeDatePickerDefines.InputEventParams) => void
|
|
322
352
|
export type Change = (params: VxeDatePickerDefines.ChangeEventParams) => void
|
|
353
|
+
export type ShortcutClick = (params: VxeDatePickerDefines.ShortcutClickEventParams) => void
|
|
323
354
|
}
|
|
324
355
|
|
|
325
356
|
export namespace VxeDatePickerSlotTypes {
|