This is all the code I use:
<?xml version="1.0" encoding="UTF-8"?>
jcr:primaryType="nt:unstructured"
jcr:title="Custom Slider"
extraClientlibs="[tfs.components.author.editor]"
sling:resourceType="cq/gui/components/authoring/dialog">
<content
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/coral/foundation/container">
<items jcr:primaryType="nt:unstructured">
<tabs
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/coral/foundation/tabs"
maximized="{Boolean}true">
<items jcr:primaryType="nt:unstructured">
<slides
jcr:primaryType="nt:unstructured"
jcr:title="Slides"
sling:orderBefore="cq:styles"
sling:resourceType="granite/ui/components/coral/foundation/container"
margin="{Boolean}true">
<items jcr:primaryType="nt:unstructured">
<columns
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/coral/foundation/fixedcolumns"
margin="{Boolean}true">
<items jcr:primaryType="nt:unstructured">
<column
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/coral/foundation/container">
<items jcr:primaryType="nt:unstructured">
<slideType
granite:class="cq-dialog-dropdown-showhide"
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/coral/foundation/form/select"
fieldDescription="Please Choose Slide"
fieldLabel="Slide Type"
name="./slideType">
<items jcr:primaryType="nt:unstructured">
<tfs-slider--text-over-image
jcr:primaryType="nt:unstructured"
text="Title and Text with Background Image"
value="tfs-slider--text-over-image" />
<tfs-slider--no-image
jcr:primaryType="nt:unstructured"
text="Title, Text and Button"
value="tfs-slider--no-image" />
</items>
<granite:data
jcr:primaryType="nt:unstructured"
cq-dialog-dropdown-showhide-target=".showhidetargets" />
</slideType>
<tfs-slider--text-over-image
granite:class="showhidetargets"
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/foundation/container">
<items jcr:primaryType="nt:unstructured">
<tooltipMessage
jcr:primaryType="nt:unstructured"
sling:resourceType="cq/gui/components/authoring/dialog/note"
note="Layout Use: Use between 12 and 8 columns" />
<slides
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/coral/foundation/form/multifield"
composite="true"
fieldDescription="Click the add button then you will get respective slide related fields to author"
fieldLabel="Slide related fields to author">
<field
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/coral/foundation/container"
name="./textoverimagemultifield">
<items jcr:primaryType="nt:unstructured">
<column
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/coral/foundation/fixedcolumns">
<items
jcr:primaryType="nt:unstructured">
<imageGroup
granite:hide="${cqDesign.imageHidden}"
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/coral/foundation/well">
<items
jcr:primaryType="nt:unstructured">
<image
jcr:primaryType="nt:unstructured"
sling:resourceType="cq/gui/components/authoring/dialog/fileupload"
allowUpload="{Boolean}false"
class="cq-droptarget"
fieldDescription="Drag and Drop asset or Path Browser."
fieldLabel="Image Asset (Recommended size: 1440px x 450px)"
fileNameParameter="./fileName"
fileReferenceParameter="./fileReference"
mimeTypes="[image/gif,image/jpeg,image/png,image/tiff,image/svg+xml,video/webm]"
name="./image"
title="Upload Image Asset" />
</items>
</imageGroup>
</items>
</column>
</items>
</field>
</slides>
</items>
<granite:data
jcr:primaryType="nt:unstructured"
showhidetargetvalue="tfs-slider--text-over-image" />
</tfs-slider--text-over-image>
</items>
</column>
</items>
</columns>
</items>
</slides>
</items>
</tabs>
</items>
</content>
</jcr:root>