mirror of https://github.com/nocodb/nocodb
8 changed files with 288 additions and 196 deletions
@ -0,0 +1,67 @@ |
|||||||
|
<template> |
||||||
|
<div class="nc-container" :class="{active:modal}" @click="modal=false"> |
||||||
|
<div class="nc-content elevation-3 pa-4" @click.stop> |
||||||
|
<slot /> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
|
||||||
|
export default { |
||||||
|
name: 'NcSlider', |
||||||
|
props: { |
||||||
|
value: Boolean |
||||||
|
}, |
||||||
|
computed: { |
||||||
|
modal: { |
||||||
|
get() { |
||||||
|
return this.value |
||||||
|
}, |
||||||
|
set(v) { |
||||||
|
this.$emit('input', v) |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
mounted() { |
||||||
|
(document.querySelector('[data-app]') || this.$root.$el).append(this.$el) |
||||||
|
}, |
||||||
|
|
||||||
|
destroyed() { |
||||||
|
this.$el.parentNode && this.$el.parentNode.removeChild(this.$el) |
||||||
|
} |
||||||
|
} |
||||||
|
</script> |
||||||
|
|
||||||
|
<style scoped lang="scss"> |
||||||
|
|
||||||
|
.nc-container { |
||||||
|
position: fixed; |
||||||
|
pointer-events: none; |
||||||
|
width: 100vw; |
||||||
|
height: 100vh; |
||||||
|
z-index: 9999; |
||||||
|
right: 0; |
||||||
|
top: 0; |
||||||
|
|
||||||
|
.nc-content { |
||||||
|
background-color: var(--v-backgroundColorDefault-base); |
||||||
|
height: 100%; |
||||||
|
width: max(50%, 700px); |
||||||
|
position: absolute; |
||||||
|
bottom: 0; |
||||||
|
top: 0; |
||||||
|
right: min(-50%, -700px); |
||||||
|
transition: .3s right; |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
&.active { |
||||||
|
pointer-events: all; |
||||||
|
|
||||||
|
& > .nc-content { |
||||||
|
right: 0 |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
</style> |
@ -0,0 +1,64 @@ |
|||||||
|
<template> |
||||||
|
<nc-slider v-model="webhookSlider"> |
||||||
|
<v-card |
||||||
|
v-if="webhookSlider" |
||||||
|
width="100%" |
||||||
|
min-height="350px" |
||||||
|
class="pa-4 elevation-0" |
||||||
|
> |
||||||
|
<webhook-editor v-if="editOrAdd" ref="editor" :meta="meta" @backToList="editOrAdd = false" /> |
||||||
|
<webhook-list v-else :meta="meta" @edit="editHook" @add="editOrAdd = true" /> |
||||||
|
</v-card> |
||||||
|
</nc-slider> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
|
||||||
|
import WebhookList from '~/components/project/tableTabs/webhook/WebhookList' |
||||||
|
import WebhookEditor from '~/components/project/tableTabs/webhook/WebhookEditor' |
||||||
|
import NcSlider from '~/components/global/NcSlider' |
||||||
|
export default { |
||||||
|
name: 'WebhookSlider', |
||||||
|
components: { NcSlider, WebhookEditor, WebhookList }, |
||||||
|
props: { |
||||||
|
meta: Object, |
||||||
|
value: Boolean |
||||||
|
}, |
||||||
|
data: () => ({ |
||||||
|
editOrAdd: false, |
||||||
|
activePage: 'role' |
||||||
|
}), |
||||||
|
computed: { |
||||||
|
webhookSlider: { |
||||||
|
get() { |
||||||
|
return this.value |
||||||
|
}, |
||||||
|
set(v) { |
||||||
|
this.$emit('input', v) |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
mounted() { |
||||||
|
(document.querySelector('[data-app]') || this.$root.$el).append(this.$el) |
||||||
|
}, |
||||||
|
|
||||||
|
destroyed() { |
||||||
|
this.$el.parentNode && this.$el.parentNode.removeChild(this.$el) |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
editHook(hook) { |
||||||
|
this.editOrAdd = true |
||||||
|
this.$nextTick(() => { |
||||||
|
this.$refs.editor.hook = { ...hook } |
||||||
|
this.$refs.editor.onEventChange() |
||||||
|
}) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
</script> |
||||||
|
|
||||||
|
<style scoped lang="scss"> |
||||||
|
::v-deep{ |
||||||
|
.nc-content{max-width: 600px !important} |
||||||
|
} |
||||||
|
</style> |
Loading…
Reference in new issue