File tree Expand file tree Collapse file tree 4 files changed +117
-9
lines changed Expand file tree Collapse file tree 4 files changed +117
-9
lines changed Original file line number Diff line number Diff line change
1
+ <template >
2
+ <div class =" row" >
3
+ <div class =" col-8" >
4
+ <h3 >Draggable</h3 >
5
+
6
+ <draggable
7
+ v-model =" rows"
8
+ tag =" v-layout"
9
+ class =" row wrap fill-height align-center sortable-list"
10
+ style =" background : grey ;"
11
+ >
12
+ <v-flex
13
+ v-for =" row in rows"
14
+ :key =" row.index"
15
+ class =" sortable"
16
+ xs12
17
+ my-2
18
+ style =" background : red "
19
+ >
20
+
21
+ <draggable
22
+ :list =" row.items"
23
+ tag =" v-layout"
24
+ :group =" { name: 'row' }"
25
+ class =" row wrap justify-space-around"
26
+ >
27
+ <v-flex
28
+ v-for =" item in row.items"
29
+ :key =" item.title"
30
+ xs4
31
+ pa-3
32
+ class =" row"
33
+ >
34
+ <v-card style =" height : 100px ;" >{{ item.title }}</v-card >
35
+ </v-flex >
36
+ </draggable >
37
+
38
+ </v-flex >
39
+ </draggable >
40
+ </div >
41
+
42
+ <rawDisplayer
43
+ class =" col-3"
44
+ :value =" rows"
45
+ title =" List"
46
+ />
47
+ </div >
48
+ </template >
49
+
50
+ <script >
51
+ import draggable from " @/vuedraggable" ;
52
+ import Vue from " vue" ;
53
+ import Vuetify from " vuetify" ;
54
+ import " vuetify/dist/vuetify.min.css" ;
55
+
56
+ Vue .use (Vuetify);
57
+
58
+ export default {
59
+ name: " functional" ,
60
+ display: " Functional third party" ,
61
+ order: 17 ,
62
+ components: {
63
+ draggable
64
+ },
65
+ data () {
66
+ return {
67
+ enabled: true ,
68
+ rows: [
69
+ {
70
+ index: 1 ,
71
+ items: [
72
+ {
73
+ title: " item 1"
74
+ }
75
+ ]
76
+ },
77
+ {
78
+ index: 2 ,
79
+ items: [
80
+ {
81
+ title: " item 2" ,
82
+ },
83
+ {
84
+ title: " item 3"
85
+ }
86
+ ]
87
+ }
88
+ ]
89
+ };
90
+ }
91
+ };
92
+ </script >
93
+ <style scoped>
94
+ .buttons {
95
+ margin-top : 35px ;
96
+ }
97
+
98
+ .ghost {
99
+ opacity : 0.5 ;
100
+ background : #c8ebfb ;
101
+ }
102
+ </style >
Original file line number Diff line number Diff line change 51
51
"vue-router" : " ^3.0.2" ,
52
52
"vue-server-renderer" : " ^2.6.8" ,
53
53
"vue-template-compiler" : " ^2.6.8" ,
54
+ "vuetify" : " ^1.5.16" ,
54
55
"vuex" : " ^3.1.1"
55
56
},
56
57
"eslintConfig" : {
Original file line number Diff line number Diff line change @@ -146,8 +146,7 @@ const draggableComponent = {
146
146
data ( ) {
147
147
return {
148
148
transitionMode : false ,
149
- noneFunctionalComponentMode : false ,
150
- init : false
149
+ noneFunctionalComponentMode : false
151
150
} ;
152
151
} ,
153
152
@@ -186,7 +185,8 @@ const draggableComponent = {
186
185
187
186
mounted ( ) {
188
187
this . noneFunctionalComponentMode =
189
- this . getTag ( ) . toLowerCase ( ) !== this . $el . nodeName . toLowerCase ( ) ;
188
+ this . getTag ( ) . toLowerCase ( ) !== this . $el . nodeName . toLowerCase ( ) &&
189
+ ! this . getIsFunctional ( ) ;
190
190
if ( this . noneFunctionalComponentMode && this . transitionMode ) {
191
191
throw new Error (
192
192
`Transition-group inside component is not supported. Please alter tag value or remove transition-group. Current tag value: ${ this . getTag ( ) } `
@@ -251,6 +251,11 @@ const draggableComponent = {
251
251
} ,
252
252
253
253
methods : {
254
+ getIsFunctional ( ) {
255
+ const { fnOptions } = this . _vnode ;
256
+ return fnOptions && fnOptions . functional ;
257
+ } ,
258
+
254
259
getTag ( ) {
255
260
return this . tag || this . element ;
256
261
} ,
@@ -265,12 +270,6 @@ const draggableComponent = {
265
270
} ,
266
271
267
272
getChildrenNodes ( ) {
268
- if ( ! this . init ) {
269
- this . noneFunctionalComponentMode =
270
- this . noneFunctionalComponentMode && this . $children . length === 1 ;
271
- this . init = true ;
272
- }
273
-
274
273
if ( this . noneFunctionalComponentMode ) {
275
274
return this . $children [ 0 ] . $slots . default ;
276
275
}
You can’t perform that action at this time.
0 commit comments