vxe-pc-ui 3.15.4 → 3.15.6

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 (102) hide show
  1. package/es/cascader/src/cascader.js +2 -2
  2. package/es/collapse/src/collapse.js +101 -14
  3. package/es/collapse/style.css +36 -9
  4. package/es/collapse/style.min.css +1 -1
  5. package/es/date-panel/src/util.js +16 -0
  6. package/es/date-panel/style.css +1 -1
  7. package/es/date-panel/style.min.css +1 -1
  8. package/es/date-picker/src/date-picker.js +57 -34
  9. package/es/icon/{iconfont.1781876590487.ttf → iconfont.1782111174200.ttf} +0 -0
  10. package/es/icon/iconfont.1782111174200.woff +0 -0
  11. package/es/icon/iconfont.1782111174200.woff2 +0 -0
  12. package/es/icon/style.css +5 -1
  13. package/es/icon/style.min.css +1 -1
  14. package/{lib/icon/style/iconfont.1781876590487.ttf → es/iconfont.1782111174200.ttf} +0 -0
  15. package/es/iconfont.1782111174200.woff +0 -0
  16. package/es/iconfont.1782111174200.woff2 +0 -0
  17. package/es/pulldown/src/pulldown.js +3 -3
  18. package/es/style.css +1 -1
  19. package/es/style.min.css +1 -1
  20. package/es/table-select/src/table-select.js +1 -1
  21. package/es/tree-select/src/tree-select.js +3 -3
  22. package/es/ui/index.js +3 -1
  23. package/es/ui/src/log.js +1 -1
  24. package/es/vxe-collapse/style.css +36 -9
  25. package/es/vxe-collapse/style.min.css +1 -1
  26. package/es/vxe-date-panel/style.css +1 -1
  27. package/es/vxe-date-panel/style.min.css +1 -1
  28. package/es/vxe-icon/style.css +5 -1
  29. package/es/vxe-icon/style.min.css +1 -1
  30. package/lib/cascader/src/cascader.js +6 -2
  31. package/lib/cascader/src/cascader.min.js +1 -1
  32. package/lib/collapse/src/collapse.js +101 -12
  33. package/lib/collapse/src/collapse.min.js +1 -1
  34. package/lib/collapse/style/style.css +36 -9
  35. package/lib/collapse/style/style.min.css +1 -1
  36. package/lib/date-panel/src/util.js +17 -0
  37. package/lib/date-panel/src/util.min.js +1 -1
  38. package/lib/date-panel/style/style.css +1 -1
  39. package/lib/date-panel/style/style.min.css +1 -1
  40. package/lib/date-picker/src/date-picker.js +59 -30
  41. package/lib/date-picker/src/date-picker.min.js +1 -1
  42. package/lib/{iconfont.1781876590487.ttf → icon/style/iconfont.1782111174200.ttf} +0 -0
  43. package/lib/icon/style/iconfont.1782111174200.woff +0 -0
  44. package/lib/icon/style/iconfont.1782111174200.woff2 +0 -0
  45. package/lib/icon/style/style.css +5 -1
  46. package/lib/icon/style/style.min.css +5 -1
  47. package/{es/iconfont.1781876590487.ttf → lib/iconfont.1782111174200.ttf} +0 -0
  48. package/lib/iconfont.1782111174200.woff +0 -0
  49. package/lib/iconfont.1782111174200.woff2 +0 -0
  50. package/lib/index.umd.js +497 -366
  51. package/lib/index.umd.min.js +1 -1
  52. package/lib/pulldown/src/pulldown.js +9 -3
  53. package/lib/pulldown/src/pulldown.min.js +1 -1
  54. package/lib/style.css +1 -1
  55. package/lib/style.min.css +1 -1
  56. package/lib/table-select/src/table-select.js +3 -1
  57. package/lib/table-select/src/table-select.min.js +1 -1
  58. package/lib/tree-select/src/tree-select.js +9 -3
  59. package/lib/tree-select/src/tree-select.min.js +1 -1
  60. package/lib/ui/index.js +3 -1
  61. package/lib/ui/index.min.js +1 -1
  62. package/lib/ui/src/log.js +1 -1
  63. package/lib/ui/src/log.min.js +1 -1
  64. package/lib/vxe-collapse/style/style.css +36 -9
  65. package/lib/vxe-collapse/style/style.min.css +1 -1
  66. package/lib/vxe-date-panel/style/style.css +1 -1
  67. package/lib/vxe-date-panel/style/style.min.css +1 -1
  68. package/lib/vxe-icon/style/style.css +5 -1
  69. package/lib/vxe-icon/style/style.min.css +1 -1
  70. package/package.json +2 -2
  71. package/packages/cascader/src/cascader.ts +2 -2
  72. package/packages/collapse/src/collapse.ts +112 -16
  73. package/packages/date-panel/src/util.ts +18 -0
  74. package/packages/date-picker/src/date-picker.ts +63 -31
  75. package/packages/pulldown/src/pulldown.ts +3 -3
  76. package/packages/table-select/src/table-select.ts +1 -1
  77. package/packages/tree-select/src/tree-select.ts +3 -3
  78. package/packages/ui/index.ts +2 -0
  79. package/styles/components/collapse.scss +36 -11
  80. package/styles/components/date-panel.scss +1 -1
  81. package/styles/components/icon.scss +5 -1
  82. package/styles/icon/iconfont.ttf +0 -0
  83. package/styles/icon/iconfont.woff +0 -0
  84. package/styles/icon/iconfont.woff2 +0 -0
  85. package/styles/theme/base.scss +7 -0
  86. package/styles/theme/dark.scss +5 -3
  87. package/styles/theme/light.scss +3 -1
  88. package/styles/variable.scss +5 -2
  89. package/types/components/cascader.d.ts +1 -1
  90. package/types/components/collapse.d.ts +11 -3
  91. package/types/components/date-panel.d.ts +6 -6
  92. package/types/components/date-picker.d.ts +4 -0
  93. package/types/components/icon.d.ts +1 -1
  94. package/types/components/table.d.ts +16 -2
  95. package/es/icon/iconfont.1781876590487.woff +0 -0
  96. package/es/icon/iconfont.1781876590487.woff2 +0 -0
  97. package/es/iconfont.1781876590487.woff +0 -0
  98. package/es/iconfont.1781876590487.woff2 +0 -0
  99. package/lib/icon/style/iconfont.1781876590487.woff +0 -0
  100. package/lib/icon/style/iconfont.1781876590487.woff2 +0 -0
  101. package/lib/iconfont.1781876590487.woff +0 -0
  102. package/lib/iconfont.1781876590487.woff2 +0 -0
