Whalebird-desktop-client-ma.../src/renderer/components/TimelineSpace/Contents/Hashtag.vue

109 lines
2.4 KiB
Vue

<template>
<div id="hashtag">
<div class="search-header" v-loading="false">
<el-form>
<div class="form-wrapper">
<div class="form-item" v-show="tagPage()">
<el-button type="text" @click="back">
<font-awesome-icon icon="chevron-left" />
</el-button>
</div>
<div class="form-item input">
<input v-model="tag" :placeholder="$t('hashtag.tag_name')" class="search-keyword" v-on:keyup.enter="search" autofocus />
</div>
<div class="form-item" v-show="tagPage()">
<el-button type="text" @click="save" :title="$t('hashtag.save_tag')">
<font-awesome-icon icon="thumbtack" />
</el-button>
</div>
</div>
</el-form>
</div>
<router-view></router-view>
</div>
</template>
<script>
export default {
name: 'hashtag',
data() {
return {
tag: ''
}
},
mounted() {
if (this.$route.name === 'tag') {
this.tag = this.$route.params.tag
}
},
watch: {
$route: function (route) {
if (route.name === 'tag') {
this.tag = route.params.tag
}
}
},
methods: {
id() {
return this.$route.params.id
},
search() {
this.$router.push({ path: `/${this.id()}/hashtag/${this.tag}` })
},
tagPage() {
return this.$route.name === 'tag'
},
back() {
this.$router.push({ path: `/${this.id()}/hashtag` })
},
save() {
this.$store.dispatch('TimelineSpace/Contents/Hashtag/saveTag', this.tag)
}
}
}
</script>
<style lang="scss" scoped>
#hashtag {
border-top: 1px solid var(--theme-border-color);
height: calc(100% - 1px);
overflow: hidden;
.search-header {
background-color: var(--theme-selected-background-color);
padding: 8px 12px;
.form-wrapper {
display: flex;
align-items: center;
.input {
flex-grow: 3;
}
.form-item {
margin: auto 8px;
.el-button {
padding: 0;
}
}
.search-keyword {
width: 100%;
background-color: var(--theme-background-color);
border: none;
border-radius: 0 4px 4px 0;
color: var(--theme-primary-color);
line-height: 40px;
height: 40px;
padding: 0 15px;
outline: 0;
font-size: 14px;
box-sizing: border-box;
}
}
}
}
</style>