Skip to content

Commit 5fd0f08

Browse files
committed
chore = content reviews cleanup
1 parent a4d1e04 commit 5fd0f08

File tree

7 files changed

+52
-77
lines changed

7 files changed

+52
-77
lines changed

src/lang/en-us.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@ and new lines
378378
saveReviewConfigMessage: `This might take a while - saving generates the review due date for all reviewable content, which might be a lot of nodes. This does not modify node-level review configuration.`,
379379
staleContent: `Stale content`,
380380
unableToSeedReviewDate: `Unable to update review date for node`,
381-
generateRelativeTo: `Generate review dates relative to`,
381+
generateRelativeTo: `Generate relative to`,
382382
saveAndRegenerate: `Save and regenerate`,
383383
externalReviewers: `External reviewers`,
384384
externalReviewersDescription: `Semi-colon-delimited list of email addresses. These should not be associated with CMS users.`,

src/section/content-reviews/components/config-list/content-reviews-config-list.element.ts

Lines changed: 18 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ const elementName = "workflow-content-reviews-config-list";
2929
export class WorkflowContentReviewsConfigListElement extends UmbElementMixin(
3030
LitElement
3131
) {
32-
#modalManagerContext?: typeof UMB_MODAL_MANAGER_CONTEXT.TYPE;
3332
#contentReviewsWorkspaceContext?: typeof WORKFLOW_CONTENTREVIEWS_WORKSPACE_CONTEXT.TYPE;
3433
#documentRepository = new UmbDocumentItemRepository(this);
3534

@@ -57,11 +56,6 @@ export class WorkflowContentReviewsConfigListElement extends UmbElementMixin(
5756
constructor() {
5857
super();
5958

60-
this.consumeContext(UMB_MODAL_MANAGER_CONTEXT, (instance) => {
61-
if (!instance) return;
62-
this.#modalManagerContext = instance;
63-
});
64-
6559
this.consumeContext(
6660
WORKFLOW_CONTENTREVIEWS_WORKSPACE_CONTEXT,
6761
(instance) => {
@@ -86,37 +80,31 @@ export class WorkflowContentReviewsConfigListElement extends UmbElementMixin(
8680
}
8781

8882
async #openPicker() {
89-
if (!this.#modalManagerContext) return;
90-
9183
const data = {
9284
hideTreeRoot: true,
9385
multiple: false,
9486
};
9587

88+
const modalContext = await this.getContext(UMB_MODAL_MANAGER_CONTEXT);
89+
9690
let modalHandler;
9791
if (this.type === "document") {
98-
modalHandler = this.#modalManagerContext.open(
99-
this,
100-
UMB_DOCUMENT_PICKER_MODAL,
101-
{
102-
data,
103-
}
104-
);
92+
modalHandler = modalContext.open(this, UMB_DOCUMENT_PICKER_MODAL, {
93+
data,
94+
});
10595
} else {
106-
modalHandler = this.#modalManagerContext.open(
107-
this,
108-
UMB_DOCUMENT_TYPE_PICKER_MODAL,
109-
{ data }
110-
);
96+
modalHandler = modalContext.open(this, UMB_DOCUMENT_TYPE_PICKER_MODAL, {
97+
data,
98+
});
11199
}
112100

113-
const { selection } = await modalHandler.onSubmit();
101+
const result = await modalHandler.onSubmit().catch(() => undefined);
114102

115-
if (!selection?.length) return;
103+
if (!result?.selection?.length) return;
116104

117105
const itemToConfigure: ContentReviewItem = {
118-
documentKey: this.type === "document" ? selection[0]! : undefined,
119-
documentTypeKey: this.type === "documentType" ? selection[0]! : undefined,
106+
documentKey: this.type === "document" ? result.selection[0]! : undefined,
107+
documentTypeKey: this.type === "documentType" ? result.selection[0]! : undefined,
120108
type: this.type!,
121109
configItems: [],
122110
};
@@ -126,7 +114,8 @@ export class WorkflowContentReviewsConfigListElement extends UmbElementMixin(
126114
}
127115

128116
async #editReview(itemToConfigure: ContentReviewItem, isAdd = false) {
129-
const modalHandler = this.#modalManagerContext?.open(
117+
const modalContext = await this.getContext(UMB_MODAL_MANAGER_CONTEXT);
118+
const modalHandler = modalContext.open(
130119
this,
131120
WORKFLOW_CONTENTREVIEWS_CONFIG_MODAL,
132121
{
@@ -139,8 +128,10 @@ export class WorkflowContentReviewsConfigListElement extends UmbElementMixin(
139128
}
140129
);
141130

142-
const { configItems } = await modalHandler!.onSubmit();
143-
const newItem = { ...itemToConfigure, ...{ configItems } };
131+
const result = await modalHandler.onSubmit().catch(() => undefined);
132+
if (!result?.configItems) return;
133+
134+
const newItem = { ...itemToConfigure, ...{ configItems: result?.configItems } };
144135

145136
if (isAdd) {
146137
this.#setValue([...this.value, newItem]);

src/section/content-reviews/modal/element/content-reviews-config-modal.element.ts

Lines changed: 21 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@ export class WorkflowContentReviewsConfigModalElement extends UmbModalBaseElemen
2424
WorkflowContentReviewsConfigModalData,
2525
WorkflowContentReviewsConfigModalResult
2626
> {
27-
#modalManagerContext?: typeof UMB_MODAL_MANAGER_CONTEXT.TYPE;
28-
2927
@state()
3028
current?: ContentReviewConfigItem;
3129

@@ -35,18 +33,6 @@ export class WorkflowContentReviewsConfigModalElement extends UmbModalBaseElemen
3533
@state()
3634
headline = "";
3735

38-
get currentVariant() {
39-
return this.current?.variant;
40-
}
41-
42-
constructor() {
43-
super();
44-
45-
this.consumeContext(UMB_MODAL_MANAGER_CONTEXT, (instance) => {
46-
this.#modalManagerContext = instance;
47-
});
48-
}
49-
5036
connectedCallback() {
5137
super.connectedCallback();
5238

@@ -70,10 +56,14 @@ export class WorkflowContentReviewsConfigModalElement extends UmbModalBaseElemen
7056
}
7157
}
7258

73-
#handleSubmit() {
74-
const idx = this.configItems.findIndex(
75-
(x) => x.variant === this.currentVariant
59+
#getExistingIndex() {
60+
return this.configItems.findIndex(
61+
(x) => x.variant === this.current?.variant
7662
);
63+
}
64+
65+
#handleSubmit() {
66+
const idx = this.#getExistingIndex();
7767

7868
if (idx > -1) {
7969
this.configItems[idx] = this.current!;
@@ -89,9 +79,8 @@ export class WorkflowContentReviewsConfigModalElement extends UmbModalBaseElemen
8979
this.modalContext?.reject();
9080
}
9181

92-
#setValue(value: any, propertyAlias: string) {
93-
this.current![propertyAlias] = value;
94-
this.requestUpdate();
82+
#setValue(value: unknown, propertyAlias: string) {
83+
this.current = { ...this.current, ...{ [propertyAlias]: value } };
9584
}
9685

9786
#removeGroup(idx: number) {
@@ -101,27 +90,21 @@ export class WorkflowContentReviewsConfigModalElement extends UmbModalBaseElemen
10190
}
10291

10392
async #openGroupPicker() {
104-
const modalHandler = this.#modalManagerContext?.open(this,
105-
WORKFLOW_GROUP_PICKER_MODAL,
106-
{
107-
data: {
108-
selection: [
109-
...(this.current!.groups?.map((p) => p.key ?? null) ?? []),
110-
],
111-
},
112-
}
113-
);
93+
const modalContext = await this.getContext(UMB_MODAL_MANAGER_CONTEXT);
94+
const modalHandler = modalContext.open(this, WORKFLOW_GROUP_PICKER_MODAL, {
95+
data: {
96+
selection: [...(this.current!.groups?.map((p) => p.key ?? null) ?? [])],
97+
},
98+
});
11499

115100
const { groups } = await modalHandler!.onSubmit();
116101
this.#setValue(groups, "groups");
117102
}
118103

119104
#handleLanguageChange(e: UUIInputEvent) {
120105
const idx = this.configItems.findIndex((x) => x.variant === e.target.value);
106+
const existingIndex = this.#getExistingIndex();
121107

122-
const existingIndex = this.configItems.findIndex(
123-
(x) => x.variant === this.currentVariant
124-
);
125108
this.configItems[existingIndex] = this.current!;
126109

127110
if (idx !== -1) {
@@ -148,7 +131,7 @@ export class WorkflowContentReviewsConfigModalElement extends UmbModalBaseElemen
148131
.options=${this.data?.languages.map((l) => ({
149132
name: l.name!,
150133
value: l.isoCode!,
151-
selected: l.isoCode === this.currentVariant,
134+
selected: l.isoCode === this.current?.variant,
152135
})) ?? []}
153136
@change=${this.#handleLanguageChange}
154137
></uui-select>
@@ -157,7 +140,7 @@ export class WorkflowContentReviewsConfigModalElement extends UmbModalBaseElemen
157140

158141
#renderGeneralBox() {
159142
return html`<uui-box .headline=${this.localize.term("general_general")}>
160-
<umb-property-layout .label=${"Exclude from review"}>
143+
<umb-property-layout label="Exclude from review">
161144
<uui-toggle
162145
slot="editor"
163146
.checked=${this.current?.excluded ?? false}
@@ -166,11 +149,11 @@ export class WorkflowContentReviewsConfigModalElement extends UmbModalBaseElemen
166149
</umb-property-layout>
167150
${when(
168151
!this.current?.excluded,
169-
() => html`<umb-property-layout .label=${"Review period (days)"}>
152+
() => html`<umb-property-layout label="Review period (days)">
170153
<uui-input
171154
type="number"
172155
slot="editor"
173-
.label=${"Review period (days)"}
156+
label="Review period (days)"
174157
.value=${this.current?.period}
175158
@change=${(e) => this.#setValue(Number(e.target.value), "period")}
176159
></uui-input>
@@ -195,7 +178,7 @@ export class WorkflowContentReviewsConfigModalElement extends UmbModalBaseElemen
195178
</uui-ref-list>
196179
<workflow-add-button
197180
@click=${this.#openGroupPicker}
198-
.labelKey=${"workflow_addWorkflowGroups"}
181+
labelKey="workflow_addWorkflowGroups"
199182
></workflow-add-button>
200183
</uui-box>`;
201184
}

src/section/content-reviews/modal/element/content-reviews-regenerate-modal.element.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export class WorkflowContentReviewsRegenerateModalElement extends UmbModalBaseEl
3636
return html`<umb-body-layout>
3737
<div id="main">
3838
<p>${this.localize.term("contentReviews_saveReviewConfigMessage")}</p>
39-
<umb-workspace-property-layout
39+
<umb-property-layout
4040
.label=${this.localize.term("contentReviews_generateRelativeTo")}
4141
>
4242
<uui-radio-group
@@ -51,8 +51,8 @@ export class WorkflowContentReviewsRegenerateModalElement extends UmbModalBaseEl
5151
>
5252
</uui-radio>
5353
</uui-radio-group>
54-
</umb-workspace-property-layout>
55-
<umb-workspace-property-layout
54+
</umb-property-layout>
55+
<umb-property-layout
5656
.label=${this.localize.term("contentReviews_force")}
5757
.description=${this.localize.term("contentReviews_forceDescription")}
5858
>
@@ -62,7 +62,7 @@ export class WorkflowContentReviewsRegenerateModalElement extends UmbModalBaseEl
6262
@change=${() => (this.force = !this.force)}
6363
>
6464
</uui-toggle>
65-
</umb-workspace-property-layout>
65+
</umb-property-layout>
6666
</div>
6767
<div slot="actions">
6868
<uui-button

src/section/content-reviews/modal/token/content-reviews-regenerate-modal.token.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@ export const WORKFLOW_CONTENTREVIEWS_REGENERATE_MODAL = new UmbModalToken<
1414
>(WORKFLOW_CONTENTREVIEWS_REGENERATE_MODAL_ALIAS, {
1515
modal: {
1616
type: "dialog",
17-
size: "medium",
17+
size: "large",
1818
},
1919
});

src/section/content-reviews/workspace/actions/save-and-regenerate.action.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
import type { UmbControllerHost } from "@umbraco-cms/backoffice/controller-api";
22
import { UMB_MODAL_MANAGER_CONTEXT } from "@umbraco-cms/backoffice/modal";
3-
import type { UmbWorkspaceActionArgs} from "@umbraco-cms/backoffice/workspace";
3+
import type { UmbWorkspaceActionArgs } from "@umbraco-cms/backoffice/workspace";
44
import { UmbWorkspaceActionBase } from "@umbraco-cms/backoffice/workspace";
55
import { WORKFLOW_CONTENTREVIEWS_WORKSPACE_CONTEXT } from "../content-reviews-workspace.context-token.js";
66
import type { WorkflowContentReviewsRegenerateModalResult } from "../../modal/index.js";
77
import { WORKFLOW_CONTENTREVIEWS_REGENERATE_MODAL } from "../../modal/index.js";
88
import type { WorkflowContentReviewsWorkspaceContext } from "../content-reviews-workspace.context.js";
99

1010
export class WorkflowRegenerateContentReviewsWorkspaceAction extends UmbWorkspaceActionBase<WorkflowContentReviewsWorkspaceContext> {
11-
1211
constructor(
1312
host: UmbControllerHost,
1413
args: UmbWorkspaceActionArgs<WorkflowContentReviewsWorkspaceContext>
@@ -17,7 +16,9 @@ export class WorkflowRegenerateContentReviewsWorkspaceAction extends UmbWorkspac
1716
}
1817

1918
async execute() {
20-
const workspaceContext = await this.getContext(WORKFLOW_CONTENTREVIEWS_WORKSPACE_CONTEXT);
19+
const workspaceContext = await this.getContext(
20+
WORKFLOW_CONTENTREVIEWS_WORKSPACE_CONTEXT
21+
);
2122
const modalContext = await this.getContext(UMB_MODAL_MANAGER_CONTEXT);
2223

2324
if (!workspaceContext || !modalContext) return;
@@ -27,8 +28,7 @@ export class WorkflowRegenerateContentReviewsWorkspaceAction extends UmbWorkspac
2728
WORKFLOW_CONTENTREVIEWS_REGENERATE_MODAL
2829
);
2930

30-
const { relativeTo, force } =
31-
(await modalHandler.onSubmit()) as WorkflowContentReviewsRegenerateModalResult;
31+
const { relativeTo, force } = await modalHandler.onSubmit();
3232

3333
workspaceContext.saveAndRegenerate(force, relativeTo);
3434
}

src/section/content-reviews/workspace/content-reviews-workspace.context.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,8 @@ export class WorkflowContentReviewsWorkspaceContext
174174

175175
deleteReview(item: ContentReviewItem) {
176176
item.configItems.forEach((c) => {
177-
if (!c.id) throw new Error('id is missing');
177+
// if no id, item has not been saved so no need to mark for deletion
178+
if (!c.id) return;
178179
this.deletedReviews.push(c.id);
179180
});
180181
}

0 commit comments

Comments
 (0)