@@ -1,10 +1,26 @@
1
1
  import { CreateElement, PropType, VNode } from 'vue'
2
2
  import { defineVxeComponent } from '../../ui/src/comp'
3
3
  import { getConfig, getIcon, createEvent, permission, renderEmptyElement, globalMixins } from '../../ui'
4
+ import { toCssUnit } from '../../ui/src/dom'
4
5
  import { getSlotVNs } from '../../ui/src/vn'
5
6
  import XEUtils from 'xe-utils'
6
7
 
7
- import type { CollapseReactData, VxeCollapseEmits, VxeCollapsePropTypes, VxeCollapsePanePropTypes, VxeCollapsePaneProps, VxeCollapsePaneDefines, VxeComponentSizeType, ValueOf } from '../../../types'
8
+ import type { CollapseReactData, VxeCollapseEmits, CollapseInternalData, VxeCollapsePropTypes, VxeCollapsePanePropTypes, VxeCollapsePaneProps, VxeCollapsePaneDefines, VxeCollapseDefines, VxeComponentSizeType, ValueOf } from '../../../types'
9
+
10
+ function createReactData (): CollapseReactData {
11
+ return {
12
+ staticPanes: [],
13
+ activeNames: [],
14
+ initNames: [],
15
+ cachePaneMaps: {}
16
+ }
17
+ }
18
+
19
+ function createInternalData (): CollapseInternalData {
20
+ return {
21
+ // esTime: null
22
+ }
23
+ }
8
24
 
