Tuesday, July 31, 2018

AEM 63 Sample Coral 3 Multifield Item Listener

AEM 63 Sample Coral 3 Multifield Item Listener


Goal


Add a sample listener to the textfield item of Page Properties Vanity URL coral 3 multifield, changing the background to #AAA on focusout

Demo | Package Install | Github




Solution


1) Login to CRXDE Lite (http://localhost:4502/crx/de), create folder /apps/eaem-touch-ui-multifield-item-listener

2) Create node /apps/eaem-touch-ui-multifield-item-listener/clientlib of type cq:ClientLibraryFolder, add String property categories with value cq.authoring.dialog, String[] property dependencies with value underscore

3) Create file (nt:file) /apps/eaem-touch-ui-multifield-item-listener/clientlib/js.txt, add

                        listener.js

4) Create file (nt:file) /apps/eaem-touch-ui-multifield-item-listener/clientlib/listener.js, add the following code

(function ($, $document) {
var PAGE_PROPS_PATH = "/mnt/overlay/wcm/core/content/sites/properties.html",
CORAL_MF_NAME = "data-granite-coral-multifield-name",
CORAL_MF_NAME_VANITY = "./sling:vanityPath", listenerAttached = false;

if(window.location.pathname.indexOf(PAGE_PROPS_PATH) !== 0){
return;
}

$document.on("foundation-contentloaded", addListenerToVanityMF);

function addListenerToVanityMF(){
var $vanityMF = $("[" + CORAL_MF_NAME + "=" + CORAL_MF_NAME_VANITY + "]");

if(listenerAttached || _.isEmpty($vanityMF)){
return;
}

listenerAttached = true;

$vanityMF[0].on(change, function(){
var $mf = $(this), $text = $mf.find("[type=text]:last");

$text.focusout(function(){
$(this).css("background-color", "#AAA");
})
});

console.log($vanityMF);
}
}(jQuery, jQuery(document)));



visit link download