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.
- package/es/cascader/src/cascader.js +2 -2
- package/es/collapse/src/collapse.js +101 -14
- package/es/collapse/style.css +36 -9
- package/es/collapse/style.min.css +1 -1
- package/es/date-panel/src/util.js +16 -0
- package/es/date-panel/style.css +1 -1
- package/es/date-panel/style.min.css +1 -1
- package/es/date-picker/src/date-picker.js +57 -34
- package/es/icon/{iconfont.1781876590487.ttf → iconfont.1782111174200.ttf} +0 -0
- package/es/icon/iconfont.1782111174200.woff +0 -0
- package/es/icon/iconfont.1782111174200.woff2 +0 -0
- package/es/icon/style.css +5 -1
- package/es/icon/style.min.css +1 -1
- package/{lib/icon/style/iconfont.1781876590487.ttf → es/iconfont.1782111174200.ttf} +0 -0
- package/es/iconfont.1782111174200.woff +0 -0
- package/es/iconfont.1782111174200.woff2 +0 -0
- package/es/pulldown/src/pulldown.js +3 -3
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/table-select/src/table-select.js +1 -1
- package/es/tree-select/src/tree-select.js +3 -3
- package/es/ui/index.js +3 -1
- package/es/ui/src/log.js +1 -1
- package/es/vxe-collapse/style.css +36 -9
- package/es/vxe-collapse/style.min.css +1 -1
- package/es/vxe-date-panel/style.css +1 -1
- package/es/vxe-date-panel/style.min.css +1 -1
- package/es/vxe-icon/style.css +5 -1
- package/es/vxe-icon/style.min.css +1 -1
- package/lib/cascader/src/cascader.js +6 -2
- package/lib/cascader/src/cascader.min.js +1 -1
- package/lib/collapse/src/collapse.js +101 -12
- package/lib/collapse/src/collapse.min.js +1 -1
- package/lib/collapse/style/style.css +36 -9
- package/lib/collapse/style/style.min.css +1 -1
- package/lib/date-panel/src/util.js +17 -0
- package/lib/date-panel/src/util.min.js +1 -1
- package/lib/date-panel/style/style.css +1 -1
- package/lib/date-panel/style/style.min.css +1 -1
- package/lib/date-picker/src/date-picker.js +59 -30
- package/lib/date-picker/src/date-picker.min.js +1 -1
- package/lib/{iconfont.1781876590487.ttf → icon/style/iconfont.1782111174200.ttf} +0 -0
- package/lib/icon/style/iconfont.1782111174200.woff +0 -0
- package/lib/icon/style/iconfont.1782111174200.woff2 +0 -0
- package/lib/icon/style/style.css +5 -1
- package/lib/icon/style/style.min.css +5 -1
- package/{es/iconfont.1781876590487.ttf → lib/iconfont.1782111174200.ttf} +0 -0
- package/lib/iconfont.1782111174200.woff +0 -0
- package/lib/iconfont.1782111174200.woff2 +0 -0
- package/lib/index.umd.js +497 -366
- package/lib/index.umd.min.js +1 -1
- package/lib/pulldown/src/pulldown.js +9 -3
- package/lib/pulldown/src/pulldown.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/table-select/src/table-select.js +3 -1
- package/lib/table-select/src/table-select.min.js +1 -1
- package/lib/tree-select/src/tree-select.js +9 -3
- package/lib/tree-select/src/tree-select.min.js +1 -1
- package/lib/ui/index.js +3 -1
- 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-collapse/style/style.css +36 -9
- package/lib/vxe-collapse/style/style.min.css +1 -1
- package/lib/vxe-date-panel/style/style.css +1 -1
- package/lib/vxe-date-panel/style/style.min.css +1 -1
- package/lib/vxe-icon/style/style.css +5 -1
- package/lib/vxe-icon/style/style.min.css +1 -1
- package/package.json +2 -2
- package/packages/cascader/src/cascader.ts +2 -2
- package/packages/collapse/src/collapse.ts +112 -16
- package/packages/date-panel/src/util.ts +18 -0
- package/packages/date-picker/src/date-picker.ts +63 -31
- package/packages/pulldown/src/pulldown.ts +3 -3
- package/packages/table-select/src/table-select.ts +1 -1
- package/packages/tree-select/src/tree-select.ts +3 -3
- package/packages/ui/index.ts +2 -0
- package/styles/components/collapse.scss +36 -11
- package/styles/components/date-panel.scss +1 -1
- package/styles/components/icon.scss +5 -1
- package/styles/icon/iconfont.ttf +0 -0
- package/styles/icon/iconfont.woff +0 -0
- package/styles/icon/iconfont.woff2 +0 -0
- package/styles/theme/base.scss +7 -0
- package/styles/theme/dark.scss +5 -3
- package/styles/theme/light.scss +3 -1
- package/styles/variable.scss +5 -2
- package/types/components/cascader.d.ts +1 -1
- package/types/components/collapse.d.ts +11 -3
- package/types/components/date-panel.d.ts +6 -6
- package/types/components/date-picker.d.ts +4 -0
- package/types/components/icon.d.ts +1 -1
- package/types/components/table.d.ts +16 -2
- package/es/icon/iconfont.1781876590487.woff +0 -0
- package/es/icon/iconfont.1781876590487.woff2 +0 -0
- package/es/iconfont.1781876590487.woff +0 -0
- package/es/iconfont.1781876590487.woff2 +0 -0
- package/lib/icon/style/iconfont.1781876590487.woff +0 -0
- package/lib/icon/style/iconfont.1781876590487.woff2 +0 -0
- package/lib/iconfont.1781876590487.woff +0 -0
- 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
|
-
|
|
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
|
|
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
|
|
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) +
|
|
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('')
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
1583
|
-
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>,
|
package/packages/ui/index.ts
CHANGED
|
@@ -1,12 +1,28 @@
|
|
|
1
1
|
@use '../helpers/baseMixin.scss';
|
|
2
2
|
|
|
3
3
|
.vxe-collapse {
|
|
4
|
-
font-size: var(--vxe-ui-font-size
|
|
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-
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
}
|