fox-block-builder
Version:
Maintainable code for loop slack-block-kit-like modal builder
45 lines (44 loc) • 1.91 kB
TypeScript
import { PlainTextElement } from '@slack/web-api';
import { ModalBuilder } from '../../surfaces';
import { FoxOption } from '..';
import { TBuilder } from '../../utilities';
import { PluginModalMetaBuilder } from '../../plugin/modal/plugin-modal-meta.builder';
import { PluginModalMapBuilder } from '../../plugin/modal/plugin-modal-map.builder';
export type TPluginModalMapIdRef = [
/** [ID блока, на значения которого ориентируемся]: */
string,
/** [{верное значение или его часть}, {верное значение или его часть}] */
string[]
];
export type TPluginModalMapBuilderRef = [TBuilder, string[]];
export type TPluginModalMapValues = {
/** ID блока, которому задаем видимость */
[blockId: string]: {
/** [ID блока, на значения которого ориентируемся]: [{верное значение или его часть}, {верное значение или его часть}] */
[refBlockId: string]: string[];
};
};
export type TPluginModalMapAddValuesParams = [
/** ID блока, которому задаем видимость */
string,
/** Рефы */
TPluginModalMapIdRef
];
export type TOptionGroup = {
label: PlainTextElement;
options: FoxOption[];
};
export type TModalPageParams = {
/** Обьект модалки fox-block-builder */
view: ModalBuilder;
};
export type TModalFormParams = TModalPageParams & {
/** Обьект модалки fox-block-builder */
view: ModalBuilder;
/** Callback ID - путь контроллера @see ViewsController */
callbackId?: string;
/** Обьект метаданных формы */
meta?: PluginModalMetaBuilder;
/** Обьект видимости блоков */
map?: PluginModalMapBuilder;
};