@brandup/ui-textbox 1.0.49 → 1.0.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -56,7 +56,7 @@ textbox.on(CHANGE_EVENT, (data: ChangeEventData) => {
56
56
  | `data-format` | Включает форматирование текста (только для `type="text"`) |
57
57
  | `data-format-tools` | Состав инструментов форматирования через пробел (по умолчанию все): `bold italic strike underline spoiler code` |
58
58
  | `data-editor-actions` | Кнопки действий в панели через пробел (по умолчанию нет): `erase undo redo` |
59
- | `data-blocks` | Типы блоков многострочного поля через пробел (по умолчанию все): `quote code`; пустое значение оставляет только обычный текст |
59
+ | `data-blocks` | Типы блоков многострочного поля через пробел: `quote code`. Подключаются только объявлением без атрибута поле остаётся обычным текстом, и панель не показывается |
60
60
  | `data-format-storage` | Формат хранения значения: `html` (по умолчанию) или `markdown` |
61
61
  | `data-format-md-<tool>` | Markdown-маркер инструмента: `bold` — `**`, `italic` — `_`, `strike` — `~`, `underline` — `__`, `spoiler` — `\|\|`, `code` — `` ` `` |
62
62
 
@@ -64,8 +64,6 @@ textbox.on(CHANGE_EVENT, (data: ChangeEventData) => {
64
64
 
65
65
  Атрибут `data-format` включает панель форматирования с инструментами: жирный, курсив, зачёркивание, подчёркивание, спойлер, моноширинный. Панель всплывает над контролом, пока он в фокусе (класс состояния `focused`). Работает поверх существующего `contenteditable`-редактора, поэтому доступно только для текстового ввода (`type="text"` и `<textarea>`).
66
66
 
67
- Кнопка спойлера в панели временно скрыта (см. [`@brandup/ui-richeditor`](../brandup-ui-richeditor)): сам инструмент работает — значение разбирается, показывается и сохраняется.
68
-
69
67
  ```html
70
68
  <!-- все инструменты, хранение в HTML -->
71
69
  <textarea data-content-script="textbox" data-format></textarea>
@@ -92,12 +90,14 @@ textbox.on(CHANGE_EVENT, (data: ChangeEventData) => {
92
90
 
93
91
  ### Блоки — `data-blocks`
94
92
 
95
- В многострочном поле (`<textarea>`) верхний уровень состоит из блоков. Обычный текст доступен всегда, цитата (`quote`) и блок кода (`code`) тоже; набор ограничивают списком через пробел:
93
+ В многострочном поле (`<textarea>`) верхний уровень состоит из блоков. Обычный текст доступен всегда, а цитата (`quote`) и блок кода (`code`) подключаются явно списком через пробел:
96
94
 
97
95
  ```html
98
96
  <textarea data-content-script="textbox" data-format data-blocks="quote"></textarea>
99
97
  ```
100
98
 
99
+ Без атрибута поле остаётся обычным текстом, и панель форматирования сама по себе не появляется — как и действия, блоки включают объявлением. Пустое значение атрибута равносильно его отсутствию.
100
+
101
101
  **Enter** внутри блока заканчивает его, **Shift+Enter** переносит строку внутри, **Backspace** в начале блока возвращает обычный текст. Разбор, хранение и правку блоков описывает [`@brandup/ui-richeditor`](../brandup-ui-richeditor).
102
102
 
103
103
  ### Применение формата
package/package.json CHANGED
@@ -24,15 +24,15 @@
24
24
  "email": "it@brandup.online"
25
25
  },
26
26
  "license": "Apache-2.0",
27
- "version": "1.0.49",
27
+ "version": "1.0.50",
28
28
  "main": "source/index.ts",
29
29
  "types": "source/index.ts",
30
30
  "dependencies": {
31
31
  "@brandup/ui": "^2.0.9",
32
32
  "@brandup/ui-helpers": "^2.0.9",
33
- "@brandup/ui-input": "^1.0.49",
34
- "@brandup/ui-kit": "^1.0.49",
35
- "@brandup/ui-richeditor": "^1.0.49"
33
+ "@brandup/ui-input": "^1.0.50",
34
+ "@brandup/ui-kit": "^1.0.50",
35
+ "@brandup/ui-richeditor": "^1.0.50"
36
36
  },
37
37
  "files": [
38
38
  "source",
@@ -52,8 +52,6 @@
52
52
  cursor: text;
53
53
  position: relative;
54
54
  z-index: 2;
55
- margin-right: 5px;
56
- padding-right: calc(var(--input-padding-lr, 15px) - 5px);
57
55
  overflow-y: auto; // полоса прокрутки — общая, от .ui-scrollable кита
58
56
  }
59
57
 
package/source/textbox.ts CHANGED
@@ -106,8 +106,11 @@ export default class TextBox extends EditorInputControl<RichEditor, ChangeEventD
106
106
  const formatTools = format ? parseFormatTools(valueElem.dataset.formatTools ?? null) : [];
107
107
  // кнопки действий панели (очистка формата, отмена, повтор) — подключаются явно
108
108
  const editorActions = format ? parseEditorActions(valueElem.dataset.editorActions ?? null) : [];
109
- // типы блоков (цитата, блок кода) — тоже явно и только в многострочном поле
110
- const blocks = parseBlockTypes(multyline ? (valueElem.dataset.blocks ?? null) : null);
109
+ // Типы блоков (цитата, блок кода) — тоже явно и только в многострочном поле. Без атрибута
110
+ // список пуст, а не «не задан»: незаданный редактор понимает как «все», и в поле без единого
111
+ // объявления всплывала бы панель с кнопками цитаты и кода.
112
+ const blocks =
113
+ multyline && valueElem.dataset.blocks !== undefined ? parseBlockTypes(valueElem.dataset.blocks) : [];
111
114
 
112
115
  // markdown-маркеры с дефолтами, переопределяются атрибутами data-format-md-<tool>
113
116
  const formatMarkers = defaultFormatMarkers();