@haiiro/docuflow 0.0.13 → 0.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/bin/install.mjs +78 -7
- package/manifest.json +30 -20
- package/package.json +1 -1
- package/public/app/docflow-app.js +8 -7
- package/src/front-components/docflow-documents.front-component.mjs +41 -41
- package/src/front-components/docflow-documents.front-component.tsx +49 -32
- package/src/front-components/docflow-processes.front-component.mjs +34 -34
- package/src/front-components/docflow-processes.front-component.tsx +6 -9
- package/src/front-components/docflow-tasks.front-component.mjs +40 -39
- package/src/front-components/docflow-tasks.front-component.tsx +37 -15
- package/src/front-components/launch-process.front-component.mjs +30 -30
- package/src/front-components/process-steps.front-component.mjs +25 -25
- package/src/front-components/process-steps.front-component.tsx +2 -1
- package/src/front-components/task-form.front-component.mjs +45 -44
- package/src/front-components/task-form.front-component.tsx +12 -1
- package/src/logic-functions/bitrix-app.logic-function.mjs +27 -2
- package/src/logic-functions/bitrix-app.logic-function.ts +2 -2
- package/src/logic-functions/bitrix-event.logic-function.mjs +22 -1
- package/src/logic-functions/bitrix-event.logic-function.ts +2 -2
- package/src/logic-functions/bitrix-install.logic-function.mjs +26 -1
- package/src/logic-functions/bitrix-install.logic-function.ts +2 -2
- package/src/logic-functions/complete-task.logic-function.mjs +22 -1
- package/src/logic-functions/complete-task.logic-function.ts +2 -2
- package/src/logic-functions/docflow-app-session.logic-function.mjs +22 -1
- package/src/logic-functions/docflow-app-session.logic-function.ts +2 -2
- package/src/logic-functions/docflow-app.logic-function.mjs +29 -2
- package/src/logic-functions/docflow-app.logic-function.ts +2 -1
- package/src/logic-functions/launch-process.logic-function.mjs +23 -13
- package/src/logic-functions/launch-process.logic-function.ts +2 -2
- package/src/logic-functions/publish-process.logic-function.mjs +32 -11
- package/src/logic-functions/publish-process.logic-function.ts +8 -4
- package/src/logic-functions/save-launch-fields.logic-function.mjs +18 -8
- package/src/logic-functions/save-launch-fields.logic-function.ts +2 -2
- package/src/logic-functions/save-step-settings.logic-function.mjs +24 -2
- package/src/logic-functions/save-step-settings.logic-function.ts +2 -2
- package/src/logic-functions/save-task-form.logic-function.mjs +22 -1
- package/src/logic-functions/save-task-form.logic-function.ts +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useMemo, useState } from 'react';
|
|
1
|
+
import { useEffect, useMemo, useState } from 'react';
|
|
2
2
|
import { defineFrontComponent } from 'twenty-sdk/define';
|
|
3
3
|
import { AppPath, enqueueSnackbar, openSidePanelPage } from 'twenty-sdk/front-component';
|
|
4
4
|
import {
|
|
@@ -37,7 +37,6 @@ import { type DocflowTask, type WorkspaceMember } from 'src/front/types';
|
|
|
37
37
|
import {
|
|
38
38
|
DataTable,
|
|
39
39
|
DocflowRoot,
|
|
40
|
-
formatTotal,
|
|
41
40
|
ListToolbar,
|
|
42
41
|
Message,
|
|
43
42
|
pluralize,
|
|
@@ -56,8 +55,9 @@ import {
|
|
|
56
55
|
useRowSelection,
|
|
57
56
|
} from 'src/front/ui/components';
|
|
58
57
|
import { FormFieldsBuilder } from 'src/front/ui/form-fields-builder';
|
|
59
|
-
import { BulkChangeDialog, Button, type MenuAction, MenuButton,
|
|
58
|
+
import { BulkChangeDialog, Button, type MenuAction, MenuButton, QuickViews, StatusChip } from 'src/front/ui/kit';
|
|
60
59
|
|
|
60
|
+
import { TableSkeleton } from 'src/front/ui/skeleton';
|
|
61
61
|
import { UrgentTaskCards } from 'src/front/ui/task-cards';
|
|
62
62
|
import { TaskWorkPanel } from 'src/front/ui/task-work-panel';
|
|
63
63
|
import {
|
|
@@ -273,6 +273,7 @@ const DocflowTasks = () => {
|
|
|
273
273
|
const [filters, setFilters] = useState<TaskFilters>(DEFAULT_FILTERS);
|
|
274
274
|
const [sort, setSort] = useState<TableSort>(DEFAULT_SORT);
|
|
275
275
|
const [panel, setPanel] = useState<Panel>({ kind: 'closed' });
|
|
276
|
+
const [knownTitles, setKnownTitles] = useState<Record<string, string>>({});
|
|
276
277
|
const [pages, setPages] = useState(1);
|
|
277
278
|
const [hiddenColumns, setHiddenColumns] = useHiddenColumns(['createdAt']);
|
|
278
279
|
const [bulkDialog, setBulkDialog] = useState<BulkDialog>();
|
|
@@ -427,11 +428,33 @@ const DocflowTasks = () => {
|
|
|
427
428
|
|
|
428
429
|
const selectedIds = selection.selectedIds;
|
|
429
430
|
const openSelectedCount = selectedTasks.filter((task) => task.status !== TASK_DONE_STATUS).length;
|
|
431
|
+
const openTask =
|
|
432
|
+
panel.kind === 'task'
|
|
433
|
+
? (tasks.find(({ id }) => id === panel.taskId) ?? urgentTasks.find(({ id }) => id === panel.taskId))
|
|
434
|
+
: undefined;
|
|
435
|
+
// A completed task leaves the "Открытые" list while its panel stays open:
|
|
436
|
+
// the panel keeps the title it was opened with.
|
|
437
|
+
const openTaskTitle = openTask?.title?.trim() ?? '';
|
|
438
|
+
|
|
439
|
+
useEffect(() => {
|
|
440
|
+
if (openTask !== undefined && openTaskTitle.length > 0) {
|
|
441
|
+
setKnownTitles((current) =>
|
|
442
|
+
current[openTask.id] === openTaskTitle ? current : { ...current, [openTask.id]: openTaskTitle },
|
|
443
|
+
);
|
|
444
|
+
}
|
|
445
|
+
}, [openTask?.id, openTaskTitle]);
|
|
446
|
+
|
|
447
|
+
const panelTitle =
|
|
448
|
+
panel.kind === 'create'
|
|
449
|
+
? 'Новое задание'
|
|
450
|
+
: panel.kind === 'task'
|
|
451
|
+
? openTaskTitle || knownTitles[panel.taskId] || 'Без названия'
|
|
452
|
+
: undefined;
|
|
430
453
|
|
|
431
454
|
return (
|
|
432
455
|
<DocflowRoot>
|
|
433
456
|
<SplitView
|
|
434
|
-
panelTitle={
|
|
457
|
+
panelTitle={panelTitle}
|
|
435
458
|
onClosePanel={() => setPanel({ kind: 'closed' })}
|
|
436
459
|
panel={
|
|
437
460
|
panel.kind === 'create' ? (
|
|
@@ -444,7 +467,13 @@ const DocflowTasks = () => {
|
|
|
444
467
|
}}
|
|
445
468
|
/>
|
|
446
469
|
) : panel.kind === 'task' ? (
|
|
447
|
-
<TaskWorkPanel
|
|
470
|
+
<TaskWorkPanel
|
|
471
|
+
key={panel.taskId}
|
|
472
|
+
taskId={panel.taskId}
|
|
473
|
+
withChat
|
|
474
|
+
showTitle={false}
|
|
475
|
+
onChanged={() => void reloadAll()}
|
|
476
|
+
/>
|
|
448
477
|
) : undefined
|
|
449
478
|
}
|
|
450
479
|
>
|
|
@@ -506,20 +535,12 @@ const DocflowTasks = () => {
|
|
|
506
535
|
],
|
|
507
536
|
}}
|
|
508
537
|
views={
|
|
509
|
-
<
|
|
538
|
+
<QuickViews
|
|
510
539
|
value={view}
|
|
511
540
|
onChange={changeView}
|
|
512
541
|
options={VIEWS.map((option) => ({ ...option, count: counts?.[option.value] }))}
|
|
513
542
|
/>
|
|
514
543
|
}
|
|
515
|
-
total={
|
|
516
|
-
data === undefined
|
|
517
|
-
? undefined
|
|
518
|
-
: formatTotal(tasks.length + urgentTasks.length, (data.totalCount ?? tasks.length) + urgentTasks.length, TASK_NOUN)
|
|
519
|
-
}
|
|
520
|
-
columns={{ columns: COLUMNS, hiddenKeys: hiddenColumns, onChange: setHiddenColumns }}
|
|
521
|
-
onRefresh={() => void reloadAll()}
|
|
522
|
-
isRefreshing={loading}
|
|
523
544
|
onCreate={() => setPanel({ kind: 'create' })}
|
|
524
545
|
/>
|
|
525
546
|
{hasCards && (
|
|
@@ -536,7 +557,7 @@ const DocflowTasks = () => {
|
|
|
536
557
|
<Message tone="danger">{getErrorMessage(error, 'Не удалось загрузить задания')}</Message>
|
|
537
558
|
</div>
|
|
538
559
|
)}
|
|
539
|
-
{loading && data === undefined && <
|
|
560
|
+
{loading && data === undefined && <TableSkeleton />}
|
|
540
561
|
{!loading && error === undefined && tasks.length === 0 && (
|
|
541
562
|
<Message>{urgentTasks.length > 0 ? 'Остальных заданий нет: все срочные — в карточках выше.' : 'Заданий нет.'}</Message>
|
|
542
563
|
)}
|
|
@@ -550,6 +571,7 @@ const DocflowTasks = () => {
|
|
|
550
571
|
<DataTable
|
|
551
572
|
columns={COLUMNS}
|
|
552
573
|
hiddenColumnKeys={hiddenColumns}
|
|
574
|
+
onHiddenColumnsChange={setHiddenColumns}
|
|
553
575
|
sort={sort}
|
|
554
576
|
onSortChange={(next) => {
|
|
555
577
|
setSort(next);
|