9
25
  export default /* define-vxe-component start */ defineVxeComponent({
10
26
  name: 'VxeCollapse',
@@ -13,12 +29,16 @@ export default /* define-vxe-component start */ defineVxeComponent({
13
29
  globalMixins.permissionMixin
14
30
  ],
15
31
  props: {
16
- modelValue: Array as PropType<VxeCollapsePropTypes.ModelValue>,
32
+ value: Array as PropType<VxeCollapsePropTypes.ModelValue>,
17
33
  options: Array as PropType<VxeCollapsePropTypes.Options>,
18
34
  padding: {
19
35
  type: Boolean as PropType<VxeCollapsePropTypes.Padding>,
20
36
  default: () => getConfig().collapse.padding
21
37
  },
38
+ border: {
39
+ type: Boolean as PropType<VxeCollapsePropTypes.Border>,
40
+ default: () => getConfig().collapse.border
41
+ },
22
42
  expandConfig: Object as PropType<VxeCollapsePropTypes.ExpandConfig>,
23
43
  size: {
24
44
  type: String as PropType<VxeCollapsePropTypes.Size>,
@@ -34,13 +54,11 @@ export default /* define-vxe-component start */ defineVxeComponent({
34
54
  },
35
55
  data () {
36
56
  const xID = XEUtils.uniqueId()
37
- const reactData: CollapseReactData = {
38
- staticPanes: [],
39
- activeNames: [],
40
- initNames: [],
41
- cachePaneMaps: {}
42
- }
57
+ const reactData = createReactData()
43
58
  return {
59
+ ...({} as {
60
+ internalData: CollapseInternalData
61
+ }),
44
62
  xID,
45
63
  reactData
46
64
  }
@@ -58,16 +76,22 @@ export default /* define-vxe-component start */ defineVxeComponent({
58
76
  },
59
77
  computeItemStaticOptions (this: any) {
60
78
  const $xeCollapse = this
61
- const reactData = $xeCollapse.reactData
79
+ const reactData = $xeCollapse.reactData as CollapseReactData
62
80
 
63
81
  const { staticPanes } = reactData
64
- return staticPanes.filter((item: any) => $xeCollapse.handleFilterItem(item))
82
+ return staticPanes.filter((item) => $xeCollapse.handleFilterItem(item))
65
83
  },
66
84
  computeExpandOpts () {
67
85
  const $xeCollapse = this
68
86
  const props = $xeCollapse
69
87
 
70
88
  return Object.assign({}, getConfig().collapse.expandConfig, props.expandConfig)
89
+ },
90
+ computeSpFlag () {
91
+ const $xeCollapse = this
92
+ const reactData = $xeCollapse.reactData as CollapseReactData
93
+
94
+ return reactData.staticPanes
71
95
  }
72
96
  },
73
97
  methods: {
@@ -104,15 +128,14 @@ export default /* define-vxe-component start */ defineVxeComponent({
104
128
  const reactData = $xeCollapse.reactData
105
129
 
106
130
  const { activeNames } = reactData
107
- const nameMaps: Record<string, {
108
- loading: boolean
109
- }> = {}
131
+ const nameMaps: Record<string, VxeCollapseDefines.CacheItemObj> = {}
110
132
  if (list && list.length) {
111
133
  list.forEach((item) => {
112
134
  const { name, preload } = item || {}
113
135
  if (name) {
114
136
  const isActive = activeNames.includes(name)
115
137
  nameMaps[`${name}`] = {
138
+ height: 0,
116
139
  loading: false
117
140
  }
118
141
  if (isActive) {
@@ -146,10 +169,13 @@ export default /* define-vxe-component start */ defineVxeComponent({
146
169
  handleClickEvent (evnt: MouseEvent, item: VxeCollapsePaneDefines.CollapseConfig | VxeCollapsePaneProps) {
147
170
  const $xeCollapse = this
148
171
  const reactData = $xeCollapse.reactData
172
+ const internalData = $xeCollapse.internalData
149
173
 
150
174
  const { activeNames } = reactData
151
175
  const { name } = item
152
176
  if (name) {
177
+ const headEl = evnt.currentTarget as HTMLDivElement
178
+ const bodyEl = headEl.nextElementSibling as HTMLDivElement
153
179
  const aIndex = activeNames.indexOf(name)
154
180
  let expanded = false
155
181
  if (aIndex === -1) {
@@ -158,6 +184,33 @@ export default /* define-vxe-component start */ defineVxeComponent({
158
184
  } else {
159
185
  activeNames.splice(aIndex, 1)
160
186
  }
187
+ const startAnimation = () => {
188
+ const itemEl = bodyEl.firstElementChild as HTMLDivElement
189
+ if (itemEl) {
190
+ bodyEl.style.height = toCssUnit(itemEl.scrollHeight)
191
+ if (expanded) {
192
+ internalData.esTime = setTimeout(() => {
193
+ bodyEl.style.height = ''
194
+ internalData.esTime = undefined
195
+ }, 200)
196
+ } else {
197
+ $xeCollapse.$nextTick(() => {
198
+ requestAnimationFrame(() => {
199
+ bodyEl.style.height = ''
200
+ })
201
+ })
202
+ }
203
+ }
204
+ }
205
+ if (bodyEl) {
206
+ const itemEl = bodyEl.firstElementChild as HTMLDivElement
207
+ if (itemEl) {
208
+ startAnimation()
209
+ } else {
210
+ bodyEl.style.height = '0'
211
+ $xeCollapse.$nextTick(startAnimation)
212
+ }
213
+ }
161
214
  $xeCollapse.addInitName(name)
162
215
  $xeCollapse.dispatchEvent('change', { value: activeNames, name }, evnt)
163
216
  $xeCollapse.dispatchEvent('toggle-expand', { value: activeNames, name, expanded }, evnt)
@@ -213,7 +266,8 @@ export default /* define-vxe-component start */ defineVxeComponent({
213
266
  ]),
214
267
  h('div', {
215
268
  class: ['vxe-collapse--item-content', {
216
- 'is--visible': isActive
269
+ 'is--visible': isActive,
270
+ 'is--hidden': !isActive
217
271
  }]
218
272
  }, [
219
273
  name && initNames.includes(name)
@@ -232,7 +286,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
232
286
  const props = $xeCollapse
233
287
  const slots = $xeCollapse.$scopedSlots
234
288
 
235
- const { padding } = props
289
+ const { padding, border } = props
236
290
  const vSize = $xeCollapse.computeSize
237
291
  const itemOptions = $xeCollapse.computeItemOptions
238
292
  const itemStaticOptions = $xeCollapse.computeItemStaticOptions
@@ -243,7 +297,8 @@ export default /* define-vxe-component start */ defineVxeComponent({
243
297
  ref: 'refElem',
244
298
  class: ['vxe-collapse', {
245
299
  [`size--${vSize}`]: vSize,
246
- 'is--padding': padding
300
+ 'is--padding': padding,
301
+ 'is--border': border
247
302
  }]
248
303
  }, [
249
304
  h('div', {
@@ -253,6 +308,47 @@ export default /* define-vxe-component start */ defineVxeComponent({
253
308
  ])
254
309
  }
255
310
  },
311
+ watch: {
312
+ value (val) {
313
+ const $xeCollapse = this
314
+ const reactData = $xeCollapse.reactData
315
+
316
+ reactData.activeNames = val || []
317
+ },
318
+ options () {
319
+ const $xeCollapse = this
320
+ const props = $xeCollapse
321
+
322
+ $xeCollapse.initDefaultName(props.options)
323
+ },
324
+ computeSpFlag () {
325
+ const $xeCollapse = this
326
+ const reactData = $xeCollapse.reactData
327
+
328
+ $xeCollapse.initDefaultName(reactData.staticPanes)
329
+ }
330
+ },
331
+ created () {
332
+ const $xeCollapse = this
333
+ const props = $xeCollapse
334
+ const reactData = $xeCollapse.reactData
335
+
336
+ $xeCollapse.internalData = createInternalData()
337
+ reactData.activeNames = props.value || []
338
+ $xeCollapse.initDefaultName(reactData.staticPanes.length ? reactData.staticPanes : props.options)
339
+ },
340
+ destroyed () {
341
+ const $xeCollapse = this
342
+ const reactData = $xeCollapse.reactData
343
+ const internalData = $xeCollapse.internalData
344
+
345
+ const { esTime } = internalData
346
+ if (esTime) {
347
+ clearTimeout(esTime)
348
+ }
349
+ XEUtils.assign(reactData, createReactData())
350
+ XEUtils.assign(internalData, createInternalData())
351
+ },
256
352
  render (this: any, h) {
257
353
  return this.renderVN(h)
258
354
  }
@@ -267,3 +267,21 @@ export function isAllSameChar (str: string, char: string) {
267
267
  }
268
268
  return true
269
269
  }
270
+
271
+ export function checkDateFormat (numStr:number, formatKey: string) {
272
+ const numVal = XEUtils.toNumber(numStr)
273
+ switch (formatKey) {
274
+ case 'yyyy':
275
+ return (numVal >= 9999 ? 9999 : (numVal < 1 ? 1 : numVal))
276
+ case 'MM':
277
+ return (numVal >= 12 ? 12 : (numVal < 1 ? 1 : numVal))
278
+ case 'dd':
279
+ return (numVal >= 31 ? 31 : (numVal < 1 ? 1 : numVal))
280
+
281
+ case 'HH':
282
+ case 'mm':
283
+ case 'ss':
284
+ return (numVal >= 59 ? 59 : (numVal <= 0 ? 0 : numVal))
285
+ }
286
+ return numVal
287
+ }
@@ -5,7 +5,7 @@ import { getConfig, getIcon, getI18n, commands, createEvent, globalEvents, GLOBA
5
5
  import { getFuncText, getLastZIndex, nextZIndex, isEnableConf } from '../../ui/src/utils'
6
6
  import { updatePanelPlacement, getEventTargetNode, hasControlKey } from '../../ui/src/dom'
7
7
  import { getSlotVNs } from '../../ui/src/vn'
8
- import { parseDateObj, parseDateValue, getDateByCode, handleValueFormat, hasDateValueType, hasTimestampValueType, isAllSameChar, getChunkDefaultNum } from '../../date-panel/src/util'
8
+ import { parseDateObj, parseDateValue, getDateByCode, handleValueFormat, hasDateValueType, hasTimestampValueType, isAllSameChar, getChunkDefaultNum, checkDateFormat } from '../../date-panel/src/util'
9
9
  import { createComponentLog } from '../../ui/src/log'
10
10
  import VxeDatePanelComponent from '../../date-panel/src/date-panel'
11
11
  import VxeButtonComponent from '../../button/src/button'
@@ -306,6 +306,18 @@ export default /* define-vxe-component start */ defineVxeComponent({
306
306
  }
307
307
  return []
308
308
  },
309
+ computeDateStartDate () {
310
+ const $xeDatePicker = this
311
+ const props = $xeDatePicker
312
+
313
+ return props.startDate ? XEUtils.toStringDate(props.startDate) : null
314
+ },
315
+ computeDateEndDate () {
316
+ const $xeDatePicker = this
317
+ const props = $xeDatePicker
318
+
319
+ return props.endDate ? XEUtils.toStringDate(props.endDate) : null
320
+ },
309
321
  computeLimitMaxCount () {
310
322
  const $xeDatePicker = this
311
323
  const props = $xeDatePicker
@@ -653,13 +665,34 @@ export default /* define-vxe-component start */ defineVxeComponent({
653
665
  const reactData = $xeDatePicker.reactData
654
666
  const internalData = $xeDatePicker.internalData
655
667
 
656
- const { type } = props
668
+ const { type, editable, multiple, maskedConfig } = props
657
669
  const { inputLabel } = internalData
658
670
  const dateLabelFormat = $xeDatePicker.computeDateLabelFormat
671
+ const maskedOpts = $xeDatePicker.computeMaskedOpts
659
672
  if (!inpVal) {
660
673
  $xeDatePicker.handleChange('', { type: 'check' })
661
674
  return
662
675
  }
676
+
677
+ // 掩码格式处理
678
+ if (editable && !multiple && (isEnableConf(maskedConfig) || maskedOpts.enabled)) {
679
+ const allMaskedKeys = dateLabelFormat.match(new RegExp(`(${inputMaskedKeys.join('|')})+`, 'g'))
680
+ if (allMaskedKeys) {
681
+ allMaskedKeys.forEach(formatKey => {
682
+ const fkIndex = dateLabelFormat.indexOf(formatKey)
683
+ if (fkIndex > -1) {
684
+ const val = XEUtils.toNumber(inpVal.slice(fkIndex, formatKey.length).replace(/\D/g, ''))
685
+ inpVal = inpVal.slice(0, fkIndex) + XEUtils.padStart(checkDateFormat(val, formatKey), formatKey.length, '0') + inpVal.slice(fkIndex + formatKey.length)
686
+ }
687
+ })
688
+ }
689
+ }
690
+
691
+ const $datePanel = $xeDatePicker.$refs.refDatePanel as VxeDatePanelConstructor
692
+ if ($datePanel) {
693
+ return $datePanel.checkValue(inpVal)
694
+ }
695
+
663
696
  let inpDateVal: VxeDatePickerPropTypes.ModelValue = parseDateValue(inpVal, type, {
664
697
  valueFormat: dateLabelFormat
665
698
  })
@@ -711,6 +744,18 @@ export default /* define-vxe-component start */ defineVxeComponent({
711
744
  $xeDatePicker.dispatchEvent('suffix-click', { value: inputValue }, evnt)
712
745
  }
713
746
  },
747
+ checkMaskedInputValue (numStr: string | number, chunkFormat: string, isFull: boolean) {
748
+ const $xeDatePicker = this
749
+
750
+ const maskedOpts = $xeDatePicker.computeMaskedOpts
751
+ const { align } = maskedOpts
752
+ const maskChar = $xeDatePicker.computeMaskChar
753
+ const restVal = checkDateFormat(XEUtils.toNumber(numStr), chunkFormat)
754
+ if (isFull) {
755
+ return XEUtils.padStart(restVal, chunkFormat.length, '0')
756
+ }
757
+ return XEUtils[align === 'right' ? 'padStart' : 'padEnd'](restVal, chunkFormat.length, maskChar)
758
+ },
714
759
  handleArrowInputDate (evnt: KeyboardEvent, isUpArrow: boolean, isDwArrow: boolean, isLtArrow: boolean, isRtArrow: boolean) {
715
760
  const $xeDatePicker = this
716
761
  const props = $xeDatePicker
@@ -748,7 +793,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
748
793
  const chunkValue = inpValue.slice(chunkStartIndex, chunkEndIndex)
749
794
  if (parseInputKayMaps[selectKey]) {
750
795
  const chunkNum = (isAllSameChar(chunkValue, maskChar) ? getChunkDefaultNum(selectKey) : XEUtils.toNumber(chunkValue)) + (isUpArrow ? 1 : -1)
751
- const restValue = inpValue.slice(0, chunkStartIndex) + XEUtils.padStart(chunkNum, chunkFormat.length, '0') + inpValue.slice(chunkEndIndex)
796
+ const restValue = inpValue.slice(0, chunkStartIndex) + $xeDatePicker.checkMaskedInputValue(chunkNum, chunkFormat, true) + inpValue.slice(chunkEndIndex)
752
797
  evnt.preventDefault()
753
798
  if (restValue.indexOf(maskChar) === -1) {
754
799
  // 解析日期
@@ -812,6 +857,8 @@ export default /* define-vxe-component start */ defineVxeComponent({
812
857
  return
813
858
  }
814
859
  const { isTriggerMasked } = internalData
860
+ const maskedOpts = $xeDatePicker.computeMaskedOpts
861
+ const { align } = maskedOpts
815
862
  const dateMaskedFormat = $xeDatePicker.computeDateMaskedFormat
816
863
  const maskChar = $xeDatePicker.computeMaskChar
817
864
  let inpValue = targetElem.value || dateMaskedFormat
@@ -831,7 +878,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
831
878
  const chunkEndIndex = chunkStartIndex + chunkFormat.length
832
879
  const currKeyIndex = allMaskedKeys.indexOf(selectKey)
833
880
  // 全选 | 如果无效字符
834
- const isAllSelected = !selectionStart && selectionEnd === inpValue.length
881
+ const isAllSelected = !selectionStart && selectionEnd === inpValue.length && allMaskedKeys.length > 1
835
882
  const isNotMasked = inpValue && inpValue.length !== dateMaskedFormat.length
836
883
  if (isAllSelected || isNotMasked) {
837
884
  inpValue = dateMaskedFormat
@@ -842,10 +889,11 @@ export default /* define-vxe-component start */ defineVxeComponent({
842
889
 
843
890
  if (isNumKey) {
844
891
  chunkNumList.push(numKey)
892
+ chunkValue = $xeDatePicker.checkMaskedInputValue(chunkNumList.join(''), chunkFormat, false)
845
893
  } else if (isBackspaceKey) {
846
894
  chunkNumList.pop()
895
+ chunkValue = XEUtils[align === 'right' ? 'padStart' : 'padEnd'](chunkNumList.join(''), chunkFormat.length, maskChar)
847
896
  }
848
- chunkValue = chunkNumList.join('').padEnd(chunkFormat.length, maskChar)
849
897
  let restValue = inpValue.slice(0, chunkStartIndex) + chunkValue + inpValue.slice(chunkEndIndex)
850
898
  restValue = restValue.replace(new RegExp(`(${inputMaskedKeys.join('|')})`, 'g'), maskChar)
851
899
 
@@ -878,7 +926,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
878
926
  const prveChunkNums = (prveChunkValue.match(/\d/g) || [])
879
927
  if (prveChunkNums.length) {
880
928
  prveChunkNums.pop()
881
- prveChunkValue = prveChunkNums.join('').padEnd(prveChunkFormat.length, maskChar)
929
+ prveChunkValue = XEUtils[align === 'right' ? 'padStart' : 'padEnd'](prveChunkNums.join(''), prveChunkFormat.length, maskChar)
882
930
  restValue = restValue.slice(0, prveChunkStartIndex) + prveChunkValue + restValue.slice(prveChunkEndIndex)
883
931
 
884
932
  targetElem.value = restValue
@@ -977,7 +1025,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
977
1025
  }
978
1026
 
979
1027
  // 全选 | 如果无效字符
980
- const isAllSelected = !selectionStart && selectionEnd === inpValue.length
1028
+ const isAllSelected = !selectionStart && selectionEnd === inpValue.length && allMaskedKeys.length > 1
981
1029
  const isNotMasked = inpValue && inpValue.length !== dateMaskedFormat.length
982
1030
  if (isAllSelected || isNotMasked) {
983
1031
  let restValue = ''
@@ -1028,7 +1076,6 @@ export default /* define-vxe-component start */ defineVxeComponent({
1028
1076
  const $xeForm = $xeDatePicker.$xeForm
1029
1077
  const formItemInfo = $xeDatePicker.formItemInfo
1030
1078
 
1031
- const $datePanel = $xeDatePicker.$refs.refDatePanel as VxeDatePanelConstructor
1032
1079
  const { inputValue } = reactData
1033
1080
  const inpImmediate = $xeDatePicker.computeInpImmediate
1034
1081
  const value = inputValue
@@ -1039,11 +1086,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
1039
1086
  const { inputLabel } = internalData
1040
1087
  reactData.isActivated = false
1041
1088
  // 未打开面板时才校验
1042
- if ($datePanel) {
1043
- $datePanel.checkValue(inputLabel)
1044
- } else {
1045
- $xeDatePicker.afterCheckValue(inputLabel)
1046
- }
1089
+ $xeDatePicker.afterCheckValue(inputLabel)
1047
1090
  }
1048
1091
  $xeDatePicker.dispatchEvent('blur', { value }, evnt)
1049
1092
  // 自动更新校验状态
@@ -1109,17 +1152,12 @@ export default /* define-vxe-component start */ defineVxeComponent({
1109
1152
  const isEnter = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ENTER)
1110
1153
  if (editable) {
1111
1154
  if (isEnter) {
1112
- const $datePanel = $xeDatePicker.$refs.refDatePanel as VxeDatePanelConstructor
1113
1155
  const { inputLabel } = internalData
1114
1156
  const targetElem = $xeDatePicker.$refs.refInputTarget as HTMLInputElement
1115
1157
  if (visiblePanel) {
1116
1158
  $xeDatePicker.hidePanel()
1117
1159
  }
1118
- if ($datePanel) {
1119
- $datePanel.checkValue(inputLabel)
1120
- } else {
1121
- $xeDatePicker.afterCheckValue(inputLabel)
1122
- }
1160
+ $xeDatePicker.afterCheckValue(inputLabel)
1123
1161
  if (targetElem) {
1124
1162
  targetElem.blur()
1125
1163
  }
@@ -1179,7 +1217,6 @@ export default /* define-vxe-component start */ defineVxeComponent({
1179
1217
  const reactData = $xeDatePicker.reactData
1180
1218
  const internalData = $xeDatePicker.internalData
1181
1219
 
1182
- const $datePanel = $xeDatePicker.$refs.refDatePanel as VxeDatePanelConstructor
1183
1220
  const { visiblePanel, isActivated } = reactData
1184
1221
  const el = $xeDatePicker.$refs.refElem as HTMLDivElement
1185
1222
  const panelWrapperElem = $xeDatePicker.$refs.refPanelWrapper as HTMLDivElement
@@ -1193,11 +1230,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
1193
1230
  if (visiblePanel) {
1194
1231
  $xeDatePicker.hidePanel()
1195
1232
  const { inputLabel } = internalData
1196
- if ($datePanel) {
1197
- $datePanel.checkValue(inputLabel)
1198
- } else {
1199
- $xeDatePicker.afterCheckValue(inputLabel)
1200
- }
1233
+ $xeDatePicker.afterCheckValue(inputLabel)
1201
1234
  }
1202
1235
  }
1203
1236
  }
@@ -1243,7 +1276,6 @@ export default /* define-vxe-component start */ defineVxeComponent({
1243
1276
  const reactData = $xeDatePicker.reactData
1244
1277
  const internalData = $xeDatePicker.internalData
1245
1278
 
1246
- const $datePanel = $xeDatePicker.$refs.refDatePanel as VxeDatePanelConstructor
1247
1279
  const { isActivated, visiblePanel } = reactData
1248
1280
  if (visiblePanel) {
1249
1281
  $xeDatePicker.hidePanel()
@@ -1252,9 +1284,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
1252
1284
  reactData.isActivated = false
1253
1285
  }
1254
1286
  if (visiblePanel || isActivated) {
1255
- if ($datePanel) {
1256
- $datePanel.checkValue(internalData.inputLabel)
1257
- }
1287
+ $xeDatePicker.afterCheckValue(internalData.inputLabel)
1258
1288
  const targetElem = $xeDatePicker.$refs.refInputTarget as HTMLInputElement
1259
1289
  if (targetElem) {
1260
1290
  targetElem.blur()
@@ -1512,6 +1542,8 @@ export default /* define-vxe-component start */ defineVxeComponent({
1512
1542
  const isDateTimeType = $xeDatePicker.computeIsDateTimeType
1513
1543
  const shortcutList = $xeDatePicker.computeShortcutList
1514
1544
  const timeOpts = $xeDatePicker.computeTimeOpts
1545
+ const dateStartDate = $xeDatePicker.computeDateStartDate
1546
+ const dateEndDate = $xeDatePicker.computeDateEndDate
1515
1547
  const { position } = shortcutOpts
1516
1548
  const headerSlot = slots.header
1517
1549
  const footerSlot = slots.footer
@@ -1579,8 +1611,8 @@ export default /* define-vxe-component start */ defineVxeComponent({
1579
1611
  className: props.className,
1580
1612
  multiple: props.multiple,
1581
1613
  limitCount: props.limitCount,
1582
- startDate: props.startDate,
1583
- endDate: props.endDate,
1614
+ startDate: dateStartDate,
1615
+ endDate: dateEndDate,
1584
1616
  defaultDate: props.defaultDate,
1585
1617
  defaultTime: props.defaultTime,
1586
1618
  minDate: props.minDate,
@@ -28,7 +28,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
28
28
  */
29
29
  trigger: {
30
30
  type: String as PropType<VxePulldownPropTypes.Trigger>,
31
- default: getConfig().pulldown.trigger
31
+ default: () => getConfig().pulldown.trigger
32
32
  },
33
33
  /**
34
34
  * 已废弃,请使用 popupConfig.zIndex
@@ -42,7 +42,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
42
42
  options: Array as PropType<VxePulldownPropTypes.Options>,
43
43
  className: {
44
44
  type: [String, Function] as PropType<VxePulldownPropTypes.ClassName>,
45
- default: getConfig().pulldown.className
45
+ default: () => getConfig().pulldown.className
46
46
  },
47
47
  /**
48
48
  * 已废弃,请使用 popupConfig.className
@@ -53,7 +53,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
53
53
  popupConfig: Object as PropType<VxePulldownPropTypes.PopupConfig>,
54
54
  destroyOnClose: {
55
55
  type: Boolean as PropType<VxePulldownPropTypes.DestroyOnClose>,
56
- default: getConfig().pulldown.destroyOnClose
56
+ default: () => getConfig().pulldown.destroyOnClose
57
57
  },
58
58
  transfer: {
59
59
  type: Boolean as PropType<VxePulldownPropTypes.Transfer>,
@@ -54,7 +54,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
54
54
  value: [String, Number, Array] as PropType<VxeTableSelectPropTypes.ModelValue>,
55
55
  clearable: {
56
56
  type: Boolean as PropType<VxeTableSelectPropTypes.Clearable>,
57
- default: getConfig().tableSelect.clearable
57
+ default: () => getConfig().tableSelect.clearable
58
58
  },
59
59
  placeholder: {
60
60
  type: String as PropType<VxeTableSelectPropTypes.Placeholder>,
@@ -59,7 +59,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
59
59
  value: [String, Number, Array] as PropType<VxeTreeSelectPropTypes.ModelValue>,
60
60
  clearable: {
61
61
  type: Boolean as PropType<VxeTreeSelectPropTypes.Clearable>,
62
- default: getConfig().treeSelect.clearable
62
+ default: () => getConfig().treeSelect.clearable
63
63
  },
64
64
  placeholder: {
65
65
  type: String as PropType<VxeTreeSelectPropTypes.Placeholder>,
@@ -76,11 +76,11 @@ export default /* define-vxe-component start */ defineVxeComponent({
76
76
  },
77
77
  showFullLabel: {
78
78
  type: Boolean as PropType<VxeTreeSelectPropTypes.ShowFullLabel>,
79
- default: getConfig().treeSelect.showFullLabel
79
+ default: () => getConfig().treeSelect.showFullLabel
80
80
  },
81
81
  separator: {
82
82
  type: String as PropType<VxeTreeSelectPropTypes.Separator>,
83
- default: getConfig().treeSelect.separator
83
+ default: () => getConfig().treeSelect.separator
84
84
  },
85
85
  filterable: Boolean as PropType<VxeTreeSelectPropTypes.Filterable>,
86
86
  filterConfig: Object as PropType<VxeTreeSelectPropTypes.FilterConfig>,
@@ -113,6 +113,8 @@ setConfig({
113
113
  datePicker: {
114
114
  // size: null,
115
115
  // transfer: false,
116
+ startDate: new Date(1900, 0, 1),
117
+ endDate: new Date(2100, 0, 1),
116
118
  shortcutConfig: {
117
119
  // position: 'left',
118
120
  align: 'left',
@@ -1,12 +1,28 @@
1
1
  @use '../helpers/baseMixin.scss';
2
2
 
3
3
  .vxe-collapse {
4
- font-size: var(--vxe-ui-font-size-default);
4
+ font-size: var(--vxe-ui-collapse-font-size);
5
5
  color: var(--vxe-ui-font-color);
6
6
  font-family: var(--vxe-ui-font-family);
7
7
  &.is--padding {
8
+ .vxe-collapse--item-header {
9
+ padding: 0 var(--vxe-ui-collapse-scope-padding);
10
+ }
8
11
  .vxe-collapse--item-inner {
9
- padding: var(--vxe-ui-layout-padding-default);
12
+ padding: var(--vxe-ui-collapse-scope-padding);
13
+ }
14
+ }
15
+ &.is--border {
16
+ & > .vxe-collapse-item {
17
+ border-top: 1px solid var(--vxe-ui-collapse-border-color);
18
+ &:last-child {
19
+ border-bottom: 1px solid var(--vxe-ui-collapse-border-color);
20
+ }
21
+ & > .vxe-collapse--item-content {
22
+ & > .vxe-collapse--item-inner {
23
+ border-top: 1px solid var(--vxe-ui-collapse-border-color);
24
+ }
25
+ }
10
26
  }
11
27
  }
12
28
  }
@@ -14,20 +30,20 @@
14
30
  display: none;
15
31
  }
16
32
  .vxe-collapse--item-content {
17
- &.is--visible {
18
- .vxe-collapse--item-inner {
19
- display: block;
20
- }
33
+ overflow: hidden;
34
+ @include baseMixin.createAnimationTransition(height, .2s);
35
+ &.is--hidden {
36
+ height: 0;
21
37
  }
22
38
  }
23
39
  .vxe-collapse--item-inner {
24
- display: none;
40
+ position: relative;
25
41
  }
26
42
  .vxe-collapse--item-header {
27
43
  display: flex;
28
44
  flex-direction: row;
29
45
  align-items: center;
30
- height: 1.8em;
46
+ min-height: var(--vxe-ui-collapse-scope-min-height);
31
47
  cursor: pointer;
32
48
  }
33
49
  .vxe-collapse--item-switch,
@@ -45,13 +61,22 @@
45
61
  }
46
62
 
47
63
  .vxe-collapse {
64
+ --vxe-ui-collapse-font-size: var(--vxe-ui-font-size-default);
65
+ --vxe-ui-collapse-scope-min-height: var(--vxe-ui-collapse-min-height-default);
66
+ --vxe-ui-collapse-scope-padding: var(--vxe-ui-layout-padding-double);
48
67
  &.size--medium {
49
- font-size: var(--vxe-ui-font-size-medium);
68
+ --vxe-ui-collapse-font-size:var(--vxe-ui-font-size-medium);
69
+ --vxe-ui-collapse-scope-min-height: var(--vxe-ui-collapse-min-height-medium);
70
+ --vxe-ui-collapse-scope-padding: calc(var(--vxe-ui-layout-padding-double) - 4px);
50
71
  }
51
72
  &.size--small {
52
- font-size: var(--vxe-ui-font-size-small);
73
+ --vxe-ui-collapse-font-size:var(--vxe-ui-font-size-small);
74
+ --vxe-ui-collapse-scope-min-height: var(--vxe-ui-collapse-min-height-small);
75
+ --vxe-ui-collapse-scope-padding: calc(var(--vxe-ui-layout-padding-double) - 6px);
53
76
  }
54
77
  &.size--mini {
55
- font-size: var(--vxe-ui-font-size-mini);
78
+ --vxe-ui-collapse-font-size:var(--vxe-ui-font-size-mini);
79
+ --vxe-ui-collapse-scope-min-height: var(--vxe-ui-collapse-min-height-mini);
80
+ --vxe-ui-collapse-scope-padding: calc(var(--vxe-ui-layout-padding-double) - 8px);
56
81
  }
57
82
  }
@@ -215,7 +215,7 @@
215
215
  }
216
216
  &.is--hover {
217
217
  .vxe-date-panel--view-item-inner {
218
- background-color: var(--vxe-ui-font-primary-tinge-color);
218
+ background-color: var(--vxe-ui-base-hover-background-color);
219
219
  }
220
220
  }
221
221
  &.is--selected {