added button for enable Drag&Drop
This commit is contained in:
Generated
+9
-9
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "bugreport",
|
"name": "bugreport",
|
||||||
"version": "0.0.2",
|
"version": "0.0.3",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "bugreport",
|
"name": "bugreport",
|
||||||
"version": "0.0.2",
|
"version": "0.0.3",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@fortawesome/fontawesome-free": "^6.7.2",
|
"@fortawesome/fontawesome-free": "^6.7.2",
|
||||||
"@fortawesome/fontawesome-svg-core": "^6.7.2",
|
"@fortawesome/fontawesome-svg-core": "^6.7.2",
|
||||||
@@ -1326,9 +1326,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/nanoid": {
|
"node_modules/nanoid": {
|
||||||
"version": "3.3.15",
|
"version": "3.3.18",
|
||||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.15.tgz",
|
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz",
|
||||||
"integrity": "sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==",
|
"integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==",
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "github",
|
"type": "github",
|
||||||
@@ -1381,9 +1381,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/postcss": {
|
"node_modules/postcss": {
|
||||||
"version": "8.5.16",
|
"version": "8.5.26",
|
||||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.16.tgz",
|
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.26.tgz",
|
||||||
"integrity": "sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==",
|
"integrity": "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==",
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
@@ -1400,7 +1400,7 @@
|
|||||||
],
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"nanoid": "^3.3.12",
|
"nanoid": "^3.3.17",
|
||||||
"picocolors": "^1.1.1",
|
"picocolors": "^1.1.1",
|
||||||
"source-map-js": "^1.2.1"
|
"source-map-js": "^1.2.1"
|
||||||
},
|
},
|
||||||
|
|||||||
+43
-1
@@ -20,6 +20,18 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="menu">
|
<div class="menu">
|
||||||
|
<label
|
||||||
|
class="drag-drop-toggle"
|
||||||
|
:title="dragDropEnabled ? 'Drag & drop je zapnutý' : 'Drag & drop je vypnutý'"
|
||||||
|
>
|
||||||
|
<input
|
||||||
|
v-model="dragDropEnabled"
|
||||||
|
type="checkbox"
|
||||||
|
:aria-label="dragDropEnabled ? 'Vypnúť drag & drop' : 'Zapnúť drag & drop'"
|
||||||
|
@change="onDragDropChange"
|
||||||
|
/>
|
||||||
|
<span>Drag & drop</span>
|
||||||
|
</label>
|
||||||
<router-link to="/add"
|
<router-link to="/add"
|
||||||
><font-awesome-icon :icon="['fas', 'square-plus']" /> Pridať
|
><font-awesome-icon :icon="['fas', 'square-plus']" /> Pridať
|
||||||
bug</router-link
|
bug</router-link
|
||||||
@@ -45,11 +57,29 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref } from "vue";
|
import { onMounted, onUnmounted, ref } from "vue";
|
||||||
import backend from "./backend";
|
import backend from "./backend";
|
||||||
import events from "./events";
|
import events from "./events";
|
||||||
|
import {
|
||||||
|
getDragDropEnabled,
|
||||||
|
getDragDropMediaQuery,
|
||||||
|
getDragDropPreference,
|
||||||
|
setDragDropEnabled,
|
||||||
|
} from "./dragDropSettings";
|
||||||
|
|
||||||
const short_bug = ref("");
|
const short_bug = ref("");
|
||||||
|
const dragMediaQuery = getDragDropMediaQuery();
|
||||||
|
const dragDropEnabled = ref(getDragDropEnabled(dragMediaQuery));
|
||||||
|
|
||||||
|
function updateAutomaticDragDropState() {
|
||||||
|
if (getDragDropPreference() != null) return;
|
||||||
|
dragDropEnabled.value = getDragDropEnabled(dragMediaQuery);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onDragDropChange() {
|
||||||
|
setDragDropEnabled(dragDropEnabled.value);
|
||||||
|
events.emit("drag-drop-changed", dragDropEnabled.value);
|
||||||
|
}
|
||||||
|
|
||||||
function onShortBugEnter(event) {
|
function onShortBugEnter(event) {
|
||||||
if (event.keyCode == 13) {
|
if (event.keyCode == 13) {
|
||||||
@@ -64,4 +94,16 @@ function shortBugAdd() {
|
|||||||
events.emit("reports-changed");
|
events.emit("reports-changed");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
if (dragMediaQuery != null) {
|
||||||
|
dragMediaQuery.addEventListener("change", updateAutomaticDragDropState);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
onUnmounted(() => {
|
||||||
|
if (dragMediaQuery != null) {
|
||||||
|
dragMediaQuery.removeEventListener("change", updateAutomaticDragDropState);
|
||||||
|
}
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -151,6 +151,29 @@ button:focus-visible,
|
|||||||
#header .menu {
|
#header .menu {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
#header .drag-drop-toggle {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
border: 1px solid var(--color-text0);
|
||||||
|
padding: 5px 10px;
|
||||||
|
border-radius: 5px;
|
||||||
|
margin-left: 20px;
|
||||||
|
cursor: pointer;
|
||||||
|
user-select: none;
|
||||||
|
transition: all 0.3s;
|
||||||
|
}
|
||||||
|
#header .drag-drop-toggle:hover {
|
||||||
|
color: var(--color-text1);
|
||||||
|
background-color: var(--color-bg1);
|
||||||
|
}
|
||||||
|
#header .drag-drop-toggle input {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
margin: 0;
|
||||||
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
#header .menu a,
|
#header .menu a,
|
||||||
#header .menu a:visited,
|
#header .menu a:visited,
|
||||||
@@ -205,7 +228,8 @@ button:focus-visible,
|
|||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
#header .menu a {
|
#header .menu a,
|
||||||
|
#header .drag-drop-toggle {
|
||||||
margin: 5px;
|
margin: 5px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -256,6 +280,9 @@ button:focus-visible,
|
|||||||
border-top-right-radius: 5px;
|
border-top-right-radius: 5px;
|
||||||
cursor: grab;
|
cursor: grab;
|
||||||
}
|
}
|
||||||
|
#dashboard.drag-disabled .report .report-header {
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
#dashboard .report .report-header .report-title {
|
#dashboard .report .report-header .report-title {
|
||||||
}
|
}
|
||||||
#dashboard .report .report-header h3 {
|
#dashboard .report .report-header h3 {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<FullScreenLoader v-if="loading" />
|
<FullScreenLoader v-if="loading" />
|
||||||
|
|
||||||
<div id="dashboard">
|
<div id="dashboard" :class="{ 'drag-disabled': isDragDisabled }">
|
||||||
<div id="inbox">
|
<div id="inbox">
|
||||||
<h2>Nezaradené</h2>
|
<h2>Nezaradené</h2>
|
||||||
<draggable
|
<draggable
|
||||||
@@ -146,6 +146,10 @@ import draggable from "vuedraggable";
|
|||||||
import backend from "../backend";
|
import backend from "../backend";
|
||||||
import FullScreenLoader from "../components/FullScreenLoader.vue";
|
import FullScreenLoader from "../components/FullScreenLoader.vue";
|
||||||
import events from "../events";
|
import events from "../events";
|
||||||
|
import {
|
||||||
|
getDragDropEnabled,
|
||||||
|
getDragDropMediaQuery,
|
||||||
|
} from "../dragDropSettings";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
@@ -156,7 +160,7 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
loading: false,
|
loading: false,
|
||||||
isDragDisabled: false,
|
isDragDisabled: !getDragDropEnabled(),
|
||||||
dragMediaQuery: null,
|
dragMediaQuery: null,
|
||||||
itemsUncategorized: [],
|
itemsUncategorized: [],
|
||||||
itemsWaiting: [],
|
itemsWaiting: [],
|
||||||
@@ -165,8 +169,15 @@ export default {
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
updateDragState(event) {
|
updateDragState() {
|
||||||
this.isDragDisabled = event.matches;
|
this.isDragDisabled = !getDragDropEnabled(this.dragMediaQuery);
|
||||||
|
},
|
||||||
|
updateDragPreference(enabled) {
|
||||||
|
this.isDragDisabled = !enabled;
|
||||||
|
},
|
||||||
|
onReportsChanged() {
|
||||||
|
console.log("Dashoboard reports-changed");
|
||||||
|
this.loadData(false);
|
||||||
},
|
},
|
||||||
loadData(use_loader = true) {
|
loadData(use_loader = true) {
|
||||||
if (use_loader) this.loading = true;
|
if (use_loader) this.loading = true;
|
||||||
@@ -241,18 +252,21 @@ export default {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.dragMediaQuery = window.matchMedia("(max-width: 768px), (any-pointer: coarse)");
|
this.dragMediaQuery = getDragDropMediaQuery();
|
||||||
this.updateDragState(this.dragMediaQuery);
|
this.updateDragState();
|
||||||
this.dragMediaQuery.addEventListener("change", this.updateDragState);
|
if (this.dragMediaQuery != null) {
|
||||||
|
this.dragMediaQuery.addEventListener("change", this.updateDragState);
|
||||||
|
}
|
||||||
this.loadData();
|
this.loadData();
|
||||||
events.on("reports-changed", () => {
|
events.on("reports-changed", this.onReportsChanged);
|
||||||
console.log("Dashoboard reports-changed");
|
events.on("drag-drop-changed", this.updateDragPreference);
|
||||||
this.loadData(false);
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
unmounted() {
|
unmounted() {
|
||||||
this.dragMediaQuery.removeEventListener("change", this.updateDragState);
|
if (this.dragMediaQuery != null) {
|
||||||
events.off("reports-changed");
|
this.dragMediaQuery.removeEventListener("change", this.updateDragState);
|
||||||
|
}
|
||||||
|
events.off("reports-changed", this.onReportsChanged);
|
||||||
|
events.off("drag-drop-changed", this.updateDragPreference);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
Reference in New Issue
Block a user