mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-16 14:17:22 +01:00
fix(teams): update single select style and correct create/edit issue
This commit is contained in:
@@ -4,6 +4,7 @@
|
|||||||
ref="dropdown"
|
ref="dropdown"
|
||||||
class="inline-dropdown select-multi"
|
class="inline-dropdown select-multi"
|
||||||
:toggle-class="isOpened ? 'active' : null"
|
:toggle-class="isOpened ? 'active' : null"
|
||||||
|
:class="{'margin-adjust': selectedItem}"
|
||||||
@show="wasOpened()"
|
@show="wasOpened()"
|
||||||
@hide="hideCallback($event)"
|
@hide="hideCallback($event)"
|
||||||
@toggle="openOrClose($event)"
|
@toggle="openOrClose($event)"
|
||||||
@@ -21,9 +22,18 @@
|
|||||||
<template v-slot:button-content>
|
<template v-slot:button-content>
|
||||||
<div
|
<div
|
||||||
v-if="selectedItem !== null"
|
v-if="selectedItem !== null"
|
||||||
|
class="selected-item mr-1 d-inline-flex align-items-center"
|
||||||
|
@click.stop="selectItem({id: selectedItem})"
|
||||||
|
>
|
||||||
|
<div
|
||||||
v-markdown="allItemsMap[selectedItem].name"
|
v-markdown="allItemsMap[selectedItem].name"
|
||||||
class="label"
|
class="multi-label my-auto ml-75 mr-2"
|
||||||
></div>
|
></div>
|
||||||
|
<div
|
||||||
|
class="remove ml-auto mr-75"
|
||||||
|
v-html="icons.remove"
|
||||||
|
></div>
|
||||||
|
</div>
|
||||||
<div
|
<div
|
||||||
v-else
|
v-else
|
||||||
>
|
>
|
||||||
@@ -50,25 +60,12 @@
|
|||||||
class="label"
|
class="label"
|
||||||
></div>
|
></div>
|
||||||
<div
|
<div
|
||||||
v-if="item.challenge"
|
v-if="item.addlText"
|
||||||
class="addl-text"
|
|
||||||
>
|
|
||||||
{{ $t('challenge') }}
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
v-else-if="item.addlText"
|
|
||||||
class="addl-text"
|
class="addl-text"
|
||||||
>
|
>
|
||||||
{{ item.addlText }}
|
{{ item.addlText }}
|
||||||
</div>
|
</div>
|
||||||
</b-dropdown-item-button>
|
</b-dropdown-item-button>
|
||||||
|
|
||||||
<div
|
|
||||||
v-if="addNew"
|
|
||||||
class="hint"
|
|
||||||
>
|
|
||||||
{{ $t('pressEnterToAddTag', { tagName: search }) }}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</b-dropdown>
|
</b-dropdown>
|
||||||
</div>
|
</div>
|
||||||
@@ -79,6 +76,45 @@
|
|||||||
|
|
||||||
$itemHeight: 2rem;
|
$itemHeight: 2rem;
|
||||||
|
|
||||||
|
.selected-item {
|
||||||
|
display: inline-block;
|
||||||
|
height: 1.5rem;
|
||||||
|
border-radius: 100px;
|
||||||
|
background-color: $white;
|
||||||
|
border: solid 1px $gray-400;
|
||||||
|
position: relative;
|
||||||
|
top: -1px;
|
||||||
|
|
||||||
|
.multi-label {
|
||||||
|
height: 1rem;
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 16px;
|
||||||
|
letter-spacing: normal;
|
||||||
|
color: $gray-100;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
.remove svg path {
|
||||||
|
stroke: $maroon-50;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.remove {
|
||||||
|
display: inline-block;
|
||||||
|
object-fit: contain;
|
||||||
|
margin-top: -0.125rem;
|
||||||
|
|
||||||
|
svg {
|
||||||
|
width: 0.5rem;
|
||||||
|
height: 0.5rem;
|
||||||
|
|
||||||
|
path {
|
||||||
|
stroke: $gray-200;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.select-multi {
|
.select-multi {
|
||||||
.dropdown-toggle {
|
.dropdown-toggle {
|
||||||
padding-left: 0.75rem;
|
padding-left: 0.75rem;
|
||||||
@@ -170,6 +206,7 @@
|
|||||||
<script>
|
<script>
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import markdownDirective from '@/directives/markdown';
|
import markdownDirective from '@/directives/markdown';
|
||||||
|
import removeIcon from '@/assets/svg/remove.svg';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
directives: {
|
directives: {
|
||||||
@@ -188,10 +225,6 @@ export default {
|
|||||||
emptyMessage: {
|
emptyMessage: {
|
||||||
type: String,
|
type: String,
|
||||||
},
|
},
|
||||||
pillInvert: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
searchPlaceholder: {
|
searchPlaceholder: {
|
||||||
type: String,
|
type: String,
|
||||||
},
|
},
|
||||||
@@ -205,6 +238,9 @@ export default {
|
|||||||
isOpened: false,
|
isOpened: false,
|
||||||
selected: this.selectedItem,
|
selected: this.selectedItem,
|
||||||
search: '',
|
search: '',
|
||||||
|
icons: Object.freeze({
|
||||||
|
remove: removeIcon,
|
||||||
|
}),
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
|||||||
@@ -1491,25 +1491,20 @@ export default {
|
|||||||
this.$emit('cancel');
|
this.$emit('cancel');
|
||||||
},
|
},
|
||||||
async toggleAssignment (memberId) {
|
async toggleAssignment (memberId) {
|
||||||
if (this.purpose !== 'create') {
|
if (this.purpose === 'edit') {
|
||||||
if (this.assignedMember === null) {
|
if (this.assignedMember && this.assignedMember !== memberId) {
|
||||||
await this.$store.dispatch('tasks:unassignTask', {
|
|
||||||
taskId: this.task._id,
|
|
||||||
userId: memberId,
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
await this.$store.dispatch('tasks:unassignTask', {
|
await this.$store.dispatch('tasks:unassignTask', {
|
||||||
taskId: this.task._id,
|
taskId: this.task._id,
|
||||||
userId: this.assignedMember,
|
userId: this.assignedMember,
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
if (memberId) {
|
||||||
await this.$store.dispatch('tasks:assignTask', {
|
await this.$store.dispatch('tasks:assignTask', {
|
||||||
taskId: this.task._id,
|
taskId: this.task._id,
|
||||||
userId: memberId,
|
userId: memberId,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.assignedMember = memberId;
|
this.assignedMember = memberId;
|
||||||
},
|
},
|
||||||
focusInput () {
|
focusInput () {
|
||||||
|
|||||||
Reference in New Issue
Block a user