@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 +1 -1
- package/ui/content/Kanban/Kanban.d.ts +104 -0
- package/ui/content/Kanban/Kanban.js +56 -0
- package/ui/content/Kanban/actions/index.d.ts +2 -0
- package/ui/content/Kanban/actions/index.js +10 -0
- package/ui/content/Kanban/actions/kanban.d.ts +19 -0
- package/ui/content/Kanban/actions/kanban.js +25 -0
- package/ui/content/Kanban/hooks/index.d.ts +2 -0
- package/ui/content/Kanban/hooks/index.js +8 -0
- package/ui/content/Kanban/hooks/useKanban.d.ts +25 -0
- package/ui/content/Kanban/hooks/useKanban.js +76 -0
- package/ui/content/Kanban/index.d.ts +2 -0
- package/ui/content/Kanban/index.js +7 -0
- package/ui/content/Kanban/reducers/index.d.ts +3 -0
- package/ui/content/Kanban/reducers/index.js +29 -0
- package/ui/content/Kanban/reducers/kanban.d.ts +5 -0
- package/ui/content/Kanban/reducers/kanban.js +77 -0
- package/ui/content/index.d.ts +2 -1
- package/ui/content/index.js +3 -1
- package/ui/typography/Text/Text.d.ts +1 -1
package/package.json
CHANGED
|
@@ -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,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,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,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,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,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;
|
package/ui/content/index.d.ts
CHANGED
|
@@ -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, };
|
package/ui/content/index.js
CHANGED
|
@@ -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"));
|