@@ -4,7 +4,8 @@ import {If} from '@/views/domain/ngx_conf'
44import DirectiveAdd from ' @/views/domain/ngx_conf/directive/DirectiveAdd'
55import {useGettext } from ' vue3-gettext'
66import {reactive , ref } from ' vue'
7- import {DeleteOutlined } from ' @ant-design/icons-vue'
7+ import {DeleteOutlined , HolderOutlined } from ' @ant-design/icons-vue'
8+ import draggable from ' vuedraggable'
89
910const {$gettext} = useGettext ()
1011
@@ -42,48 +43,61 @@ function onSave(idx: number) {
4243<template >
4344 <h2 >{{ $gettext('Directives') }}</h2 >
4445
45- <a-form-item v-for =" (directive,index) in props.ngx_directives" @click =" current_idx=index" >
46-
47- <div class =" input-wrapper" >
48- <code-editor v-if =" directive.directive === If" v-model:content =" directive.params"
49- defaultHeight =" 100px" style =" width : 100% ;" />
50-
51- <a-input v-else
52- :addon-before =" directive.directive"
53- v-model:value =" directive.params" @click =" current_idx=index" @blur =" current_idx=-1" />
54-
55- <a-popconfirm @confirm =" remove(index)"
56- :title =" $gettext('Are you sure you want to remove this directive?')"
57- :ok-text =" $gettext('Yes')"
58- :cancel-text =" $gettext('No')" >
59- <a-button >
60- <template #icon >
61- <DeleteOutlined style =" font-size : 14px ;" />
62- </template >
63- </a-button >
64- </a-popconfirm >
65- </div >
66- <transition name =" slide" >
67- <div v-if =" current_idx===index" class =" directive-editor-extra" >
68- <div class =" extra-content" >
69- <a-form layout =" vertical" >
70- <a-form-item :label =" $gettext('Comments')" >
71- <a-textarea v-model:value =" directive.comments" />
72- </a-form-item >
73- </a-form >
74- <directive-add :ngx_directives =" props.ngx_directives" :idx =" index" @save =" onSave(index)" />
46+ <draggable
47+ :list =" props.ngx_directives"
48+ item-key =" name"
49+ class =" list-group"
50+ ghost-class =" ghost"
51+ handle =" .ant-input-group-addon"
52+ >
53+ <template #item =" { element: directive , index } " >
54+ <a-form-item @click =" current_idx=index" >
55+
56+ <div class =" input-wrapper" >
57+ <code-editor v-if =" directive.directive === If" v-model:content =" directive.params"
58+ defaultHeight =" 100px" style =" width : 100% ;" />
59+
60+ <a-input v-else
61+ v-model:value =" directive.params" @click =" current_idx=index" @blur =" current_idx=-1" >
62+ <template #addonBefore >
63+ <HolderOutlined />
64+ {{ directive.directive }}
65+ </template >
66+ </a-input >
67+
68+ <a-popconfirm @confirm =" remove(index)"
69+ :title =" $gettext('Are you sure you want to remove this directive?')"
70+ :ok-text =" $gettext('Yes')"
71+ :cancel-text =" $gettext('No')" >
72+ <a-button >
73+ <template #icon >
74+ <DeleteOutlined style =" font-size : 14px ;" />
75+ </template >
76+ </a-button >
77+ </a-popconfirm >
7578 </div >
76- </div >
77- </transition >
78- </a-form-item >
79+ <transition name =" slide" >
80+ <div v-if =" current_idx===index" class =" directive-editor-extra" >
81+ <div class =" extra-content" >
82+ <a-form layout =" vertical" >
83+ <a-form-item :label =" $gettext('Comments')" >
84+ <a-textarea v-model:value =" directive.comments" />
85+ </a-form-item >
86+ </a-form >
87+ </div >
88+ </div >
89+ </transition >
90+ </a-form-item >
91+ </template >
92+ </draggable >
7993
8094 <directive-add :ngx_directives =" props.ngx_directives" />
8195</template >
8296
8397<style lang="less" scoped>
8498.directive-editor-extra {
8599 background-color : #fafafa ;
86- padding : 10px 20px 20 px ;
100+ padding : 10px 20px ;
87101 margin-bottom : 10px ;
88102}
89103
0 commit comments