@steroidsjs/core 3.0.0-beta.90 → 3.0.0-beta.91

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steroidsjs/core",
3
- "version": "3.0.0-beta.90",
3
+ "version": "3.0.0-beta.91",
4
4
  "description": "",
5
5
  "author": "Vladimir Kozhin <hello@kozhindev.com>",
6
6
  "repository": {
@@ -0,0 +1,104 @@
1
+ /// <reference types="react" />
2
+ export interface ITaskTag {
3
+ id: number;
4
+ message: string;
5
+ type: string;
6
+ }
7
+ export interface IKanbanTask {
8
+ id: string;
9
+ title: string;
10
+ description?: string;
11
+ priority?: string;
12
+ assigner?: any;
13
+ tags?: ITaskTag[];
14
+ status?: any;
15
+ }
16
+ export interface IDragEndResult {
17
+ draggableId: number;
18
+ type: string;
19
+ source: {
20
+ index: number;
21
+ droppableId: number;
22
+ };
23
+ reason: string;
24
+ mode: string;
25
+ destination: {
26
+ droppableId: number;
27
+ index: number;
28
+ };
29
+ combine: null;
30
+ }
31
+ export interface IKanbanColumn {
32
+ id: string;
33
+ title: string;
34
+ tasks: IKanbanTask[];
35
+ }
36
+ interface IKanbanProps extends IUiComponent {
37
+ /**
38
+ * Компонент обертка для инициализации области куда можно переместить элемент из библиотеки react-beautiful-dnd
39
+ * @example Droppable
40
+ */
41
+ droppableComponent: any;
42
+ /**
43
+ * Компонент обертка для регистрации элемента который можно переместить из библиотеки react-beautiful-dnd
44
+ * @example Draggable
45
+ */
46
+ draggableComponent: any;
47
+ /**
48
+ * Общий контекст обертка из библиотеки react-beautiful-dnd
49
+ * @example DragDropContext
50
+ */
51
+ dndContext: any;
52
+ /**
53
+ * Коллекция с наименованиями и свойствами колонок в таблице
54
+ * @example [
55
+ * {
56
+ * id: 'column-1',
57
+ * title: 'col1',
58
+ * tasks: [{ content: 'item1', id: 'task-1' }],
59
+ * },
60
+ * {
61
+ * id: 'column-2',
62
+ * title: 'col2',
63
+ * tasks: [],
64
+ * }
65
+ * ]
66
+ */
67
+ columns?: IKanbanColumn[];
68
+ /**
69
+ * Обработчик события окончания перетаскивания карточки или колонки
70
+ * В result передается объект с информацией о событии
71
+ * @example {
72
+ * draggableId: 1,
73
+ * type: 'task',
74
+ * source: {
75
+ * index: 0,
76
+ * droppableId: 2
77
+ * },
78
+ * reason: 'DROP',
79
+ * mode: 'FLUID',
80
+ * destination: {
81
+ * droppableId: 2,
82
+ * index: 1
83
+ * },
84
+ * combine: null
85
+ * }
86
+ */
87
+ onDragEnd?: (result: IDragEndResult) => void;
88
+ [key: string]: any;
89
+ }
90
+ export interface IKanbanTaskViewProps {
91
+ task: IKanbanTask;
92
+ index: number;
93
+ draggableComponent: any;
94
+ }
95
+ export interface IKanbanColumnViewProps {
96
+ column: IKanbanColumn;
97
+ columnIndex: number;
98
+ droppableComponent: any;
99
+ draggableComponent: any;
100
+ renderTask: (task: IKanbanTask, index: number) => JSX.Element;
101
+ }
102
+ export type IKanbanViewProps = IKanbanProps;
103
+ export default function Kanban(props: IKanbanProps): JSX.Element;
104
+ export {};
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ exports.__esModule = true;
37
+ var react_1 = __importStar(require("react"));
38
+ var hooks_1 = require("../../../hooks");
39
+ var hooks_2 = require("./hooks");
40
+ function Kanban(props) {
41
+ var components = (0, hooks_1.useComponents)();
42
+ var DragDropContext = props.dndContext;
43
+ var _a = (0, hooks_2.useKanban)({
44
+ kanbanId: props.kanbanId,
45
+ columns: props.columns,
46
+ onDragEnd: props.onDragEnd
47
+ }), columns = _a.columns, onDragEnd = _a.onDragEnd;
48
+ // Task
49
+ var Task = components.ui.getView('content.KanbanTaskView');
50
+ var renderTask = (0, react_1.useCallback)(function (task, index) { return (react_1["default"].createElement(Task, { key: task.id, task: task, index: index, draggableComponent: props.draggableComponent })); }, [Task, props.draggableComponent]);
51
+ // Column
52
+ var Column = components.ui.getView('content.KanbanColumnView');
53
+ var renderColumn = (0, react_1.useCallback)(function (column, index) { return (react_1["default"].createElement(Column, { key: column.id, column: column, columnIndex: index, draggableComponent: props.draggableComponent, droppableComponent: props.droppableComponent, renderTask: renderTask })); }, [Column, props.draggableComponent, props.droppableComponent, renderTask]);
54
+ return (react_1["default"].createElement(DragDropContext, { onDragEnd: onDragEnd }, components.ui.renderView(props.view || 'content.KanbanView', __assign(__assign({}, props), { columns: columns, renderColumn: renderColumn }))));
55
+ }
56
+ exports["default"] = Kanban;
@@ -0,0 +1,2 @@
1
+ import { KANBAN_MOVE_COLUMN, KANBAN_INIT, KANBAN_MOVE_TASK, kanbanInit, kanbanMoveColumn, kanbanMoveTask } from './kanban';
2
+ export { KANBAN_MOVE_COLUMN, KANBAN_INIT, KANBAN_MOVE_TASK, kanbanInit, kanbanMoveColumn, kanbanMoveTask, };
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.kanbanMoveTask = exports.kanbanMoveColumn = exports.kanbanInit = exports.KANBAN_MOVE_TASK = exports.KANBAN_INIT = exports.KANBAN_MOVE_COLUMN = void 0;
4
+ var kanban_1 = require("./kanban");
5
+ exports.KANBAN_MOVE_COLUMN = kanban_1.KANBAN_MOVE_COLUMN;
6
+ exports.KANBAN_INIT = kanban_1.KANBAN_INIT;
7
+ exports.KANBAN_MOVE_TASK = kanban_1.KANBAN_MOVE_TASK;
8
+ exports.kanbanInit = kanban_1.kanbanInit;
9
+ exports.kanbanMoveColumn = kanban_1.kanbanMoveColumn;
10
+ exports.kanbanMoveTask = kanban_1.kanbanMoveTask;
@@ -0,0 +1,19 @@
1
+ export declare const KANBAN_INIT = "@kanban/init";
2
+ export declare const KANBAN_MOVE_TASK = "@kanban/move_task";
3
+ export declare const KANBAN_MOVE_COLUMN = "@kanban/move_column";
4
+ export declare const kanbanInit: (kanbanId: any, payload: any) => {
5
+ type: string;
6
+ payload: any;
7
+ };
8
+ export declare const kanbanMoveTask: (kanbanId: any, source: any, destination: any) => {
9
+ type: string;
10
+ kanbanId: any;
11
+ source: any;
12
+ destination: any;
13
+ };
14
+ export declare const kanbanMoveColumn: (kanbanId: any, source: any, destination: any) => {
15
+ type: string;
16
+ kanbanId: any;
17
+ source: any;
18
+ destination: any;
19
+ };
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.kanbanMoveColumn = exports.kanbanMoveTask = exports.kanbanInit = exports.KANBAN_MOVE_COLUMN = exports.KANBAN_MOVE_TASK = exports.KANBAN_INIT = void 0;
4
+ exports.KANBAN_INIT = '@kanban/init';
5
+ exports.KANBAN_MOVE_TASK = '@kanban/move_task';
6
+ exports.KANBAN_MOVE_COLUMN = '@kanban/move_column';
7
+ var kanbanInit = function (kanbanId, payload) { return ({
8
+ type: exports.KANBAN_INIT,
9
+ payload: payload
10
+ }); };
11
+ exports.kanbanInit = kanbanInit;
12
+ var kanbanMoveTask = function (kanbanId, source, destination) { return ({
13
+ type: exports.KANBAN_MOVE_TASK,
14
+ kanbanId: kanbanId,
15
+ source: source,
16
+ destination: destination
17
+ }); };
18
+ exports.kanbanMoveTask = kanbanMoveTask;
19
+ var kanbanMoveColumn = function (kanbanId, source, destination) { return ({
20
+ type: exports.KANBAN_MOVE_COLUMN,
21
+ kanbanId: kanbanId,
22
+ source: source,
23
+ destination: destination
24
+ }); };
25
+ exports.kanbanMoveColumn = kanbanMoveColumn;
@@ -0,0 +1,2 @@
1
+ import useKanban from './useKanban';
2
+ export { useKanban };
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ exports.__esModule = true;
6
+ exports.useKanban = void 0;
7
+ var useKanban_1 = __importDefault(require("./useKanban"));
8
+ exports.useKanban = useKanban_1["default"];
@@ -0,0 +1,25 @@
1
+ import { IDragEndResult, IKanbanColumn } from '../Kanban';
2
+ export interface IKanbanConfig {
3
+ /**
4
+ * Идентификатор канбан доски
5
+ * @example TasksKanban
6
+ */
7
+ kanbanId?: string;
8
+ /**
9
+ * Колонки канбан доски
10
+ */
11
+ columns?: IKanbanColumn[];
12
+ /**
13
+ * Обработчик события окончания перетаскивания карточки или колонки
14
+ */
15
+ onDragEnd: (result: IDragEndResult) => void;
16
+ }
17
+ export declare const DEFAULT_COLUMNS: {
18
+ id: string;
19
+ title: string;
20
+ tasks: any[];
21
+ }[];
22
+ export default function useKanban(config: IKanbanConfig): {
23
+ columns: any;
24
+ onDragEnd: (result: any) => void;
25
+ };
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.DEFAULT_COLUMNS = void 0;
4
+ var react_use_1 = require("react-use");
5
+ var react_1 = require("react");
6
+ var hooks_1 = require("../../../../hooks");
7
+ var reducers_1 = require("../reducers");
8
+ var actions_1 = require("../actions");
9
+ var COLUMNS_DROPPABLE_ID = 'all-columns';
10
+ exports.DEFAULT_COLUMNS = [
11
+ {
12
+ id: 'column-1',
13
+ title: 'TO DO',
14
+ tasks: []
15
+ },
16
+ {
17
+ id: 'column-2',
18
+ title: 'IN PROGRESS',
19
+ tasks: []
20
+ },
21
+ {
22
+ id: 'column-3',
23
+ title: 'IN REVIEW',
24
+ tasks: []
25
+ },
26
+ {
27
+ id: 'column-4',
28
+ title: 'DONE',
29
+ tasks: []
30
+ },
31
+ ];
32
+ function useKanban(config) {
33
+ // Get kanban from redux state
34
+ var kanban = (0, hooks_1.useSelector)(function (state) { return (0, reducers_1.getKanban)(state, config.kanbanId); });
35
+ var dispatch = (0, hooks_1.useDispatch)();
36
+ // move card
37
+ var moveCard = (0, react_1.useCallback)(function (source, destination) {
38
+ dispatch((0, actions_1.kanbanMoveTask)(config.kanbanId, source, destination));
39
+ }, [config.kanbanId, dispatch]);
40
+ // move column
41
+ var moveColumn = (0, react_1.useCallback)(function (source, destination) {
42
+ dispatch((0, actions_1.kanbanMoveColumn)(config.kanbanId, source, destination));
43
+ }, [config.kanbanId, dispatch]);
44
+ var onDragEnd = function (result) {
45
+ if (config.onDragEnd) {
46
+ config.onDragEnd(result);
47
+ }
48
+ // drop outside the column
49
+ if (!result.destination) {
50
+ return;
51
+ }
52
+ var source = result.source, destination = result.destination;
53
+ if (source.droppableId === COLUMNS_DROPPABLE_ID) {
54
+ // handle the column movement
55
+ moveColumn(source, destination);
56
+ }
57
+ else {
58
+ // handle the task card movement
59
+ moveCard(source, destination);
60
+ }
61
+ };
62
+ // Init kanban in redux store
63
+ (0, react_use_1.useMount)(function () {
64
+ if (!kanban) {
65
+ dispatch((0, actions_1.kanbanInit)(config.kanbanId, {
66
+ kanbanId: config.kanbanId,
67
+ columns: config.columns || exports.DEFAULT_COLUMNS
68
+ }));
69
+ }
70
+ });
71
+ return {
72
+ columns: kanban === null || kanban === void 0 ? void 0 : kanban.columns,
73
+ onDragEnd: onDragEnd
74
+ };
75
+ }
76
+ exports["default"] = useKanban;
@@ -0,0 +1,2 @@
1
+ import Kanban from './Kanban';
2
+ export default Kanban;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ exports.__esModule = true;
6
+ var Kanban_1 = __importDefault(require("./Kanban"));
7
+ exports["default"] = Kanban_1["default"];
@@ -0,0 +1,3 @@
1
+ import kanban, { getKanban } from './kanban';
2
+ export { getKanban };
3
+ export default kanban;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ exports.__esModule = true;
26
+ exports.getKanban = void 0;
27
+ var kanban_1 = __importStar(require("./kanban"));
28
+ exports.getKanban = kanban_1.getKanban;
29
+ exports["default"] = kanban_1["default"];
@@ -0,0 +1,5 @@
1
+ declare const _default: (state: {
2
+ kanbans: {};
3
+ }, action: any) => any;
4
+ export default _default;
5
+ export declare const getKanban: (state: any, kanbanId: any) => any;
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
14
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
15
+ if (ar || !(i in from)) {
16
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
17
+ ar[i] = from[i];
18
+ }
19
+ }
20
+ return to.concat(ar || Array.prototype.slice.call(from));
21
+ };
22
+ var __importDefault = (this && this.__importDefault) || function (mod) {
23
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
+ };
25
+ var _a;
26
+ exports.__esModule = true;
27
+ exports.getKanban = void 0;
28
+ var get_1 = __importDefault(require("lodash-es/get"));
29
+ var actions_1 = require("../actions");
30
+ var initialState = {
31
+ kanbans: {}
32
+ };
33
+ var getKanbanColumns = function (state, kanbanId) { return (0, get_1["default"])(state, ['kanbans', kanbanId, 'columns']) || []; };
34
+ var reducerMap = (_a = {},
35
+ _a[actions_1.KANBAN_INIT] = function (state, action) {
36
+ var _a;
37
+ return (__assign(__assign({}, state), { kanbans: __assign(__assign({}, state.kanbans), (_a = {}, _a[action.payload.kanbanId] = __assign({}, action.payload), _a)) }));
38
+ },
39
+ _a[actions_1.KANBAN_MOVE_TASK] = function (state, action) {
40
+ var _a;
41
+ if (state.kanbans[action.kanbanId]) {
42
+ var columns = getKanbanColumns(state, action.kanbanId);
43
+ var sourceColumn = columns.find(function (column) { return column.id === action.source.droppableId; });
44
+ var sourceTasks = sourceColumn.tasks;
45
+ var removedTask = sourceTasks.splice(action.source.index, 1)[0];
46
+ // move task to different column
47
+ if (action.source.droppableId !== action.destination.droppableId) {
48
+ var destinationColumn = columns.find(function (column) { return column.id === action.destination.droppableId; });
49
+ var destinationTasks = destinationColumn.tasks;
50
+ destinationTasks.splice(action.destination.index, 0, removedTask);
51
+ }
52
+ else {
53
+ sourceTasks.splice(action.destination.index, 0, removedTask);
54
+ }
55
+ return __assign(__assign({}, state), { kanbans: __assign(__assign({}, state.kanbans), (_a = {}, _a[action.kanbanId] = __assign(__assign({}, state.kanbans[action.kanbanId]), { columns: __spreadArray([], columns, true) }), _a)) });
56
+ }
57
+ return [];
58
+ },
59
+ _a[actions_1.KANBAN_MOVE_COLUMN] = function (state, action) {
60
+ var _a;
61
+ if (state.kanbans[action.kanbanId]) {
62
+ var columns = getKanbanColumns(state, action.kanbanId);
63
+ var removedColumn = columns.splice(action.source.index, 1)[0];
64
+ columns.splice(action.destination.index, 0, removedColumn);
65
+ return __assign(__assign({}, state), { kanbans: __assign(__assign({}, state.kanbans), (_a = {}, _a[action.kanbanId] = __assign(__assign({}, state.kanbans[action.kanbanId]), { columns: __spreadArray([], columns, true) }), _a)) });
66
+ }
67
+ return [];
68
+ },
69
+ _a);
70
+ exports["default"] = (function (state, action) {
71
+ if (state === void 0) { state = initialState; }
72
+ return reducerMap[action.type]
73
+ ? reducerMap[action.type](state, action)
74
+ : state;
75
+ });
76
+ var getKanban = function (state, kanbanId) { return (0, get_1["default"])(state, ['kanban', 'kanbans', kanbanId]) || null; };
77
+ exports.getKanban = getKanban;
@@ -6,9 +6,10 @@ import Alert from './Alert';
6
6
  import Badge from './Badge';
