+
+
+
+
+
+
+
+
+
+ >)
+}
+/**/
\ No newline at end of file
diff --git a/ui/src/app/admin/container/EditProperty.js b/ui/src/app/admin/container/EditProperty.js
new file mode 100644
index 000000000..beac8c5f8
--- /dev/null
+++ b/ui/src/app/admin/container/EditProperty.js
@@ -0,0 +1,92 @@
+import React from 'react';
+
+import { Prompt, useHistory } from 'react-router-dom';
+import { useParams } from 'react-router-dom';
+import Translate from '../../i18n/components/translate';
+import { useProperties } from '../hooks';
+import { Schema } from '../../form/Schema';
+import { FormManager } from '../../form/FormManager';
+
+import { PropertyForm } from '../component/PropertyForm';
+import { PropertyProvider } from '../hoc/PropertyProvider';
+import { createNotificationAction, NotificationTypes, useNotificationDispatcher } from '../../notifications/hoc/Notifications';
+import { useTranslator } from '../../i18n/hooks';
+import { BASE_PATH } from '../../App.constant';
+
+export function EditProperty() {
+
+ const { id } = useParams();
+
+ const notifier = useNotificationDispatcher();
+ const translator = useTranslator();
+
+ const history = useHistory();
+
+ const { put, response, loading } = useProperties();
+
+ const [blocking, setBlocking] = React.useState(false);
+
+ async function save(property) {
+ let toast;
+ const resp = await put(`/${property.resourceId}`, property);
+ if (response.ok) {
+ gotoDetail({ refresh: true });
+ toast = createNotificationAction(`Updated property successfully.`, NotificationTypes.SUCCESS);
+ } else {
+ toast = createNotificationAction(`${resp.errorCode} - ${translator(resp.errorMessage)}`, NotificationTypes.ERROR);
+ }
+ if (toast) {
+ notifier(toast);
+ }
+ };
+
+ const cancel = () => {
+ gotoDetail();
+ };
+
+ const gotoDetail = (state = null) => {
+ setBlocking(false);
+ history.push(`/properties`, state);
+ };
+
+ return (
+