Перейти к содержимому

createComplexForm

await crafttechApi.createComplexForm(config);

Cоздает сложную модальную форму с различными типами полей.

  • title (string) - заголовок модального окна;
  • input (array) - массив объектов, описывающих поля формы:
    • type (string) - тип поля:
      • text - текстовое поле;
      • checkbox - чекбокс;
      • checkbox-group - группа чекбоксов;
      • radio-group - группа радиокнопок;
      • directory-picker - выбор директории;
      • file-picker - выбор файла.
    • label (string) - текст метки поля;
    • name (string) - имя группы (используется для групповых элементов);
    • value (string) - ключ для сбора значений;
    • required (boolean) - (необязательный) обязательность заполнения (по умолчанию false);
    • placeholder (string) - (необязательный) текст подсказки для текстовых полей;
    • checked (boolean) - (необязательный) состояние чекбокса/радиокнопки (по умолчанию false);
    • options (Array, required для checkbox-group и radio-group) - массив опций:
      • value (string) - значение опции / ключ для сбора значений;
      • label (string) - текст опции;
      • checked (boolean) - (необязательный) выбрана ли опция по умолчанию (по умолчанию false);
      • withInput (boolean, только для radio-group) - (необязательный) требуется ли дополнительное текстовое поле. *Текстовые поля, связанные с радиокнопками, остаются неактивными (disabled), пока не будет выбрана соответствующая радиокнопка. При выборе опции связанное текстовое поле автоматически становится доступным для ввода.
  • actions (array) - массив объектов, описывающих кнопки действий. *Если в форме есть разделы обязательные для заполнения, первая кнопка переданная в массиве (по умолчанию “resolve”) не становится активной до заполнения всех required полей:
    • btnCap (string) — текст кнопки, который будет виден пользователю;
    • btnVal (string) — значение, которое хранит кнопка;
    • callback (function) — функция (например, макрос), который выполняется при нажатии на эту кнопку.

Функция возвращает Promise, который разрешается в одном из двух вариантов:

  • При подтверждении формы возвращается объект, содержащий значения всех полей. Ключами в возвращаемом объекте являются имена групп (name) и/или ключи для сбора значений (value). Структура объекта зависит от типов полей:

    • text - строка
    • checkbox - boolean
    • checkbox-group - массив выбранных значений
    • radio-group - строка или объект (если есть withInput)
    • directory-picker/file-picker - строка (путь)
  • При отмене (по кнопке или закрытии формы) возвращается undefined.

const config = {
title: "Загрузка из файлов",
input: [
{
type: "directory-picker",
label: "Извлечь файлы из папки:",
value: "dirPath",
required: true,
},
{
type: "radio-group",
name: "dataSheets",
label: "Считывать листы:",
required: true,
options: [
{ value: "all", label: "все" },
{ value: "byName", label: "по названию", withInput: true },
{ value: "byNum", label: "по номерам", withInput: true },
],
},
{
type: "text",
label: "Строк заголовка:",
value: "headerRowsCount",
required: true,
},
{
type: "checkbox-group",
name: "options",
label: "Дополнительно:",
options: [
{
value: "headers",
label: "Использовать заголовок первого листа при загрузке",
checked: true,
},
{ value: "valuesOnly", label: "Копировать только значения" },
],
},
{
type: "radio-group",
name: "targetSheet",
label: "Загрузить в:",
required: true,
options: [
{ value: "currentSheet", label: "текущий лист" },
{ value: "newSheet", label: "новый лист" },
],
},
],
actions: [{ btnCap: "Загрузить", btnVal: "resolve", callback: () => console.log('done') }],
};
await crafttechApi.createComplexForm(config).then((data) => {
console.log(data);
// Пример resolve:
// {
// dataSheets: {
// byName: "Отчет";
// }
// dirPath: "C:\\Users\\user_name\\Desktop";
// headerRowsCount: "6";
// options: ["headers"];
// targetSheet: "currentSheet";
// }
});

form-example