ToolJet/frontend/src/Editor/component-properties-resolution.js
Kavin Venkatachalam e6d43d21eb
[Feature]: Inline style support for custom component (#3076)
* Inline style support for custom component

* Added skipResolve check
2022-06-03 17:47:43 +05:30

53 lines
1.6 KiB
JavaScript

import { resolveReferences } from '@/_helpers/utils';
export const resolveProperties = (component, currentState, defaultValue, customResolvables) => {
if (currentState) {
return Object.entries(component.definition.properties).reduce(
(properties, entry) => ({
...properties,
...{
[entry[0]]: entry[1]?.skipResolve
? entry[1].value
: resolveReferences(entry[1].value, currentState, defaultValue, customResolvables),
},
}),
{}
);
} else return {};
};
export const resolveStyles = (component, currentState, defaultValue, customResolvables) => {
if (currentState) {
const styles = component.definition.styles;
return Object.entries(styles).reduce((resolvedStyles, entry) => {
const key = entry[0];
const value = entry[1]?.skipResolve
? entry[1].value
: resolveReferences(entry[1].value, currentState, defaultValue, customResolvables);
return {
...resolvedStyles,
...{ [key]: value },
};
}, {});
} else {
return {};
}
};
export const resolveGeneralProperties = (component, currentState, defaultValue, customResolvables) => {
if (currentState) {
const generalProperties = component.definition?.general ?? {};
return Object.entries(generalProperties).reduce((resolvedGeneral, entry) => {
const key = entry[0];
const value = entry[1]?.skipResolve
? entry[1].value
: resolveReferences(entry[1].value, currentState, defaultValue, customResolvables);
return {
...resolvedGeneral,
...{ [key]: value },
};
}, {});
} else {
return {};
}
};