mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-18 23:27:26 +01:00
fix(lint): automatically fix lint warnings
This commit is contained in:
@@ -32,8 +32,8 @@ export default {
|
|||||||
components: {
|
components: {
|
||||||
BaseNotification,
|
BaseNotification,
|
||||||
},
|
},
|
||||||
props: ['notification', 'canRemove'],
|
|
||||||
mixins: [scoreTask, sync],
|
mixins: [scoreTask, sync],
|
||||||
|
props: ['notification', 'canRemove'],
|
||||||
methods: {
|
methods: {
|
||||||
async action () {
|
async action () {
|
||||||
const { task, direction } = this.notification.data;
|
const { task, direction } = this.notification.data;
|
||||||
|
|||||||
@@ -91,7 +91,9 @@
|
|||||||
<div
|
<div
|
||||||
class="btn btn-primary checklist-icons"
|
class="btn btn-primary checklist-icons"
|
||||||
@click="saveWebhook(webhook, index)"
|
@click="saveWebhook(webhook, index)"
|
||||||
> {{ $t('subUpdateTitle') }} </div>
|
>
|
||||||
|
{{ $t('subUpdateTitle') }}
|
||||||
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
|||||||
@@ -4,11 +4,11 @@
|
|||||||
:class="[{ 'opacity-75': locked }, classOverride]"
|
:class="[{ 'opacity-75': locked }, classOverride]"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
|
v-if="locked"
|
||||||
v-once
|
v-once
|
||||||
class="svg-icon lock-icon icon-10 mr-1"
|
class="svg-icon lock-icon icon-10 mr-1"
|
||||||
:class="classOverride ? classOverride : 'gray-200'"
|
:class="classOverride ? classOverride : 'gray-200'"
|
||||||
v-html="icons.lock"
|
v-html="icons.lock"
|
||||||
v-if="locked"
|
|
||||||
>
|
>
|
||||||
</span>
|
</span>
|
||||||
<label
|
<label
|
||||||
|
|||||||
@@ -4,21 +4,23 @@
|
|||||||
:class="{ 'break': maxItems === 0 }"
|
:class="{ 'break': maxItems === 0 }"
|
||||||
>
|
>
|
||||||
<template v-if="items.length === 0">
|
<template v-if="items.length === 0">
|
||||||
<div class="items-none">{{ emptyMessage }}</div>
|
<div class="items-none">
|
||||||
|
{{ emptyMessage }}
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<div
|
<div
|
||||||
|
v-for="item in truncatedSelectedItems"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
:title="item.name"
|
:title="item.name"
|
||||||
class="multi-item mr-1 d-inline-flex align-items-center"
|
class="multi-item mr-1 d-inline-flex align-items-center"
|
||||||
:class="{'margin-adjust': maxItems !== 0, 'pill-invert': pillInvert}"
|
:class="{'margin-adjust': maxItems !== 0, 'pill-invert': pillInvert}"
|
||||||
v-for="item in truncatedSelectedItems"
|
|
||||||
|
|
||||||
@click.stop="removeItem($event, item)"
|
@click.stop="removeItem($event, item)"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="multi-label my-auto ml-75 mr-2"
|
|
||||||
v-markdown="item.name"
|
v-markdown="item.name"
|
||||||
|
class="multi-label my-auto ml-75 mr-2"
|
||||||
></div>
|
></div>
|
||||||
<div
|
<div
|
||||||
class="remove ml-auto mr-75"
|
class="remove ml-auto mr-75"
|
||||||
@@ -26,8 +28,8 @@
|
|||||||
></div>
|
></div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="items-more ml-75"
|
|
||||||
v-if="remainingSelectedItems.length > 0"
|
v-if="remainingSelectedItems.length > 0"
|
||||||
|
class="items-more ml-75"
|
||||||
>
|
>
|
||||||
+{{ remainingSelectedItems.length }}
|
+{{ remainingSelectedItems.length }}
|
||||||
</div>
|
</div>
|
||||||
@@ -135,6 +137,26 @@ export default {
|
|||||||
markdown: markdownDirective,
|
markdown: markdownDirective,
|
||||||
},
|
},
|
||||||
components: {},
|
components: {},
|
||||||
|
props: {
|
||||||
|
addNew: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
emptyMessage: {
|
||||||
|
type: String,
|
||||||
|
},
|
||||||
|
maxItems: {
|
||||||
|
type: Number,
|
||||||
|
default: 3,
|
||||||
|
},
|
||||||
|
pillInvert: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
items: {
|
||||||
|
type: Array,
|
||||||
|
},
|
||||||
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
icons: Object.freeze({
|
icons: Object.freeze({
|
||||||
@@ -158,26 +180,6 @@ export default {
|
|||||||
return this.items.slice(this.maxItems);
|
return this.items.slice(this.maxItems);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
props: {
|
|
||||||
addNew: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
emptyMessage: {
|
|
||||||
type: String,
|
|
||||||
},
|
|
||||||
maxItems: {
|
|
||||||
type: Number,
|
|
||||||
default: 3,
|
|
||||||
},
|
|
||||||
pillInvert: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
items: {
|
|
||||||
type: Array,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
methods: {
|
methods: {
|
||||||
removeItem ($event, item) {
|
removeItem ($event, item) {
|
||||||
this.$emit('remove-item', item.id);
|
this.$emit('remove-item', item.id);
|
||||||
|
|||||||
@@ -1,20 +1,28 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<select-list :items="items"
|
<select-list
|
||||||
|
:items="items"
|
||||||
:key-prop="'icon'"
|
:key-prop="'icon'"
|
||||||
class="difficulty-select"
|
class="difficulty-select"
|
||||||
:class="{disabled: disabled}"
|
:class="{disabled: disabled}"
|
||||||
:disabled="disabled"
|
:disabled="disabled"
|
||||||
:value="selected"
|
:value="selected"
|
||||||
@select="$emit('select', $event.value)">
|
@select="$emit('select', $event.value)"
|
||||||
|
>
|
||||||
<template v-slot:item="{ item, button }">
|
<template v-slot:item="{ item, button }">
|
||||||
<div v-if="item" class="difficulty-item" :class="{ 'isButton': button }">
|
<div
|
||||||
|
v-if="item"
|
||||||
|
class="difficulty-item"
|
||||||
|
:class="{ 'isButton': button }"
|
||||||
|
>
|
||||||
<span class="label">{{ item.label }}</span>
|
<span class="label">{{ item.label }}</span>
|
||||||
|
|
||||||
<div class="svg-icon">
|
<div class="svg-icon">
|
||||||
<span v-for="n in item.stars"
|
<span
|
||||||
|
v-for="n in item.stars"
|
||||||
|
:key="n"
|
||||||
v-html="icons.difficultyTrivial"
|
v-html="icons.difficultyTrivial"
|
||||||
:key="n">
|
>
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -135,6 +143,14 @@ export default {
|
|||||||
components: {
|
components: {
|
||||||
selectList,
|
selectList,
|
||||||
},
|
},
|
||||||
|
props: {
|
||||||
|
disabled: {
|
||||||
|
type: Boolean,
|
||||||
|
},
|
||||||
|
value: {
|
||||||
|
type: Number,
|
||||||
|
},
|
||||||
|
},
|
||||||
data () {
|
data () {
|
||||||
const items = [
|
const items = [
|
||||||
{
|
{
|
||||||
@@ -170,13 +186,5 @@ export default {
|
|||||||
selected: items.find(i => i.value === this.value),
|
selected: items.find(i => i.value === this.value),
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
props: {
|
|
||||||
disabled: {
|
|
||||||
type: Boolean,
|
|
||||||
},
|
|
||||||
value: {
|
|
||||||
type: Number,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,36 +1,40 @@
|
|||||||
multi<template>
|
multi<template>
|
||||||
<div>
|
<div>
|
||||||
<b-dropdown
|
<b-dropdown
|
||||||
|
ref="dropdown"
|
||||||
class="inline-dropdown select-multi"
|
class="inline-dropdown select-multi"
|
||||||
|
:toggle-class="isOpened ? 'active' : null"
|
||||||
@show="wasOpened()"
|
@show="wasOpened()"
|
||||||
@hide="hideCallback($event)"
|
@hide="hideCallback($event)"
|
||||||
@toggle="openOrClose($event)"
|
@toggle="openOrClose($event)"
|
||||||
:toggle-class="isOpened ? 'active' : null"
|
|
||||||
ref="dropdown"
|
|
||||||
>
|
>
|
||||||
<b-dropdown-header>
|
<b-dropdown-header>
|
||||||
<div class="mb-2">
|
<div class="mb-2">
|
||||||
<b-form-input type="text"
|
<b-form-input
|
||||||
:placeholder="searchPlaceholder"
|
|
||||||
v-model="search"
|
v-model="search"
|
||||||
|
type="text"
|
||||||
|
:placeholder="searchPlaceholder"
|
||||||
@keyup.enter="handleSubmit"
|
@keyup.enter="handleSubmit"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<multi-list v-if="selectedItems.length > 0"
|
<multi-list
|
||||||
|
v-if="selectedItems.length > 0"
|
||||||
:add-new="addNew"
|
:add-new="addNew"
|
||||||
:pill-invert="pillInvert"
|
:pill-invert="pillInvert"
|
||||||
:items="selectedItemsAsObjects"
|
:items="selectedItemsAsObjects"
|
||||||
|
:max-items="0"
|
||||||
@remove-item="removeItem($event)"
|
@remove-item="removeItem($event)"
|
||||||
:max-items="0" />
|
/>
|
||||||
|
|
||||||
</b-dropdown-header>
|
</b-dropdown-header>
|
||||||
<template v-slot:button-content>
|
<template v-slot:button-content>
|
||||||
<multi-list :items="selectedItemsAsObjects"
|
<multi-list
|
||||||
|
:items="selectedItemsAsObjects"
|
||||||
:add-new="addNew"
|
:add-new="addNew"
|
||||||
:pill-invert="pillInvert"
|
:pill-invert="pillInvert"
|
||||||
:empty-message="emptyMessage"
|
:empty-message="emptyMessage"
|
||||||
@remove-item="removeItem($event)"/>
|
@remove-item="removeItem($event)"
|
||||||
|
/>
|
||||||
</template>
|
</template>
|
||||||
<div
|
<div
|
||||||
v-if="addNew || availableToSelect.length > 0"
|
v-if="addNew || availableToSelect.length > 0"
|
||||||
@@ -43,20 +47,30 @@ multi<template>
|
|||||||
<b-dropdown-item-button
|
<b-dropdown-item-button
|
||||||
v-for="item in availableToSelect"
|
v-for="item in availableToSelect"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
@click.prevent.stop="selectItem(item)"
|
|
||||||
class="ignore-hide multi-item"
|
class="ignore-hide multi-item"
|
||||||
:class="{ 'none': item.id === 'none', selectListItem: true }"
|
:class="{ 'none': item.id === 'none', selectListItem: true }"
|
||||||
|
@click.prevent.stop="selectItem(item)"
|
||||||
>
|
>
|
||||||
<div class="label" v-markdown="item.name"></div>
|
<div
|
||||||
<div class="challenge" v-if="item.challenge">{{$t('challenge')}}</div>
|
v-markdown="item.name"
|
||||||
|
class="label"
|
||||||
|
></div>
|
||||||
|
<div
|
||||||
|
v-if="item.challenge"
|
||||||
|
class="challenge"
|
||||||
|
>
|
||||||
|
{{ $t('challenge') }}
|
||||||
|
</div>
|
||||||
</b-dropdown-item-button>
|
</b-dropdown-item-button>
|
||||||
|
|
||||||
<div v-if="addNew" class="hint">
|
<div
|
||||||
|
v-if="addNew"
|
||||||
|
class="hint"
|
||||||
|
>
|
||||||
{{ $t('pressEnterToAddTag', { tagName: search }) }}
|
{{ $t('pressEnterToAddTag', { tagName: search }) }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</b-dropdown>
|
</b-dropdown>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -165,6 +179,28 @@ export default {
|
|||||||
components: {
|
components: {
|
||||||
MultiList,
|
MultiList,
|
||||||
},
|
},
|
||||||
|
props: {
|
||||||
|
addNew: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
allItems: {
|
||||||
|
type: Array,
|
||||||
|
},
|
||||||
|
emptyMessage: {
|
||||||
|
type: String,
|
||||||
|
},
|
||||||
|
pillInvert: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
searchPlaceholder: {
|
||||||
|
type: String,
|
||||||
|
},
|
||||||
|
selectedItems: {
|
||||||
|
type: Array,
|
||||||
|
},
|
||||||
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
preventHide: true,
|
preventHide: true,
|
||||||
@@ -173,12 +209,48 @@ export default {
|
|||||||
search: '',
|
search: '',
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
computed: {
|
||||||
|
selectedItemsIdList () {
|
||||||
|
return this.selectedItems
|
||||||
|
? this.selectedItems.map(t => t)
|
||||||
|
: [];
|
||||||
|
},
|
||||||
|
allItemsMap () {
|
||||||
|
const obj = {};
|
||||||
|
this.allItems.forEach(t => {
|
||||||
|
obj[t.id] = t;
|
||||||
|
});
|
||||||
|
return obj;
|
||||||
|
},
|
||||||
|
selectedItemsAsObjects () {
|
||||||
|
return this.selectedItems.map(t => this.allItemsMap[t]);
|
||||||
|
},
|
||||||
|
availableToSelect () {
|
||||||
|
const availableItems = this.allItems.filter(t => !this.selectedItemsIdList.includes(t.id));
|
||||||
|
|
||||||
|
const searchString = this.search.toLowerCase();
|
||||||
|
|
||||||
|
const filteredItems = availableItems.filter(i => i.name.toLowerCase().includes(searchString));
|
||||||
|
|
||||||
|
return filteredItems;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
selected () {
|
||||||
|
this.$emit('changed', this.selected);
|
||||||
|
},
|
||||||
|
},
|
||||||
created () {
|
created () {
|
||||||
document.addEventListener('keyup', this.handleEsc);
|
document.addEventListener('keyup', this.handleEsc);
|
||||||
},
|
},
|
||||||
beforeDestroy () {
|
beforeDestroy () {
|
||||||
document.removeEventListener('keyup', this.handleEsc);
|
document.removeEventListener('keyup', this.handleEsc);
|
||||||
},
|
},
|
||||||
|
mounted () {
|
||||||
|
this.$refs.dropdown.clickOutHandler = () => {
|
||||||
|
this.closeSelectPopup();
|
||||||
|
};
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
closeSelectPopup () {
|
closeSelectPopup () {
|
||||||
this.preventHide = false;
|
this.preventHide = false;
|
||||||
@@ -232,63 +304,5 @@ export default {
|
|||||||
this.search = '';
|
this.search = '';
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
computed: {
|
|
||||||
selectedItemsIdList () {
|
|
||||||
return this.selectedItems
|
|
||||||
? this.selectedItems.map(t => t)
|
|
||||||
: [];
|
|
||||||
},
|
|
||||||
allItemsMap () {
|
|
||||||
const obj = {};
|
|
||||||
this.allItems.forEach(t => {
|
|
||||||
obj[t.id] = t;
|
|
||||||
});
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
selectedItemsAsObjects () {
|
|
||||||
return this.selectedItems.map(t => this.allItemsMap[t]);
|
|
||||||
},
|
|
||||||
availableToSelect () {
|
|
||||||
const availableItems = this.allItems.filter(t => !this.selectedItemsIdList.includes(t.id));
|
|
||||||
|
|
||||||
const searchString = this.search.toLowerCase();
|
|
||||||
|
|
||||||
const filteredItems = availableItems.filter(i => i.name.toLowerCase().includes(searchString));
|
|
||||||
|
|
||||||
return filteredItems;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
addNew: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
allItems: {
|
|
||||||
type: Array,
|
|
||||||
},
|
|
||||||
emptyMessage: {
|
|
||||||
type: String,
|
|
||||||
},
|
|
||||||
pillInvert: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
searchPlaceholder: {
|
|
||||||
type: String,
|
|
||||||
},
|
|
||||||
selectedItems: {
|
|
||||||
type: Array,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
watch: {
|
|
||||||
selected () {
|
|
||||||
this.$emit('changed', this.selected);
|
|
||||||
},
|
|
||||||
},
|
|
||||||
mounted () {
|
|
||||||
this.$refs.dropdown.clickOutHandler = () => {
|
|
||||||
this.closeSelectPopup();
|
|
||||||
};
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<select-list :items="items"
|
<select-list
|
||||||
|
:items="items"
|
||||||
:value="selected"
|
:value="selected"
|
||||||
class="array-select"
|
class="array-select"
|
||||||
:class="{disabled: disabled}"
|
:class="{disabled: disabled}"
|
||||||
:disabled="disabled"
|
:disabled="disabled"
|
||||||
@select="selectItem($event)">
|
@select="selectItem($event)"
|
||||||
|
>
|
||||||
<template v-slot:item="{ item }">
|
<template v-slot:item="{ item }">
|
||||||
<span class="label">{{ $t(item) }}</span>
|
<span class="label">{{ $t(item) }}</span>
|
||||||
</template>
|
</template>
|
||||||
@@ -50,6 +52,15 @@ export default {
|
|||||||
components: {
|
components: {
|
||||||
selectList,
|
selectList,
|
||||||
},
|
},
|
||||||
|
props: {
|
||||||
|
items: {
|
||||||
|
type: Array,
|
||||||
|
},
|
||||||
|
disabled: {
|
||||||
|
type: Boolean,
|
||||||
|
},
|
||||||
|
value: [String, Number, Object],
|
||||||
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
selected: this.items.find(i => i === this.value),
|
selected: this.items.find(i => i === this.value),
|
||||||
@@ -61,14 +72,5 @@ export default {
|
|||||||
this.$emit('select', item);
|
this.$emit('select', item);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
props: {
|
|
||||||
items: {
|
|
||||||
type: Array,
|
|
||||||
},
|
|
||||||
disabled: {
|
|
||||||
type: Boolean,
|
|
||||||
},
|
|
||||||
value: [String, Number, Object],
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -187,7 +187,8 @@
|
|||||||
:class="{open: !task.collapseChecklist}"
|
:class="{open: !task.collapseChecklist}"
|
||||||
@click="collapseChecklist(task)"
|
@click="collapseChecklist(task)"
|
||||||
>
|
>
|
||||||
<div v-once
|
<div
|
||||||
|
v-once
|
||||||
class="svg-icon"
|
class="svg-icon"
|
||||||
v-html="icons.checklist"
|
v-html="icons.checklist"
|
||||||
></div>
|
></div>
|
||||||
|
|||||||
@@ -4,10 +4,10 @@
|
|||||||
:no-close-on-esc="true"
|
:no-close-on-esc="true"
|
||||||
:no-close-on-backdrop="true"
|
:no-close-on-backdrop="true"
|
||||||
size="sm"
|
size="sm"
|
||||||
|
:hide-footer="true"
|
||||||
@hidden="onClose()"
|
@hidden="onClose()"
|
||||||
@show="handleOpen()"
|
@show="handleOpen()"
|
||||||
@shown="focusInput()"
|
@shown="focusInput()"
|
||||||
:hide-footer="true"
|
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
v-if="task"
|
v-if="task"
|
||||||
@@ -26,9 +26,11 @@
|
|||||||
<button
|
<button
|
||||||
class="cancel-task-btn mr-3"
|
class="cancel-task-btn mr-3"
|
||||||
:class="cssClass('headings')"
|
:class="cssClass('headings')"
|
||||||
@click="cancel()"
|
|
||||||
type="button"
|
type="button"
|
||||||
>{{ $t('cancel') }}</button>
|
@click="cancel()"
|
||||||
|
>
|
||||||
|
{{ $t('cancel') }}
|
||||||
|
</button>
|
||||||
<button
|
<button
|
||||||
class="btn btn-secondary d-flex align-items-center justify-content-center"
|
class="btn btn-secondary d-flex align-items-center justify-content-center"
|
||||||
:class="{disabled: !canSave}"
|
:class="{disabled: !canSave}"
|
||||||
@@ -52,7 +54,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<lockable-label
|
<lockable-label
|
||||||
:classOverride="cssClass('headings')"
|
:class-override="cssClass('headings')"
|
||||||
:locked="groupAccessRequiredAndOnPersonalPage || challengeAccessRequired"
|
:locked="groupAccessRequiredAndOnPersonalPage || challengeAccessRequired"
|
||||||
:text="`${$t('text')}*`"
|
:text="`${$t('text')}*`"
|
||||||
/>
|
/>
|
||||||
@@ -69,8 +71,8 @@
|
|||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="form-group mb-0"
|
|
||||||
v-if="isUserTask || isChallengeTask || isOriginalChallengeTask"
|
v-if="isUserTask || isChallengeTask || isOriginalChallengeTask"
|
||||||
|
class="form-group mb-0"
|
||||||
>
|
>
|
||||||
<label
|
<label
|
||||||
class="d-flex align-items-center justify-content-between mb-1"
|
class="d-flex align-items-center justify-content-between mb-1"
|
||||||
@@ -94,11 +96,11 @@
|
|||||||
></textarea>
|
></textarea>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="form-group mb-0 mt-3"
|
|
||||||
v-if="showManagerNotes"
|
v-if="showManagerNotes"
|
||||||
|
class="form-group mb-0 mt-3"
|
||||||
>
|
>
|
||||||
<lockable-label
|
<lockable-label
|
||||||
:classOverride="cssClass('headings')"
|
:class-override="cssClass('headings')"
|
||||||
:locked="groupAccessRequiredAndOnPersonalPage"
|
:locked="groupAccessRequiredAndOnPersonalPage"
|
||||||
:text="$t('managerNotes')"
|
:text="$t('managerNotes')"
|
||||||
/>
|
/>
|
||||||
@@ -143,7 +145,10 @@
|
|||||||
class="option mt-3"
|
class="option mt-3"
|
||||||
>
|
>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label v-once class="mb-1">{{ $t('cost') }}</label>
|
<label
|
||||||
|
v-once
|
||||||
|
class="mb-1"
|
||||||
|
>{{ $t('cost') }}</label>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<div class="input-group-prepend input-group-icon align-items-center">
|
<div class="input-group-prepend input-group-icon align-items-center">
|
||||||
<div
|
<div
|
||||||
@@ -167,9 +172,10 @@
|
|||||||
v-if="checklistEnabled"
|
v-if="checklistEnabled"
|
||||||
class="option mt-3"
|
class="option mt-3"
|
||||||
>
|
>
|
||||||
<checklist :items.sync="task.checklist"
|
<checklist
|
||||||
:disableItems="groupAccessRequiredAndOnPersonalPage"
|
:items.sync="task.checklist"
|
||||||
:disableDrag="groupAccessRequiredAndOnPersonalPage"
|
:disable-items="groupAccessRequiredAndOnPersonalPage"
|
||||||
|
:disable-drag="groupAccessRequiredAndOnPersonalPage"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
@@ -243,10 +249,9 @@
|
|||||||
</div>
|
</div>
|
||||||
<select-difficulty
|
<select-difficulty
|
||||||
:value="task.priority"
|
:value="task.priority"
|
||||||
@select="setDifficulty($event)"
|
|
||||||
:disabled="groupAccessRequiredAndOnPersonalPage || challengeAccessRequired"
|
:disabled="groupAccessRequiredAndOnPersonalPage || challengeAccessRequired"
|
||||||
|
@select="setDifficulty($event)"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
<div
|
<div
|
||||||
v-if="task.type === 'todo' && (task.date
|
v-if="task.type === 'todo' && (task.date
|
||||||
@@ -332,7 +337,6 @@
|
|||||||
required="required"
|
required="required"
|
||||||
:disabled="challengeAccessRequired || groupAccessRequiredAndOnPersonalPage"
|
:disabled="challengeAccessRequired || groupAccessRequiredAndOnPersonalPage"
|
||||||
>
|
>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group-spaced input-group-text">
|
<div class="input-group-spaced input-group-text">
|
||||||
{{ repeatSuffix }}
|
{{ repeatSuffix }}
|
||||||
@@ -352,8 +356,8 @@
|
|||||||
<div class="toggle-group">
|
<div class="toggle-group">
|
||||||
<toggle-checkbox
|
<toggle-checkbox
|
||||||
v-for="(day, dayNumber) in ['su','m','t','w','th','f','s']"
|
v-for="(day, dayNumber) in ['su','m','t','w','th','f','s']"
|
||||||
:tab-index="dayNumber"
|
|
||||||
:key="dayNumber"
|
:key="dayNumber"
|
||||||
|
:tab-index="dayNumber"
|
||||||
:checked.sync="task.repeat[day]"
|
:checked.sync="task.repeat[day]"
|
||||||
:disabled="groupAccessRequiredAndOnPersonalPage || challengeAccessRequired"
|
:disabled="groupAccessRequiredAndOnPersonalPage || challengeAccessRequired"
|
||||||
:text="weekdaysMin(dayNumber)"
|
:text="weekdaysMin(dayNumber)"
|
||||||
@@ -410,14 +414,16 @@
|
|||||||
class="col-12 mb-1"
|
class="col-12 mb-1"
|
||||||
>{{ $t('tags') }}</label>
|
>{{ $t('tags') }}</label>
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<select-multi :selected-items="task.tags"
|
<select-multi
|
||||||
|
ref="selectTag"
|
||||||
|
:selected-items="task.tags"
|
||||||
:all-items="user.tags"
|
:all-items="user.tags"
|
||||||
:add-new="true"
|
:add-new="true"
|
||||||
:empty-message="$t('addTags')"
|
:empty-message="$t('addTags')"
|
||||||
:search-placeholder="$t('enterTag')"
|
:search-placeholder="$t('enterTag')"
|
||||||
@changed="task.tags = $event"
|
@changed="task.tags = $event"
|
||||||
@addNew="addTag"
|
@addNew="addTag"
|
||||||
ref="selectTag" />
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -446,7 +452,10 @@
|
|||||||
v-if="task.type === 'todo'"
|
v-if="task.type === 'todo'"
|
||||||
class="form-group"
|
class="form-group"
|
||||||
>
|
>
|
||||||
<label v-once class="mb-1">{{ $t('sharedCompletion') }}</label>
|
<label
|
||||||
|
v-once
|
||||||
|
class="mb-1"
|
||||||
|
>{{ $t('sharedCompletion') }}</label>
|
||||||
<select-translated-array
|
<select-translated-array
|
||||||
:items="['recurringCompletion', 'singleCompletion', 'allAssignedCompletion']"
|
:items="['recurringCompletion', 'singleCompletion', 'allAssignedCompletion']"
|
||||||
:value="sharedCompletion"
|
:value="sharedCompletion"
|
||||||
@@ -460,18 +469,21 @@
|
|||||||
>{{ $t('assignedTo') }}</label>
|
>{{ $t('assignedTo') }}</label>
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<select-multi
|
<select-multi
|
||||||
|
ref="assignMembers"
|
||||||
:all-items="membersNameAndId"
|
:all-items="membersNameAndId"
|
||||||
:empty-message="$t('unassigned')"
|
:empty-message="$t('unassigned')"
|
||||||
:pill-invert="true"
|
:pill-invert="true"
|
||||||
:search-placeholder="$t('chooseTeamMember')"
|
:search-placeholder="$t('chooseTeamMember')"
|
||||||
:selected-items="assignedMembers"
|
:selected-items="assignedMembers"
|
||||||
@toggle="toggleAssignment($event)"
|
@toggle="toggleAssignment($event)"
|
||||||
ref="assignMembers"
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group flex-group mt-3 mb-4">
|
<div class="form-group flex-group mt-3 mb-4">
|
||||||
<label v-once class="mb-0 flex">{{ $t('approvalRequired') }}</label>
|
<label
|
||||||
|
v-once
|
||||||
|
class="mb-0 flex"
|
||||||
|
>{{ $t('approvalRequired') }}</label>
|
||||||
<toggle-switch
|
<toggle-switch
|
||||||
class="d-inline-block"
|
class="d-inline-block"
|
||||||
:checked="requiresApproval"
|
:checked="requiresApproval"
|
||||||
@@ -506,12 +518,15 @@
|
|||||||
class="option mt-3"
|
class="option mt-3"
|
||||||
>
|
>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label v-once class="mb-1">{{ $t('restoreStreak') }}</label>
|
<label
|
||||||
|
v-once
|
||||||
|
class="mb-1"
|
||||||
|
>{{ $t('restoreStreak') }}</label>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<div class="input-group-prepend streak-addon input-group-icon">
|
<div class="input-group-prepend streak-addon input-group-icon">
|
||||||
<div
|
<div
|
||||||
class="svg-icon"
|
|
||||||
v-once
|
v-once
|
||||||
|
class="svg-icon"
|
||||||
v-html="icons.streak"
|
v-html="icons.streak"
|
||||||
></div>
|
></div>
|
||||||
</div>
|
</div>
|
||||||
@@ -531,8 +546,14 @@
|
|||||||
class="option mt-3"
|
class="option mt-3"
|
||||||
>
|
>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label v-once class="mb-1">{{ $t('restoreStreak') }}</label>
|
<label
|
||||||
<div class="row streak-inputs" :class="{'both': task.up && task.down}">
|
v-once
|
||||||
|
class="mb-1"
|
||||||
|
>{{ $t('restoreStreak') }}</label>
|
||||||
|
<div
|
||||||
|
class="row streak-inputs"
|
||||||
|
:class="{'both': task.up && task.down}"
|
||||||
|
>
|
||||||
<div
|
<div
|
||||||
v-if="task.up"
|
v-if="task.up"
|
||||||
class="positive"
|
class="positive"
|
||||||
@@ -541,8 +562,8 @@
|
|||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<div class="input-group-prepend positive-addon input-group-icon">
|
<div class="input-group-prepend positive-addon input-group-icon">
|
||||||
<div
|
<div
|
||||||
class="svg-icon"
|
|
||||||
v-once
|
v-once
|
||||||
|
class="svg-icon"
|
||||||
v-html="icons.positive"
|
v-html="icons.positive"
|
||||||
></div>
|
></div>
|
||||||
</div>
|
</div>
|
||||||
@@ -563,8 +584,8 @@
|
|||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<div class="input-group-prepend negative-addon input-group-icon">
|
<div class="input-group-prepend negative-addon input-group-icon">
|
||||||
<div
|
<div
|
||||||
class="svg-icon"
|
|
||||||
v-once
|
v-once
|
||||||
|
class="svg-icon"
|
||||||
v-html="icons.negative"
|
v-html="icons.negative"
|
||||||
></div>
|
></div>
|
||||||
</div>
|
</div>
|
||||||
@@ -595,8 +616,8 @@
|
|||||||
@click="destroy()"
|
@click="destroy()"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="svg-icon"
|
|
||||||
v-once
|
v-once
|
||||||
|
class="svg-icon"
|
||||||
v-html="icons.destroy"
|
v-html="icons.destroy"
|
||||||
></div>
|
></div>
|
||||||
<span class="delete-text mt-1">
|
<span class="delete-text mt-1">
|
||||||
@@ -613,8 +634,8 @@
|
|||||||
class="btn btn-primary btn-footer
|
class="btn btn-primary btn-footer
|
||||||
d-flex align-items-center justify-content-center"
|
d-flex align-items-center justify-content-center"
|
||||||
:class="{disabled: !canSave}"
|
:class="{disabled: !canSave}"
|
||||||
@click="submit()"
|
|
||||||
type="button"
|
type="button"
|
||||||
|
@click="submit()"
|
||||||
>
|
>
|
||||||
{{ $t('create') }}
|
{{ $t('create') }}
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -2,13 +2,17 @@
|
|||||||
<div>
|
<div>
|
||||||
<b-dropdown
|
<b-dropdown
|
||||||
class="inline-dropdown"
|
class="inline-dropdown"
|
||||||
@show="isOpened = true"
|
|
||||||
@hide="isOpened = false"
|
|
||||||
:toggle-class="isOpened ? 'active' : null"
|
:toggle-class="isOpened ? 'active' : null"
|
||||||
:disabled="disabled"
|
:disabled="disabled"
|
||||||
|
@show="isOpened = true"
|
||||||
|
@hide="isOpened = false"
|
||||||
>
|
>
|
||||||
<template v-slot:button-content>
|
<template v-slot:button-content>
|
||||||
<slot name="item" v-bind:item="selected" v-bind:button="true">
|
<slot
|
||||||
|
name="item"
|
||||||
|
:item="selected"
|
||||||
|
:button="true"
|
||||||
|
>
|
||||||
<!-- Fallback content -->
|
<!-- Fallback content -->
|
||||||
{{ value }}
|
{{ value }}
|
||||||
</slot>
|
</slot>
|
||||||
@@ -20,13 +24,16 @@
|
|||||||
:class="{active: item === selected, selectListItem: true}"
|
:class="{active: item === selected, selectListItem: true}"
|
||||||
@click="selectItem(item)"
|
@click="selectItem(item)"
|
||||||
>
|
>
|
||||||
<slot name="item" v-bind:item="item" v-bind:button="false">
|
<slot
|
||||||
|
name="item"
|
||||||
|
:item="item"
|
||||||
|
:button="false"
|
||||||
|
>
|
||||||
<!-- Fallback content -->
|
<!-- Fallback content -->
|
||||||
{{ item }}
|
{{ item }}
|
||||||
</slot>
|
</slot>
|
||||||
</b-dropdown-item>
|
</b-dropdown-item>
|
||||||
</b-dropdown>
|
</b-dropdown>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -37,12 +44,6 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
data () {
|
|
||||||
return {
|
|
||||||
isOpened: false,
|
|
||||||
selected: this.value,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
props: {
|
props: {
|
||||||
items: {
|
items: {
|
||||||
type: Array,
|
type: Array,
|
||||||
@@ -58,6 +59,12 @@ export default {
|
|||||||
type: String,
|
type: String,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
isOpened: false,
|
||||||
|
selected: this.value,
|
||||||
|
};
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
selectItem (item) {
|
selectItem (item) {
|
||||||
this.selected = item;
|
this.selected = item;
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
<template>
|
<template>
|
||||||
<button class="toggle-checkbox"
|
<button
|
||||||
|
class="toggle-checkbox"
|
||||||
:class="{checked: isChecked}"
|
:class="{checked: isChecked}"
|
||||||
@click="isChecked = !isChecked"
|
|
||||||
type="button"
|
type="button"
|
||||||
:disabled="disabled">
|
:disabled="disabled"
|
||||||
|
@click="isChecked = !isChecked"
|
||||||
|
>
|
||||||
{{ text }}
|
{{ text }}
|
||||||
</button>
|
</button>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -18,9 +18,10 @@
|
|||||||
v-b-tooltip.hover.left="$t('sendMessage')"
|
v-b-tooltip.hover.left="$t('sendMessage')"
|
||||||
class="btn btn-secondary message-icon"
|
class="btn btn-secondary message-icon"
|
||||||
>
|
>
|
||||||
<div class="svg-icon message-icon"
|
<div
|
||||||
v-html="icons.message"
|
|
||||||
v-once
|
v-once
|
||||||
|
class="svg-icon message-icon"
|
||||||
|
v-html="icons.message"
|
||||||
></div>
|
></div>
|
||||||
</button>
|
</button>
|
||||||
</router-link>
|
</router-link>
|
||||||
|
|||||||
Reference in New Issue
Block a user