UNPKG

@onereach/channel-transformer

Version:

Convert data model between different channels (Slack, Microsoft Teams, Generic...)

45 lines (34 loc) 1.18 kB
import { IGenericOptions, IGenericCheckbox } from "../../../generic/types"; import { IRWCAnswerComponent } from "../../types"; import { removeBackticks } from "../../utils"; const getDefaultValue = (options: Array<IGenericOptions>, def: Array<any>): Array<IGenericOptions> => { if (!def || !Array.isArray(def)) return null; const mappedDefValues = def.map(removeBackticks); const defaultValue = options.filter(option => mappedDefValues.includes(removeBackticks(option.label))); return defaultValue; } ; export const transformCheckboxGroup = (msg: IRWCAnswerComponent): IGenericCheckbox => { const options: Array<IGenericOptions> = msg.vBind?.options.map(({ label, value }) => { return { label, value, name: value, key: value }; }); const result: IGenericCheckbox = { type: 'checkbox', props: { value: {}, options, multiple: true, } }; const defaultValue = getDefaultValue(options, msg.vBind?.defaultValue); if (defaultValue) { options.forEach(({ name }) => { result.props.value[name] = defaultValue.findIndex(v => v.name === name) > -1; }); } return result; };