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

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.
Files changed (97) hide show
  1. package/docs-autogen-result.json +1114 -164
  2. package/en.json +14 -9
  3. package/hooks/useList.d.ts +1 -1
  4. package/package.json +3 -3
  5. package/ui/content/CalendarSystem/hooks/useExpandClickAway.d.ts +7 -0
  6. package/ui/content/CalendarSystem/hooks/useExpandClickAway.js +23 -0
  7. package/ui/content/Kanban/Kanban.d.ts +107 -0
  8. package/ui/content/Kanban/Kanban.js +59 -0
  9. package/ui/content/Kanban/actions/index.d.ts +2 -0
  10. package/ui/content/Kanban/actions/index.js +16 -0
  11. package/ui/content/Kanban/actions/kanban.d.ts +40 -0
  12. package/ui/content/Kanban/actions/kanban.js +49 -0
  13. package/ui/content/Kanban/constants/modalAndFormIds.d.ts +4 -0
  14. package/ui/content/Kanban/constants/modalAndFormIds.js +7 -0
  15. package/ui/content/Kanban/enums/KanbanModalTypeEnum.d.ts +13 -0
  16. package/ui/content/Kanban/enums/KanbanModalTypeEnum.js +49 -0
  17. package/ui/content/Kanban/enums/KanbanPrioritiesEnum.d.ts +18 -0
  18. package/ui/content/Kanban/enums/KanbanPrioritiesEnum.js +78 -0
  19. package/ui/content/Kanban/enums/index.d.ts +3 -0
  20. package/ui/content/Kanban/enums/index.js +10 -0
  21. package/ui/content/Kanban/hooks/index.d.ts +2 -0
  22. package/ui/content/Kanban/hooks/index.js +8 -0
  23. package/ui/content/Kanban/hooks/useKanban.d.ts +70 -0
  24. package/ui/content/Kanban/hooks/useKanban.js +174 -0
  25. package/ui/content/Kanban/index.d.ts +2 -0
  26. package/ui/content/Kanban/index.js +7 -0
  27. package/ui/content/Kanban/reducers/index.d.ts +3 -0
  28. package/ui/content/{Calendar/demo/basic.js → Kanban/reducers/index.js} +7 -12
  29. package/ui/content/Kanban/reducers/kanban.d.ts +9 -0
  30. package/ui/content/Kanban/reducers/kanban.js +122 -0
  31. package/ui/content/index.d.ts +2 -1
  32. package/ui/content/index.js +3 -1
  33. package/ui/form/FieldSet/FieldSet.d.ts +1 -1
  34. package/ui/form/FileField/FileField.d.ts +3 -0
  35. package/ui/form/Form/Form.d.ts +1 -1
  36. package/ui/form/InputField/InputField.d.ts +1 -1
  37. package/ui/form/SliderField/SliderField.d.ts +1 -1
  38. package/ui/format/EnumFormatter/EnumFormatter.d.ts +1 -1
  39. package/ui/format/MoneyFormatter/MoneyFormatter.d.ts +1 -1
  40. package/ui/list/Grid/Grid.d.ts +1 -1
  41. package/ui/nav/Tree/Tree.d.ts +1 -1
  42. package/ui/typography/Text/Text.d.ts +1 -1
  43. package/ui/content/Calendar/demo/basic.d.ts +0 -8
  44. package/ui/form/RateField/demo/allow-clear.d.ts +0 -8
  45. package/ui/form/RateField/demo/allow-clear.js +0 -37
  46. package/ui/form/RateField/demo/basic.d.ts +0 -8
  47. package/ui/form/RateField/demo/basic.js +0 -37
  48. package/ui/form/RateField/demo/default-value.d.ts +0 -8
  49. package/ui/form/RateField/demo/default-value.js +0 -37
  50. package/ui/form/RateField/demo/disabled.d.ts +0 -8
  51. package/ui/form/RateField/demo/disabled.js +0 -37
  52. package/ui/form/RateField/demo/errors.d.ts +0 -8
  53. package/ui/form/RateField/demo/errors.js +0 -37
  54. package/ui/form/RateField/demo/items-count.d.ts +0 -8
  55. package/ui/form/RateField/demo/items-count.js +0 -37
  56. package/ui/form/RateField/demo/required.d.ts +0 -8
  57. package/ui/form/RateField/demo/required.js +0 -37
  58. package/ui/form/SwitcherField/demo/basic.d.ts +0 -12
  59. package/ui/form/SwitcherField/demo/basic.js +0 -56
  60. package/ui/form/SwitcherField/demo/disabled.d.ts +0 -8
  61. package/ui/form/SwitcherField/demo/disabled.js +0 -38
  62. package/ui/form/SwitcherField/demo/errors.d.ts +0 -8
  63. package/ui/form/SwitcherField/demo/errors.js +0 -38
  64. package/ui/form/SwitcherField/demo/required.d.ts +0 -8
  65. package/ui/form/SwitcherField/demo/required.js +0 -38
  66. package/ui/form/TimeField/demo/basic.d.ts +0 -8
  67. package/ui/form/TimeField/demo/basic.js +0 -37
  68. package/ui/form/TimeField/demo/disabled.d.ts +0 -8
  69. package/ui/form/TimeField/demo/disabled.js +0 -37
  70. package/ui/form/TimeField/demo/errors.d.ts +0 -8
  71. package/ui/form/TimeField/demo/errors.js +0 -37
  72. package/ui/form/TimeField/demo/icon.d.ts +0 -8
  73. package/ui/form/TimeField/demo/icon.js +0 -37
  74. package/ui/form/TimeField/demo/noBorder.d.ts +0 -8
  75. package/ui/form/TimeField/demo/noBorder.js +0 -37
  76. package/ui/form/TimeField/demo/placeholder.d.ts +0 -8
  77. package/ui/form/TimeField/demo/placeholder.js +0 -37
  78. package/ui/form/TimeField/demo/required.d.ts +0 -8
  79. package/ui/form/TimeField/demo/required.js +0 -37
  80. package/ui/form/TimeField/demo/showRemove.d.ts +0 -8
  81. package/ui/form/TimeField/demo/showRemove.js +0 -37
  82. package/ui/layout/ProgressBar/demo/percent.d.ts +0 -8
  83. package/ui/layout/ProgressBar/demo/percent.js +0 -53
  84. package/ui/layout/ProgressBar/demo/showLabel.d.ts +0 -8
  85. package/ui/layout/ProgressBar/demo/showLabel.js +0 -44
  86. package/ui/layout/ProgressBar/demo/sizes.d.ts +0 -8
  87. package/ui/layout/ProgressBar/demo/sizes.js +0 -44
  88. package/ui/layout/ProgressBar/demo/status.d.ts +0 -8
  89. package/ui/layout/ProgressBar/demo/status.js +0 -39
  90. package/ui/layout/ProgressBar/demo/type.d.ts +0 -8
  91. package/ui/layout/ProgressBar/demo/type.js +0 -44
  92. package/ui/layout/Skeleton/demo/animations.d.ts +0 -8
  93. package/ui/layout/Skeleton/demo/animations.js +0 -53
  94. package/ui/layout/Skeleton/demo/width height.d.ts +0 -8
  95. package/ui/layout/Skeleton/demo/width height.js +0 -42
  96. package/ui/list/SearchForm/demo/basic.d.ts +0 -8
  97. package/ui/list/SearchForm/demo/basic.js +0 -42
