@prenta/admin 1.5.1 → 1.6.0
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/CHANGELOG.md +6 -0
- package/dist/__tests__/components/request-changes-dialog.render.test.d.ts +2 -0
- package/dist/__tests__/components/request-changes-dialog.render.test.d.ts.map +1 -0
- package/dist/__tests__/components/request-changes-dialog.render.test.js +12 -0
- package/dist/__tests__/components/request-changes-dialog.render.test.js.map +1 -0
- package/dist/__tests__/lib/page-editor-service-api.test.js +28 -15
- package/dist/__tests__/lib/page-editor-service-api.test.js.map +1 -1
- package/dist/__tests__/lib/post-editor-service-api.test.d.ts +2 -0
- package/dist/__tests__/lib/post-editor-service-api.test.d.ts.map +1 -0
- package/dist/__tests__/lib/post-editor-service-api.test.js +67 -0
- package/dist/__tests__/lib/post-editor-service-api.test.js.map +1 -0
- package/dist/__tests__/lib/post-editor-service.test.js +2 -0
- package/dist/__tests__/lib/post-editor-service.test.js.map +1 -1
- package/dist/__tests__/lib/workflow-chrome.test.d.ts +2 -0
- package/dist/__tests__/lib/workflow-chrome.test.d.ts.map +1 -0
- package/dist/__tests__/lib/workflow-chrome.test.js +108 -0
- package/dist/__tests__/lib/workflow-chrome.test.js.map +1 -0
- package/dist/__tests__/views/editor-top-bar.render.test.js +40 -33
- package/dist/__tests__/views/editor-top-bar.render.test.js.map +1 -1
- package/dist/__tests__/views/page-section-editor.test.js +8 -0
- package/dist/__tests__/views/page-section-editor.test.js.map +1 -1
- package/dist/__tests__/views/page-tab.render.test.js +2 -0
- package/dist/__tests__/views/page-tab.render.test.js.map +1 -1
- package/dist/__tests__/views/post-fields-modal.render.test.js +2 -0
- package/dist/__tests__/views/post-fields-modal.render.test.js.map +1 -1
- package/dist/__tests__/views/post-section-editor.test.js +2 -0
- package/dist/__tests__/views/post-section-editor.test.js.map +1 -1
- package/dist/__tests__/views/post-tab.render.test.js +2 -0
- package/dist/__tests__/views/post-tab.render.test.js.map +1 -1
- package/dist/components/RequestChangesDialog.d.ts +6 -0
- package/dist/components/RequestChangesDialog.d.ts.map +1 -0
- package/dist/components/RequestChangesDialog.js +15 -0
- package/dist/components/RequestChangesDialog.js.map +1 -0
- package/dist/lib/page-editor-service.d.ts +6 -2
- package/dist/lib/page-editor-service.d.ts.map +1 -1
- package/dist/lib/page-editor-service.js +16 -12
- package/dist/lib/page-editor-service.js.map +1 -1
- package/dist/lib/post-editor-service.d.ts +6 -1
- package/dist/lib/post-editor-service.d.ts.map +1 -1
- package/dist/lib/post-editor-service.js +16 -11
- package/dist/lib/post-editor-service.js.map +1 -1
- package/dist/lib/workflow-chrome.d.ts +22 -0
- package/dist/lib/workflow-chrome.d.ts.map +1 -0
- package/dist/lib/workflow-chrome.js +80 -0
- package/dist/lib/workflow-chrome.js.map +1 -0
- package/dist/prenta-admin.css +1 -1
- package/dist/views/page-editor/EditorTopBar.d.ts +10 -5
- package/dist/views/page-editor/EditorTopBar.d.ts.map +1 -1
- package/dist/views/page-editor/EditorTopBar.js +38 -28
- package/dist/views/page-editor/EditorTopBar.js.map +1 -1
- package/dist/views/page-editor/PageSectionEditor.d.ts.map +1 -1
- package/dist/views/page-editor/PageSectionEditor.js +83 -62
- package/dist/views/page-editor/PageSectionEditor.js.map +1 -1
- package/dist/views/post-editor/PostSectionEditor.d.ts.map +1 -1
- package/dist/views/post-editor/PostSectionEditor.js +78 -62
- package/dist/views/post-editor/PostSectionEditor.js.map +1 -1
- package/package.json +3 -3
- package/src/__tests__/components/request-changes-dialog.render.test.tsx +11 -0
- package/src/__tests__/lib/page-editor-service-api.test.ts +37 -18
- package/src/__tests__/lib/post-editor-service-api.test.ts +73 -0
- package/src/__tests__/lib/post-editor-service.test.ts +2 -0
- package/src/__tests__/lib/workflow-chrome.test.ts +125 -0
- package/src/__tests__/views/editor-top-bar.render.test.tsx +42 -45
- package/src/__tests__/views/page-section-editor.test.tsx +18 -0
- package/src/__tests__/views/page-tab.render.test.tsx +2 -0
- package/src/__tests__/views/post-fields-modal.render.test.tsx +2 -0
- package/src/__tests__/views/post-section-editor.test.tsx +2 -0
- package/src/__tests__/views/post-tab.render.test.tsx +2 -0
- package/src/components/RequestChangesDialog.tsx +56 -0
- package/src/lib/page-editor-service.ts +26 -11
- package/src/lib/post-editor-service.ts +26 -10
- package/src/lib/workflow-chrome.ts +105 -0
- package/src/views/page-editor/EditorTopBar.tsx +110 -48
- package/src/views/page-editor/PageSectionEditor.tsx +121 -92
- package/src/views/post-editor/PostSectionEditor.tsx +111 -88
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type WorkflowStage = 'DRAFT' | 'IN_REVIEW' | 'APPROVED' | 'ARCHIVED' | 'PUBLISHED';
|
|
2
|
+
export type WorkflowChromeAction = 'submit' | 'approve' | 'waiting';
|
|
3
|
+
export declare const SUBMIT_FOR_REVIEW_LABEL = "Submit for review";
|
|
4
|
+
export declare const APPROVE_LABEL = "Approve";
|
|
5
|
+
export declare const REQUEST_CHANGES_LABEL = "Request changes";
|
|
6
|
+
export declare const WAITING_FOR_REVIEW_LABEL = "Waiting for review.";
|
|
7
|
+
export declare const REVIEWER_NOTE_PREFIX = "Reviewer note:";
|
|
8
|
+
export declare const SUBMIT_BEFORE_PUBLISH_ERROR = "Submit for review before publishing.";
|
|
9
|
+
export declare function resolveWorkflowChrome(input: {
|
|
10
|
+
stage: WorkflowStage;
|
|
11
|
+
status: 'DRAFT' | 'PUBLISHED' | 'SCHEDULED' | 'ARCHIVED';
|
|
12
|
+
role: string;
|
|
13
|
+
canEdit: boolean;
|
|
14
|
+
}): {
|
|
15
|
+
primary: WorkflowChromeAction | null;
|
|
16
|
+
showRequestChanges: boolean;
|
|
17
|
+
showSchedule: boolean;
|
|
18
|
+
waitingLabel?: string;
|
|
19
|
+
statusLabel: string;
|
|
20
|
+
statusClassName: string;
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=workflow-chrome.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-chrome.d.ts","sourceRoot":"","sources":["../../src/lib/workflow-chrome.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,CAAA;AAEzF,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAA;AAEnE,eAAO,MAAM,uBAAuB,sBAAsB,CAAA;AAC1D,eAAO,MAAM,aAAa,YAAY,CAAA;AACtC,eAAO,MAAM,qBAAqB,oBAAoB,CAAA;AACtD,eAAO,MAAM,wBAAwB,wBAAwB,CAAA;AAC7D,eAAO,MAAM,oBAAoB,mBAAmB,CAAA;AACpD,eAAO,MAAM,2BAA2B,yCAAyC,CAAA;AAcjF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,KAAK,EAAE,aAAa,CAAA;IACpB,MAAM,EAAE,OAAO,GAAG,WAAW,GAAG,WAAW,GAAG,UAAU,CAAA;IACxD,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;CACjB,GAAG;IACF,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAA;IACpC,kBAAkB,EAAE,OAAO,CAAA;IAC3B,YAAY,EAAE,OAAO,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;CACxB,CAqEA"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
export const SUBMIT_FOR_REVIEW_LABEL = 'Submit for review';
|
|
2
|
+
export const APPROVE_LABEL = 'Approve';
|
|
3
|
+
export const REQUEST_CHANGES_LABEL = 'Request changes';
|
|
4
|
+
export const WAITING_FOR_REVIEW_LABEL = 'Waiting for review.';
|
|
5
|
+
export const REVIEWER_NOTE_PREFIX = 'Reviewer note:';
|
|
6
|
+
export const SUBMIT_BEFORE_PUBLISH_ERROR = 'Submit for review before publishing.';
|
|
7
|
+
const REVIEWER_ROLES = new Set(['ADMIN', 'EDITOR']);
|
|
8
|
+
const SUBMIT_ROLES = new Set(['ADMIN', 'EDITOR', 'AUTHOR']);
|
|
9
|
+
const STATUS_PILL = {
|
|
10
|
+
DRAFT: { label: 'Draft', className: 'text-warning' },
|
|
11
|
+
IN_REVIEW: { label: 'In review', className: 'text-warning' },
|
|
12
|
+
APPROVED: { label: 'Approved', className: 'text-warning' },
|
|
13
|
+
PUBLISHED: { label: 'Published', className: 'text-success' },
|
|
14
|
+
ARCHIVED: { label: 'Archived', className: 'text-muted-foreground' },
|
|
15
|
+
SCHEDULED: { label: 'Scheduled', className: 'text-warning' },
|
|
16
|
+
};
|
|
17
|
+
export function resolveWorkflowChrome(input) {
|
|
18
|
+
const role = input.role.toUpperCase();
|
|
19
|
+
const published = input.status === 'PUBLISHED';
|
|
20
|
+
const scheduled = input.status === 'SCHEDULED';
|
|
21
|
+
const pillKey = published ? 'PUBLISHED' : scheduled ? 'SCHEDULED' : input.stage;
|
|
22
|
+
const pill = STATUS_PILL[pillKey];
|
|
23
|
+
if (!input.canEdit || published) {
|
|
24
|
+
return {
|
|
25
|
+
primary: null,
|
|
26
|
+
showRequestChanges: false,
|
|
27
|
+
showSchedule: false,
|
|
28
|
+
statusLabel: pill.label,
|
|
29
|
+
statusClassName: pill.className,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
const reviewer = REVIEWER_ROLES.has(role);
|
|
33
|
+
const canSubmit = SUBMIT_ROLES.has(role);
|
|
34
|
+
const inReview = input.stage === 'IN_REVIEW' || input.stage === 'APPROVED';
|
|
35
|
+
if (scheduled) {
|
|
36
|
+
return {
|
|
37
|
+
primary: null,
|
|
38
|
+
showRequestChanges: reviewer,
|
|
39
|
+
showSchedule: reviewer,
|
|
40
|
+
statusLabel: pill.label,
|
|
41
|
+
statusClassName: pill.className,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
if (input.stage === 'DRAFT' && canSubmit) {
|
|
45
|
+
return {
|
|
46
|
+
primary: 'submit',
|
|
47
|
+
showRequestChanges: false,
|
|
48
|
+
showSchedule: false,
|
|
49
|
+
statusLabel: pill.label,
|
|
50
|
+
statusClassName: pill.className,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
if (inReview && reviewer) {
|
|
54
|
+
return {
|
|
55
|
+
primary: 'approve',
|
|
56
|
+
showRequestChanges: true,
|
|
57
|
+
showSchedule: true,
|
|
58
|
+
statusLabel: pill.label,
|
|
59
|
+
statusClassName: pill.className,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
if (inReview && canSubmit) {
|
|
63
|
+
return {
|
|
64
|
+
primary: 'waiting',
|
|
65
|
+
showRequestChanges: false,
|
|
66
|
+
showSchedule: false,
|
|
67
|
+
waitingLabel: WAITING_FOR_REVIEW_LABEL,
|
|
68
|
+
statusLabel: pill.label,
|
|
69
|
+
statusClassName: pill.className,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
primary: null,
|
|
74
|
+
showRequestChanges: false,
|
|
75
|
+
showSchedule: false,
|
|
76
|
+
statusLabel: pill.label,
|
|
77
|
+
statusClassName: pill.className,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=workflow-chrome.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-chrome.js","sourceRoot":"","sources":["../../src/lib/workflow-chrome.ts"],"names":[],"mappings":"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"}
|