iep-ui
Version:
An enterprise-class UI design language and Vue-based implementation
326 lines (290 loc) • 9.09 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _babelHelperVueJsxMergeProps = require('babel-helper-vue-jsx-merge-props');
var _babelHelperVueJsxMergeProps2 = _interopRequireDefault(_babelHelperVueJsxMergeProps);
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _configConsumerProps = require('../config-provider/configConsumerProps');
var _vueTypes = require('../_util/vue-types');
var _vueTypes2 = _interopRequireDefault(_vueTypes);
var _upload = require('../upload');
var _upload2 = _interopRequireDefault(_upload);
var _dropdown = require('../dropdown');
var _dropdown2 = _interopRequireDefault(_dropdown);
var _slider = require('../slider');
var _slider2 = _interopRequireDefault(_slider);
var _propsUtil = require('../_util/props-util');
var _left = require('./icons/left');
var _left2 = _interopRequireDefault(_left);
var _right = require('./icons/right');
var _right2 = _interopRequireDefault(_right);
var _add = require('./icons/add');
var _add2 = _interopRequireDefault(_add);
var _reduce = require('./icons/reduce');
var _reduce2 = _interopRequireDefault(_reduce);
var _vueCropper = require('vue-cropper');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function getBase64(img, callback) {
var reader = new FileReader();
reader.addEventListener('load', function () {
return callback(reader.result);
});
reader.readAsDataURL(img);
}
exports['default'] = {
name: 'IepSundryUpload',
props: (0, _extends3['default'])({}, _upload2['default'].props, {
cropper: _vueTypes2['default'].bool.def(false),
dataType: _vueTypes2['default'].oneOf(['base64', 'blob']).def('base64')
}),
inject: {
configProvider: { 'default': function _default() {
return _configConsumerProps.ConfigConsumerProps;
} }
},
data: function data() {
return {
localFile: undefined,
visible: false,
rotate: 0,
zoom: 0
};
},
methods: {
handleUpload: function handleUpload(e) {
var _this = this;
if (this.$props.cropper) {
getBase64(e, function (imageUrl) {
_this.localFile = imageUrl;
_this.visible = true;
});
} else {
return e;
}
},
handleTools: function handleTools(e) {
var _this2 = this;
switch (e) {
case 1:
if (this.zoom === -100) {
return false;
}
this.zoom -= 10;
if (this.zoom < -100) {
this.zoom = -100;
}
this.$refs.cropper.changeScale(-1);
break;
case 2:
if (this.zoom === 100) {
return false;
}
this.zoom += 10;
if (this.zoom > 100) {
this.zoom = 100;
}
this.$refs.cropper.changeScale(1);
break;
case 3:
if (this.rotate === 0) {
return false;
}
this.$refs.cropper.rotateRight();
this.rotate -= 90;
if (this.rotate < 0) {
this.rotate = 0;
}
break;
case 4:
if (this.rotate === 360) {
return false;
}
this.$refs.cropper.rotateLeft();
this.rotate += 90;
if (this.rotate > 360) {
this.rotate = 360;
}
break;
case 5:
this.visible = false;
break;
case 6:
if (this.$props.dataType === 'base64') {
this.$refs.cropper.getCropData(function (data) {
_this2.$emit('cropper', data);
_this2.visible = false;
});
} else {
this.$refs.cropper.getCropBlob(function (data) {
_this2.$emit('cropper', data);
_this2.visible = false;
});
}
break;
case 7:
this.visible = false;
break;
}
}
},
render: function render() {
var _this3 = this;
var h = arguments[0];
var customizePrefixCls = this.prefixCls,
$props = this.$props,
$slots = this.$slots,
visible = this.visible,
rotate = this.rotate,
zoom = this.zoom,
handleTools = this.handleTools;
var getPrefixCls = this.configProvider.getPrefixCls;
var prefixCls = getPrefixCls('iep-sundry-upload', customizePrefixCls);
var uploadProps = {
props: (0, _extends3['default'])({}, $props, {
transformFile: function transformFile(e) {
return _this3.handleUpload(e);
}
}),
on: (0, _propsUtil.getListeners)(this)
};
var cropperProps = {
props: {
img: this.localFile,
autoCrop: true
}
};
return h(
'div',
{ 'class': prefixCls },
[h(
_dropdown2['default'],
{
attrs: { visible: visible }
},
[visible ? h(
'div',
{ 'class': prefixCls + '-cropper', slot: 'overlay' },
[h(
'div',
{ 'class': prefixCls + '-cropper-header' },
[h(
'div',
{ 'class': prefixCls + '-cropper-header-text' },
['\u7F16\u8F91\u56FE\u7247']
), h(
'div',
{ 'class': prefixCls + '-cropper-header-icon', on: {
'click': function click() {
return handleTools(7);
}
}
},
[h('a-iep-icon', {
attrs: { type: 'basic_linear_button_close', color: '#9DABC6' }
})]
)]
), h(
'div',
{ 'class': prefixCls + '-cropper-body' },
[h(
'div',
{ 'class': prefixCls + '-cropper-body-picture' },
[h(_vueCropper.VueCropper, (0, _babelHelperVueJsxMergeProps2['default'])([cropperProps, { ref: 'cropper' }]))]
), h(
'div',
{ 'class': prefixCls + '-cropper-body-tools' },
[h(
'div',
{ 'class': prefixCls + '-cropper-body-tools-item' },
[h(
'div',
{ 'class': prefixCls + '-cropper-body-tools-item-btn', on: {
'click': function click() {
return handleTools(1);
}
}
},
[h(_reduce2['default'])]
), h(
'div',
{ 'class': prefixCls + '-cropper-body-tools-item-core' },
[h(_slider2['default'], {
attrs: { min: -100, max: 100, step: 10, value: zoom }
})]
), h(
'div',
{ 'class': prefixCls + '-cropper-body-tools-item-btn', on: {
'click': function click() {
return handleTools(2);
}
}
},
[h(_add2['default'])]
)]
), h(
'div',
{ 'class': prefixCls + '-cropper-body-tools-item' },
[h(
'div',
{ 'class': prefixCls + '-cropper-body-tools-item-btn', on: {
'click': function click() {
return handleTools(3);
}
}
},
[h(_left2['default'])]
), h(
'div',
{ 'class': prefixCls + '-cropper-body-tools-item-core' },
[h(_slider2['default'], {
attrs: { min: 0, max: 360, step: 90, value: rotate }
})]
), h(
'div',
{ 'class': prefixCls + '-cropper-body-tools-item-btn', on: {
'click': function click() {
return handleTools(4);
}
}
},
[h(_right2['default'])]
)]
)]
)]
), h(
'div',
{ 'class': prefixCls + '-cropper-footer' },
[h(
'a-button',
{
on: {
'click': function click() {
return handleTools(5);
}
}
},
['\u53D6\u6D88']
), h(
'a-button',
{
attrs: { type: 'primary' },
on: {
'click': function click() {
return handleTools(6);
}
}
},
['\u786E\u5B9A']
)]
)]
) : null, h(
_upload2['default'],
uploadProps,
[$slots['default']]
)]
)]
);
}
};