diff --git a/ccm-pagemodelseditor/src/main/typescript/ccm-pagemodelseditor/PageModelsEditor.tsx b/ccm-pagemodelseditor/src/main/typescript/ccm-pagemodelseditor/PageModelsEditor.tsx
index 824ce480b..9ce6a0ceb 100644
--- a/ccm-pagemodelseditor/src/main/typescript/ccm-pagemodelseditor/PageModelsEditor.tsx
+++ b/ccm-pagemodelseditor/src/main/typescript/ccm-pagemodelseditor/PageModelsEditor.tsx
@@ -531,6 +531,7 @@ class ContainerListComponent
}
this.addContainer = this.addContainer.bind(this);
+ this.deleteContainer = this.deleteContainer.bind(this);
this.updateNewContainerName = this.updateNewContainerName.bind(this);
}
@@ -560,17 +561,12 @@ class ContainerListComponent
&& this.state.containers.map((container) =>
{container.key}
-
- )
- }
}
;
@@ -687,6 +683,63 @@ class ContainerListComponent
});
});
}
+
+ private deleteContainer(event: React.MouseEvent): void {
+
+ event.preventDefault();
+
+ const deleteButton: HTMLButtonElement
+ = event.target as HTMLButtonElement
+ const containerKey: string = deleteButton
+ .getAttribute("data-containerKey") as string;
+
+ const init: RequestInit = {
+
+ body: JSON.stringify({}),
+ credentials: "same-origin",
+ method: "DELETE",
+ }
+
+ const url: string = `${this.props.dispatcherPrefix}`
+ + `/page-models/${this.props.ccmApplication}/`
+ + `${this.props.pageModelName}`
+ + `/containers/${containerKey}`;
+
+ fetch(url, init)
+ .then((response: Response) => {
+
+ if (response.ok) {
+
+ const containers = this
+ .state
+ .containers
+ .filter((container) => {
+ return container.key !== containerKey;
+ });
+
+ this.setState({
+ ...this.state,
+ containers,
+ })
+
+ } else {
+ this.setState({
+ ...this.state,
+ errorMsg: `Failed to delete container `
+ + `"${containerKey}": `
+ + ` ${response.status} ${response.statusText}`,
+ });
+ }
+
+ })
+ .catch((error) => {
+ this.setState({
+ ...this.state,
+ errorMsg: `Failed to delete container `
+ + `"${containerKey}": ${error.message}`,
+ });
+ });
+ }
}
// interface PageModelEditorProps {