@haiiro/docuflow 0.0.12 → 0.0.15
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 +41 -9
- package/bin/install.mjs +69 -3
- package/manifest.json +114 -18
- package/package.json +6 -3
- package/public/app/docflow-app.css +2 -0
- package/public/app/docflow-app.js +95 -0
- 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 +24 -11
- package/src/front-components/docflow-tasks.front-component.mjs +40 -39
- package/src/front-components/docflow-tasks.front-component.tsx +19 -14
- package/src/front-components/launch-process.front-component.mjs +75 -0
- package/src/front-components/launch-process.front-component.tsx +270 -0
- package/src/front-components/process-steps.front-component.mjs +26 -26
- package/src/front-components/process-steps.front-component.tsx +56 -10
- 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 +186 -88
- package/src/logic-functions/bitrix-app.logic-function.ts +24 -61
- 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 -12
- package/src/logic-functions/bitrix-install.logic-function.ts +2 -5
- 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 +60064 -0
- package/src/logic-functions/docflow-app-session.logic-function.ts +54 -0
- package/src/logic-functions/docflow-app.logic-function.mjs +60149 -0
- package/src/logic-functions/docflow-app.logic-function.ts +38 -0
- package/src/logic-functions/launch-process.logic-function.mjs +134 -40
- package/src/logic-functions/launch-process.logic-function.ts +85 -24
- 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 +194 -17
- package/src/logic-functions/save-launch-fields.logic-function.ts +26 -8
- 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
|
@@ -36,7 +36,6 @@ import { type DocflowDocument, type DocumentFolder } from 'src/front/types';
|
|
|
36
36
|
import {
|
|
37
37
|
DataTable,
|
|
38
38
|
DocflowRoot,
|
|
39
|
-
formatTotal,
|
|
40
39
|
ListToolbar,
|
|
41
40
|
Message,
|
|
42
41
|
pluralize,
|
|
@@ -49,7 +48,8 @@ import {
|
|
|
49
48
|
useRowSelection,
|
|
50
49
|
} from 'src/front/ui/components';
|
|
51
50
|
import { type FolderAppearance, FolderList, useFolderColor } from 'src/front/ui/folders';
|
|
52
|
-
import { BulkChangeDialog, Button, type MenuAction, MenuButton, PromptDialog,
|
|
51
|
+
import { BulkChangeDialog, Button, type MenuAction, MenuButton, PromptDialog, QuickViews, StatusChip } from 'src/front/ui/kit';
|
|
52
|
+
import { TableSkeleton } from 'src/front/ui/skeleton';
|
|
53
53
|
import { restAnd, restEq, restIlike, restIn, restIsNotNull, restOr } from 'src/shared/api/rest-filter.util';
|
|
54
54
|
import { DOCUMENT_OBJECT_NAME, PAGE_SIZE } from 'src/shared/docflow.constants';
|
|
55
55
|
import { logDocflow, logDocflowError } from 'src/shared/log.util';
|
|
@@ -61,6 +61,9 @@ const SEARCH_DEBOUNCE_MS = 300;
|
|
|
61
61
|
const FOLDERS_LIMIT = 500;
|
|
62
62
|
const ALL_FOLDERS = '';
|
|
63
63
|
const ANY = 'any';
|
|
64
|
+
// The folder list with names and the narrowest row it keeps them in
|
|
65
|
+
const FOLDERS_WIDTH_PX = 240;
|
|
66
|
+
const FOLDERS_FULL_MIN_ROW_PX = FOLDERS_WIDTH_PX + 640;
|
|
64
67
|
const DOCUMENT_NOUN: [string, string, string] = ['документ', 'документа', 'документов'];
|
|
65
68
|
|
|
66
69
|
// The quick views: a status, all of them, or the trash
|
|
@@ -414,31 +417,48 @@ const DocflowDocuments = () => {
|
|
|
414
417
|
return (
|
|
415
418
|
<DocflowRoot>
|
|
416
419
|
<div style={{ display: 'flex', flex: 1, flexDirection: 'column', minHeight: 0, overflowY: 'auto' }}>
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
allFoldersId={ALL_FOLDERS}
|
|
431
|
-
onSelect={(id) => {
|
|
432
|
-
setFolderId(id);
|
|
433
|
-
setPages(1);
|
|
434
|
-
selection.clear();
|
|
420
|
+
{/* The folders stay beside the table: a list where the row is wide,
|
|
421
|
+
a rail of icons where it is not. No media queries in the sandbox,
|
|
422
|
+
so each variant's max-width is huge or zero by the row's width. */}
|
|
423
|
+
<div style={{ alignItems: 'flex-start', display: 'flex', flex: 1, minHeight: 0 }}>
|
|
424
|
+
{[false, true].map((isCompact) => (
|
|
425
|
+
<div
|
|
426
|
+
key={isCompact ? 'compact' : 'full'}
|
|
427
|
+
style={{
|
|
428
|
+
flexShrink: 0,
|
|
429
|
+
maxWidth: isCompact
|
|
430
|
+
? `calc((${FOLDERS_FULL_MIN_ROW_PX}px - 100%) * 999)`
|
|
431
|
+
: `calc((100% - ${FOLDERS_FULL_MIN_ROW_PX}px) * 999)`,
|
|
432
|
+
overflow: 'hidden',
|
|
435
433
|
}}
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
434
|
+
>
|
|
435
|
+
<div
|
|
436
|
+
style={{
|
|
437
|
+
boxSizing: 'border-box',
|
|
438
|
+
padding: isCompact
|
|
439
|
+
? `${theme.spacing[4]} 0 ${theme.spacing[4]} ${theme.spacing[3]}`
|
|
440
|
+
: `${theme.spacing[4]} ${theme.spacing[3]} ${theme.spacing[4]} ${theme.spacing[5]}`,
|
|
441
|
+
width: isCompact ? undefined : FOLDERS_WIDTH_PX,
|
|
442
|
+
}}
|
|
443
|
+
>
|
|
444
|
+
<FolderList
|
|
445
|
+
isCompact={isCompact}
|
|
446
|
+
folders={folders ?? []}
|
|
447
|
+
selectedFolderId={folderId}
|
|
448
|
+
allFoldersId={ALL_FOLDERS}
|
|
449
|
+
onSelect={(id) => {
|
|
450
|
+
setFolderId(id);
|
|
451
|
+
setPages(1);
|
|
452
|
+
selection.clear();
|
|
453
|
+
}}
|
|
454
|
+
onCreate={handleCreateFolder}
|
|
455
|
+
onUpdate={handleUpdateFolder}
|
|
456
|
+
onDelete={handleDeleteFolder}
|
|
457
|
+
/>
|
|
458
|
+
</div>
|
|
459
|
+
</div>
|
|
460
|
+
))}
|
|
461
|
+
<div style={{ display: 'flex', flex: 1, flexDirection: 'column', minWidth: 0 }}>
|
|
442
462
|
<ListToolbar
|
|
443
463
|
search={{
|
|
444
464
|
value: searchInput,
|
|
@@ -471,7 +491,7 @@ const DocflowDocuments = () => {
|
|
|
471
491
|
],
|
|
472
492
|
}}
|
|
473
493
|
views={
|
|
474
|
-
<
|
|
494
|
+
<QuickViews
|
|
475
495
|
value={view}
|
|
476
496
|
onChange={(next) => {
|
|
477
497
|
setView(next);
|
|
@@ -481,10 +501,6 @@ const DocflowDocuments = () => {
|
|
|
481
501
|
options={VIEWS.map((option) => ({ ...option, count: counts?.[option.value] }))}
|
|
482
502
|
/>
|
|
483
503
|
}
|
|
484
|
-
total={data === undefined ? undefined : formatTotal(documents.length, data.totalCount, DOCUMENT_NOUN)}
|
|
485
|
-
columns={{ columns: COLUMNS, hiddenKeys: hiddenColumns, onChange: setHiddenColumns }}
|
|
486
|
-
onRefresh={() => void reloadAll()}
|
|
487
|
-
isRefreshing={loading}
|
|
488
504
|
onCreate={() => void handleCreateDocument()}
|
|
489
505
|
isCreating={isCreating}
|
|
490
506
|
/>
|
|
@@ -493,12 +509,13 @@ const DocflowDocuments = () => {
|
|
|
493
509
|
<Message tone="danger">{getErrorMessage(error, 'Не удалось загрузить документы')}</Message>
|
|
494
510
|
</div>
|
|
495
511
|
)}
|
|
496
|
-
{loading && data === undefined && <
|
|
512
|
+
{loading && data === undefined && <TableSkeleton />}
|
|
497
513
|
{!loading && error === undefined && documents.length === 0 && <Message>Документов нет.</Message>}
|
|
498
514
|
{documents.length > 0 && (
|
|
499
515
|
<DataTable
|
|
500
516
|
columns={COLUMNS}
|
|
501
517
|
hiddenColumnKeys={hiddenColumns}
|
|
518
|
+
onHiddenColumnsChange={setHiddenColumns}
|
|
502
519
|
sort={sort}
|
|
503
520
|
onSortChange={(next) => {
|
|
504
521
|
setSort(next);
|