budibase/packages/client/src/components/app/blocks/component-builder.js

50 lines
901 B
JavaScript

export class ComponentBuilder {
context
constructor(blockBuilder, type, props) {
this.blockBuilder = blockBuilder
this.type = type
this.id = `${blockBuilder.context.id}-${blockBuilder.componentCount++}`
this.props = props
this.children = []
this.styles = null
}
setProp(key, value) {
this.props[key] = value
return this
}
setProps(props) {
this.props = {
...this.props,
...props,
}
return this
}
setStyles(styles) {
this.styles = styles
return this
}
addChild(component) {
this.children.push(component)
return this
}
build() {
return {
_component: `@budibase/standard-components/${this.type}`,
_id: this.id,
_children: this.children?.map(child => child.build()),
_styles: {
normal: {
...this.styles,
},
},
...this.props,
}
}
}