package/en.json CHANGED
@@ -436,7 +436,7 @@
436
436
  "Возможность удаления группы с полями (добавляет крестик справа от группы)": "Ability to delete a field group (adds a cross icon to the right of the group).",
437
437
  "Дополнительный CSS-класс для таблицы": "Additional CSS class for the table.",
438
438
  "Пропсы для компонента отображения списка с группами полей - FieldListView": "Props for the component displaying the list with field groups - FieldListView.",
439
- "Дополнительный CSS-класс для \\<fieldset\\>...\\<\\/fieldset\\>": "Additional CSS class for the <fieldset>...</fieldset>.",
439
+ "Дополнительный CSS-класс для '<fieldset>...</fieldset>'": "Additional CSS class for the '<fieldset>...</fieldset>'.",
440
440
  "Диспатч": "Dispatch.",
441
441
  "Конфигурационный массив с полями формы": "Configuration array with form fields.",
442
442
  "Заголовок для группы полей в форме": "Title for the field group in the form.",
@@ -458,7 +458,7 @@
458
458
  "Url на который будет отправлена форма": "URL to which the form will be submitted.",
459
459
  "Синхронизация значений формы с адресной строкой": "Synchronize form values with the address bar.",
460
460
  "Очищать ли данные формы с redux хранилища при размонтировании компонента. По-умолчанию - false": "Whether to clear form data from the Redux store when the component is unmounted. Default is false.",
461
- "Если в форме есть элементы input, то произойдет автоматическая фокусировка на первом из них": "If there are \\ <input\\> elements in the form, automatic focus will occur on the first one.",
461
+ "Если в форме есть элементы '<input>', то произойдет автоматическая фокусировка на первом из них": "If there are '<input>' elements in the form, automatic focus will occur on the first one.",
462
462
  "Сохраняет значения полей формы в LocalStorage": "Saves form field values to LocalStorage.",
463
463
  "Автоматически стартовать 2fa аутентификацию (отправлять код)": "Automatically start 2FA authentication (send code).",
464
464
  "Название действия, которое передаётся в API Google reCAPTCHA v3, для более детального анализа\nповедения пользователя (https://developers.google.com/recaptcha/docs/v3)": "The name of the action that is passed to the Google reCAPTCHA v3 API for more detailed analysis of user behavior.",
@@ -534,7 +534,7 @@
534
534
  "Тип ReCaptcha. Может быть 'image' (изображение) или 'audio' (аудио).": "Type of ReCaptcha. Can be 'image' or 'audio'.",
