UNPKG

fox-block-builder

Version:

Maintainable code for loop slack-block-kit-like modal builder

45 lines (44 loc) 1.91 kB
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; };