Заголовок: уровни от H1 до H6
Блоки заголовков от H1 до H6. Поддерживают несколько пунктов тулбокса, по одному на уровень заголовка, и сочетания клавиш (#, ##, ### и т. д.).
На любом уровне доступен необязательный режим переключателя, который сворачивает и разворачивает дочерние блоки. В тулбоксе есть пункты от «Сворачиваемый заголовок 1» до «Сворачиваемый заголовок 6», доступные по markdown-префиксам ># … >######.
Преобразование существующего блока в сворачиваемый заголовок забирает его секцию: используйте «Преобразовать в» или blocks.convert с isToggleable: true. Каждый следующий соседний блок до ближайшего заголовка того же или более высокого ранга становится дочерним для нового переключателя. Так же это работает в Notion.
Импорт
import { Header } from '@bloklabs/core/tools';Конфигурация
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
placeholder | string | level name (e.g. "Heading 2", localised) | Плейсхолдер, который показывается в пустом блоке заголовка. |
levels | number[] | [1,2,3,4,5,6] | Ограничивает набор доступных уровней заголовков. |
defaultLevel | number | 2 | Уровень заголовка, который используется при вставке нового блока header. |
levelOverrides | Record<number, { tag?, name?, size?, marginTop?, marginBottom? }> | {} | Переопределения HTML-тега, отображаемого названия или CSS-значений для каждого уровня. |
shortcuts | Record<number, string> | undefined | Собственные markdown-префиксы для каждого уровня заголовка. Если опция не задана, используются стандартные markdown-префиксы (#, ## …). Передайте пустой объект {}, чтобы отключить префиксы обычных заголовков. Префиксы сворачиваемых заголовков ( |
anchorIds | boolean | (text: string, blockId: string) => string | undefined | Подключаемые по желанию id-якоря, выводимые из текста отрисованных заголовков.
Id остаются синхронными при правках текста и переживают смену уровня. Если у заголовка есть собственный data.anchor, сохраняется он. Устранение дублей между блоками сюда не входит, потребители дедуплицируют их сами. |
Формат данных
interface HeaderData {
text: RichText; // Heading text as segments (HeaderToolData holds HTML)
level: number; // 1–6
isToggleable?: boolean; // true when the heading has toggle (collapse/expand)
textColor?: string; // Block colour preset, present when set
backgroundColor?: string; // Block background colour preset, present when set
anchor?: string; // Anchor id for in-document links, present when set
}{
"id": "def456",
"type": "header",
"data": {
"text": [{ "text": "Getting Started" }],
"level": 2
}
}Пример использования
import { Blok } from '@bloklabs/core';
import { Header } from '@bloklabs/core/tools';
const editor = new Blok({
holder: 'editor',
tools: {
header: {
class: Header,
levels: [1, 2, 3],
defaultLevel: 2,
placeholder: 'Enter a heading',
},
},
});