fox-loop-modal-utils
TypeScript icon, indicating that this package has built-in type declarations

1.6.5 • Public • Published

Модуль с утилитами для создания модалок

Установка

npm i fox-loop-modal-utils

Использование

Модуль предоставляет несколько классов, упрощающих создание элементов для плагина Loop

Пример использования:

import { Blocks } from 'fox-slack-block-builder';
import { BlockId } from 'fox-loop-modal-utils';

Blocks.Input({
  label: 'Адрес электронной почты пользователя, которому открываем доступ',
  blockId: BlockId('blockId', {
    /** Надо ли дополнительно задать название блоку вручную (нужно когда у разных блоков один custom id) */
    name: 'имяБлока',
    /** Надо ли при сабмите формы проставить в пф value поля вместо text/label */
    value: true,
    /** Номер custom field в ПФ */
    custom: 123456,
    /** Создать id для поля LoopForm */
    loop: true,
    /** Ключ хендбука для простановки опций в селекте */
    handbook: 'bu',
    /** Заполнение годами по текущий начиная с заданного */
    setYear: {
      /** Год, с которого начать */
      since: 1990,
      /** флажок заполнения одним числом (2020) - 'single' или двумя (2020-2021) - 'double' */
      type: 'single',
    },
    /** Добавляет блок в название задачи */
    asTitle: true,
    /** Задает параметры аналитики */
    analytics: { id: 123456, field: 123456 },
    /** Показывать блок в соотв. команде - 'forFoxford' | 'forTeachers' */
    forTeam: 'forFoxford',
    /** нужно ли проставить изначальную дату относительно сегодня */
    initialDate: {
      /** Дни +/- от сегодня, например -1 или 5 */
      days: 2,
      /** Какие учитывать дни, рабочие - 'business' или все - 'regular' */
      type: 'business',
    },
    /** Позволяет ограничивать доступ к блоку добавляя в него access_modalAccess */
    access: 'modalAccess',
    /** Флаг удаления блока из описания задачи */
    exclude: false,
  }),
});
import { ViewMeta } from 'fox-loop-modal-utils';

const meta = new ViewMeta({
  /** Номер шаблона планфикса */
  template: 1234567890;
  /** Название задачи */
  title: 'Название задачи';
  /** Кастомные поля для шаблонов */
  customValue: [
    { id: 123456; value: 123456 },
  ];
  /** ID проекта планфикса */
  projectId: 123456;
  /** Статус задачи */
  statusSet: 1;
  /** Ответственные  */
  workers: {
    users: { id: [123456, 123456] };
    groups: { id: [123456, 123456] };
  };
  /** Нужно ли установить ответственных */
  setWorkers?: true;
  /** Статус задачи */
  status?: 2
  /** General задачи */
  general?: 123456;
  /** Родительская задача */
  parentTask?: 123456;
  parentFieldId?: 123456;
  emailNameInBody?: true;
  tag?: 'тег';
  subject?: 'тема';
  isOwner?: true;
  stage?: 'стадия заявки';
  /** Канал сообщения в Loop */
  channelId?: 'qwerty12356';
  /** ID сообщения в Loop */
  messageId?: 'qwerty12356';
  /** Действия с описанием задачи, если оно уже есть */
  descAction?: 'keep' | 'add' | 'set';
  /** Отправка сообщений при сабмите формы */
  postMessage?: 'сообщение';
  /** Дата начала */
  beginDateTime?: '11.12.1990';
 });
import { Blocks } from 'fox-slack-block-builder';

import { ViewMap } from 'fox-loop-modal-utils';

const block = Blocks.Input();

const blocks = [block, block];

const map = new ViewMap({
  /** ID блока, которому задаем видимость */
  blockId: {
    /** [ID блока, на значения которого ориентируемся]: [{верное значение или его часть}, {верное значение или его часть}] */
    refBlockId: ['value'],
  },
})
  .setForBlockId('blockId', { refBlockId: ['value'] })
  .setForBlocks(blocks, {
    refBlockId: ['value'],
  })
  .setForSingleBlock(block, { productType: ['courses'] });
const analytics = new ViewAnalytics({
  /** ID аналитики */
  analyticId: 123456,
  /** Значения для блоков */
  blockFields: {
    blockId: 123456,
  },
}).setForBlockValue({
  /** Задать значения по значению одного из блоков */
  /** ID блока */
  blockId: 'blockId',
  /** Значение */
  value: 'value',
  /** Значения аналитики для других блоков */
  blockFields: {
    otherBlockId: 12345,
  },
});
import { Blocks, Elements, Modal } from 'fox-slack-block-builder';
import { LoopModalBuilder } from 'fox-loop-modal-utils';

const view = Modal({
  title: 'Название',
  close: 'Назад',
  submit: 'Выйти',
}).blocks(
  Blocks.Section({
    text: 'text',
  }).accessory(
    Elements.Button({
      text: 'Перейти',
      value: 'value',
    }),
  ),
  Blocks.Section({
    text: 'Text',
  }).accessory(
    Elements.Button({
      text: 'Перейти',
      value: 'value',
    }),
  ),
);

export const page = LoopModalBuilder.Page({ view });
import { Blocks, Elements, Modal } from 'fox-slack-block-builder';
import { LoopModalBuilder } from 'fox-loop-modal-utils';

const view = Modal({
  title: 'Название',
  close: 'Назад',
  submit: 'Выйти',
}).blocks(
  Blocks.Section({
    text: 'text',
  }).accessory(
    Elements.Button({
      text: 'Перейти',
      value: 'value',
    }),
  ),
  Blocks.Section({
    text: 'Text',
  }).accessory(
    Elements.Button({
      text: 'Перейти',
      value: 'value',
    }),
  ),
);

export const menu = LoopModalBuilder.Menu({ view });
import { Blocks, Elements, Modal } from 'fox-slack-block-builder';

import { ViewAnalyticsBuilder, ViewMapBuilder, ViewMetaBuilder } from './src';
import { LoopModalBuilder } from './src/entities/modal-builder';

enum ECallbackId {
  CallbackId = 'callbackId',
}

const meta = ViewMetaBuilder.Create();

const view = Modal({
  title: 'Название',
  close: 'Назад',
  submit: 'Выйти',
}).blocks(
  /** Блоки */
  Blocks.Input({
    blockId: 'userBlock',
    label: 'Выбор пользователя',
  }).element(Elements.UserSelect()),
);

const map = ViewMapBuilder.Create();
const analytics = ViewAnalyticsBuilder.Create({
  analyticId: 123456,
  blockFields: {},
});

export const form = LoopModalBuilder.Form({
  meta,
  view,
  map,
  analytics,
  callbackId: ECallbackId.CallbackId,
});

Readme

Keywords

none

Package Sidebar

Install

npm i fox-loop-modal-utils

Weekly Downloads

64

Version

1.6.5

License

ISC

Unpacked Size

529 kB

Total Files

283

Last publish

Collaborators

  • triplesun