2.0.5 • Published 6 months ago

fox-loop-modal-utils v2.0.5

Weekly downloads
-
License
ISC
Repository
github
Last release
6 months ago

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

Установка

npm i fox-loop-modal-utils

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

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

BlockId

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

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,
  }),
});

ViewMeta

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';
 });

ViewMap

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'] });

ViewAnalytics

const analytics = new ViewAnalytics({
  /** ID аналитики */
  analyticId: 123456,
  /** Значения для блоков */
  blockFields: {
    blockId: 123456,
  },
}).setForBlockValue({
  /** Задать значения по значению одного из блоков */
  /** ID блока */
  blockId: 'blockId',
  /** Значение */
  value: 'value',
  /** Значения аналитики для других блоков */
  blockFields: {
    otherBlockId: 12345,
  },
});

Page

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 });

Menu

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 });

Form

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,
});
2.0.3

6 months ago

2.0.2

6 months ago

2.0.5

6 months ago

2.0.4

6 months ago

2.0.1

6 months ago

2.0.0

6 months ago

1.9.93

6 months ago

1.9.92

6 months ago

1.9.91

6 months ago

1.9.9

6 months ago

1.9.88

6 months ago

1.9.87

6 months ago

1.9.86

6 months ago

2.0.15

6 months ago

1.9.85

6 months ago

2.0.12

6 months ago

2.0.20

6 months ago

1.9.8

6 months ago

1.9.7

6 months ago

1.9.5

6 months ago

1.9.4

6 months ago

1.9.3

6 months ago

1.9.2

6 months ago

1.9.1

6 months ago

1.9.0

6 months ago

1.9.84

6 months ago

1.9.83

6 months ago

1.9.82

6 months ago

1.9.81

6 months ago

1.8.0

6 months ago

1.7.91

6 months ago

1.7.9

6 months ago

1.7.8

6 months ago

1.7.6

6 months ago

1.7.5

6 months ago

1.7.4

7 months ago

1.7.3

7 months ago

1.7.2

7 months ago

1.7.1

7 months ago

1.7.0

7 months ago

1.6.8

7 months ago

1.6.7

8 months ago

1.6.6

8 months ago

1.6.5

8 months ago

1.6.4

8 months ago

1.6.3

8 months ago

1.6.2

8 months ago

1.6.1

8 months ago

1.6.0

8 months ago

1.5.9

8 months ago

1.5.8

8 months ago

1.5.7

8 months ago

1.5.5

9 months ago

1.5.4

9 months ago

1.5.3

9 months ago

1.4.4

9 months ago

1.5.2

9 months ago

1.4.3

9 months ago

1.5.1

9 months ago

1.4.2

9 months ago

1.5.0

9 months ago

1.2.0

9 months ago

1.3.7

9 months ago

1.2.8

9 months ago

1.3.6

9 months ago

1.2.7

9 months ago

1.3.5

9 months ago

1.2.6

9 months ago

1.3.4

9 months ago

1.2.5

9 months ago

1.3.3

9 months ago

1.2.4

9 months ago

1.4.1

9 months ago

1.3.2

9 months ago

1.2.3

9 months ago

1.4.0

9 months ago

1.3.1

9 months ago

1.2.2

9 months ago

1.3.0

9 months ago

1.2.1

9 months ago

1.3.9

9 months ago

1.3.8

9 months ago

1.2.9

9 months ago

1.1.1

9 months ago

1.1.0

9 months ago

1.0.7

9 months ago

1.1.5

9 months ago

1.1.4

9 months ago

1.1.3

9 months ago

1.1.2

9 months ago

1.0.6

9 months ago

1.0.5

9 months ago

1.0.4

9 months ago

1.0.3

9 months ago

1.0.2

9 months ago

1.0.1

9 months ago

1.0.0

9 months ago