createComplexForm
await crafttechApi.createComplexForm(config);Описание
Заголовок раздела «Описание»Cоздает сложную модальную форму с различными типами полей.
Параметры
Заголовок раздела «Параметры»config (object) - объект конфигурации формы:
Заголовок раздела «config (object) - объект конфигурации формы:»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), пока не будет выбрана соответствующая радиокнопка. При выборе опции связанное текстовое поле автоматически становится доступным для ввода.
- type (string) - тип поля:
actions(array) - массив объектов, описывающих кнопки действий. *Если в форме есть разделы обязательные для заполнения, первая кнопка переданная в массиве (по умолчанию “resolve”) не становится активной до заполнения всех required полей:- btnCap (string) — текст кнопки, который будет виден пользователю;
- btnVal (string) — значение, которое хранит кнопка;
- callback (function) — функция (например, макрос), который выполняется при нажатии на эту кнопку.
Возвращает
Заголовок раздела «Возвращает»Функция возвращает Promise, который разрешается в одном из двух вариантов:
-
При подтверждении формы возвращается объект, содержащий значения всех полей. Ключами в возвращаемом объекте являются имена групп (name) и/или ключи для сбора значений (value). Структура объекта зависит от типов полей:
text- строкаcheckbox- booleancheckbox-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";// }});
Обратная связь: support@crafttech.ru