@onereach/channel-transformer
Version:
Convert data model between different channels (Slack, Microsoft Teams, Generic...)
43 lines (36 loc) • 1.32 kB
text/typescript
import { IGenericCheckbox } from '../../../generic/types';
import { ISlackCheckboxes, ISlackInput, ISlackTextObject } from '../../types';
import {
convertGenericOptions
} from '../helpers/convert-options';
import { transformTextObject } from './text';
import { transformConfirm } from './confirm';
import { getElementWithSectionWrapper } from '../helpers/section-wrapper';
export const transformCheckbox = ({
props
}: IGenericCheckbox): ISlackCheckboxes|ISlackInput => {
const element: ISlackCheckboxes = {
type: 'checkboxes',
action_id: props.slack?.action_id || props.variableName || props.web?.variableName,
options: convertGenericOptions(props.options)
};
if (props.slack?.confirm) {
element.confirm = transformConfirm(props.slack?.confirm);
}
if (props.value) {
const selected = props.options.filter(op => props.value[op.name] === true);
const initial_options = convertGenericOptions(selected);
if (initial_options?.length) {
element.initial_options = initial_options;
}
}
if (props.label) {
const label: ISlackTextObject = transformTextObject({
value: props.label,
type: 'plain'
});
const dispatch_action = props.web?.interactive;
return getElementWithSectionWrapper(element, label, dispatch_action);
}
return element;
};