Adding override option to widget config
This commit is contained in:
parent
70628da819
commit
1876f89c89
|
@ -59,22 +59,32 @@ const isReactComponent = component => {
|
||||||
*/
|
*/
|
||||||
export const getWidget = arg => {
|
export const getWidget = arg => {
|
||||||
|
|
||||||
const instantiate = (widget, config) => {
|
const instantiate = (widget, config, type) => {
|
||||||
|
// Check if user forced explicit type
|
||||||
if (typeof widget === 'string' || widget instanceof String) {
|
if (typeof widget === 'string' || widget instanceof String) {
|
||||||
|
// Built-in
|
||||||
return React.createElement(BUILTIN_WIDGETS[widget], config);
|
return React.createElement(BUILTIN_WIDGETS[widget], config);
|
||||||
} else if (isReactComponent(widget)) {
|
} else {
|
||||||
return React.createElement(widget, config);
|
// Plugin
|
||||||
} else if (typeof widget === 'function' || widget instanceof Function) {
|
if (type?.toLowerCase() === 'react') {
|
||||||
return <WrappedWidget widget={widget} config={config} />
|
return React.createElement(widget, config);
|
||||||
} else {
|
} else {
|
||||||
throw `${widget} is not a valid plugin`
|
// Auto-detect
|
||||||
|
if (isReactComponent(widget)) {
|
||||||
|
return React.createElement(widget, config);
|
||||||
|
} else if (typeof widget === 'function' || widget instanceof Function) {
|
||||||
|
return <WrappedWidget widget={widget} config={config} />
|
||||||
|
} else {
|
||||||
|
throw `${widget} is not a valid plugin`
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// First, check 'top-level' vs. 'nested object' case
|
// First, check 'top-level' vs. 'nested object' case
|
||||||
if (arg.widget) {
|
if (arg.widget) {
|
||||||
const { widget, ...config } = arg;
|
const { widget, type, ...config } = arg;
|
||||||
return instantiate(widget, config);
|
return instantiate(widget, config, type);
|
||||||
} else {
|
} else {
|
||||||
// No object with args -> instantiate arg directly
|
// No object with args -> instantiate arg directly
|
||||||
return instantiate(arg);
|
return instantiate(arg);
|
||||||
|
|
Loading…
Reference in New Issue