@fe6/water-pro
Version:
An enterprise-class UI design language and Vue-based implementation
68 lines (62 loc) • 2.18 kB
JavaScript
import { createVNode as _createVNode } from "vue";
import { defineComponent, ref } from 'vue';
import Modal from '../modal';
import Image from '../image';
import Typography from '../typography';
import PropTypes from '../_util/vue-types';
import useConfigInject from '../_util/hooks/useConfigInject';
import { errorUploadImage } from '../config-provider/error-image';
export default defineComponent({
name: 'APreviewImage',
props: {
value: PropTypes.string.def(''),
placeholder: PropTypes.string,
errorImage: PropTypes.string
},
emits: ['changeUpload', 'change'],
setup: function setup(props) {
var _useConfigInject = useConfigInject('preview-image', props),
configProvider = _useConfigInject.configProvider;
var previewPoseterVisible = ref(false);
var previewPoseterImage = ref('');
var handlePoseterPreview = function handlePoseterPreview() {
previewPoseterVisible.value = true;
};
var handlePoseterCancel = function handlePoseterCancel() {
previewPoseterVisible.value = false;
};
return {
handlePoseterPreview: handlePoseterPreview,
previewPoseterVisible: previewPoseterVisible,
previewPoseterImage: previewPoseterImage,
handlePoseterCancel: handlePoseterCancel,
errorBackImage: props.errorImage || errorUploadImage,
configProvider: configProvider
};
},
render: function render() {
var _this = this;
var _a;
return _createVNode("div", null, [_createVNode(Typography.Link, {
"href": "javascript:;",
"onClick": this.handlePoseterPreview
}, {
default: function _default() {
return [_this.placeholder || ((_a = _this.configProvider.locale) === null || _a === void 0 ? void 0 : _a.PreviewImage.placeholder)];
}
}), _createVNode(Modal, {
"visible": this.previewPoseterVisible,
"footer": null,
"onCancel": this.handlePoseterCancel
}, {
default: function _default() {
return [_createVNode(Image, {
"width": "100%",
"src": _this.value,
"preview": false,
"fallback": _this.errorBackImage
}, null)];
}
})]);
}
});