Rethink modal handling
This commit is contained in:
parent
e4c95ddfa9
commit
05f3e87a66
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div :class="{'no-scroll': showModal}">
|
<div :class="{'no-scroll': showModal}">
|
||||||
<modal v-if="showModal"></modal>
|
<new-content-block v-if="showModal"></new-content-block>
|
||||||
<component :is="layout"></component>
|
<component :is="layout"></component>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -9,6 +9,7 @@
|
||||||
import DefaultLayout from '@/layouts/DefaultLayout';
|
import DefaultLayout from '@/layouts/DefaultLayout';
|
||||||
import SimpleLayout from '@/layouts/SimpleLayout';
|
import SimpleLayout from '@/layouts/SimpleLayout';
|
||||||
import Modal from '@/components/Modal';
|
import Modal from '@/components/Modal';
|
||||||
|
import NewContentBlock from '@/components/NewContentBlock';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'App',
|
name: 'App',
|
||||||
|
|
@ -16,7 +17,8 @@
|
||||||
components: {
|
components: {
|
||||||
DefaultLayout,
|
DefaultLayout,
|
||||||
SimpleLayout,
|
SimpleLayout,
|
||||||
Modal
|
Modal,
|
||||||
|
NewContentBlock
|
||||||
},
|
},
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<h1>Add Block</h1>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
@ -2,29 +2,23 @@
|
||||||
<div class="modal__backdrop">
|
<div class="modal__backdrop">
|
||||||
<div class="modal">
|
<div class="modal">
|
||||||
<div class="modal__header">
|
<div class="modal__header">
|
||||||
<content-block-title-input></content-block-title-input>
|
<slot name="header"></slot>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal__body">
|
<div class="modal__body">
|
||||||
<content-block-chooser-widget></content-block-chooser-widget>
|
<slot></slot>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal__footer">
|
<div class="modal__footer">
|
||||||
<a class="button button--active">Speichern</a>
|
<slot name="footer">
|
||||||
<a class="button" v-on:click="hideModal">Abbrechen</a>
|
<a class="button button--active">Speichern</a>
|
||||||
|
<a class="button" v-on:click="hideModal">Abbrechen</a>
|
||||||
|
</slot>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import ContentBlockChooserWidget from '@/components/ContentBlockChooserWidget';
|
|
||||||
import ContentBlockTitleInput from '@/components/ContentBlockTitleInput';
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
|
||||||
ContentBlockChooserWidget,
|
|
||||||
ContentBlockTitleInput
|
|
||||||
},
|
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
hideModal() {
|
hideModal() {
|
||||||
this.$store.dispatch('hideModal');
|
this.$store.dispatch('hideModal');
|
||||||
|
|
@ -47,6 +41,7 @@
|
||||||
border: 1px solid $color-lightgrey;
|
border: 1px solid $color-lightgrey;
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-rows: auto 1fr 65px;
|
grid-template-rows: auto 1fr 65px;
|
||||||
|
grid-template-areas: "header" "body" "footer";
|
||||||
|
|
||||||
&__backdrop {
|
&__backdrop {
|
||||||
display: grid;
|
display: grid;
|
||||||
|
|
@ -60,15 +55,18 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
&__header {
|
&__header {
|
||||||
|
grid-area: header;
|
||||||
padding: 10px 30px;
|
padding: 10px 30px;
|
||||||
border-bottom: 1px solid $color-lightgrey;
|
border-bottom: 1px solid $color-lightgrey;
|
||||||
}
|
}
|
||||||
|
|
||||||
&__body {
|
&__body {
|
||||||
|
grid-area: body;
|
||||||
padding: 10px 34px;
|
padding: 10px 34px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&__footer {
|
&__footer {
|
||||||
|
grid-area: footer;
|
||||||
border-top: 1px solid $color-lightgrey;
|
border-top: 1px solid $color-lightgrey;
|
||||||
padding: 16px 30px;
|
padding: 16px 30px;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
<template>
|
||||||
|
<modal>
|
||||||
|
<content-block-title-input slot="header"></content-block-title-input>
|
||||||
|
<add-content-element></add-content-element>
|
||||||
|
<content-block-chooser-widget></content-block-chooser-widget>
|
||||||
|
</modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import Modal from '@/components/Modal';
|
||||||
|
import ContentBlockChooserWidget from '@/components/ContentBlockChooserWidget';
|
||||||
|
import ContentBlockTitleInput from '@/components/ContentBlockTitleInput';
|
||||||
|
import AddContentElement from '@/components/AddContentElement';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
Modal,
|
||||||
|
ContentBlockChooserWidget,
|
||||||
|
ContentBlockTitleInput,
|
||||||
|
AddContentElement
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
@import "@/styles/_variables.scss";
|
||||||
|
|
||||||
|
.new-content-block {
|
||||||
|
&__title {
|
||||||
|
padding: 10px 30px;
|
||||||
|
border-bottom: 1px solid $color-lightgrey;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
Loading…
Reference in New Issue