FIX: adds select-kit api to modify header computed content (#5476)

This api would allow to simply modify header text or icons, eg:

```
      api.modifySelectKit("select-kit")
        .modifyHeaderComputedContent((context, computedContent) => {
          computedContent.title = "Not so evil";
          return computedContent;
        });
```
This commit is contained in:
Joffrey JAFFEUX
2018-01-09 10:52:32 +01:00
committed by GitHub
parent c9f42506b7
commit c9921869f1
6 changed files with 68 additions and 7 deletions

View File

@ -25,6 +25,15 @@ function modifyContent(pluginApiIdentifiers, contentFunction) {
_modifyContentCallbacks[pluginApiIdentifiers].push(contentFunction);
}
let _modifyHeaderComputedContentCallbacks = {};
function modifyHeaderComputedContent(pluginApiIdentifiers, contentFunction) {
if (Ember.isNone(_modifyHeaderComputedContentCallbacks[pluginApiIdentifiers])) {
_modifyHeaderComputedContentCallbacks[pluginApiIdentifiers] = [];
}
_modifyHeaderComputedContentCallbacks[pluginApiIdentifiers].push(contentFunction);
}
let _onSelectCallbacks = {};
function onSelect(pluginApiIdentifiers, mutationFunction) {
if (Ember.isNone(_onSelectCallbacks[pluginApiIdentifiers])) {
@ -50,6 +59,16 @@ export function applyContentPluginApiCallbacks(identifiers, content, context) {
return content;
}
export function applyHeaderContentPluginApiCallbacks(identifiers, content, context) {
identifiers.forEach((key) => {
(_modifyHeaderComputedContentCallbacks[key] || []).forEach((c) => {
content = c(context, content);
});
});
return content;
}
export function applyOnSelectPluginApiCallbacks(identifiers, val, context) {
identifiers.forEach((key) => {
(_onSelectCallbacks[key] || []).forEach((c) => c(context, val));
@ -70,6 +89,10 @@ export function modifySelectKit(pluginApiIdentifiers) {
modifyContent(pluginApiIdentifiers, callback);
return modifySelectKit(pluginApiIdentifiers);
},
modifyHeaderComputedContent: (callback) => {
modifyHeaderComputedContent(pluginApiIdentifiers, callback);
return modifySelectKit(pluginApiIdentifiers);
},
onSelect: (callback) => {
onSelect(pluginApiIdentifiers, callback);
return modifySelectKit(pluginApiIdentifiers);
@ -81,6 +104,7 @@ export function clearCallbacks() {
_appendContentCallbacks = {};
_prependContentCallbacks = {};
_modifyContentCallbacks = {};
_modifyHeaderComputedContentCallbacks = {};
_onSelectCallbacks = {};
}