@veltra/desktop 1.1.31 → 1.1.33
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/dist/components/action/action-group.vue.d.ts +1 -1
- package/dist/components/action/action.vue.d.ts +1 -1
- package/dist/components/cascade/cascade.vue.d.ts +1 -1
- package/dist/components/checkbox/checkbox-button.vue.d.ts +1 -1
- package/dist/components/contextmenu/api.d.ts +8 -0
- package/dist/components/{context-menu → contextmenu}/api.js +2 -2
- package/dist/components/contextmenu/api.js.map +1 -0
- package/dist/components/contextmenu/contextmenu-item.js +64 -0
- package/dist/components/contextmenu/contextmenu-item.js.map +1 -0
- package/dist/components/contextmenu/contextmenu-panel.js +33 -0
- package/dist/components/contextmenu/contextmenu-panel.js.map +1 -0
- package/dist/components/contextmenu/contextmenu-sub.js +83 -0
- package/dist/components/contextmenu/contextmenu-sub.js.map +1 -0
- package/dist/components/contextmenu/contextmenu.js +79 -0
- package/dist/components/contextmenu/contextmenu.js.map +1 -0
- package/dist/components/{context-menu/context-menu.vue.d.ts → contextmenu/contextmenu.vue.d.ts} +5 -5
- package/dist/components/contextmenu/di.js +7 -0
- package/dist/components/contextmenu/di.js.map +1 -0
- package/dist/components/contextmenu/helper.js +8 -0
- package/dist/components/contextmenu/helper.js.map +1 -0
- package/dist/components/contextmenu/index.d.ts +2 -0
- package/dist/components/contextmenu/style2.css +154 -0
- package/dist/components/date-panel/date-panel.vue.d.ts +1 -1
- package/dist/components/date-picker/date-picker.vue.d.ts +1 -1
- package/dist/components/date-range-picker/date-range-picker.vue.d.ts +1 -1
- package/dist/components/file-viewer/previewers/sheet-previewer.js +33 -93
- package/dist/components/file-viewer/previewers/sheet-previewer.js.map +1 -1
- package/dist/components/file-viewer/sheet-parser.js +46 -0
- package/dist/components/file-viewer/sheet-parser.js.map +1 -0
- package/dist/components/index.d.ts +2 -2
- package/dist/components/index.js +3 -3
- package/dist/components/index.js.map +1 -1
- package/dist/components/number/number.vue.d.ts +1 -1
- package/dist/components/table/node/col.d.ts +5 -0
- package/dist/components/table/node/col.js +6 -0
- package/dist/components/table/node/col.js.map +1 -1
- package/dist/components/table/use-col-resize.js +10 -10
- package/dist/components/table/use-col-resize.js.map +1 -1
- package/dist/components/tip/tip.vue.d.ts +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.js +3 -3
- package/dist/style.js +1 -1
- package/dist/types/{context-menu.d.ts → contextmenu.d.ts} +12 -10
- package/dist/types/index.d.ts +2 -2
- package/package.json +6 -6
- package/src/components/{context-menu → contextmenu}/api.ts +4 -4
- package/src/components/contextmenu/contextmenu-item.vue +63 -0
- package/src/components/contextmenu/contextmenu-panel.vue +28 -0
- package/src/components/contextmenu/contextmenu-sub.vue +88 -0
- package/src/components/contextmenu/contextmenu.vue +77 -0
- package/src/components/contextmenu/di.ts +13 -0
- package/src/components/contextmenu/helper.ts +5 -0
- package/src/components/contextmenu/index.ts +3 -0
- package/src/components/contextmenu/style.scss +135 -0
- package/src/components/file-viewer/previewers/sheet-previewer.vue +35 -131
- package/src/components/file-viewer/sheet-parser.ts +52 -0
- package/src/components/index.ts +1 -1
- package/src/components/table/node/col.ts +7 -0
- package/src/components/table/use-col-resize.ts +18 -16
- package/src/style.ts +1 -1
- package/src/types/{context-menu.ts → contextmenu.ts} +9 -7
- package/src/types/index.ts +1 -1
- package/dist/components/context-menu/api.d.ts +0 -8
- package/dist/components/context-menu/api.js.map +0 -1
- package/dist/components/context-menu/context-menu-item.js +0 -60
- package/dist/components/context-menu/context-menu-item.js.map +0 -1
- package/dist/components/context-menu/context-menu.js +0 -95
- package/dist/components/context-menu/context-menu.js.map +0 -1
- package/dist/components/context-menu/di.js +0 -6
- package/dist/components/context-menu/di.js.map +0 -1
- package/dist/components/context-menu/index.d.ts +0 -2
- package/dist/components/context-menu/style2.css +0 -52
- package/src/components/context-menu/context-menu-item.vue +0 -67
- package/src/components/context-menu/context-menu.vue +0 -119
- package/src/components/context-menu/di.ts +0 -5
- package/src/components/context-menu/index.ts +0 -3
- package/src/components/context-menu/style.scss +0 -51
- /package/dist/components/{context-menu → contextmenu}/style.d.ts +0 -0
- /package/dist/components/{context-menu → contextmenu}/style.js +0 -0
- /package/src/components/{context-menu → contextmenu}/style.ts +0 -0
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
@charset "UTF-8";
|
|
2
|
-
/** flex布局 */
|
|
3
|
-
/**
|
|
4
|
-
* 设置css变量
|
|
5
|
-
* 参数1:变量前缀
|
|
6
|
-
* 参数2: 一个由值组成的列表或者由key, value组成的map
|
|
7
|
-
* css-var(height, (
|
|
8
|
-
* large: 40px
|
|
9
|
-
* default: 32px
|
|
10
|
-
* small: 24px
|
|
11
|
-
* ))
|
|
12
|
-
* 生成的css变量:
|
|
13
|
-
* --u-height-large: 40px;
|
|
14
|
-
* --u-height-default: 32px;
|
|
15
|
-
* --u-height-small: 24px;
|
|
16
|
-
*/
|
|
17
|
-
/** 暗色:data-theme 与系统偏好,与 UITheme.injectBuiltInThemes 选择器策略一致 */
|
|
18
|
-
.u-context-menu {
|
|
19
|
-
position: fixed;
|
|
20
|
-
background-color: var(--u-bg-color-top);
|
|
21
|
-
box-shadow: var(--u-shadow);
|
|
22
|
-
border-radius: var(--u-radius-default);
|
|
23
|
-
padding: var(--u-gap-small);
|
|
24
|
-
backdrop-filter: var(--u-bg-filter);
|
|
25
|
-
-webkit-backdrop-filter: var(--u-bg-filter);
|
|
26
|
-
}
|
|
27
|
-
.u-context-menu__label {
|
|
28
|
-
margin-left: var(--u-gap-small);
|
|
29
|
-
}
|
|
30
|
-
.u-context-menu__item {
|
|
31
|
-
cursor: pointer;
|
|
32
|
-
padding: var(--u-gap-small);
|
|
33
|
-
border-radius: var(--u-radius-default);
|
|
34
|
-
display: flex;
|
|
35
|
-
justify-content: flex-start;
|
|
36
|
-
align-items: center;
|
|
37
|
-
flex-wrap: nowrap;
|
|
38
|
-
}
|
|
39
|
-
.u-context-menu__item:not(.is-disabled):not(.is-loading):hover {
|
|
40
|
-
background-color: var(--u-color-primary-light-9);
|
|
41
|
-
}
|
|
42
|
-
.u-context-menu__item.is-disabled {
|
|
43
|
-
cursor: not-allowed;
|
|
44
|
-
color: var(--u-text-color-disabled);
|
|
45
|
-
}
|
|
46
|
-
.u-context-menu__item.is-loading {
|
|
47
|
-
cursor: not-allowed;
|
|
48
|
-
color: var(--u-text-color-disabled);
|
|
49
|
-
}
|
|
50
|
-
.u-context-menu__icon-place {
|
|
51
|
-
width: 14px;
|
|
52
|
-
}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<li
|
|
3
|
-
:class="[
|
|
4
|
-
cls.e('item'),
|
|
5
|
-
bem.is('disabled', disabled),
|
|
6
|
-
bem.is('loading', loading),
|
|
7
|
-
cls.em('item', 'menu')
|
|
8
|
-
]"
|
|
9
|
-
v-ripple="!disabled && !loading"
|
|
10
|
-
@click="handleClickMenu"
|
|
11
|
-
>
|
|
12
|
-
<u-icon v-if="loading" :class="bem.is('loading')">
|
|
13
|
-
<Loading />
|
|
14
|
-
</u-icon>
|
|
15
|
-
<template v-else>
|
|
16
|
-
<u-icon v-if="menu.icon">
|
|
17
|
-
<component :is="menu.icon" />
|
|
18
|
-
</u-icon>
|
|
19
|
-
<i v-else :class="cls.e('icon-place')"></i>
|
|
20
|
-
</template>
|
|
21
|
-
|
|
22
|
-
<span :class="cls.e('label')">{{ menu.label }}</span>
|
|
23
|
-
</li>
|
|
24
|
-
</template>
|
|
25
|
-
|
|
26
|
-
<script lang="ts" setup>
|
|
27
|
-
import { vRipple } from '@veltra/directives'
|
|
28
|
-
import { Loading } from '@veltra/icons/normal'
|
|
29
|
-
import { bem } from '@veltra/utils'
|
|
30
|
-
import { computed, inject, shallowRef } from 'vue'
|
|
31
|
-
|
|
32
|
-
import type { ContextMenuItem } from '../../types'
|
|
33
|
-
import { UIcon } from '../icon'
|
|
34
|
-
import { ContextMenuDIKey } from './di'
|
|
35
|
-
|
|
36
|
-
defineOptions({ name: 'ContextMenuItem' })
|
|
37
|
-
|
|
38
|
-
const { menu } = defineProps<{ menu: ContextMenuItem }>()
|
|
39
|
-
|
|
40
|
-
const emit = defineEmits<{ (e: 'click-start'): void; (e: 'click-end'): void }>()
|
|
41
|
-
|
|
42
|
-
const { cls } = inject(ContextMenuDIKey)!
|
|
43
|
-
|
|
44
|
-
const loading = shallowRef(false)
|
|
45
|
-
|
|
46
|
-
const disabled = computed(() => {
|
|
47
|
-
return (typeof menu.disabled === 'function' ? menu.disabled() : menu.disabled) ?? false
|
|
48
|
-
})
|
|
49
|
-
|
|
50
|
-
function handleClickMenu() {
|
|
51
|
-
if (disabled.value || loading.value) return
|
|
52
|
-
emit('click-start')
|
|
53
|
-
loading.value = true
|
|
54
|
-
const result = menu.callback?.()
|
|
55
|
-
|
|
56
|
-
if (result instanceof Promise) {
|
|
57
|
-
return result
|
|
58
|
-
.then(() => {})
|
|
59
|
-
.finally(() => {
|
|
60
|
-
emit('click-end')
|
|
61
|
-
loading.value = false
|
|
62
|
-
})
|
|
63
|
-
}
|
|
64
|
-
loading.value = false
|
|
65
|
-
emit('click-end')
|
|
66
|
-
}
|
|
67
|
-
</script>
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<Teleport to="body">
|
|
3
|
-
<transition name="zoom-in" appear @after-leave="emit('destroy')">
|
|
4
|
-
<ul
|
|
5
|
-
:class="[cls.b, cls.m(size)]"
|
|
6
|
-
:style="style"
|
|
7
|
-
ref="contextMenuRef"
|
|
8
|
-
v-if="visible"
|
|
9
|
-
v-click-outside="handleClickOutside"
|
|
10
|
-
>
|
|
11
|
-
<UContextMenuItem
|
|
12
|
-
v-for="menu of menus"
|
|
13
|
-
:menu="menu"
|
|
14
|
-
:disabled="getMenuDisabled(menu)"
|
|
15
|
-
@click-start="handleClickStart"
|
|
16
|
-
@click-end="handleClickEnd"
|
|
17
|
-
/>
|
|
18
|
-
</ul>
|
|
19
|
-
</transition>
|
|
20
|
-
</Teleport>
|
|
21
|
-
</template>
|
|
22
|
-
|
|
23
|
-
<script lang="ts" setup>
|
|
24
|
-
import { useFallbackProps } from '@veltra/compositions'
|
|
25
|
-
import { vClickOutside } from '@veltra/directives'
|
|
26
|
-
import { bem, withUnit, zIndex } from '@veltra/utils'
|
|
27
|
-
import { computed, provide, shallowRef, type CSSProperties } from 'vue'
|
|
28
|
-
|
|
29
|
-
import type {
|
|
30
|
-
ContextMenuEmits,
|
|
31
|
-
ContextMenuItem,
|
|
32
|
-
ContextMenuProps,
|
|
33
|
-
ComponentSize
|
|
34
|
-
} from '../../types'
|
|
35
|
-
import UContextMenuItem from './context-menu-item.vue'
|
|
36
|
-
import { ContextMenuDIKey } from './di'
|
|
37
|
-
|
|
38
|
-
defineOptions({ name: 'ContextMenu' })
|
|
39
|
-
|
|
40
|
-
const props = withDefaults(defineProps<ContextMenuProps>(), { width: 150 })
|
|
41
|
-
|
|
42
|
-
const emit = defineEmits<ContextMenuEmits>()
|
|
43
|
-
|
|
44
|
-
const { size } = useFallbackProps([props], { size: 'default' as ComponentSize })
|
|
45
|
-
|
|
46
|
-
const cls = bem('context-menu')
|
|
47
|
-
|
|
48
|
-
const contextMenuRef = shallowRef<HTMLElement>()
|
|
49
|
-
|
|
50
|
-
const visible = shallowRef(true)
|
|
51
|
-
|
|
52
|
-
const computePosition = () => {
|
|
53
|
-
const position: {
|
|
54
|
-
top?: number
|
|
55
|
-
left?: number
|
|
56
|
-
right?: number
|
|
57
|
-
bottom?: number
|
|
58
|
-
transformOrigin?: string
|
|
59
|
-
} = {}
|
|
60
|
-
|
|
61
|
-
const { mousePosition } = props
|
|
62
|
-
const { x, y } = mousePosition
|
|
63
|
-
if (x > window.innerWidth / 2) {
|
|
64
|
-
position.right = window.innerWidth - x - 1
|
|
65
|
-
} else {
|
|
66
|
-
position.left = x + 1
|
|
67
|
-
}
|
|
68
|
-
if (y > window.innerHeight / 2) {
|
|
69
|
-
position.bottom = window.innerHeight - y - 1
|
|
70
|
-
} else {
|
|
71
|
-
position.top = y + 1
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
const positionY = position.top ? 'top' : 'bottom'
|
|
75
|
-
const positionX = position.left ? 'left' : 'right'
|
|
76
|
-
position.transformOrigin = `${positionY} ${positionX}`
|
|
77
|
-
|
|
78
|
-
return Object.fromEntries(
|
|
79
|
-
Object.entries(position).map(([k, v]) => [k, withUnit(v as number | string | undefined, 'px')])
|
|
80
|
-
) as CSSProperties
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
const style = computed<CSSProperties>(() => {
|
|
84
|
-
return { width: withUnit(props.width, 'px'), ...computePosition(), zIndex: zIndex() }
|
|
85
|
-
})
|
|
86
|
-
|
|
87
|
-
const menus = computed(() => {
|
|
88
|
-
const { menus } = props
|
|
89
|
-
if (typeof menus === 'function') {
|
|
90
|
-
return menus()
|
|
91
|
-
}
|
|
92
|
-
return menus
|
|
93
|
-
})
|
|
94
|
-
|
|
95
|
-
const getMenuDisabled = (menu: ContextMenuItem) => {
|
|
96
|
-
return typeof menu.disabled === 'function' ? menu.disabled() : menu.disabled
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
function close() {
|
|
100
|
-
visible.value = false
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
let loading = false
|
|
104
|
-
function handleClickStart() {
|
|
105
|
-
loading = true
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
function handleClickEnd() {
|
|
109
|
-
loading = false
|
|
110
|
-
close()
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
function handleClickOutside() {
|
|
114
|
-
if (loading) return
|
|
115
|
-
close()
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
provide(ContextMenuDIKey, { cls })
|
|
119
|
-
</script>
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
@use 'pkg:@veltra/styles/mixins' as m;
|
|
2
|
-
@use 'pkg:@veltra/styles/functions' as fn;
|
|
3
|
-
@use 'pkg:@veltra/styles/vars';
|
|
4
|
-
|
|
5
|
-
// 方便拼接
|
|
6
|
-
$root-name: context-menu;
|
|
7
|
-
|
|
8
|
-
@include m.b($root-name) {
|
|
9
|
-
position: fixed;
|
|
10
|
-
background-color: fn.use-var(bg-color, top);
|
|
11
|
-
box-shadow: fn.use-var(shadow);
|
|
12
|
-
border-radius: fn.use-var(radius, default);
|
|
13
|
-
padding: fn.use-var(gap, small);
|
|
14
|
-
backdrop-filter: fn.use-var(bg-filter);
|
|
15
|
-
-webkit-backdrop-filter: fn.use-var(bg-filter);
|
|
16
|
-
|
|
17
|
-
@include m.e(label) {
|
|
18
|
-
margin-left: fn.use-var(gap, small);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
// @include m.size using ($size) {
|
|
22
|
-
// padding: fn.use-var(gap, $size);
|
|
23
|
-
|
|
24
|
-
// @include m.bem($root-name, item) {
|
|
25
|
-
// padding: fn.use-var(gap, $size);
|
|
26
|
-
// border-radius: fn.use-var(radius, $size);
|
|
27
|
-
// }
|
|
28
|
-
// }
|
|
29
|
-
|
|
30
|
-
@include m.e(item) {
|
|
31
|
-
cursor: pointer;
|
|
32
|
-
padding: fn.use-var(gap, small);
|
|
33
|
-
border-radius: fn.use-var(radius, default);
|
|
34
|
-
@include m.flex;
|
|
35
|
-
|
|
36
|
-
@include m.is-not(disabled, loading) {
|
|
37
|
-
&:hover {
|
|
38
|
-
background-color: fn.use-var(color, primary, light-9);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
@include m.is(disabled, loading) {
|
|
43
|
-
cursor: not-allowed;
|
|
44
|
-
color: fn.use-var(text-color, disabled);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
@include m.e(icon-place) {
|
|
49
|
-
width: 14px;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|