editorShape
Описание
Необязательно. Массив объектов, определяющих настройки для управления внешним видом и поведением редактора Kanban.
Использование
editorShape?: [
{
// общие параметры для всех типов
type: string,
key: string,
label?: string,
// только для типа "dateRange"
key: {
start: string,
end: string
},
config?: {
align?: "start" | "center" | "end",
editable?: boolean | function,
buttons?: boolean,
css?: string,
disabled?: boolean,
done?: boolean,
error?: boolean,
format?: string,
months?: number,
placeholder?: string,
title?: string,
width?: string
},
// только для типа "date"
config?: {
align?: "start" | "center" | "end",
editable?: boolean | function,
buttons?: boolean,
css?: string,
disabled?: boolean,
error?: boolean,
format?: string,
placeholder?: string,
title?: string,
width?: string
},
// только для типа "color"
values?: array,
config?: {
clear?: boolean,
disabled?: boolean,
error?: boolean,
placeholder?: string,
title?: string
},
// только для типов "combo", "select" и "multiselect"
values?: [
{
id: string | number,
label: string,
avatar?: string // только для типа "multiselect"
},
{...} // другие опции
],
config?: {
clearButton?: boolean, // только для типа "combo"
label?: string, // только для типа "select"
checkboxes?: boolean, // только для типа "multiselect"
// общие параметры
disabled?: boolean,
error?: boolean,
placeholder?: string,
textField?: string,
title?: string
},
// только для типа "text"
config?: {
css?: string,
disabled?: boolean,
error?: boolean,
focus?: boolean,
icon?: string,
inputStyle?: string,
placeholder?: string,
readonly?: boolean,
select?: boolean,
title?: string,
type?: string
},
// только для типа "textarea"
config? {
disabled?: boolean,
error?: boolean,
placeholder?: string,
title?: string,
readonly?: boolean
},
// только для типа "progress"
config?: {
disabled?: boolean,
label?: string,
max?: number,
min?: number,
step?: number,
title?: string,
width?: number
},
// только для типа "files"
uploadURL?: string | function,
config?: {
accept?: string,
disabled?: boolean,
multiple?: boolean,
folder?: boolean,
},
// только для типа "comments"
config?: {
format?: string,
placement?: "page" | "editor",
html?: boolean,
confirmDeletion?: boolean
},
// только для типа "links"
config?: {
confirmDeletion?: boolean
},
}, { /* другие настройки контролов */ }
];
Параметры
Внешний вид и функциональность редактора можно настроить с помощью следующих параметров (полей):
- Общие параметры для всех типов
type
- (обязательный) задаёт тип поля редактора.
Поддерживаемые типы полей в редакторе Kanban: dateRange, date, combo, select, multiselect, color, text, textarea, progress, files, comments и links.
key
- (обязательный) ключ для поля редактора. Должен совпадать со значением, указанным в свойствеcardShape
. Пример:
// настройки внешнего вида карточки
const cardShape = {
...kanban.defaultCardShape,
headerFields: [
{ // пользовательское поле
label: "Пользовательское поле",
css: "custom_style",
key: "custom_key"
}
]
};
// настройки внешнего вида редактора
const editorShape = [
{
label: "Пользовательское п оле",
type: "text",
key: "custom_key"
}
];
label
- (необязательно) название поля редактора.
- Параметры для типа "dateRange"
key
- (обязательный) объект с ключами для поля редактора:start
- (обязательный) ключ начала периодаend
- (обязательный) ключ конца периода
Эти ключи соответствуют тем, что используются в свойстве cardShape
.
config
- (необязательно) объект конфигурации для поля "dateRange" с опциями:align
- (необязательно) выравнивание всплывающего календаря относительно контрола выбора периодаeditable
- (н еобязательно) управление возможностью редактирования даты; также можно задать свой форматbuttons
- (необязательно) отображение кнопок "Сегодня" и "Очистить" под календарёмcss
- (необязательно) позиционирование иконки в контроле выбора периодаdisabled
- (необязательно) отключение контрола выбора периодаdone
- (необязательно) отображение кнопки "Готово" в контролеerror
- (необязательно) применение стиля ошибкиformat
- (необязательно) формат даты. Доступные варианты смотрите здесьmonths
- (необязательно) количество отображаемых календарейplaceholder
- (необязательно) текст-заполнительtitle
- (необязательно) тултип или заголовокwidth
- (необязательно) ширина всплывающего календаря
- Параметры для типа "date"
config
- (необязательно) объект конфигурации для поля "date" с опциями:align
- (необязательно) выравнивание всплывающего календаря относительно контрола датыeditable
- (необязательно) возможность редактирования даты; можно указать форматbuttons
- (необязательно) показывать или скрывать кнопки "Сегодня" и "Очистить"css
- (необязательно) позиционирование иконкиdisabled
- (необязательно) отключение контролаerror
- (необязательно) применение стиля ошибкиformat
- (необязательно) формат даты. Подробнее здесьplaceholder
- (необязательно) текст-заполнительtitle
- (необязательно) тултип или заголовокwidth
- (необязательно) ширина календаря
- Параметры для типа "color"
values
- (необязательно) массив допустимых HEX-кодов цветовconfig
- (необязательно) объект конфигурации для поля "color" с опциями:placeholder
- (необязательно) текст-заполнительclear
- (необязательно) отображение иконки очисткиdisabled
- (необязательно) отключение контролаerror
- (необязательно) применение стиля ошибкиtitle
- (необязательно) тултип или заголовок
- Параметры для типов "combo", "select" и "multiselect"
values
- (необязательно) массив объектов с опциями выпадающего списка:id
- (обязательно) идентификатор опцииlabel
- (обязательно) метка опцииavatar
- (необязательно) путь к изображению (только для "multiselect")
Для назначения одного пользователя используйте типы "select" или "combo", а для выбора нескольких - "multiselect".
config
- (необязательно) объект конфигурации для этих типов, включающий:-
clearButton
- (необязательно) кнопка очистки в поле ввода ("combo") -
label
- (необязательно) ключ для связывания опций с вводом ("select") -
checkboxes
- (необязательно) отображение чекбоксов рядом с опциями ("multiselect") -
textField
- (необязательно) ключ для связывания опций с вводом ("combo" и "multiselect") -
disabled
- (необязательно) отключение контрола -
error
- (необязательно) применение стиля ошибки -
placeholder
- (необязательно) текст-заполнитель -
title
- (необязательно) тултип или заголовок
-
- Параметры для типа "text"
config
- (необязательно) объект конфигурации для поля "text" с опциями:css
- (необязательно) позиция иконки внутри контролаdisabled
- (необязательно) отключение контролаerror
- (необязательно) применение стиля ошибкиfocus
- (необязательно) установка фокусаicon
- (необязательно) добавление иконки внутрь контролаinputStyle
- (необязательно) пользовательские стилиplaceholder
- (необязательно) текст-заполнительreadonly
- (необязательно) режим только для чтенияselect
- (необязательно) выделение содержимогоtitle
- (необязательно) тултип или заголовокtype
- (необязательно) тип input
- Параметры для типа "textarea"
config
- (необязательно) объект конфигурации для поля "textarea" с опциями:disabled
- (необязательно) отключение контролаerror
- (необязательно) стиль ошибкиplaceholder
- (необязательно) текст-заполнительtitle
- (необязательно) тултип или заголовокreadonly
- (необязательно) режим только для чтения
- Параметры для типа "progress"
config
- (необязательно) объект конфигурации для поля "progress" с опциями:disabled
- (необязательно) отключение контролаlabel
- (необязательно) метка над контроломmax
- (необязательно) максимальное значениеmin
- (необязательно) минимальное значениеstep
- (необязательно) шаг измененияtitle
- (необязательно) тултип или заголовокwidth
- (необязательно) ширина контрола
- Параметры для типа "files"
uploadURL
- (необязательно) URL загрузчика файлов редактора, подробности ниже
Details
uploadURL
может быть задан как строка, так и функция. Пример с функцией:
uploadURL: rec => {
const formData = new FormData();
formData.append("upload", rec.file);
const config = {
method: "POST",
body: formData,
headers: {
'Authorization': 'Bearer ' + token // здесь токен или другие заголовки
}
};
return fetch(url + "/uploads", config) // URL здесь
.then(res => res.json())
.then(
data => {
rec.id = data.id;
return data;
},
() => ({ id: rec.id, status: "error" })
)
.catch();
}
Параметр rec
- расширенный объект PointerEvent
с дополнительными свойствами:
interface UploadEvent extends PointerEvent {
id: number;
status: "client" | "server" | "error"; // означает "ещё не отправлен", "отправлен успешно" или "ошибка"
name: string; // имя файла
file: string | Blob; // сам файл
}
config
- (необязательно) объект конфигурации для поля "files" с опциями:accept
- (необязательно) допустимые типы файлов (например, "image/", "video/", "audio/"*)disabled
- (необязательно) включение или отключение загрузки файловmultiple
- (необязательно) разрешение на множественную загрузкуfolder
- (необязательно) разрешение на загрузку папок
- Параметры для типа "comments"
config
- (необязательно) объект конфигурации для поля "comments" с опциями:format
- (необязательно) формат даты комментариев. Варианты смотрите здесьplacement
- (необязательно) место отображения комментариев:"editor"
- внутри редактора"page"
- в отдельной панели
html
- (необязательно) разрешение или запрет HTML-разметки в комментарияхconfirmDeletion
- (необязательно) отображение окна подтверждения при удалении комментариев
- Параметры для типа "links"
config
- (необязательно) объект конфигурации для поля "links" с опциями:confirmDeletion
- (необязательно) отображение окна подтверждения при удалении ссылок
Если свойство editorShape
не задано, виджет использует параметры из defaultEditorShape по умолчанию.
Конфигурация по умолчанию
const defaultPriorities = [
{ id: 1, color: "#FE6158", label: "Высокий" },
{ id: 2, color: "#F1B941", label: "Средний" },
{ id: 3, color: "#77D257", label: "Низкий" }
];
const defaultColors = ["#33B0B4", "#0096FA", "#F1B941"];
const defaultEditorShape = [
{
key: "label",
type: "text",
label: "Название"
},
{
key: "description",
type: "textarea",
label: "Описание"
},
{
type: "combo",
label: "Приоритет",
key: "priority",
config: {
clearButton: true
}
},
{
type: "color",
label: "Цвет",
key: "color"
},
{
type: "progress",
key: "progress",
label: "Прогресс"
},
{
type: "date",
key: "start_date",
label: "Дата начала"
},
{
type: "date",
key: "end_date",
label: "Дата окончания"
},
{
type: "multiselect",
key: "users",
label: "Пользователи"
}
];
Пример
const users = [ // данные пользователей
{ id: 1, label: "Джон Смит", avatar: "../assets/user.jpg" },
{ id: 2, label: "Аарон Шорт" }
];
const editorShape = [ // настройки редактора
...kanban.defaultEditorShape, // включить настройки по умолчанию
{ // добавить кастомные поля
type: "multiselect",
key: "users",
label: "Пользователи",
values: users
},
{
type: "comments",
key: "comments",
label: "Комментарии",
config: {
format: "%M %d",
placement: "page",
html: true,
confirmDeletion: true
}
},
{
type: "links",
key:"links",
label: "Ссылки",
config: {
confirmDeletion: true
}
}
];
new kanban.Kanban("#root", {
cards,
columns,
editorShape,
// другие параметры
});
История изменений:
- Добавлен тип dateRange в версии 1.3
- Добавлены типы редактора comments и links, а также параметры format в версии 1.4
Связанные статьи: Конфигурация