7
7
  import { Detail, DetailItem } from './Detail';
8
8
  import Icon from './Icon';
9
+ import Kanban from './Kanban';
9
10
  import Menu from './Menu';
10
11
  import CopyToClipboard from './CopyToClipboard';
11
12
  import Chart from './Chart';
12
13
  import Slider from './Slider';
13
14
  import CalendarSystem from './CalendarSystem';
14
- export { Avatar, AvatarGroup, Accordion, AccordionItem, Alert, Card, DropDown, Badge, Detail, DetailItem, Icon, Menu, CopyToClipboard, Chart, Slider, CalendarSystem, };
15
+ export { Avatar, AvatarGroup, Accordion, AccordionItem, Alert, Card, DropDown, Badge, Detail, DetailItem, Icon, Kanban, Menu, CopyToClipboard, Chart, Slider, CalendarSystem, };
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  exports.__esModule = true;
6
- exports.CalendarSystem = exports.Slider = exports.Chart = exports.CopyToClipboard = exports.Menu = exports.Icon = exports.DetailItem = exports.Detail = exports.Badge = exports.DropDown = exports.Card = exports.Alert = exports.AccordionItem = exports.Accordion = exports.AvatarGroup = exports.Avatar = void 0;
6
+ exports.CalendarSystem = exports.Slider = exports.Chart = exports.CopyToClipboard = exports.Menu = exports.Kanban = exports.Icon = exports.DetailItem = exports.Detail = exports.Badge = exports.DropDown = exports.Card = exports.Alert = exports.AccordionItem = exports.Accordion = exports.AvatarGroup = exports.Avatar = void 0;
7
7
  var Avatar_1 = require("./Avatar");
8
8
  exports.Avatar = Avatar_1.Avatar;
9
9
  exports.AvatarGroup = Avatar_1.AvatarGroup;
@@ -23,6 +23,8 @@ exports.Detail = Detail_1.Detail;
23
23
  exports.DetailItem = Detail_1.DetailItem;
24
24
  var Icon_1 = __importDefault(require("./Icon"));
25
25
  exports.Icon = Icon_1["default"];
26
+ var Kanban_1 = __importDefault(require("./Kanban"));
27
+ exports.Kanban = Kanban_1["default"];
26
28
  var Menu_1 = __importDefault(require("./Menu"));
27
29
  exports.Menu = Menu_1["default"];
28
30
  var CopyToClipboard_1 = __importDefault(require("./CopyToClipboard"));
@@ -13,7 +13,7 @@ export interface ITextProps extends IUiComponent {
13
13
  * Тип текста
14
14
  * @example 'body'
15
15
  */
16
- type?: 'body' | 'span' | 'boldSpan' | string;
16
+ type?: 'body' | 'body2' | 'span' | 'boldSpan' | string;
17
17
  /** HTML тег
18
18
  * @example 'span'
19
19
  */