@brandup/ui-kit 1.0.51 → 1.0.53
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 +7 -0
- package/package.json +1 -1
- package/source/modal.ts +22 -14
package/README.md
CHANGED
|
@@ -115,6 +115,13 @@ modal.onClosed(() => {
|
|
|
115
115
|
});
|
|
116
116
|
```
|
|
117
117
|
|
|
118
|
+
| Параметр | По умолчанию | Что задаёт |
|
|
119
|
+
| --- | --- | --- |
|
|
120
|
+
| `title` | — | Заголовок в шапке |
|
|
121
|
+
| `className` | — | Дополнительный класс на корне окна |
|
|
122
|
+
| `closeOnBackdrop` | `true` | Закрывать по клику вне окна |
|
|
123
|
+
| `closeButton` | `true` | Крестик в шапке. С `false` шапка без заголовка не рисуется вовсе, а закрытие остаётся за Esc, подложкой и кнопками самого окна |
|
|
124
|
+
|
|
118
125
|
| Член | Описание |
|
|
119
126
|
| --- | --- |
|
|
120
127
|
| `body` | Тело окна — его наполняет наследник |
|
package/package.json
CHANGED
package/source/modal.ts
CHANGED
|
@@ -15,6 +15,8 @@ export interface ModalOptions {
|
|
|
15
15
|
className?: string | null;
|
|
16
16
|
/** Закрывать по клику вне окна (по умолчанию да). */
|
|
17
17
|
closeOnBackdrop?: boolean;
|
|
18
|
+
/** Крестик в шапке (по умолчанию да). */
|
|
19
|
+
closeButton?: boolean;
|
|
18
20
|
}
|
|
19
21
|
|
|
20
22
|
/**
|
|
@@ -43,8 +45,25 @@ export default abstract class Modal extends UIElement {
|
|
|
43
45
|
|
|
44
46
|
const body = DOM.tag("div", { class: "modal-body" });
|
|
45
47
|
|
|
46
|
-
//
|
|
47
|
-
|
|
48
|
+
// the title is host data — text, not markup (see textTag)
|
|
49
|
+
const title = options.title ? textTag("div", { class: "modal-title" }, options.title) : null;
|
|
50
|
+
|
|
51
|
+
// Закрытие — через систему команд, как у остальных контролов кита: крестик и подложка
|
|
52
|
+
// объявляют одну и ту же команду, обработчик находит её по ближайшему data-command.
|
|
53
|
+
// Крестик убирают у окна, которое обязано кончиться выбором внутри тела; Esc и подложка
|
|
54
|
+
// при этом остаются на своих настройках — места в шапке они не занимают.
|
|
55
|
+
const closeButton =
|
|
56
|
+
options.closeButton === false
|
|
57
|
+
? null
|
|
58
|
+
: DOM.tag(
|
|
59
|
+
"button",
|
|
60
|
+
{ type: "button", class: "modal-close", title: "Закрыть", command: MODAL_CLOSE_COMMAND },
|
|
61
|
+
closeIcon
|
|
62
|
+
);
|
|
63
|
+
|
|
64
|
+
// шапки нет вовсе, когда показывать в ней нечего: пустая занимала бы отступ над телом
|
|
65
|
+
const header = title || closeButton ? DOM.tag("div", { class: "modal-header" }, [title, closeButton]) : null;
|
|
66
|
+
|
|
48
67
|
const root = DOM.tag("div", { class: [MODAL_CLASS].concat(options.className ? [options.className] : []) }, [
|
|
49
68
|
DOM.tag(
|
|
50
69
|
"div",
|
|
@@ -52,18 +71,7 @@ export default abstract class Modal extends UIElement {
|
|
|
52
71
|
? { class: "modal-backdrop" }
|
|
53
72
|
: { class: "modal-backdrop", command: MODAL_CLOSE_COMMAND }
|
|
54
73
|
),
|
|
55
|
-
DOM.tag("div", { class: "modal-window", role: "dialog", "aria-modal": "true" }, [
|
|
56
|
-
DOM.tag("div", { class: "modal-header" }, [
|
|
57
|
-
// the title is host data — text, not markup (see textTag)
|
|
58
|
-
options.title ? textTag("div", { class: "modal-title" }, options.title) : null,
|
|
59
|
-
DOM.tag(
|
|
60
|
-
"button",
|
|
61
|
-
{ type: "button", class: "modal-close", title: "Закрыть", command: MODAL_CLOSE_COMMAND },
|
|
62
|
-
closeIcon
|
|
63
|
-
),
|
|
64
|
-
]),
|
|
65
|
-
body,
|
|
66
|
-
]),
|
|
74
|
+
DOM.tag("div", { class: "modal-window", role: "dialog", "aria-modal": "true" }, [header, body]),
|
|
67
75
|
]);
|
|
68
76
|
|
|
69
77
|
this.__body = body;
|