add documentation to js util »setup«
This commit is contained in:
parent
b65b44bf8a
commit
99394bf166
@ -5,9 +5,16 @@
|
|||||||
|
|
||||||
var registeredSetupListeners = {};
|
var registeredSetupListeners = {};
|
||||||
|
|
||||||
window.utils.setup = function(utilType, scope, options) {
|
/**
|
||||||
|
* setup function to initiate a util (utilName) on a scope (sope) with options (options).
|
||||||
|
*
|
||||||
|
* A util has to define an itself at `window.utils` as shown for the `autoSubmit` util:
|
||||||
|
* `window.utils.autoSubmit = function(wrapper, options) { ... };`
|
||||||
|
*/
|
||||||
|
|
||||||
if (!utilType || !scope) {
|
window.utils.setup = function(utilName, scope, options) {
|
||||||
|
|
||||||
|
if (!utilName || !scope) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -15,44 +22,44 @@
|
|||||||
|
|
||||||
var listener = function(event) {
|
var listener = function(event) {
|
||||||
|
|
||||||
if (event.detail.targetUtil !== utilType) {
|
if (event.detail.targetUtil !== utilName) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.setupFunction) {
|
if (options.setupFunction) {
|
||||||
options.setupFunction(scope, options);
|
options.setupFunction(scope, options);
|
||||||
} else {
|
} else {
|
||||||
var util = window.utils[utilType];
|
var util = window.utils[utilName];
|
||||||
if (!util) {
|
if (!util) {
|
||||||
throw new Error('"' + utilType + '" is not a known js util');
|
throw new Error('"' + utilName + '" is not a known js util');
|
||||||
}
|
}
|
||||||
|
|
||||||
util(scope, options);
|
util(scope, options);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if (registeredSetupListeners[utilType] && !options.singleton) {
|
if (registeredSetupListeners[utilName] && !options.singleton) {
|
||||||
registeredSetupListeners[utilType].push(listener);
|
registeredSetupListeners[utilName].push(listener);
|
||||||
} else {
|
} else {
|
||||||
window.utils.teardown(utilType);
|
window.utils.teardown(utilName);
|
||||||
registeredSetupListeners[utilType] = [ listener ];
|
registeredSetupListeners[utilName] = [ listener ];
|
||||||
}
|
}
|
||||||
|
|
||||||
document.addEventListener('setup', listener);
|
document.addEventListener('setup', listener);
|
||||||
|
|
||||||
document.dispatchEvent(new CustomEvent('setup', {
|
document.dispatchEvent(new CustomEvent('setup', {
|
||||||
detail: { targetUtil: utilType, module: 'none' },
|
detail: { targetUtil: utilName, module: 'none' },
|
||||||
bubbles: true,
|
bubbles: true,
|
||||||
cancelable: true,
|
cancelable: true,
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
|
|
||||||
window.utils.teardown = function(utilType) {
|
window.utils.teardown = function(utilName) {
|
||||||
if (registeredSetupListeners[utilType]) {
|
if (registeredSetupListeners[utilName]) {
|
||||||
registeredSetupListeners[utilType].forEach(function(listener) {
|
registeredSetupListeners[utilName].forEach(function(listener) {
|
||||||
document.removeEventListener('setup', listener);
|
document.removeEventListener('setup', listener);
|
||||||
});
|
});
|
||||||
delete registeredSetupListeners[utilType];
|
delete registeredSetupListeners[utilName];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
|
|||||||
Reference in New Issue
Block a user