123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- <template>
- <div class="configurator-action">
- <div class="action-group">
- <el-tooltip :content="getActionDisplayName('undo')">
- <img
- src="../../assets/images/icon-undo.svg"
- @click="onUndo"
- :class="{ 'active': userConfigHistory.length > 0 }"
- />
- </el-tooltip>
- <el-tooltip :content="getActionDisplayName('redo')">
- <img
- src="../../assets/images/icon-redo.svg"
- @click="onRedo"
- :class="{ 'active': userConfigRedoHistory.length > 0 }"
- />
- </el-tooltip>
- <div class="button-group">
- <el-button
- class="reset"
- type="primary"
- round
- size="mini"
- :disabled="isOfficial"
- @click="onReset"
- >
- {{getActionDisplayName('reset-theme')}}
- </el-button>
- <el-button
- class="download"
- type="primary"
- round
- size="mini"
- :disabled="downloadDisabled"
- @click="onDownload"
- >
- {{getActionDisplayName('download-theme')}}
- </el-button>
- </div>
- </div>
- <el-select v-model="selectedComponent" class="selector">
- <el-option
- v-for="item in selectOptions"
- :key="item.value"
- :label="item.label"
- :value="item.value">
- </el-option>
- </el-select>
- <div class="line"></div>
- </div>
- </template>
- <style lang="scss">
- .configurator-action {
- padding: 15px 18px 0;
- .action-group {
- padding: 5px 0;
- img {
- cursor: not-allowed;
- width: 16px;
- height: 16px;
- padding: 7px 0;
- margin-left: 5px;
- opacity: .5;
- &.active {
- opacity: 1;
- cursor: pointer;
- }
- &:last-of-type {
- margin-left: 10px;
- }
- }
- .button-group {
- float: right;
- .el-button {
- padding: 6px 15px;
- &.is-disabled {
- color: #C0C4CC;
- background-color: #fff;
- border-color: #EBEEF5;
- }
- }
- .reset {
- background: #E6F1FC;
- color: #1989FA;
- border-color: #A2CFFC;
- }
- .download {
- background: #1989FA;
- color: #FFF;
- border-color: #1989FA
- }
- }
- }
- .selector {
- width: 100%;
- input {
- background: #f5f7fa;
- border: none;
- font-size: 18px;
- padding-left: 0;
- color: #606266;
- }
- }
- .line {
- width: 100%;
- height: 0;
- border-bottom: 1px solid #DCDFE6;
- }
- }
- </style>
- <script>
- import { getActionDisplayName } from './utils/utils';
- export default {
- props: {
- selectOptions: Array,
- userConfigHistory: Array,
- userConfigRedoHistory: Array,
- isOfficial: Boolean,
- onUndo: Function,
- onRedo: Function
- },
- data() {
- return {
- selectedComponent: 'color',
- downloadDisabled: false
- };
- },
- watch: {
- selectedComponent: {
- handler(val) {
- this.$emit('select', val);
- }
- }
- },
- methods: {
- getActionDisplayName(key) {
- return getActionDisplayName(key);
- },
- onReset() {
- this.$parent.onReset();
- },
- onDownload() {
- this.downloadDisabled = true;
- this.$parent.onDownload();
- setTimeout(() => {
- this.downloadDisabled = false;
- }, 2500);
- }
- }
- };
- </script>
|