| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- <template>
- <transition name="el-zoom-in-top" @after-leave="doDestroy">
- <div
- class="el-color-dropdown"
- v-show="showPopper">
- <div class="el-color-dropdown__main-wrapper">
- <hue-slider ref="hue" :color="color" vertical style="float: right;"></hue-slider>
- <sv-panel ref="sl" :color="color"></sv-panel>
- </div>
- <alpha-slider v-if="showAlpha" ref="alpha" :color="color"></alpha-slider>
- <predefine v-if="predefine" :color="color" :colors="predefine"></predefine>
- <div class="el-color-dropdown__btns">
- <span class="el-color-dropdown__value">
- <el-input
- v-model="customInput"
- @keyup.native.enter="handleConfirm"
- @blur="handleConfirm"
- :validate-event="false"
- size="mini">
- </el-input>
- </span>
- <el-button
- size="mini"
- type="text"
- class="el-color-dropdown__link-btn"
- @click="$emit('clear')">
- {{ t('el.colorpicker.clear') }}
- </el-button>
- <el-button
- plain
- size="mini"
- class="el-color-dropdown__btn"
- @click="confirmValue">
- {{ t('el.colorpicker.confirm') }}
- </el-button>
- </div>
- </div>
- </transition>
- </template>
- <script>
- import SvPanel from './sv-panel';
- import HueSlider from './hue-slider';
- import AlphaSlider from './alpha-slider';
- import Predefine from './predefine';
- import Popper from 'element-ui/src/utils/vue-popper';
- import Locale from 'element-ui/src/mixins/locale';
- import ElInput from 'element-ui/packages/input';
- import ElButton from 'element-ui/packages/button';
- export default {
- name: 'el-color-picker-dropdown',
- mixins: [Popper, Locale],
- components: {
- SvPanel,
- HueSlider,
- AlphaSlider,
- ElInput,
- ElButton,
- Predefine
- },
- props: {
- color: {
- required: true
- },
- showAlpha: Boolean,
- predefine: Array
- },
- data() {
- return {
- customInput: ''
- };
- },
- computed: {
- currentColor() {
- const parent = this.$parent;
- return !parent.value && !parent.showPanelColor ? '' : parent.color.value;
- }
- },
- methods: {
- confirmValue() {
- this.$emit('pick');
- },
- handleConfirm() {
- this.color.fromString(this.customInput);
- }
- },
- mounted() {
- this.$parent.popperElm = this.popperElm = this.$el;
- this.referenceElm = this.$parent.$el;
- },
- watch: {
- showPopper(val) {
- if (val === true) {
- this.$nextTick(() => {
- const { sl, hue, alpha } = this.$refs;
- sl && sl.update();
- hue && hue.update();
- alpha && alpha.update();
- });
- }
- },
- currentColor: {
- immediate: true,
- handler(val) {
- this.customInput = val;
- }
- }
- }
- };
- </script>
|