535
535
  "Значение по-умолчанию при первом рендере. Для isRange=false используется number, для isRange=true - number[]": "Default value on initial render. For isRange=false, use number, for isRange=true - number[]",
536
536
  "Делает слайдер с двумя значениями": "Creates a slider with two values",
537
- "Метки на ползунке. В объекте ({key: value}) key определяет положение, а value определяет, что будет отображаться.\nЕсли вы хотите задать стиль определенной точки метки, значением должен быть объект,\nсодержащий свойства style и label.": "Labels on the slider. In object ({key: value}), key defines position, and value defines what will be displayed.\nIf you want to style a specific label point, the value should be an object\ncontaining style and label properties.",
537
+ "Метки на ползунке. В объекте '{'key: value'}' key определяет положение, а value определяет, что будет отображаться.\nЕсли вы хотите задать стиль определенной точки метки, значением должен быть объект,\nсодержащий свойства style и label.": "Labels on the slider. In object '{'key: value'}', key defines position, and value defines what will be displayed.\nIf you want to style a specific label point, the value should be an object\ncontaining style and label properties.",
538
538
  "Максимальное значение в слайдере": "Maximum value on the slider",
539
539
  "Минимальное значение в слайдере": "Minimum value on the slider",
540
540
  "Функция, вызываемая после отпускания tip'а у слайдера (при событии onmouseup)": "Function called after releasing the slider tip (onmouseup event)",
@@ -548,11 +548,11 @@
548
548
  "Дата": "Date",
549
549
  "Переопределение view React компонента для кастомизации отображения колонки": "Override React view component to customize column display",
550
550
  "Показывать ли дату учитываю временную зону": "Whether to show the date considering time zone",
551
- "Перечисление элементов.\n1) Может быть строкой вида: `app.geo.enums.Cities`\n2) Массивом: [{id: 1, label: \"London\"}]": "Enumeration of elements.\n1) Can be a string like: `app.geo.enums.Cities`\n2) Array: [{id: 1, label: \"London\"}]",
551
+ "Перечисление элементов.\n1) Может быть строкой вида: `app.geo.enums.Cities`\n2) Массивом: ['{'id: 1, label: \"London\"'}']": "Enumeration of elements.\n1) Can be a string like: `app.geo.enums.Cities`.\n2) Array: ['{'id: 1, label: \"London\"'}'].",
552
552
  "Уникальный идентификатор элемента из `items`": "Unique identifier of the element from `items`",
553
553
  "Если не указан размер файла, то в случае, если showZero = true\nто будет показан `0`, иначе пустая строка": "If file size is not specified, and showZero = true,\nthen '0' will be displayed, otherwise an empty string",
554
554
  "Размер файла": "File size",
555
- "Валюта @enum {eur, rub, usd}": "Currency @enum {eur, rub, usd}",
555
+ "Валюта @enum '{eur, rub, usd}'": "Currency @enum '{eur, rub, usd}'",
556
556
  "Разрядность (при передаче int в значении)": "Precision (when passing int in value)",
557
557
  "Округление числа": "Number rounding",
558
558
  "Значение для MoneyFormatter": "Value for MoneyFormatter",
@@ -621,7 +621,7 @@
621
621
  "CSS-класс для ячейки со значением": "CSS class for cell with value",
622
622
  "Диаграмма.\nЦвет должен соответствовать success | warning | danger | secondary.\nЦвета можно расширить или изменить через стили (см. colors.scss в react-bootstrap)": "Diagram.\nThe color must correspond to success | warning | danger | secondary.\nColors can be extended or changed using styles (see colors.scss in react-bootstrap)",
623
623
  "Свойства для компонента форматирования": "Props for formatting component",
624
- "CSS-класс для ячейки с заголовком колонки <th>...</th>": "CSS class for cell with column header <th>...</th>",
624
+ "CSS-класс для ячейки с заголовком колонки '<th>...</th>'": "CSS class for cell with column header '<th>...</th>'",
625
625
  "Свойства для компонента отображения заголовка колонки": "Props for component to display column header",
626
626
  "Компонент для кастомизации отображения заголовка колонки": "Component for customizing the display of the column header",
627
627
  "Подсказка": "Tooltip",
@@ -711,7 +711,6 @@
711
711
  "Свойства шаблона": "Template properties",
712
712
  "Общий шаблон, который оборачивает страницы приложения": "Common template that wraps application pages",
713
713
  "Идентификатор узла": "Node identifier",
714
- "Вложенные элементы\n[{id: 2, label: 'Nested element', items: [...]}]": "Nested elements\n[{id: 2, label: 'Nested element', items: [...]}]",
715
714
  "Скрыть или показать узел": "Hide or show node",
716
715
  "Максимальный уровень вложенности, до которого все узлы будут отображаться в развёрнутом виде": "Maximum nesting level, up to which all nodes will be displayed in an expanded form",
717
716
  "Отображать раскрытыми узлы из LocalStorage": "Display nodes expanded from LocalStorage",
@@ -794,7 +793,6 @@
794
793
  "Позиция компонента справа": "Component position on the right",
795
794
  "Позиция компонента сверху": "Component position on top",
796
795
  "Обработчик события загрузки файлов": "File upload event handler",
797
- "Если в форме есть элементы \\<input\\>, то произойдет автоматическая фокусировка на первом из них": "If there are \\<input\\> elements in the form, automatic focus will be on the first one",
798
796
  "Варианты абсолютного позиционирования": "Absolute positioning options",
799
797
  "Получение экземпляра `dayjs` с учетом временной зоны бекенда": "Getting an instance of `dayjs` considering the backend time zone",
800
798
  "Алиас для метода `translate`": "Alias for the `translate` method",
@@ -820,5 +818,12 @@
820
818
  "Вс": "Su",
821
819
  "Компонент для представления данных коллекции в виде иерархической структуры.": "A component for representing collection data in the form of a hierarchical structure.",
822
820
  "Уникальный идентификатор,\nиспользуется для сохранения состояния открыта или закрыта ячейка": "Unique identifier \nused to save the open or closed state of a cell",
823
- "Включает обработку вложенных данных из items вида [{id: 1, name: 'John', items: [...]}]": ""
821
+ "Включает обработку вложенных данных из items": "Enables the processing of nested data from items",
822
+ "Callback вызываемый при нажатии на смену года или месяца в шапке Calendar": "",
823
+ "Пользовательский цвет для чекбокса": "",
824
+ "Включает обработку вложенных данных из items вида [{id: 1, name: 'John', items: [...]}]": "",
825
+ "\nКомпонент `FileField` представляет собой поле формы для загрузки файлов.\nОн использует хук `useFile` для управления состоянием файлов и выполнения операций с файлами, таких как выбор и удаление.\nКомпонент поддерживает различные варианты отображения файлов (список или стена) с помощью перечисления `FilesLayout`.\nНа backendUrl по дефолту файл отправляется в теле запроса в виде бинарного кода.\nЧтобы отправлять файл в виде form-data (например в таком виде принимает файл FileModule в библиотеке steroidsjs/nest),\nнужно передать в `FileField` пропс uploaderConfig, в котором нужно указать поле useFormData: true.\n": "",
826
+ "Колонки канбан доски": "",
827
+ "Идентификатор канбан доски": "",
828
+ "Обработчик события окончания перетаскивания карточки или колонки": ""
824
829
  }
@@ -150,7 +150,7 @@ export interface IListConfig {
150
150
  */
151
151
  initialTotal?: number;
152
152
  /**
153
- * Включает обработку вложенных данных из items вида [{id: 1, name: 'John', items: [...]}]
153
+ * Включает обработку вложенных данных из items
154
154
  */
155
155
  hasTreeItems?: boolean;
156
156
  }
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.92",
4
4
  "description": "",
5
5
  "author": "Vladimir Kozhin <hello@kozhindev.com>",
6
6
  "repository": {
@@ -18,10 +18,10 @@
18
18
  "url": "https://github.com/steroids/react/issues"
19
19
  },
20
20
  "scripts": {
21
- "docs": "node build/docs-autogen.js",
21
+ "docs": "node docs/docs-autogen.js",
22
22
  "test": "jest",
23
23
  "lint": "eslint -c ./.eslintrc --ext .js,.jsx,.ts,.tsx ./src ./tests --quiet",
24
- "build": "tsc && cp ./{package.json,LICENSE,README.md} dist/ && cp src/index.d.ts dist/ && cp build/docs-autogen-result.json dist/ && cp build/locales/en.json dist/",
24
+ "build": "tsc && cp ./{package.json,LICENSE,README.md} dist/ && cp src/index.d.ts dist/ && cp docs/docs-autogen-result.json dist/ && cp docs/locales/en.json dist/",
25
25
  "watch": "tsc -p tsconfig-debug.json"
26
26
  },
27
27
  "dependencies": {
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ declare const useExpandClickAway: () => {
3
+ isExpanded: boolean;
4
+ setIsExpanded: React.Dispatch<React.SetStateAction<boolean>>;
5
+ triggerRef: React.MutableRefObject<any>;
6
+ };
7
+ export default useExpandClickAway;
@@ -0,0 +1,23 @@
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 react_1 = __importDefault(require("react"));
7
+ var react_use_1 = require("react-use");
8
+ var useExpandClickAway = function () {
9
+ var _a = react_1["default"].useState(false), isExpanded = _a[0], setIsExpanded = _a[1];
10
+ var triggerRef = react_1["default"].useRef(null);
11
+ (0, react_use_1.useClickAway)(triggerRef, function () {
12
+ if (!isExpanded) {
13
+ return;
14
+ }
15
+ setIsExpanded(false);
16
+ });
17
+ return {
18
+ isExpanded: isExpanded,
19
+ setIsExpanded: setIsExpanded,
20
+ triggerRef: triggerRef
21
+ };
22
+ };
23
+ exports["default"] = useExpandClickAway;
@@ -0,0 +1,107 @@
1
+ /// <reference types="react" />
2
+ import { IDropDownFieldItem } from '@steroidsjs/core/ui/form/DropDownField/DropDownField';
3
+ import { IKanbanConfig } from '@steroidsjs/core/ui/content/Kanban/hooks/useKanban';
4
+ import { KanbanModalTypeEnum } from '@steroidsjs/core/ui/content/Kanban/enums';
5
+ import { IBem } from '@steroidsjs/core/hooks/useBem';
6
+ import { IModalProps } from '../../modal/Modal/Modal';
7
+ export interface ITaskTag {
8
+ id: number;
9
+ message: string;
10
+ type: string;
11
+ }
12
+ export interface ITaskAssigner {
13
+ id: number;
14
+ firstName: string;
15
+ lastName: string;
16
+ avatar?: {
17
+ src: string;
18
+ };
19
+ }
20
+ export interface ITaskPriority {
21
+ id: number;
22
+ type: string;
23
+ }
24
+ export interface IKanbanTask {
25
+ id: string;
26
+ title: string;
27
+ description?: string;
28
+ fullDescription?: string;
29
+ priority?: ITaskPriority;
30
+ assigner?: ITaskAssigner;
31
+ tags?: ITaskTag[];
32
+ }
33
+ export interface IDragEndResult {
34
+ draggableId: number;
35
+ type: string;
36
+ source: {
37
+ index: number;
38
+ droppableId: number;
39
+ };
40
+ reason: string;
41
+ mode: string;
42
+ destination: {
43
+ droppableId: number;
44
+ index: number;
45
+ };
46
+ combine: null;
47
+ }
48
+ export interface IKanbanColumn {
49
+ id: string;
50
+ title: string;
51
+ tasks: IKanbanTask[];
52
+ }
53
+ export interface IKanbanModalViewProps extends IModalProps {
54
+ modalType: KanbanModalTypeEnum;
55
+ formId: string;
56
+ columns: IKanbanColumn[];
57
+ columnId: string;
58
+ assigners: IDropDownFieldItem[];
59
+ submitButtonLabel: string;
60
+ onSubmit: (id: string | null, data: any, columnId: string) => void;
61
+ onToggleModalType?: () => void;
62
+ task?: IKanbanTask;
63
+ tags?: ITaskTag[];
64
+ }
65
+ export interface ICreateOrEditTaskModalContentViewProps extends Omit<IKanbanModalViewProps, 'modalType'> {
66
+ bem: IBem;
67
+ }
68
+ export interface IKanbanTaskDetailsModalViewProps extends IModalProps {
69
+ bem: IBem;
70
+ task: IKanbanTask;
71
+ }
72
+ export interface IKanbanProps extends IKanbanConfig, IUiComponent {
73
+ /**
74
+ * Компонент обертка для инициализации области куда можно переместить элемент из библиотеки react-beautiful-dnd
75
+ * @example Droppable
76
+ */
77
+ droppableComponent: any;
78
+ /**
79
+ * Компонент обертка для регистрации элемента который можно переместить из библиотеки react-beautiful-dnd
80
+ * @example Draggable
81
+ */
82
+ draggableComponent: any;
83
+ /**
84
+ * Общий контекст обертка из библиотеки react-beautiful-dnd
85
+ * @example DragDropContext
86
+ */
87
+ dndContext: any;
88
+ [key: string]: any;
89
+ }
90
+ export interface IKanbanTaskViewProps {
91
+ task: IKanbanTask;
92
+ columnId: string;
93
+ index: number;
94
+ draggableComponent: any;
95
+ onOpenTaskDetailsModal: (task: IKanbanTask, columnId: string) => void;
96
+ }
97
+ export interface IKanbanColumnViewProps {
98
+ column: IKanbanColumn;
99
+ columnIndex: number;
100
+ droppableComponent: any;
101
+ draggableComponent: any;
102
+ task?: IKanbanTask;
103
+ renderTask: (task: IKanbanTask, columnId: string, index: number) => JSX.Element;
104
+ onOpenCreateTaskModal: (columnId: string) => void;
105
+ }
106
+ export type IKanbanViewProps = IKanbanProps;
107
+ export default function Kanban(props: IKanbanProps): JSX.Element;
@@ -0,0 +1,59 @@
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
+ assigners: props.assigners,
47
+ tags: props.tags,
48
+ lastTaskId: props.lastTaskId,
49
+ onDragEnd: props.onDragEnd
50
+ }), columns = _a.columns, onDragEnd = _a.onDragEnd, onOpenTaskDetailsModal = _a.onOpenTaskDetailsModal, onOpenCreateTaskModal = _a.onOpenCreateTaskModal;
51
+ // Task
52
+ var Task = components.ui.getView('content.KanbanTaskView');
53
+ var renderTask = (0, react_1.useCallback)(function (task, columnId, index) { return (react_1["default"].createElement(Task, { key: task.id, task: task, columnId: columnId, index: index, draggableComponent: props.draggableComponent, onOpenTaskDetailsModal: onOpenTaskDetailsModal })); }, [Task, onOpenTaskDetailsModal, props.draggableComponent]);
54
+ // Column
55
+ var Column = components.ui.getView('content.KanbanColumnView');
56
+ 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, onOpenCreateTaskModal: onOpenCreateTaskModal })); }, [Column, onOpenCreateTaskModal, props.draggableComponent, props.droppableComponent, renderTask]);
57
+ return (react_1["default"].createElement(DragDropContext, { onDragEnd: onDragEnd }, components.ui.renderView(props.view || 'content.KanbanView', __assign(__assign({}, props), { columns: columns, renderColumn: renderColumn }))));
58
+ }
59
+ exports["default"] = Kanban;
@@ -0,0 +1,2 @@
1
+ import { KANBAN_MOVE_COLUMN, KANBAN_INIT, KANBAN_MOVE_TASK, KANBAN_ADD_TASK, KANBAN_EDIT_TASK, KANBAN_INCREASE_TASK_ID, kanbanInit, kanbanMoveColumn, kanbanMoveTask, kanbanAddTask, kanbanEditTask, kanbanIncreaseTaskId } from './kanban';
2
+ export { KANBAN_MOVE_COLUMN, KANBAN_INIT, KANBAN_MOVE_TASK, KANBAN_ADD_TASK, KANBAN_EDIT_TASK, KANBAN_INCREASE_TASK_ID, kanbanInit, kanbanMoveColumn, kanbanMoveTask, kanbanAddTask, kanbanEditTask, kanbanIncreaseTaskId, };
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.kanbanIncreaseTaskId = exports.kanbanEditTask = exports.kanbanAddTask = exports.kanbanMoveTask = exports.kanbanMoveColumn = exports.kanbanInit = exports.KANBAN_INCREASE_TASK_ID = exports.KANBAN_EDIT_TASK = exports.KANBAN_ADD_TASK = 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.KANBAN_ADD_TASK = kanban_1.KANBAN_ADD_TASK;
9
+ exports.KANBAN_EDIT_TASK = kanban_1.KANBAN_EDIT_TASK;
10
+ exports.KANBAN_INCREASE_TASK_ID = kanban_1.KANBAN_INCREASE_TASK_ID;
11
+ exports.kanbanInit = kanban_1.kanbanInit;
12
+ exports.kanbanMoveColumn = kanban_1.kanbanMoveColumn;
13
+ exports.kanbanMoveTask = kanban_1.kanbanMoveTask;
14
+ exports.kanbanAddTask = kanban_1.kanbanAddTask;
15
+ exports.kanbanEditTask = kanban_1.kanbanEditTask;
16
+ exports.kanbanIncreaseTaskId = kanban_1.kanbanIncreaseTaskId;
@@ -0,0 +1,40 @@
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 KANBAN_ADD_TASK = "@kanban/add_task";
5
+ export declare const KANBAN_EDIT_TASK = "@kanban/edit_task";
6
+ export declare const KANBAN_INCREASE_TASK_ID = "@kanban/increase_task_id";
7
+ export declare const kanbanInit: (kanbanId: any, payload: any) => {
8
+ type: string;
9
+ payload: any;
10
+ };
11
+ export declare const kanbanMoveTask: (kanbanId: any, source: any, destination: any) => {
12
+ type: string;
13
+ kanbanId: any;
14
+ source: any;
15
+ destination: any;
16
+ };
17
+ export declare const kanbanMoveColumn: (kanbanId: any, source: any, destination: any) => {
18
+ type: string;
19
+ kanbanId: any;
20
+ source: any;
21
+ destination: any;
22
+ };
23
+ export declare const kanbanAddTask: (kanbanId: any, columnId: any, task: any) => {
24
+ type: string;
25
+ kanbanId: any;
26
+ columnId: any;
27
+ task: any;
28
+ };
29
+ export declare const kanbanEditTask: (kanbanId: any, columnId: any, prevColumnId: any, task: any) => {
30
+ type: string;
31
+ kanbanId: any;
32
+ columnId: any;
33
+ prevColumnId: any;
34
+ task: any;
35
+ };
36
+ export declare const kanbanIncreaseTaskId: (kanbanId: any, lastTaskId: any) => {
37
+ type: string;
38
+ kanbanId: any;
39
+ lastTaskId: any;
40
+ };
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.kanbanIncreaseTaskId = exports.kanbanEditTask = exports.kanbanAddTask = exports.kanbanMoveColumn = exports.kanbanMoveTask = exports.kanbanInit = exports.KANBAN_INCREASE_TASK_ID = exports.KANBAN_EDIT_TASK = exports.KANBAN_ADD_TASK = 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
+ exports.KANBAN_ADD_TASK = '@kanban/add_task';
8
+ exports.KANBAN_EDIT_TASK = '@kanban/edit_task';
9
+ exports.KANBAN_INCREASE_TASK_ID = '@kanban/increase_task_id';
10
+ var kanbanInit = function (kanbanId, payload) { return ({
11
+ type: exports.KANBAN_INIT,
12
+ payload: payload
13
+ }); };
14
+ exports.kanbanInit = kanbanInit;
15
+ var kanbanMoveTask = function (kanbanId, source, destination) { return ({
16
+ type: exports.KANBAN_MOVE_TASK,
17
+ kanbanId: kanbanId,
18
+ source: source,
19
+ destination: destination
20
+ }); };
21
+ exports.kanbanMoveTask = kanbanMoveTask;
22
+ var kanbanMoveColumn = function (kanbanId, source, destination) { return ({
23
+ type: exports.KANBAN_MOVE_COLUMN,
24
+ kanbanId: kanbanId,
25
+ source: source,
26
+ destination: destination
27
+ }); };
28
+ exports.kanbanMoveColumn = kanbanMoveColumn;
29
+ var kanbanAddTask = function (kanbanId, columnId, task) { return ({
30
+ type: exports.KANBAN_ADD_TASK,
31
+ kanbanId: kanbanId,
32
+ columnId: columnId,
33
+ task: task
34
+ }); };
35
+ exports.kanbanAddTask = kanbanAddTask;
36
+ var kanbanEditTask = function (kanbanId, columnId, prevColumnId, task) { return ({
37
+ type: exports.KANBAN_EDIT_TASK,
38
+ kanbanId: kanbanId,
39
+ columnId: columnId,
40
+ prevColumnId: prevColumnId,
41
+ task: task
42
+ }); };
43
+ exports.kanbanEditTask = kanbanEditTask;
44
+ var kanbanIncreaseTaskId = function (kanbanId, lastTaskId) { return ({
45
+ type: exports.KANBAN_INCREASE_TASK_ID,
46
+ kanbanId: kanbanId,
47
+ lastTaskId: lastTaskId
48
+ }); };
49
+ exports.kanbanIncreaseTaskId = kanbanIncreaseTaskId;
@@ -0,0 +1,4 @@
1
+ export declare const CREATE_TASK_MODAL_ID = "CreateKanbanTaskModal";
2
+ export declare const CREATE_TASK_FORM_ID = "CreateTaskForm";
3
+ export declare const EDIT_TASK_MODAL_ID = "EditKanbanTaskModal";
4
+ export declare const EDIT_TASK_FORM_ID = "EditTaskForm";
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.EDIT_TASK_FORM_ID = exports.EDIT_TASK_MODAL_ID = exports.CREATE_TASK_FORM_ID = exports.CREATE_TASK_MODAL_ID = void 0;
4
+ exports.CREATE_TASK_MODAL_ID = 'CreateKanbanTaskModal';
5
+ exports.CREATE_TASK_FORM_ID = 'CreateTaskForm';
6
+ exports.EDIT_TASK_MODAL_ID = 'EditKanbanTaskModal';
7
+ exports.EDIT_TASK_FORM_ID = 'EditTaskForm';
@@ -0,0 +1,13 @@
1
+ import Enum from '../../../../base/Enum';
2
+ export default class KanbanModalTypeEnum extends Enum {
3
+ static DETAILS: string;
4
+ static EDIT: string;
5
+ static CREATE: string;
6
+ static getLabels(): {
7
+ [x: string]: string;
8
+ };
9
+ static getModalIcons(): {
10
+ [x: string]: string;
11
+ };
12
+ static getModalIconByType(type: any): string;
13
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __importDefault = (this && this.__importDefault) || function (mod) {
18
+ return (mod && mod.__esModule) ? mod : { "default": mod };
19
+ };
20
+ exports.__esModule = true;
21
+ var Enum_1 = __importDefault(require("../../../../base/Enum"));
22
+ var KanbanModalTypeEnum = /** @class */ (function (_super) {
23
+ __extends(KanbanModalTypeEnum, _super);
24
+ function KanbanModalTypeEnum() {
25
+ return _super !== null && _super.apply(this, arguments) || this;
26
+ }
27
+ KanbanModalTypeEnum.getLabels = function () {
28
+ var _a;
29
+ return _a = {},
30
+ _a[this.EDIT] = __('Редактировать задачу'),
31
+ _a[this.CREATE] = __('Новая задача'),
32
+ _a;
33
+ };
34
+ KanbanModalTypeEnum.getModalIcons = function () {
35
+ var _a;
36
+ return _a = {},
37
+ _a[this.EDIT] = 'expand_left_double',
38
+ _a[this.DETAILS] = 'edit',
39
+ _a;
40
+ };
41
+ KanbanModalTypeEnum.getModalIconByType = function (type) {
42
+ return this.getModalIcons()[type] || '';
43
+ };
44
+ KanbanModalTypeEnum.DETAILS = 'details';
45
+ KanbanModalTypeEnum.EDIT = 'edit';
46
+ KanbanModalTypeEnum.CREATE = 'create';
47
+ return KanbanModalTypeEnum;
48
+ }(Enum_1["default"]));
49
+ exports["default"] = KanbanModalTypeEnum;
@@ -0,0 +1,18 @@
1
+ import { ITaskPriority } from '../Kanban';
2
+ import Enum from '../../../../base/Enum';
3
+ export default class KanbanPrioritiesEnum extends Enum {
4
+ static HIGH: string;
5
+ static MIDDLE: string;
6
+ static DEFAULT: string;
7
+ static getLabels(): {
8
+ [x: string]: string;
9
+ };
10
+ static getLabel(id: any): string;
11
+ static getColorsByType(): {
12
+ [x: string]: string;
13
+ };
14
+ static getColorByType(type: any): string;
15
+ static getPrioritiesArray(): ITaskPriority[];
16
+ static getPriorityById(id: any): any;
17
+ static getDefaultSelectedPriorityId(): any;
18
+ }
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __importDefault = (this && this.__importDefault) || function (mod) {
18
+ return (mod && mod.__esModule) ? mod : { "default": mod };
19
+ };
20
+ exports.__esModule = true;
21
+ var find_1 = __importDefault(require("lodash-es/find"));
22
+ var Enum_1 = __importDefault(require("../../../../base/Enum"));
23
+ var KanbanPrioritiesEnum = /** @class */ (function (_super) {
24
+ __extends(KanbanPrioritiesEnum, _super);
25
+ function KanbanPrioritiesEnum() {
26
+ return _super !== null && _super.apply(this, arguments) || this;
27
+ }
28
+ KanbanPrioritiesEnum.getLabels = function () {
29
+ var _a;
30
+ return _a = {},
31
+ _a[this.HIGH] = __('Высокий'),
32
+ _a[this.MIDDLE] = __('Средний'),
33
+ _a[this.DEFAULT] = __('Без приоритета'),
34
+ _a;
35
+ };
36
+ KanbanPrioritiesEnum.getLabel = function (id) {
37
+ return this.getLabels()[id || this.DEFAULT] || '';
38
+ };
39
+ KanbanPrioritiesEnum.getColorsByType = function () {
40
+ var _a;
41
+ return _a = {},
42
+ _a[this.HIGH] = 'danger',
43
+ _a[this.MIDDLE] = 'warning',
44
+ _a[this.DEFAULT] = 'light-gray',
45
+ _a;
46
+ };
47
+ KanbanPrioritiesEnum.getColorByType = function (type) {
48
+ return this.getColorsByType()[type || this.DEFAULT] || '';
49
+ };
50
+ KanbanPrioritiesEnum.getPrioritiesArray = function () {
51
+ return [
52
+ {
53
+ id: 1,
54
+ type: this.HIGH
55
+ },
56
+ {
57
+ id: 2,
58
+ type: this.MIDDLE
59
+ },
60
+ {
61
+ id: 3,
62
+ type: this.DEFAULT
63
+ },
64
+ ];
65
+ };
66
+ KanbanPrioritiesEnum.getPriorityById = function (id) {
67
+ return (0, find_1["default"])(this.getPrioritiesArray(), { id: id }) || null;
68
+ };
69
+ KanbanPrioritiesEnum.getDefaultSelectedPriorityId = function () {
70
+ var defaultPriority = (0, find_1["default"])(this.getPrioritiesArray(), { type: this.DEFAULT });
71
+ return defaultPriority ? defaultPriority.id : null;
72
+ };
73
+ KanbanPrioritiesEnum.HIGH = 'high';
74
+ KanbanPrioritiesEnum.MIDDLE = 'middle';
75
+ KanbanPrioritiesEnum.DEFAULT = 'default';
76
+ return KanbanPrioritiesEnum;
77
+ }(Enum_1["default"]));
78
+ exports["default"] = KanbanPrioritiesEnum;
@@ -0,0 +1,3 @@
1
+ import KanbanPrioritiesEnum from './KanbanPrioritiesEnum';
2
+ import KanbanModalTypeEnum from './KanbanModalTypeEnum';
3
+ export { KanbanPrioritiesEnum, KanbanModalTypeEnum, };
@@ -0,0 +1,10 @@
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.KanbanModalTypeEnum = exports.KanbanPrioritiesEnum = void 0;
7
+ var KanbanPrioritiesEnum_1 = __importDefault(require("./KanbanPrioritiesEnum"));
8
+ exports.KanbanPrioritiesEnum = KanbanPrioritiesEnum_1["default"];
9
+ var KanbanModalTypeEnum_1 = __importDefault(require("./KanbanModalTypeEnum"));
10
+ exports.KanbanModalTypeEnum = KanbanModalTypeEnum_1["default"];
@@ -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"];