50 lines
901 B
JavaScript
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,
|
|
}
|
|
}
|
|
}
|