Purpose
Query autocomplete datasource lets you build your autocomplete list using an XPath query.
How to Use
As of ACS AEM Commons 4.0.0, this
Wrapper Client Library node definition
must be used to enable this feature.
Remember to create empty `js.txt` and `css.txt` files directly beneath the wrapper `cq:ClientLibraryFolder` node.
Component setup
Setup your component dialog and the autocomplete widget described in the documentation here.
Add a predicates
String array property to the autocomplete widget node
Add a displayProperty
String property to the autocomplete widget node
Add a datasource
node to the autocomplete widget node.
Add an options
node to the autocomplete widget node.
<autocomplete
jcr:primaryType= "nt:unstructured"
sling:resourceType= "granite/ui/components/foundation/form/autocomplete"
fieldLabel= "Autcomplete"
name= "./autocomplete"
displayProperty= "jcr:content/jcr:title"
predicates= "[type=cq:Page,path=/content/geometrixx,property=jcr:content/sling:resourceType,property.value=geometrixx/components/homepage]" >
<datasource
jcr:primaryType= "nt:unstructured"
sling:resourceType= "acs-commons/granite/ui/components/form/queryautocomplete/datasource" />
<options
jcr:primaryType= "nt:unstructured"
sling:resourceType= "granite/ui/components/foundation/form/autocomplete/list" />
</autocomplete>
Example Dialog
In the example below, the “Autocomplete” node will show results of the query generated by the xpath query.
/jcr:root/content/geometrixx//element(*, cq:Page) [jcr:content/@sling:resourceType = 'geometrixx/components/homepage']
The query is generated from using the predicate map:
type=cq:Page
path=/content/geometrixx
property=jcr:content/sling:resourceType
property.value=geometrixx/components/homepage
which is defined by the “predicates” property on the widget node.
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:jcr= "http://www.jcp.org/jcr/1.0" xmlns:cq= "http://www.day.com/jcr/cq/1.0" xmlns:nt= "http://www.jcp.org/jcr/nt/1.0" xmlns:sling= "http://sling.apache.org/jcr/sling/1.0" jcr:primaryType= "nt:unstructured" jcr:title= "List" sling:resourceType= "cq/gui/components/authoring/dialog" helpPath= "en/cq/current/wcm/default_components.html#List" >
<content
jcr:primaryType= "nt:unstructured"
sling:resourceType= "granite/ui/components/foundation/container" >
<layout
jcr:primaryType= "nt:unstructured"
sling:resourceType= "granite/ui/components/foundation/layouts/fixedcolumns" margin= "{Boolean}false" />
<items
jcr:primaryType= "nt:unstructured" >
<column
jcr:primaryType= "nt:unstructured"
sling:resourceType= "granite/ui/components/foundation/container" >
<items
jcr:primaryType= "nt:unstructured" >
<autocomplete
jcr:primaryType= "nt:unstructured"
sling:resourceType= "granite/ui/components/foundation/form/autocomplete"
fieldLabel= "Autocomplete"
name= "./autocomplete"
displayProperty= "jcr:content/jcr:title"
predicates= "[type=cq:Page,path=/content/geometrixx,property=jcr:content/sling:resourceType,property.value=geometrixx/components/homepage]" >
<datasource
jcr:primaryType= "nt:unstructured"
sling:resourceType= "acs-commons/granite/ui/components/form/queryautocomplete/datasource" />
<options
jcr:primaryType= "nt:unstructured"
sling:resourceType= "granite/ui/components/foundation/form/autocomplete/list" />
</autocomplete>
</items>
</column>
</items>
</content>
</jcr:root>