Merge pull request #4353 from icarusion/ColorPicker-add-editable-prop

ColorPicker add editable prop
This commit is contained in:
Aresn 2018-08-24 16:56:49 +08:00 committed by GitHub
commit d411992d07
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 39 additions and 148 deletions

View file

@ -82,7 +82,12 @@
@picker-color="handleSelectColor"></recommend-colors>
</div>
<div :class="[prefixCls + '-confirm']">
<span :class="[prefixCls + '-confirm-color']">{{formatColor}}</span>
<span :class="confirmColorClasses">
<template v-if="editable">
<i-input :value="formatColor" size="small" @on-enter="handleEditColor" @on-blur="handleEditColor"></i-input>
</template>
<template v-else>{{formatColor}}</template>
</span>
<i-button
ref="clear"
:tabindex="0"
@ -118,6 +123,7 @@ import RecommendColors from './recommend-colors.vue';
import Saturation from './saturation.vue';
import Hue from './hue.vue';
import Alpha from './alpha.vue';
import iInput from '../input/input.vue';
import Locale from '../../mixins/locale';
import {oneOf} from '../../utils/assist';
import Emitter from '../../mixins/emitter';
@ -127,7 +133,7 @@ import {changeColor, toRGBAString} from './utils';
export default {
name: 'ColorPicker',
components: {Drop, RecommendColors, Saturation, Hue, Alpha},
components: {Drop, RecommendColors, Saturation, Hue, Alpha, iInput},
directives: {clickOutside, TransferDom},
@ -209,6 +215,10 @@ export default {
type: String,
default: undefined,
},
editable: {
type: Boolean,
default: true
},
},
data() {
@ -334,6 +344,14 @@ export default {
return saturationColors.hex;
},
confirmColorClasses () {
return [
`${this.prefixCls}-confirm-color`,
{
[`${this.prefixCls}-confirm-color-editable`]: this.editable
}
];
}
},
watch: {
@ -419,6 +437,10 @@ export default {
this.val = changeColor(color);
this.$emit('on-active-change', this.formatColor);
},
handleEditColor (event) {
const value = event.target.value;
this.handleSelectColor(value);
},
handleFirstTab(event) {
if (event.shiftKey) {
event.preventDefault();