1414                </button >
1515            </div >
1616        </div >
17- 
17+ <!--     {{ log(elements) }} --> 
1818        <div 
1919            v-for =" element in elements" 
2020            :key =" element.hash" 
3232                        {{ element.label }}
3333                    </div >
3434                    <!--  Navigation buttons --> 
35-                     <div  :is =" compile(element.buttons)" div >
35+                     <div  class =" btn-group ml-auto mr-2" role =" group" aria-label =" Collection buttons" 
36+                         <button  class =" action-move-up-collection-item btn btn-light btn-sm" style =" white-space nowrap " 
37+                             <i  class =" fas fa-fw fa-chevron-up" i >
38+                             {{ labels.collection_up }}
39+                         </button >
40+                         <button 
41+                             class =" action-move-down-collection-item btn btn-light btn-sm" 
42+                             style =" white-space nowrap " 
43+                         >
44+                             <i  class =" fas fa-fw fa-chevron-down" i >
45+                             {{ labels.collection_down }}
46+                         </button >
47+                         <button 
48+                             class =" action-remove-collection-item btn btn-light-danger btn-sm" 
49+                             style =" white-space nowrap " 
50+                             data-confirmation =" {{ labels.collection_delete_confirm }}" 
51+                         >
52+                             <i  class =" fas fa-fw fa-trash" i >
53+                             {{ labels.collection_delete }}
54+                         </button >
55+                     </div >
3656                </div >
3757            </div >
3858            <div  class =" card details" 
3959                <!--  The actual field --> 
40-                 <div  :is =" currentComponent" class =" card-body" div >
60+                 <editor-textarea 
61+                     :name =" element.name" 
62+                     :rows =" element.rows" 
63+                     :required =" element.required" 
64+                     :readonly =" element.readonly" 
65+                     :data-errormessage =" element.errormessage" 
66+                     :placeholder =" element.placeholder" 
67+                     :style =" { height: element.styleHeight }" 
68+                     :maxlength =" element.maxlength" 
69+                     :title =" element.label" 
70+                 >
71+                 </editor-textarea >
4172            </div >
4273        </div >
4374
6293                            :key =" field.type" 
6394                            class =" dropdown-item" 
6495                            :data-field =" field.type" 
65-                             @click =" addCollectionItem(field.slug )" 
96+                             @click =" addCollectionItem($event )" 
6697                        >
6798                            <i  :class =" [field.icon, 'fas fa-fw']" 
6899                            {{ field.label }}
74105                    type =" button" 
75106                    class =" btn btn-secondary btn-small" 
76107                    :data-field =" fields[0].slug" 
77-                     @click =" addCollectionItem(fields.slug )" 
108+                     @click =" addCollectionItem(fields.type )" 
78109                >
79110                    <i  :class =" [fields[0].icon, 'fas fa-fw']" 
80111                    {{ labels.add_collection_item }}
85116</template >
86117
87118<script >
88- import  {  compile   } from  ' vue' 
119+ import  {compile } from  ' vue' 
89120/* 
90121Editor Components for rendering 
91122 */  
92- import  Text  from  ' ./Text' 
93- import  Slug  from  ' ./Slug' 
94- import  Date  from  ' ./Date' 
95- import  Select  from  ' ./Select' 
96- import  Number  from  ' ./Number' 
97- import  Html  from  ' ./Html' 
98- import  Markdown  from  ' ./Markdown' 
99- import  Textarea  from  ' ./Textarea' 
100- import  Embed  from  ' ./Embed' 
101- import  Image  from  ' ./Image' 
102- import  Imagelist  from  ' ./Imagelist' 
103- import  Email  from  ' ./Email' 
104- import  Password  from  ' ./Password' 
105- import  ThemeSelect  from  ' ./ThemeSelect' 
106- import  Language  from  ' ./Language' 
107- import  File  from  ' ./File' 
108- import  Filelist  from  ' ./Filelist' 
109- import  Checkbox  from  ' ./Checkbox' 
110- 
111123import  $ from  ' jquery' 
124+ import  EditorTextarea  from  ' ./Textarea' 
112125
113126export  default  {
114127    name:  ' EditorCollection'  
115-     components:  { 
116-         Text , 
117-         Slug, 
118-         Date , 
119-         Select, 
120-         Number , 
121-         Html, 
122-         Markdown, 
123-         Textarea, 
124-         Embed, 
125-         Image, 
126-         Imagelist, 
127-         Email, 
128-         Password, 
129-         ThemeSelect, 
130-         Language, 
131-         File , 
132-         Filelist, 
133-         Checkbox, 
134-     }, 
128+     components:  { EditorTextarea }, 
135129    props:  { 
136130        name:  { 
137131            type:  String , 
@@ -149,6 +143,7 @@ export default {
149143            required:  true , 
150144        }, 
151145        limit:  { 
146+             type:  Number , 
152147            required:  true , 
153148        }, 
154149        variant:  { 
@@ -157,6 +152,7 @@ export default {
157152        }, 
158153    }, 
159154    data () { 
155+         console .log (this .existingFields ); 
160156        let  fieldSelectOptions =  []; 
161157        return  { 
162158            currentComponent:  ' '  
@@ -313,94 +309,21 @@ export default {
313309        getCollectionItemFromPressedButton (button ) { 
314310            return  window .$ (button).closest (' .collection-item' last (); 
315311        }, 
316-         addCollectionItem (fieldName ) { 
317-             console .log (this .fields ); 
312+         addCollectionItem (event ) { 
318313            this .counter ++ ; 
319- 
320-             //  Create switch case for every field type 
321-             switch  (fieldName) { 
322-                 case  ' text'  
323-                     var  component =  Text ; 
324-                     break ; 
325-                 case  ' slug'  
326-                     this .elements .push (Slug); 
327-                     this .currentComponent  =  Slug; 
328-                     break ; 
329-                 case  ' date'  
330-                     this .elements .push (Date ); 
331-                     this .currentComponent  =  Date ; 
332-                     break ; 
333-                 case  ' select'  
334-                     this .elements .push (Select); 
335-                     this .currentComponent  =  Select; 
336-                     break ; 
337-                 case  ' number'  
338-                     this .elements .push (Number ); 
339-                     this .currentComponent  =  Number ; 
340-                     break ; 
341-                 case  ' html'  
342-                     this .elements .push (Html); 
343-                     this .currentComponent  =  Html; 
344-                     break ; 
345-                 case  ' markdown'  
346-                     this .elements .push (Markdown); 
347-                     this .currentComponent  =  Markdown; 
348-                     break ; 
349-                 case  ' textarea'  
350-                     this .elements .push (Textarea); 
351-                     this .currentComponent  =  Textarea; 
352-                     break ; 
353-                 case  ' embed'  
354-                     this .elements .push (Embed); 
355-                     this .currentComponent  =  Embed; 
356-                     break ; 
357-                 case  ' image'  
358-                     this .elements .push (Image); 
359-                     this .currentComponent  =  Image; 
360-                     break ; 
361-                 case  ' imagelist'  
362-                     this .elements .push (Imagelist); 
363-                     this .currentComponent  =  Imagelist; 
364-                     break ; 
365-                 case  ' email'  
366-                     this .elements .push (Email); 
367-                     this .currentComponent  =  Email; 
368-                     break ; 
369-                 case  ' password'  
370-                     this .elements .push (Password); 
371-                     this .currentComponent  =  Password; 
372-                     break ; 
373-                 case  ' themeSelect'  
374-                     this .elements .push (ThemeSelect); 
375-                     this .currentComponent  =  ThemeSelect; 
376-                     break ; 
377-                 case  ' language'  
378-                     this .elements .push (Language); 
379-                     this .currentComponent  =  Language; 
380-                     break ; 
381-                 case  ' file'  
382-                     this .elements .push (File ); 
383-                     this .currentComponent  =  File ; 
384-                     break ; 
385-                 case  ' filelist'  
386-                     this .elements .push (Filelist); 
387-                     this .currentComponent  =  Filelist; 
388-                     break ; 
389-                 case  ' checkbox'  
390-                     this .elements .push (Checkbox); 
391-                     this .currentComponent  =  Checkbox; 
392-                     break ; 
393-             } 
394-             this .currentComponent (component); 
395-             this .elements .push (component); 
396-             return  this .currentComponent ; 
314+             let  field =  this .getSelectedField (event ); 
315+             this .elements .push (field); 
397316        }, 
398317        getSelectedField (event ) { 
399318            const  target  =  $ (event .target ).attr (' data-field'  
400319                ?  $ (event .target ) 
401320                :  $ (event .target ).closest (' [data-field]'  
402321            let  selectValue =  target .attr (' data-field'  
403-             return  this .fields .find ((field ) =>  field .label  ===  selectValue); 
322+             let  objValues =  Object .values (this .fields ); 
323+ 
324+             console .log (objValues .find ((field ) =>  field .type  ===  selectValue)); 
325+ 
326+             return  objValues .find ((field ) =>  field .type  ===  selectValue); 
404327        }, 
405328    }, 
406329}; 
0 commit comments