Skip to content
Snippets Groups Projects
Commit 5120f160 authored by Julian's avatar Julian
Browse files

Allow grids to declare disabled fields

parent 78005ceb
No related branches found
No related tags found
1 merge request!2Resolve "Implement basic functionality"
......@@ -20,7 +20,7 @@
:data="getObject('data', item)"
:context="context"
:grid-id="gridId"
:disabled="disabled"
:disabled="disabled || item.disabled"
>
<slot v-bind="transformItem(item)" :raw-item="item" name="item">
<dl>
......@@ -35,6 +35,16 @@
</dl>
</slot>
</DragContainer>
<template v-for="disabledField in disabledFields">
<GridItem
class="disabledField"
:x="disabledField.x"
:y="disabledField.y"
:key="disabledField"
>
<slot name="disabledField"></slot>
</GridItem>
</template>
<slot></slot>
</div>
</template>
......@@ -42,10 +52,12 @@
<script>
import DragContainer from "./DragContainer.vue";
import { v4 as uuidv4 } from "uuid";
import GridItem from "./GridItem.vue";
export default {
name: "DragGrid",
components: {
GridItem,
DragContainer,
},
emits: ["input", "itemChanged"],
......@@ -92,6 +104,11 @@ export default {
required: false,
default: false,
},
disabledFields: {
type: Array,
required: false,
default: () => [],
},
},
methods: {
positionAllowed(x, y, key) {
......@@ -99,6 +116,14 @@ export default {
if (x > this.cols) return false;
if (y > this.rows) return false;
if (
this.disabledFields.filter((field) => field.x === x && field.y === y)
.length > 0
) {
// Field is disabled
return false;
}
for (let item of this.value) {
if (key === item.key) continue;
if (
......
<template>
<div>
<slot></slot>
</div>
</template>
<script>
export default {
name: "GridItem",
props: {
x: {
type: Number,
required: true,
},
y: {
type: Number,
required: true,
},
},
};
</script>
<style scoped>
div {
grid-column: v-bind(x) / span 1;
grid-row: v-bind(y) / span 1;
}
</style>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment