@vanillabp/bc-ui 0.0.3

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 (47) hide show
  1. package/README.md +1 -0
  2. package/dist/chunk-YH4NJHER.js +58 -0
  3. package/dist/components/ListCell.d.ts +27 -0
  4. package/dist/components/ListCell.js +123 -0
  5. package/dist/components/ListColumnHeader.d.ts +22 -0
  6. package/dist/components/ListColumnHeader.js +135 -0
  7. package/dist/components/ListOfTasks.d.ts +35 -0
  8. package/dist/components/ListOfTasks.js +1327 -0
  9. package/dist/components/ListOfWorkflows.d.ts +36 -0
  10. package/dist/components/ListOfWorkflows.js +974 -0
  11. package/dist/components/NoElementGivenByModule.d.ts +10 -0
  12. package/dist/components/NoElementGivenByModule.js +54 -0
  13. package/dist/components/NoUserTaskGiven.d.ts +10 -0
  14. package/dist/components/NoUserTaskGiven.js +23 -0
  15. package/dist/components/NoWorkflowGiven.d.ts +10 -0
  16. package/dist/components/NoWorkflowGiven.js +22 -0
  17. package/dist/components/SearchableAndSortableUpdatingList.d.ts +49 -0
  18. package/dist/components/SearchableAndSortableUpdatingList.js +200 -0
  19. package/dist/components/SnapScrolling.d.ts +15 -0
  20. package/dist/components/SnapScrolling.js +17 -0
  21. package/dist/components/SnapScrollingDataTable.d.ts +17 -0
  22. package/dist/components/SnapScrollingDataTable.js +113 -0
  23. package/dist/components/User.d.ts +11 -0
  24. package/dist/components/User.js +39 -0
  25. package/dist/components/UserAvatar.d.ts +12 -0
  26. package/dist/components/UserAvatar.js +133 -0
  27. package/dist/components/UserTaskPage.d.ts +24 -0
  28. package/dist/components/UserTaskPage.js +121 -0
  29. package/dist/components/WorkflowPage.d.ts +16 -0
  30. package/dist/components/WorkflowPage.js +124 -0
  31. package/dist/components/index.d.ts +25 -0
  32. package/dist/components/index.js +13 -0
  33. package/dist/index.d.ts +25 -0
  34. package/dist/index.js +3 -0
  35. package/dist/types/apis.d.ts +50 -0
  36. package/dist/types/apis.js +0 -0
  37. package/dist/types/index.d.ts +7 -0
  38. package/dist/types/index.js +3 -0
  39. package/dist/types/lists.d.ts +12 -0
  40. package/dist/types/lists.js +0 -0
  41. package/dist/types/navigate.d.ts +6 -0
  42. package/dist/types/navigate.js +0 -0
  43. package/dist/utils/index.d.ts +2 -0
  44. package/dist/utils/index.js +1 -0
  45. package/dist/utils/module-federation.d.ts +40 -0
  46. package/dist/utils/module-federation.js +182 -0
  47. package/package.json +66 -0
package/README.md ADDED
@@ -0,0 +1 @@
1
+ For details see [https://github.com/vanillabp/business-cockpit](https://github.com/vanillabp/business-cockpit).
@@ -0,0 +1,58 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __objRest = (source, exclude) => {
21
+ var target = {};
22
+ for (var prop in source)
23
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
24
+ target[prop] = source[prop];
25
+ if (source != null && __getOwnPropSymbols)
26
+ for (var prop of __getOwnPropSymbols(source)) {
27
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
28
+ target[prop] = source[prop];
29
+ }
30
+ return target;
31
+ };
32
+ var __async = (__this, __arguments, generator) => {
33
+ return new Promise((resolve, reject) => {
34
+ var fulfilled = (value) => {
35
+ try {
36
+ step(generator.next(value));
37
+ } catch (e) {
38
+ reject(e);
39
+ }
40
+ };
41
+ var rejected = (value) => {
42
+ try {
43
+ step(generator.throw(value));
44
+ } catch (e) {
45
+ reject(e);
46
+ }
47
+ };
48
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
49
+ step((generator = generator.apply(__this, __arguments)).next());
50
+ });
51
+ };
52
+
53
+ export {
54
+ __spreadValues,
55
+ __spreadProps,
56
+ __objRest,
57
+ __async
58
+ };
@@ -0,0 +1,27 @@
1
+ import { Column, TranslationFunction, DefaultListCellProps } from '@vanillabp/bc-shared';
2
+ import { FC } from 'react';
3
+ import { ListItemData, ListItem } from './SearchableAndSortableUpdatingList.js';
4
+ import { ModuleDefinition, Module } from '../utils/module-federation.js';
5
+ import 'grommet';
6
+ import 'grommet/utils';
7
+
8
+ declare enum TypeOfItem {
9
+ TaskList = 0,
10
+ WorkflowList = 1
11
+ }
12
+ interface ListCellParameters<T extends ListItemData & ModuleDefinition> {
13
+ modulesAvailable: Module[];
14
+ column: Column;
15
+ defaultLanguage?: string;
16
+ currentLanguage: string;
17
+ nameOfList?: string;
18
+ typeOfItem: TypeOfItem;
19
+ item: ListItem<T>;
20
+ t: TranslationFunction;
21
+ defaultListCell: FC<DefaultListCellProps<T>>;
22
+ showUnreadAsBold?: boolean;
23
+ selectItem: (item: ListItem<T>, select: boolean) => void;
24
+ }
25
+ declare const ListCell: <T extends ListItemData & ModuleDefinition>({ modulesAvailable, column, defaultLanguage, currentLanguage, nameOfList, typeOfItem, item, t, showUnreadAsBold, defaultListCell, selectItem, }: ListCellParameters<T>) => JSX.Element;
26
+
27
+ export { ListCell, TypeOfItem };
@@ -0,0 +1,123 @@
1
+ import "../chunk-YH4NJHER.js";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import {
4
+ useResponsiveScreen,
5
+ WarningListCell
6
+ } from "@vanillabp/bc-shared";
7
+ import { memo } from "react";
8
+ var TypeOfItem = /* @__PURE__ */ ((TypeOfItem2) => {
9
+ TypeOfItem2[TypeOfItem2["TaskList"] = 0] = "TaskList";
10
+ TypeOfItem2[TypeOfItem2["WorkflowList"] = 1] = "WorkflowList";
11
+ return TypeOfItem2;
12
+ })(TypeOfItem || {});
13
+ const isVanillaBpColumn = (column) => {
14
+ return column.path === "id" || column.path === "assignee" || column.path === "candidateUsers" || column.path === "title";
15
+ };
16
+ const warningsForUserTaskCells = {};
17
+ const warningsForWorkflowCells = {};
18
+ const ListCell = ({
19
+ modulesAvailable,
20
+ column,
21
+ defaultLanguage = "en",
22
+ currentLanguage,
23
+ nameOfList,
24
+ typeOfItem,
25
+ item,
26
+ t,
27
+ showUnreadAsBold,
28
+ defaultListCell,
29
+ selectItem
30
+ }) => {
31
+ const { isPhone, isTablet } = useResponsiveScreen();
32
+ const module = modulesAvailable.find((module2) => item.data.workflowModuleId === module2.workflowModuleId);
33
+ if (module === void 0 && !isVanillaBpColumn(column)) {
34
+ return /* @__PURE__ */ jsx(
35
+ WarningListCell,
36
+ {
37
+ error: true,
38
+ message: t("module-unknown")
39
+ }
40
+ );
41
+ }
42
+ if ((module == null ? void 0 : module.retry) && !isVanillaBpColumn(column)) {
43
+ return /* @__PURE__ */ jsx(
44
+ WarningListCell,
45
+ {
46
+ message: t("retry-loading-module-hint")
47
+ }
48
+ );
49
+ }
50
+ let Cell;
51
+ if (typeOfItem === 0 /* TaskList */) {
52
+ if (!Boolean(module == null ? void 0 : module.UserTaskListCell)) {
53
+ if (warningsForUserTaskCells[item.data.workflowModuleId] === void 0) {
54
+ console.info(`Workflow-module ${item.data.workflowModuleId} has no UserTaskListCell defined!`);
55
+ warningsForUserTaskCells[item.data.workflowModuleId] = true;
56
+ }
57
+ Cell = defaultListCell;
58
+ } else {
59
+ Cell = memo(
60
+ module.UserTaskListCell,
61
+ (prevProps, nextProps) => {
62
+ var _a, _b;
63
+ if (prevProps.column !== nextProps.column)
64
+ return false;
65
+ if (prevProps.showUnreadAsBold !== nextProps.showUnreadAsBold)
66
+ return false;
67
+ if (prevProps.item.id !== nextProps.item.id)
68
+ return false;
69
+ return ((_a = prevProps.item) == null ? void 0 : _a.data.version) === ((_b = nextProps.item) == null ? void 0 : _b.data.version);
70
+ }
71
+ );
72
+ }
73
+ } else if (typeOfItem === 1 /* WorkflowList */) {
74
+ if (!Boolean(module == null ? void 0 : module.WorkflowListCell)) {
75
+ if (warningsForWorkflowCells[item.data.workflowModuleId] === void 0) {
76
+ console.info(`Workflow-module ${item.data.workflowModuleId} has no WorkflowListCell defined!`);
77
+ warningsForWorkflowCells[item.data.workflowModuleId] = true;
78
+ }
79
+ Cell = defaultListCell;
80
+ } else {
81
+ Cell = memo(
82
+ module.WorkflowListCell,
83
+ (prevProps, nextProps) => {
84
+ var _a, _b;
85
+ if (prevProps.column !== nextProps.column)
86
+ return false;
87
+ if (prevProps.showUnreadAsBold !== nextProps.showUnreadAsBold)
88
+ return false;
89
+ if (prevProps.item.id !== nextProps.item.id)
90
+ return false;
91
+ return ((_a = prevProps.item) == null ? void 0 : _a.data.version) === ((_b = nextProps.item) == null ? void 0 : _b.data.version);
92
+ }
93
+ );
94
+ }
95
+ } else {
96
+ return /* @__PURE__ */ jsx(
97
+ WarningListCell,
98
+ {
99
+ message: t("typeofitem_unsupported")
100
+ }
101
+ );
102
+ }
103
+ return /* @__PURE__ */ jsx(
104
+ Cell,
105
+ {
106
+ t,
107
+ item,
108
+ column,
109
+ showUnreadAsBold,
110
+ currentLanguage,
111
+ defaultLanguage,
112
+ defaultCell: defaultListCell,
113
+ nameOfList,
114
+ isPhone,
115
+ isTablet,
116
+ selectItem: (select) => selectItem(item, select)
117
+ }
118
+ );
119
+ };
120
+ export {
121
+ ListCell,
122
+ TypeOfItem
123
+ };
@@ -0,0 +1,22 @@
1
+ import { TranslationFunction, Column, DefaultListHeaderAwareProps } from '@vanillabp/bc-shared';
2
+ import { FC } from 'react';
3
+
4
+ declare const ListColumnHeader: ({ t, currentLanguage, column, columnIndex, numberOfAllColumns, nameOfList, columnHeader, hasColumnWidthAdjustment, setColumnWidthAdjustment, sort, sortAscending, setSort, setSortAscending, allSelected, selectAll }: {
5
+ t: TranslationFunction;
6
+ currentLanguage: string;
7
+ column: Column;
8
+ columnIndex: number;
9
+ numberOfAllColumns: number;
10
+ nameOfList?: string | undefined;
11
+ columnHeader?: FC<DefaultListHeaderAwareProps<any>> | undefined;
12
+ hasColumnWidthAdjustment: boolean;
13
+ setColumnWidthAdjustment: (column: Column, adjustment: number) => void;
14
+ sort?: boolean | undefined;
15
+ sortAscending?: boolean | undefined;
16
+ setSort: (column?: Column) => void;
17
+ setSortAscending: (ascending: boolean) => void;
18
+ allSelected: boolean;
19
+ selectAll: (select: boolean) => void;
20
+ }) => JSX.Element;
21
+
22
+ export { ListColumnHeader };
@@ -0,0 +1,135 @@
1
+ import "../chunk-YH4NJHER.js";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import {
4
+ DefaultListHeader,
5
+ useResponsiveScreen
6
+ } from "@vanillabp/bc-shared";
7
+ import { useCallback, useEffect, useRef, useState } from "react";
8
+ import { Box } from "grommet";
9
+ const ListColumnHeader = ({
10
+ t,
11
+ currentLanguage,
12
+ column,
13
+ columnIndex,
14
+ numberOfAllColumns,
15
+ nameOfList,
16
+ columnHeader,
17
+ hasColumnWidthAdjustment,
18
+ setColumnWidthAdjustment,
19
+ sort,
20
+ sortAscending,
21
+ setSort,
22
+ setSortAscending,
23
+ allSelected,
24
+ selectAll
25
+ }) => {
26
+ const { isPhone, isTablet } = useResponsiveScreen();
27
+ const resize = useRef(-1);
28
+ const [widthAdjustment, setWidthAdjustment] = useState(0);
29
+ const startResize = (event) => {
30
+ event.stopPropagation();
31
+ event.preventDefault();
32
+ resize.current = event.clientX;
33
+ document.body.style.cursor = "col-resize";
34
+ };
35
+ const moveHandler = useCallback((ev) => {
36
+ if (resize.current == -1)
37
+ return;
38
+ const adjustment = widthAdjustment + (ev.clientX - resize.current);
39
+ setColumnWidthAdjustment(column, adjustment);
40
+ }, [resize, setColumnWidthAdjustment, widthAdjustment, column.path]);
41
+ const upHandler = useCallback((ev) => {
42
+ if (resize.current == -1)
43
+ return;
44
+ document.body.style.cursor = "default";
45
+ const adjustment = widthAdjustment + (ev.clientX - resize.current);
46
+ resize.current = -1;
47
+ setWidthAdjustment(adjustment);
48
+ }, [resize, setWidthAdjustment, widthAdjustment]);
49
+ useEffect(() => {
50
+ window.addEventListener("mousemove", moveHandler);
51
+ window.addEventListener("mouseup", upHandler);
52
+ return () => {
53
+ window.removeEventListener("mousemove", moveHandler);
54
+ window.removeEventListener("mouseup", upHandler);
55
+ };
56
+ }, [setColumnWidthAdjustment, widthAdjustment, setWidthAdjustment]);
57
+ const Header = columnHeader;
58
+ return /* @__PURE__ */ jsxs(
59
+ Box,
60
+ {
61
+ style: {
62
+ position: "relative",
63
+ overflow: columnIndex + 1 === numberOfAllColumns ? "hidden" : void 0
64
+ },
65
+ ref: (element) => {
66
+ if (element === null)
67
+ return;
68
+ if (hasColumnWidthAdjustment)
69
+ return;
70
+ if (column.width !== "")
71
+ return;
72
+ setColumnWidthAdjustment(
73
+ column,
74
+ element.getBoundingClientRect().width
75
+ );
76
+ },
77
+ children: [
78
+ /* @__PURE__ */ jsx(
79
+ Box,
80
+ {
81
+ direction: "row",
82
+ justify: "between",
83
+ align: "center",
84
+ overflow: "hidden",
85
+ style: { position: "relative" },
86
+ children: columnHeader !== void 0 ? /* @__PURE__ */ jsx(
87
+ Header,
88
+ {
89
+ column,
90
+ defaultHeader: DefaultListHeader,
91
+ currentLanguage,
92
+ nameOfList,
93
+ isPhone,
94
+ isTablet,
95
+ selectAll,
96
+ allSelected,
97
+ sort,
98
+ sortAscending,
99
+ setSort,
100
+ setSortAscending
101
+ }
102
+ ) : /* @__PURE__ */ jsx(
103
+ DefaultListHeader,
104
+ {
105
+ column,
106
+ currentLanguage,
107
+ nameOfList,
108
+ isPhone,
109
+ isTablet,
110
+ selectAll,
111
+ allSelected,
112
+ sort,
113
+ sortAscending,
114
+ setSort,
115
+ setSortAscending
116
+ }
117
+ )
118
+ }
119
+ ),
120
+ column.resizeable ? /* @__PURE__ */ jsx(
121
+ Box,
122
+ {
123
+ align: "center",
124
+ onMouseDown: startResize,
125
+ style: { cursor: "col-resize", position: "absolute", top: "-0.5rem", bottom: "-0.5rem", right: "-0.2rem", zIndex: 1e3 },
126
+ children: "\xA0"
127
+ }
128
+ ) : void 0
129
+ ]
130
+ }
131
+ );
132
+ };
133
+ export {
134
+ ListColumnHeader
135
+ };
@@ -0,0 +1,35 @@
1
+ import { FC } from 'react';
2
+ import { ShowLoadingIndicatorFunction, GuiSseHook, TranslationFunction, DefaultListHeaderAwareProps } from '@vanillabp/bc-shared';
3
+ import { BackgroundType, ColorType } from 'grommet/utils';
4
+ import { OpenTaskFunction, NavigateToWorkflowFunction } from '../types/navigate.js';
5
+ import { TasklistApiHook } from '../types/apis.js';
6
+ import { ListOfTasksHeaderFooterFunction } from '../types/lists.js';
7
+ import '@vanillabp/bc-official-gui-client';
8
+ import '@vanillabp/bc-official-gui-client/dist/models/UserTasks';
9
+
10
+ declare const ListOfTasks: ({ showLoadingIndicator, useGuiSse, useTasklistApi, openTask, navigateToWorkflow, t, currentLanguage, defaultSort, defaultSortAscending, name, columns, children, headerHeight, footer, footerHeight, rowSeparator, applyBackgroundColor, showColumnHeaders, excludeIdColumn, columnHeader, columnHeaderBackground, columnHeaderSeparator, }: {
11
+ showLoadingIndicator: ShowLoadingIndicatorFunction;
12
+ useGuiSse: GuiSseHook;
13
+ useTasklistApi: TasklistApiHook;
14
+ openTask: OpenTaskFunction;
15
+ navigateToWorkflow: NavigateToWorkflowFunction;
16
+ t: TranslationFunction;
17
+ currentLanguage: string;
18
+ defaultSort?: string | undefined;
19
+ defaultSortAscending?: boolean | undefined;
20
+ name?: string | undefined;
21
+ columns?: string[] | undefined;
22
+ children?: ListOfTasksHeaderFooterFunction | undefined;
23
+ headerHeight?: string | undefined;
24
+ footer?: ListOfTasksHeaderFooterFunction | undefined;
25
+ footerHeight?: string | undefined;
26
+ rowSeparator?: string | boolean | undefined;
27
+ applyBackgroundColor?: boolean | undefined;
28
+ showColumnHeaders?: boolean | undefined;
29
+ excludeIdColumn?: boolean | undefined;
30
+ columnHeader?: FC<DefaultListHeaderAwareProps<any>> | undefined;
31
+ columnHeaderBackground?: BackgroundType | undefined;
32
+ columnHeaderSeparator?: ColorType | null;
33
+ }) => JSX.Element;
34
+
35
+ export { ListOfTasks };