element-pe 1.0.5 → 1.0.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/attributes.json +1 -1
- package/dist/index.css +1 -1
- package/dist/index.full.js +632 -1287
- package/dist/index.full.min.js +9 -10
- package/dist/index.full.min.js.map +1 -1
- package/dist/index.full.min.mjs +7 -8
- package/dist/index.full.min.mjs.map +1 -1
- package/dist/index.full.mjs +630 -1289
- package/es/component.d.ts +24 -2
- package/es/components/affix/index.js +1 -1
- package/es/components/autocomplete/index.d.ts +4 -4
- package/es/components/autocomplete/src/index.vue.d.ts +2 -2
- package/es/components/carousel/index.d.ts +2 -2
- package/es/components/carousel/src/main.vue.d.ts +2 -2
- package/es/components/cascader/index.d.ts +2 -2
- package/es/components/cascader/src/index.vue.d.ts +1 -1
- package/es/components/checkbox/index.d.ts +6 -6
- package/es/components/checkbox/src/checkbox-button.vue.d.ts +1 -1
- package/es/components/checkbox/src/checkbox-group.vue.d.ts +1 -1
- package/es/components/checkbox/src/checkbox.vue.d.ts +2 -2
- package/es/components/color-picker/index.d.ts +2 -2
- package/es/components/color-picker/src/components/alpha-slider.vue.d.ts +1 -1
- package/es/components/color-picker/src/components/hue-slider.vue.d.ts +1 -1
- package/es/components/color-picker/src/index.vue.d.ts +1 -1
- package/es/components/descriptions/index.d.ts +8 -8
- package/es/components/descriptions/src/description-item.d.ts +2 -2
- package/es/components/descriptions/src/descriptions-cell.d.ts +1 -1
- package/es/components/descriptions/src/index.vue.d.ts +4 -4
- package/es/components/drawer/index.d.ts +6 -6
- package/es/components/drawer/src/index.vue.d.ts +3 -3
- package/es/components/dropdown/index.d.ts +2 -2
- package/es/components/dropdown/src/dropdown.vue.d.ts +2 -2
- package/es/components/form/index.js +2 -2
- package/es/components/icon/index.d.ts +1 -1
- package/es/components/icon/src/icon.vue.d.ts +1 -1
- package/es/components/image/index.d.ts +3 -3
- package/es/components/image/index.js +2 -3
- package/es/components/image/src/image.d.ts +1 -1
- package/es/components/image/src/image.vue.d.ts +3 -3
- package/es/components/image-viewer/index.d.ts +28 -104
- package/es/components/image-viewer/index.js +60 -61
- package/es/components/image-viewer/src/image-viewer.d.ts +14 -0
- package/es/components/image-viewer/src/image-viewer.vue.d.ts +55 -0
- package/es/components/input/index.d.ts +116 -360
- package/es/components/input/index.js +216 -209
- package/es/components/input/src/calc-textarea-height.d.ts +6 -0
- package/es/components/input/src/input.d.ts +46 -0
- package/es/components/input/src/input.vue.d.ts +162 -0
- package/es/components/input-number/index.d.ts +2 -2
- package/es/components/input-number/src/index.vue.d.ts +1 -1
- package/es/components/menu/index.d.ts +7 -3
- package/es/components/menu/index.js +8 -3
- package/es/components/menu/src/menu.d.ts +8 -3
- package/es/components/pagination/index.d.ts +2 -2
- package/es/components/pagination/src/pagination.d.ts +2 -2
- package/es/components/progress/index.js +0 -1
- package/es/components/radio/index.d.ts +2 -2
- package/es/components/radio/src/radio.vue.d.ts +2 -2
- package/es/components/rate/index.js +1 -1
- package/es/components/row/index.d.ts +4 -4
- package/es/components/row/src/row.d.ts +2 -2
- package/es/components/scrollbar/index.d.ts +4 -4
- package/es/components/scrollbar/src/index.vue.d.ts +2 -2
- package/es/components/select/index.d.ts +3 -3
- package/es/components/select/src/select.vue.d.ts +3 -3
- package/es/components/select-v2/index.d.ts +6 -6
- package/es/components/select-v2/index.js +2 -0
- package/es/components/select-v2/src/select.vue.d.ts +3 -3
- package/es/components/slider/index.d.ts +4 -4
- package/es/components/slider/src/button.vue.d.ts +2 -2
- package/es/components/slider/src/index.vue.d.ts +2 -2
- package/es/components/space/index.d.ts +2 -2
- package/es/components/space/src/space.d.ts +2 -2
- package/es/components/steps/index.d.ts +2 -2
- package/es/components/steps/src/index.vue.d.ts +2 -2
- package/es/components/table/index.d.ts +4 -4
- package/es/components/table/index.js +17 -9
- package/es/components/table/src/table.vue.d.ts +4 -4
- package/es/components/tag/index.d.ts +1 -1
- package/es/components/tag/src/tag.vue.d.ts +1 -1
- package/es/components/timeline/index.d.ts +4 -4
- package/es/components/timeline/src/item.vue.d.ts +2 -2
- package/es/components/tree/index.js +1 -1
- package/es/components/tree-v2/index.d.ts +1 -1
- package/es/components/tree-v2/index.js +2 -24
- package/es/components/tree-v2/src/tree.vue.d.ts +1 -1
- package/es/components/upload/index.d.ts +4 -4
- package/es/components/upload/src/index.vue.d.ts +2 -2
- package/es/components/upload/src/upload.vue.d.ts +2 -2
- package/es/components/virtual-list/src/builders/build-grid.d.ts +3 -3
- package/es/components/virtual-list/src/builders/build-list.d.ts +4 -4
- package/es/components/virtual-list/src/components/dynamic-size-grid.d.ts +3 -3
- package/es/components/virtual-list/src/components/dynamic-size-list.d.ts +4 -4
- package/es/components/virtual-list/src/components/fixed-size-grid.d.ts +3 -3
- package/es/components/virtual-list/src/components/fixed-size-list.d.ts +4 -4
- package/es/components/virtual-list/src/components/scrollbar.d.ts +1 -1
- package/es/utils/dom.d.ts +5 -5
- package/es/utils/dom.js +29 -36
- package/es/utils/props.d.ts +2 -2
- package/es/utils/props.js +15 -7
- package/es/utils/util.d.ts +2 -2
- package/es/utils/util.js +3 -3
- package/es/version.d.ts +1 -1
- package/es/version.js +1 -1
- package/lib/component.d.ts +24 -2
- package/lib/components/affix/index.js +1 -1
- package/lib/components/autocomplete/index.d.ts +4 -4
- package/lib/components/autocomplete/src/index.vue.d.ts +2 -2
- package/lib/components/carousel/index.d.ts +2 -2
- package/lib/components/carousel/src/main.vue.d.ts +2 -2
- package/lib/components/cascader/index.d.ts +2 -2
- package/lib/components/cascader/src/index.vue.d.ts +1 -1
- package/lib/components/checkbox/index.d.ts +6 -6
- package/lib/components/checkbox/src/checkbox-button.vue.d.ts +1 -1
- package/lib/components/checkbox/src/checkbox-group.vue.d.ts +1 -1
- package/lib/components/checkbox/src/checkbox.vue.d.ts +2 -2
- package/lib/components/color-picker/index.d.ts +2 -2
- package/lib/components/color-picker/src/components/alpha-slider.vue.d.ts +1 -1
- package/lib/components/color-picker/src/components/hue-slider.vue.d.ts +1 -1
- package/lib/components/color-picker/src/index.vue.d.ts +1 -1
- package/lib/components/descriptions/index.d.ts +8 -8
- package/lib/components/descriptions/src/description-item.d.ts +2 -2
- package/lib/components/descriptions/src/descriptions-cell.d.ts +1 -1
- package/lib/components/descriptions/src/index.vue.d.ts +4 -4
- package/lib/components/drawer/index.d.ts +6 -6
- package/lib/components/drawer/src/index.vue.d.ts +3 -3
- package/lib/components/dropdown/index.d.ts +2 -2
- package/lib/components/dropdown/src/dropdown.vue.d.ts +2 -2
- package/lib/components/form/index.js +2 -2
- package/lib/components/icon/index.d.ts +1 -1
- package/lib/components/icon/src/icon.vue.d.ts +1 -1
- package/lib/components/image/index.d.ts +3 -3
- package/lib/components/image/index.js +2 -3
- package/lib/components/image/src/image.d.ts +1 -1
- package/lib/components/image/src/image.vue.d.ts +3 -3
- package/lib/components/image-viewer/index.d.ts +28 -104
- package/lib/components/image-viewer/index.js +61 -60
- package/lib/components/image-viewer/src/image-viewer.d.ts +14 -0
- package/lib/components/image-viewer/src/image-viewer.vue.d.ts +55 -0
- package/lib/components/input/index.d.ts +116 -360
- package/lib/components/input/index.js +215 -206
- package/lib/components/input/src/calc-textarea-height.d.ts +6 -0
- package/lib/components/input/src/input.d.ts +46 -0
- package/lib/components/input/src/input.vue.d.ts +162 -0
- package/lib/components/input-number/index.d.ts +2 -2
- package/lib/components/input-number/src/index.vue.d.ts +1 -1
- package/lib/components/menu/index.d.ts +7 -3
- package/lib/components/menu/index.js +8 -3
- package/lib/components/menu/src/menu.d.ts +8 -3
- package/lib/components/pagination/index.d.ts +2 -2
- package/lib/components/pagination/src/pagination.d.ts +2 -2
- package/lib/components/progress/index.js +0 -1
- package/lib/components/radio/index.d.ts +2 -2
- package/lib/components/radio/src/radio.vue.d.ts +2 -2
- package/lib/components/rate/index.js +1 -1
- package/lib/components/row/index.d.ts +4 -4
- package/lib/components/row/src/row.d.ts +2 -2
- package/lib/components/scrollbar/index.d.ts +4 -4
- package/lib/components/scrollbar/src/index.vue.d.ts +2 -2
- package/lib/components/select/index.d.ts +3 -3
- package/lib/components/select/src/select.vue.d.ts +3 -3
- package/lib/components/select-v2/index.d.ts +6 -6
- package/lib/components/select-v2/index.js +2 -0
- package/lib/components/select-v2/src/select.vue.d.ts +3 -3
- package/lib/components/slider/index.d.ts +4 -4
- package/lib/components/slider/src/button.vue.d.ts +2 -2
- package/lib/components/slider/src/index.vue.d.ts +2 -2
- package/lib/components/space/index.d.ts +2 -2
- package/lib/components/space/src/space.d.ts +2 -2
- package/lib/components/steps/index.d.ts +2 -2
- package/lib/components/steps/src/index.vue.d.ts +2 -2
- package/lib/components/table/index.d.ts +4 -4
- package/lib/components/table/index.js +17 -9
- package/lib/components/table/src/table.vue.d.ts +4 -4
- package/lib/components/tag/index.d.ts +1 -1
- package/lib/components/tag/src/tag.vue.d.ts +1 -1
- package/lib/components/timeline/index.d.ts +4 -4
- package/lib/components/timeline/src/item.vue.d.ts +2 -2
- package/lib/components/tree/index.js +1 -1
- package/lib/components/tree-v2/index.d.ts +1 -1
- package/lib/components/tree-v2/index.js +2 -24
- package/lib/components/tree-v2/src/tree.vue.d.ts +1 -1
- package/lib/components/upload/index.d.ts +4 -4
- package/lib/components/upload/src/index.vue.d.ts +2 -2
- package/lib/components/upload/src/upload.vue.d.ts +2 -2
- package/lib/components/virtual-list/src/builders/build-grid.d.ts +3 -3
- package/lib/components/virtual-list/src/builders/build-list.d.ts +4 -4
- package/lib/components/virtual-list/src/components/dynamic-size-grid.d.ts +3 -3
- package/lib/components/virtual-list/src/components/dynamic-size-list.d.ts +4 -4
- package/lib/components/virtual-list/src/components/fixed-size-grid.d.ts +3 -3
- package/lib/components/virtual-list/src/components/fixed-size-list.d.ts +4 -4
- package/lib/components/virtual-list/src/components/scrollbar.d.ts +1 -1
- package/lib/utils/dom.d.ts +5 -5
- package/lib/utils/dom.js +29 -36
- package/lib/utils/props.d.ts +2 -2
- package/lib/utils/props.js +15 -7
- package/lib/utils/util.d.ts +2 -2
- package/lib/utils/util.js +2 -2
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +3 -2
- package/packages/components/affix/src/affix.vue +1 -1
- package/packages/components/color-picker/src/index.vue +1 -1
- package/packages/components/form/__tests__/form.spec.ts +1 -1
- package/packages/components/form/src/form-item.vue +2 -2
- package/packages/components/image/src/image.ts +3 -3
- package/packages/components/image/src/image.vue +1 -1
- package/packages/components/image-viewer/__tests__/image-viewer.spec.ts +1 -1
- package/packages/components/image-viewer/index.ts +5 -10
- package/packages/components/image-viewer/src/image-viewer.ts +32 -0
- package/packages/components/image-viewer/src/{index.vue → image-viewer.vue} +73 -82
- package/packages/components/input/__tests__/input.spec.ts +7 -7
- package/packages/components/input/index.ts +5 -10
- package/packages/components/input/src/{calcTextareaHeight.ts → calc-textarea-height.ts} +9 -7
- package/packages/components/input/src/input.ts +100 -0
- package/packages/components/input/src/{index.vue → input.vue} +135 -239
- package/packages/components/menu/src/menu.ts +10 -3
- package/packages/components/progress/src/index.vue +0 -1
- package/packages/components/rate/src/index.vue +1 -1
- package/packages/components/select-v2/src/useSelect.ts +2 -0
- package/packages/components/space/__tests__/space.spec.ts +1 -1
- package/packages/components/switch/__tests__/switch.spec.ts +1 -1
- package/packages/components/table/src/store/tree.ts +18 -3
- package/packages/components/table/src/table-body/render-helper.ts +1 -1
- package/packages/components/table/src/table-column/index.ts +4 -1
- package/packages/components/table/src/table-layout.ts +2 -2
- package/packages/components/table/src/util.ts +1 -1
- package/packages/components/tree/src/model/node.ts +1 -1
- package/packages/element-plus/package.json +3 -2
- package/packages/element-plus/version.ts +1 -1
- package/packages/theme-chalk/package.json +1 -2
- package/packages/theme-chalk/src/message-box.scss +1 -0
- package/packages/utils/dist/es/dom.d.ts +5 -5
- package/packages/utils/dist/es/dom.js +29 -36
- package/packages/utils/dist/es/props.d.ts +2 -2
- package/packages/utils/dist/es/props.js +15 -7
- package/packages/utils/dist/es/util.d.ts +2 -2
- package/packages/utils/dist/es/util.js +3 -3
- package/packages/utils/dist/lib/dom.d.ts +5 -5
- package/packages/utils/dist/lib/dom.js +29 -36
- package/packages/utils/dist/lib/props.d.ts +2 -2
- package/packages/utils/dist/lib/props.js +15 -7
- package/packages/utils/dist/lib/util.d.ts +2 -2
- package/packages/utils/dist/lib/util.js +2 -2
- package/packages/utils/dom.ts +34 -41
- package/packages/utils/props.ts +27 -11
- package/packages/utils/tests/dom.spec.ts +183 -0
- package/packages/utils/util.ts +8 -9
- package/tags.json +1 -1
- package/theme-chalk/el-message-box.css +1 -1
- package/theme-chalk/index.css +1 -1
- package/theme-chalk/src/message-box.scss +1 -0
- package/web-types.json +1 -1
- package/es/components/image-viewer/src/index.vue.d.ts +0 -67
- package/es/components/input/src/calcTextareaHeight.d.ts +0 -6
- package/es/components/input/src/index.vue.d.ts +0 -197
- package/lib/components/image-viewer/src/index.vue.d.ts +0 -67
- package/lib/components/input/src/calcTextareaHeight.d.ts +0 -6
- package/lib/components/input/src/index.vue.d.ts +0 -197
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { withInstall } from '@element-plus/utils/with-install'
|
|
2
2
|
|
|
3
|
-
import
|
|
4
|
-
import type { SFCWithInstall } from '@element-plus/utils/types'
|
|
3
|
+
import ImageViewer from './src/image-viewer.vue'
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
5
|
+
export const ElImageViewer = withInstall(ImageViewer)
|
|
6
|
+
export default ElImageViewer
|
|
9
7
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
export default _ImageViewer
|
|
13
|
-
export const ElImageViewer = _ImageViewer
|
|
8
|
+
export * from './src/image-viewer'
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { buildProps, definePropType, mutable } from '@element-plus/utils/props'
|
|
2
|
+
import type { ExtractPropTypes } from 'vue'
|
|
3
|
+
|
|
4
|
+
export const imageViewerProps = buildProps({
|
|
5
|
+
urlList: {
|
|
6
|
+
type: definePropType<string[]>(Array),
|
|
7
|
+
default: () => mutable([] as const),
|
|
8
|
+
},
|
|
9
|
+
zIndex: {
|
|
10
|
+
type: Number,
|
|
11
|
+
default: 2000,
|
|
12
|
+
},
|
|
13
|
+
initialIndex: {
|
|
14
|
+
type: Number,
|
|
15
|
+
default: 0,
|
|
16
|
+
},
|
|
17
|
+
infinite: {
|
|
18
|
+
type: Boolean,
|
|
19
|
+
default: true,
|
|
20
|
+
},
|
|
21
|
+
hideOnClickModal: {
|
|
22
|
+
type: Boolean,
|
|
23
|
+
default: false,
|
|
24
|
+
},
|
|
25
|
+
} as const)
|
|
26
|
+
export type ImageViewerProps = ExtractPropTypes<typeof imageViewerProps>
|
|
27
|
+
|
|
28
|
+
export const imageViewerEmits = {
|
|
29
|
+
close: () => true,
|
|
30
|
+
switch: (index: number) => typeof index === 'number',
|
|
31
|
+
}
|
|
32
|
+
export type ImageViewerEmits = typeof imageViewerEmits
|
|
@@ -9,11 +9,13 @@
|
|
|
9
9
|
<div
|
|
10
10
|
class="el-image-viewer__mask"
|
|
11
11
|
@click.self="hideOnClickModal && hide()"
|
|
12
|
-
|
|
12
|
+
/>
|
|
13
|
+
|
|
13
14
|
<!-- CLOSE -->
|
|
14
15
|
<span class="el-image-viewer__btn el-image-viewer__close" @click="hide">
|
|
15
|
-
<i class="el-icon-close"
|
|
16
|
+
<i class="el-icon-close" />
|
|
16
17
|
</span>
|
|
18
|
+
|
|
17
19
|
<!-- ARROW -->
|
|
18
20
|
<template v-if="!isSingle">
|
|
19
21
|
<span
|
|
@@ -21,32 +23,32 @@
|
|
|
21
23
|
:class="{ 'is-disabled': !infinite && isFirst }"
|
|
22
24
|
@click="prev"
|
|
23
25
|
>
|
|
24
|
-
<i class="el-icon-arrow-left"
|
|
26
|
+
<i class="el-icon-arrow-left" />
|
|
25
27
|
</span>
|
|
26
28
|
<span
|
|
27
29
|
class="el-image-viewer__btn el-image-viewer__next"
|
|
28
30
|
:class="{ 'is-disabled': !infinite && isLast }"
|
|
29
31
|
@click="next"
|
|
30
32
|
>
|
|
31
|
-
<i class="el-icon-arrow-right"
|
|
33
|
+
<i class="el-icon-arrow-right" />
|
|
32
34
|
</span>
|
|
33
35
|
</template>
|
|
34
36
|
<!-- ACTIONS -->
|
|
35
37
|
<div class="el-image-viewer__btn el-image-viewer__actions">
|
|
36
38
|
<div class="el-image-viewer__actions__inner">
|
|
37
|
-
<i class="el-icon-zoom-out" @click="handleActions('zoomOut')"
|
|
38
|
-
<i class="el-icon-zoom-in" @click="handleActions('zoomIn')"
|
|
39
|
-
<i class="el-image-viewer__actions__divider"
|
|
40
|
-
<i :class="mode.icon" @click="toggleMode"
|
|
41
|
-
<i class="el-image-viewer__actions__divider"
|
|
39
|
+
<i class="el-icon-zoom-out" @click="handleActions('zoomOut')" />
|
|
40
|
+
<i class="el-icon-zoom-in" @click="handleActions('zoomIn')" />
|
|
41
|
+
<i class="el-image-viewer__actions__divider" />
|
|
42
|
+
<i :class="mode.icon" @click="toggleMode" />
|
|
43
|
+
<i class="el-image-viewer__actions__divider" />
|
|
42
44
|
<i
|
|
43
45
|
class="el-icon-refresh-left"
|
|
44
46
|
@click="handleActions('anticlocelise')"
|
|
45
|
-
|
|
47
|
+
/>
|
|
46
48
|
<i
|
|
47
49
|
class="el-icon-refresh-right"
|
|
48
50
|
@click="handleActions('clocelise')"
|
|
49
|
-
|
|
51
|
+
/>
|
|
50
52
|
</div>
|
|
51
53
|
</div>
|
|
52
54
|
<!-- CANVAS -->
|
|
@@ -70,13 +72,22 @@
|
|
|
70
72
|
</template>
|
|
71
73
|
|
|
72
74
|
<script lang="ts">
|
|
73
|
-
import {
|
|
75
|
+
import {
|
|
76
|
+
defineComponent,
|
|
77
|
+
computed,
|
|
78
|
+
ref,
|
|
79
|
+
onMounted,
|
|
80
|
+
watch,
|
|
81
|
+
nextTick,
|
|
82
|
+
effectScope,
|
|
83
|
+
} from 'vue'
|
|
84
|
+
import { useEventListener } from '@vueuse/core'
|
|
74
85
|
import { useLocaleInject } from '@element-plus/hooks'
|
|
75
86
|
import { EVENT_CODE } from '@element-plus/utils/aria'
|
|
76
|
-
import { on, off } from '@element-plus/utils/dom'
|
|
77
87
|
import { rafThrottle, isFirefox } from '@element-plus/utils/util'
|
|
88
|
+
import { imageViewerProps, imageViewerEmits } from './image-viewer'
|
|
78
89
|
|
|
79
|
-
import type {
|
|
90
|
+
import type { CSSProperties } from 'vue'
|
|
80
91
|
|
|
81
92
|
const Mode = {
|
|
82
93
|
CONTAIN: {
|
|
@@ -90,8 +101,6 @@ const Mode = {
|
|
|
90
101
|
}
|
|
91
102
|
|
|
92
103
|
const mousewheelEventName = isFirefox() ? 'DOMMouseScroll' : 'mousewheel'
|
|
93
|
-
const CLOSE_EVENT = 'close'
|
|
94
|
-
const SWITCH_EVENT = 'switch'
|
|
95
104
|
export type ImageViewerAction =
|
|
96
105
|
| 'zoomIn'
|
|
97
106
|
| 'zoomOut'
|
|
@@ -100,42 +109,19 @@ export type ImageViewerAction =
|
|
|
100
109
|
|
|
101
110
|
export default defineComponent({
|
|
102
111
|
name: 'ElImageViewer',
|
|
103
|
-
props: {
|
|
104
|
-
urlList: {
|
|
105
|
-
type: Array as PropType<string[]>,
|
|
106
|
-
default: () => [],
|
|
107
|
-
},
|
|
108
|
-
zIndex: {
|
|
109
|
-
type: Number,
|
|
110
|
-
default: 2000,
|
|
111
|
-
},
|
|
112
|
-
initialIndex: {
|
|
113
|
-
type: Number,
|
|
114
|
-
default: 0,
|
|
115
|
-
},
|
|
116
|
-
infinite: {
|
|
117
|
-
type: Boolean,
|
|
118
|
-
default: true,
|
|
119
|
-
},
|
|
120
|
-
hideOnClickModal: {
|
|
121
|
-
type: Boolean,
|
|
122
|
-
default: false,
|
|
123
|
-
},
|
|
124
|
-
},
|
|
125
112
|
|
|
126
|
-
|
|
113
|
+
props: imageViewerProps,
|
|
114
|
+
emits: imageViewerEmits,
|
|
127
115
|
|
|
128
116
|
setup(props, { emit }) {
|
|
129
117
|
const { t } = useLocaleInject()
|
|
118
|
+
const wrapper = ref<HTMLDivElement>()
|
|
119
|
+
const img = ref<HTMLImageElement>()
|
|
130
120
|
|
|
131
|
-
|
|
132
|
-
let _mouseWheelHandler = null
|
|
133
|
-
let _dragHandler = null
|
|
121
|
+
const scopeEventListener = effectScope()
|
|
134
122
|
|
|
135
123
|
const loading = ref(true)
|
|
136
124
|
const index = ref(props.initialIndex)
|
|
137
|
-
const wrapper = ref(null)
|
|
138
|
-
const img = ref(null)
|
|
139
125
|
const mode = ref(Mode.CONTAIN)
|
|
140
126
|
const transform = ref({
|
|
141
127
|
scale: 1,
|
|
@@ -164,12 +150,12 @@ export default defineComponent({
|
|
|
164
150
|
|
|
165
151
|
const imgStyle = computed(() => {
|
|
166
152
|
const { scale, deg, offsetX, offsetY, enableTransition } = transform.value
|
|
167
|
-
const style = {
|
|
153
|
+
const style: CSSProperties = {
|
|
168
154
|
transform: `scale(${scale}) rotate(${deg}deg)`,
|
|
169
155
|
transition: enableTransition ? 'transform .3s' : '',
|
|
170
156
|
marginLeft: `${offsetX}px`,
|
|
171
157
|
marginTop: `${offsetY}px`,
|
|
172
|
-
}
|
|
158
|
+
}
|
|
173
159
|
if (mode.value.name === Mode.CONTAIN.name) {
|
|
174
160
|
style.maxWidth = style.maxHeight = '100%'
|
|
175
161
|
}
|
|
@@ -177,12 +163,12 @@ export default defineComponent({
|
|
|
177
163
|
})
|
|
178
164
|
|
|
179
165
|
function hide() {
|
|
180
|
-
|
|
181
|
-
emit(
|
|
166
|
+
unregisterEventListener()
|
|
167
|
+
emit('close')
|
|
182
168
|
}
|
|
183
169
|
|
|
184
|
-
function
|
|
185
|
-
|
|
170
|
+
function registerEventListener() {
|
|
171
|
+
const keydownHandler = rafThrottle((e: KeyboardEvent) => {
|
|
186
172
|
switch (e.code) {
|
|
187
173
|
// ESC
|
|
188
174
|
case EVENT_CODE.esc:
|
|
@@ -210,43 +196,44 @@ export default defineComponent({
|
|
|
210
196
|
break
|
|
211
197
|
}
|
|
212
198
|
})
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
199
|
+
const mousewheelHandler = rafThrottle(
|
|
200
|
+
(e: WheelEvent | any /* TODO: wheelDelta is deprecated */) => {
|
|
201
|
+
const delta = e.wheelDelta ? e.wheelDelta : -e.detail
|
|
202
|
+
if (delta > 0) {
|
|
203
|
+
handleActions('zoomIn', {
|
|
204
|
+
zoomRate: 0.015,
|
|
205
|
+
enableTransition: false,
|
|
206
|
+
})
|
|
207
|
+
} else {
|
|
208
|
+
handleActions('zoomOut', {
|
|
209
|
+
zoomRate: 0.015,
|
|
210
|
+
enableTransition: false,
|
|
211
|
+
})
|
|
212
|
+
}
|
|
226
213
|
}
|
|
214
|
+
)
|
|
215
|
+
|
|
216
|
+
scopeEventListener.run(() => {
|
|
217
|
+
useEventListener(document, 'keydown', keydownHandler)
|
|
218
|
+
useEventListener(document, mousewheelEventName, mousewheelHandler)
|
|
227
219
|
})
|
|
228
|
-
on(document, 'keydown', _keyDownHandler)
|
|
229
|
-
on(document, mousewheelEventName, _mouseWheelHandler)
|
|
230
220
|
}
|
|
231
221
|
|
|
232
|
-
function
|
|
233
|
-
|
|
234
|
-
off(document, mousewheelEventName, _mouseWheelHandler)
|
|
235
|
-
_keyDownHandler = null
|
|
236
|
-
_mouseWheelHandler = null
|
|
222
|
+
function unregisterEventListener() {
|
|
223
|
+
scopeEventListener.stop()
|
|
237
224
|
}
|
|
238
225
|
|
|
239
226
|
function handleImgLoad() {
|
|
240
227
|
loading.value = false
|
|
241
228
|
}
|
|
242
229
|
|
|
243
|
-
function handleImgError(e) {
|
|
230
|
+
function handleImgError(e: Event) {
|
|
244
231
|
loading.value = false
|
|
245
|
-
e.target.alt = t('el.image.error')
|
|
232
|
+
;(e.target as HTMLImageElement).alt = t('el.image.error')
|
|
246
233
|
}
|
|
247
234
|
|
|
248
235
|
function handleMouseDown(e: MouseEvent) {
|
|
249
|
-
if (loading.value || e.button !== 0) return
|
|
236
|
+
if (loading.value || e.button !== 0 || !wrapper.value) return
|
|
250
237
|
|
|
251
238
|
const { offsetX, offsetY } = transform.value
|
|
252
239
|
const startX = e.pageX
|
|
@@ -257,17 +244,21 @@ export default defineComponent({
|
|
|
257
244
|
const divTop = wrapper.value.clientTop
|
|
258
245
|
const divBottom = wrapper.value.clientTop + wrapper.value.clientHeight
|
|
259
246
|
|
|
260
|
-
|
|
247
|
+
const dragHandler = rafThrottle((ev: MouseEvent) => {
|
|
261
248
|
transform.value = {
|
|
262
249
|
...transform.value,
|
|
263
250
|
offsetX: offsetX + ev.pageX - startX,
|
|
264
251
|
offsetY: offsetY + ev.pageY - startY,
|
|
265
252
|
}
|
|
266
253
|
})
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
254
|
+
const removeMousemove = useEventListener(
|
|
255
|
+
document,
|
|
256
|
+
'mousemove',
|
|
257
|
+
dragHandler
|
|
258
|
+
)
|
|
259
|
+
useEventListener(document, 'mouseup', (evt) => {
|
|
260
|
+
const mouseX = evt.pageX
|
|
261
|
+
const mouseY = evt.pageY
|
|
271
262
|
if (
|
|
272
263
|
mouseX < divLeft ||
|
|
273
264
|
mouseX > divRight ||
|
|
@@ -276,7 +267,7 @@ export default defineComponent({
|
|
|
276
267
|
) {
|
|
277
268
|
reset()
|
|
278
269
|
}
|
|
279
|
-
|
|
270
|
+
removeMousemove()
|
|
280
271
|
})
|
|
281
272
|
|
|
282
273
|
e.preventDefault()
|
|
@@ -350,7 +341,7 @@ export default defineComponent({
|
|
|
350
341
|
watch(currentImg, () => {
|
|
351
342
|
nextTick(() => {
|
|
352
343
|
const $img = img.value
|
|
353
|
-
if (!$img
|
|
344
|
+
if (!$img?.complete) {
|
|
354
345
|
loading.value = true
|
|
355
346
|
}
|
|
356
347
|
})
|
|
@@ -358,11 +349,11 @@ export default defineComponent({
|
|
|
358
349
|
|
|
359
350
|
watch(index, (val) => {
|
|
360
351
|
reset()
|
|
361
|
-
emit(
|
|
352
|
+
emit('switch', val)
|
|
362
353
|
})
|
|
363
354
|
|
|
364
355
|
onMounted(() => {
|
|
365
|
-
|
|
356
|
+
registerEventListener()
|
|
366
357
|
// add tabindex then wrapper can be focusable via Javascript
|
|
367
358
|
// focus wrapper so arrow key can't cause inner scroll behavior underneath
|
|
368
359
|
wrapper.value?.focus?.()
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { nextTick, ref } from 'vue'
|
|
2
2
|
import { mount } from '@vue/test-utils'
|
|
3
3
|
import { sleep, defineGetter } from '@element-plus/test-utils'
|
|
4
|
-
import Input from '../src/
|
|
4
|
+
import Input from '../src/input.vue'
|
|
5
5
|
|
|
6
6
|
const _mount = (options) =>
|
|
7
7
|
mount({
|
|
@@ -84,17 +84,17 @@ describe('Input.vue', () => {
|
|
|
84
84
|
|
|
85
85
|
const elCount = wrapper.find('.el-input__count-inner')
|
|
86
86
|
expect(elCount.exists()).toBe(true)
|
|
87
|
-
expect(elCount.text()).toBe('3/4')
|
|
87
|
+
expect(elCount.text()).toBe('3 / 4')
|
|
88
88
|
|
|
89
89
|
vm.inputVal = '1👌3😄'
|
|
90
90
|
await sleep()
|
|
91
91
|
expect(nativeInput.value).toBe('1👌3😄')
|
|
92
|
-
expect(elCount.text()).toBe('4/4')
|
|
92
|
+
expect(elCount.text()).toBe('4 / 4')
|
|
93
93
|
|
|
94
94
|
vm.inputVal = '哈哈1👌3😄'
|
|
95
95
|
await sleep()
|
|
96
96
|
expect(nativeInput.value).toBe('哈哈1👌3😄')
|
|
97
|
-
expect(elCount.text()).toBe('6/4')
|
|
97
|
+
expect(elCount.text()).toBe('6 / 4')
|
|
98
98
|
expect(vm.$el.classList.contains('is-exceed')).toBe(true)
|
|
99
99
|
})
|
|
100
100
|
|
|
@@ -113,12 +113,12 @@ describe('Input.vue', () => {
|
|
|
113
113
|
|
|
114
114
|
const elCount = wrapper.find('.el-input__count')
|
|
115
115
|
expect(elCount.exists()).toBe(true)
|
|
116
|
-
expect(elCount.text()).toBe('3/4')
|
|
116
|
+
expect(elCount.text()).toBe('3 / 4')
|
|
117
117
|
|
|
118
118
|
vm.inputVal = '哈哈1👌3😄'
|
|
119
119
|
await sleep()
|
|
120
120
|
expect(nativeInput.value).toBe('哈哈1👌3😄')
|
|
121
|
-
expect(elCount.text()).toBe('6/4')
|
|
121
|
+
expect(elCount.text()).toBe('6 / 4')
|
|
122
122
|
expect(vm.$el.classList.contains('is-exceed')).toBe(true)
|
|
123
123
|
})
|
|
124
124
|
})
|
|
@@ -343,7 +343,7 @@ describe('Input.vue', () => {
|
|
|
343
343
|
ref.autosize.minRows = 5
|
|
344
344
|
ref.resizeTextarea()
|
|
345
345
|
// Atfer this textarea min-height (style) will change
|
|
346
|
-
const nowMinHeight = ref.computedTextareaStyle.minHeight
|
|
346
|
+
const nowMinHeight = ref.computedTextareaStyle[1].minHeight
|
|
347
347
|
expect(originMinHeight).not.toEqual(nowMinHeight)
|
|
348
348
|
})
|
|
349
349
|
})
|
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { withInstall } from '@element-plus/utils/with-install'
|
|
2
2
|
|
|
3
|
-
import
|
|
4
|
-
import type { SFCWithInstall } from '@element-plus/utils/types'
|
|
3
|
+
import Input from './src/input.vue'
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
5
|
+
export const ElInput = withInstall(Input)
|
|
6
|
+
export default ElInput
|
|
9
7
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
export default _Input
|
|
13
|
-
export const ElInput = _Input
|
|
8
|
+
export * from './src/input'
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import { isNumber } from '@element-plus/utils/util'
|
|
2
|
+
|
|
3
|
+
let hiddenTextarea: HTMLTextAreaElement | undefined = undefined
|
|
2
4
|
|
|
3
5
|
const HIDDEN_STYLE = `
|
|
4
6
|
height:0 !important;
|
|
@@ -60,10 +62,10 @@ function calculateNodeStyling(targetElement: Element): NodeStyle {
|
|
|
60
62
|
return { contextStyle, paddingSize, borderSize, boxSizing }
|
|
61
63
|
}
|
|
62
64
|
|
|
63
|
-
export
|
|
64
|
-
targetElement:
|
|
65
|
+
export function calcTextareaHeight(
|
|
66
|
+
targetElement: HTMLTextAreaElement,
|
|
65
67
|
minRows = 1,
|
|
66
|
-
maxRows
|
|
68
|
+
maxRows?: number
|
|
67
69
|
): TextAreaHeight {
|
|
68
70
|
if (!hiddenTextarea) {
|
|
69
71
|
hiddenTextarea = document.createElement('textarea')
|
|
@@ -88,7 +90,7 @@ export default function calcTextareaHeight(
|
|
|
88
90
|
hiddenTextarea.value = ''
|
|
89
91
|
const singleRowHeight = hiddenTextarea.scrollHeight - paddingSize
|
|
90
92
|
|
|
91
|
-
if (minRows
|
|
93
|
+
if (isNumber(minRows)) {
|
|
92
94
|
let minHeight = singleRowHeight * minRows
|
|
93
95
|
if (boxSizing === 'border-box') {
|
|
94
96
|
minHeight = minHeight + paddingSize + borderSize
|
|
@@ -96,7 +98,7 @@ export default function calcTextareaHeight(
|
|
|
96
98
|
height = Math.max(minHeight, height)
|
|
97
99
|
result.minHeight = `${minHeight}px`
|
|
98
100
|
}
|
|
99
|
-
if (maxRows
|
|
101
|
+
if (isNumber(maxRows)) {
|
|
100
102
|
let maxHeight = singleRowHeight * maxRows
|
|
101
103
|
if (boxSizing === 'border-box') {
|
|
102
104
|
maxHeight = maxHeight + paddingSize + borderSize
|
|
@@ -105,7 +107,7 @@ export default function calcTextareaHeight(
|
|
|
105
107
|
}
|
|
106
108
|
result.height = `${height}px`
|
|
107
109
|
hiddenTextarea.parentNode?.removeChild(hiddenTextarea)
|
|
108
|
-
hiddenTextarea =
|
|
110
|
+
hiddenTextarea = undefined
|
|
109
111
|
|
|
110
112
|
return result
|
|
111
113
|
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { isString } from '@vue/shared'
|
|
2
|
+
import { useFormItemProps } from '@element-plus/hooks'
|
|
3
|
+
import { buildProps, definePropType, mutable } from '@element-plus/utils/props'
|
|
4
|
+
import { UPDATE_MODEL_EVENT } from '@element-plus/utils/constants'
|
|
5
|
+
import type { StyleValue } from '@element-plus/utils/types'
|
|
6
|
+
import type { ExtractPropTypes } from 'vue'
|
|
7
|
+
|
|
8
|
+
type AutoSize = { minRows?: number; maxRows?: number } | boolean
|
|
9
|
+
|
|
10
|
+
export const inputProps = buildProps({
|
|
11
|
+
...useFormItemProps,
|
|
12
|
+
modelValue: {
|
|
13
|
+
type: definePropType<string | number | null | undefined>(undefined),
|
|
14
|
+
default: '',
|
|
15
|
+
},
|
|
16
|
+
type: {
|
|
17
|
+
type: String,
|
|
18
|
+
default: 'text',
|
|
19
|
+
},
|
|
20
|
+
resize: {
|
|
21
|
+
type: String,
|
|
22
|
+
values: ['none', 'both', 'horizontal', 'vertical'],
|
|
23
|
+
},
|
|
24
|
+
autosize: {
|
|
25
|
+
type: definePropType<AutoSize>([Boolean, Object]),
|
|
26
|
+
default: false,
|
|
27
|
+
},
|
|
28
|
+
autocomplete: {
|
|
29
|
+
type: String,
|
|
30
|
+
default: 'off',
|
|
31
|
+
},
|
|
32
|
+
placeholder: {
|
|
33
|
+
type: String,
|
|
34
|
+
},
|
|
35
|
+
form: {
|
|
36
|
+
type: String,
|
|
37
|
+
default: '',
|
|
38
|
+
},
|
|
39
|
+
readonly: {
|
|
40
|
+
type: Boolean,
|
|
41
|
+
default: false,
|
|
42
|
+
},
|
|
43
|
+
clearable: {
|
|
44
|
+
type: Boolean,
|
|
45
|
+
default: false,
|
|
46
|
+
},
|
|
47
|
+
showPassword: {
|
|
48
|
+
type: Boolean,
|
|
49
|
+
default: false,
|
|
50
|
+
},
|
|
51
|
+
showWordLimit: {
|
|
52
|
+
type: Boolean,
|
|
53
|
+
default: false,
|
|
54
|
+
},
|
|
55
|
+
suffixIcon: {
|
|
56
|
+
type: String,
|
|
57
|
+
default: '',
|
|
58
|
+
},
|
|
59
|
+
prefixIcon: {
|
|
60
|
+
type: String,
|
|
61
|
+
default: '',
|
|
62
|
+
},
|
|
63
|
+
label: {
|
|
64
|
+
type: String,
|
|
65
|
+
},
|
|
66
|
+
tabindex: {
|
|
67
|
+
type: [Number, String],
|
|
68
|
+
},
|
|
69
|
+
validateEvent: {
|
|
70
|
+
type: Boolean,
|
|
71
|
+
default: true,
|
|
72
|
+
},
|
|
73
|
+
inputStyle: {
|
|
74
|
+
type: definePropType<StyleValue>([Object, Array, String]),
|
|
75
|
+
default: () => mutable({} as const),
|
|
76
|
+
},
|
|
77
|
+
maxlength: {
|
|
78
|
+
type: [Number, String],
|
|
79
|
+
},
|
|
80
|
+
widget: {
|
|
81
|
+
type: String
|
|
82
|
+
}
|
|
83
|
+
} as const)
|
|
84
|
+
export type InputProps = ExtractPropTypes<typeof inputProps>
|
|
85
|
+
|
|
86
|
+
export const inputEmits = {
|
|
87
|
+
[UPDATE_MODEL_EVENT]: (value: string) => isString(value),
|
|
88
|
+
input: (value: string) => isString(value),
|
|
89
|
+
change: (value: string) => isString(value),
|
|
90
|
+
focus: (evt: FocusEvent) => evt instanceof FocusEvent,
|
|
91
|
+
blur: (evt: FocusEvent) => evt instanceof FocusEvent,
|
|
92
|
+
clear: () => true,
|
|
93
|
+
mouseleave: (evt: MouseEvent) => evt instanceof MouseEvent,
|
|
94
|
+
mouseenter: (evt: MouseEvent) => evt instanceof MouseEvent,
|
|
95
|
+
keydown: (evt: KeyboardEvent) => evt instanceof KeyboardEvent,
|
|
96
|
+
compositionstart: (evt: CompositionEvent) => evt instanceof CompositionEvent,
|
|
97
|
+
compositionupdate: (evt: CompositionEvent) => evt instanceof CompositionEvent,
|
|
98
|
+
compositionend: (evt: CompositionEvent) => evt instanceof CompositionEvent,
|
|
99
|
+
}
|
|
100
|
+
export type InputEmits = typeof inputEmits
|