Add custom parameters to topic creation form
### AC
The user is able to:
-  add multiple custom parameters to topic creation form
- select available custom topic parameter from list
- update value of added parameter
- remove added parameter
- review validation error & update custom params

<img width="546" alt="Screenshot 2020-02-27 22 37 49" src="https://user-images.githubusercontent.com/365855/75480177-d7090f00-59b1-11ea-8b36-f92bedb6a940.png">

blocked by: https://github.com/provectus/kafka-ui/issues/7
kafka-ui-react-app/src/components/Topics/New/CustomParams/CustomParams.tsx kafka-ui-react-app/src/redux/api/topics.ts
kafka-ui-react-app/src/components/Topics/New/CustomParams/CustomParams.tsx kafka-ui-react-app/src/redux/api/topics.ts
diff --git a/kafka-ui-react-app/src/components/Topics/New/CustomParams/CustomParams.tsx b/kafka-ui-react-app/src/components/Topics/New/CustomParams/CustomParams.tsx
index 8fe22db0368..64bb6866052 100644
--- a/kafka-ui-react-app/src/components/Topics/New/CustomParams/CustomParams.tsx
+++ b/kafka-ui-react-app/src/components/Topics/New/CustomParams/CustomParams.tsx
@@ -26,7 +26,7 @@ const CustomParams: React.FC<Props> = ({
   const onAdd = (event: React.MouseEvent<HTMLButtonElement>) => {
     event.preventDefault();
 
-    const newIndex = `${INDEX_PREFIX}.${new Date().getTime()}`;
+    const newIndex = `${INDEX_PREFIX}.${new Date().getTime()}ts`;
 
     setFormCustomParams({
       ...formCustomParams,
diff --git a/kafka-ui-react-app/src/redux/api/topics.ts b/kafka-ui-react-app/src/redux/api/topics.ts
index 160c392c9b5..544d41136c0 100644
--- a/kafka-ui-react-app/src/redux/api/topics.ts
+++ b/kafka-ui-react-app/src/redux/api/topics.ts
@@ -1,3 +1,4 @@
+import { reduce } from 'lodash';
 import {
   TopicName,
   Topic,
@@ -5,6 +6,7 @@ import {
   TopicDetails,
   TopicConfig,
   TopicFormData,
+  TopicFormCustomParam,
 } from 'redux/interfaces';
 import {
   BASE_URL,
@@ -23,6 +25,10 @@ export const getTopics = (clusterName: ClusterName): Promise<Topic[]> =>
   fetch(`${BASE_URL}/clusters/${clusterName}/topics`, { ...BASE_PARAMS })
     .then(res => res.json());
 
+interface Result {
+  [index: string]: string,
+}
+
 export const postTopic = (clusterName: ClusterName, form: TopicFormData): Promise<Topic> => {
   const {
     name,
@@ -34,6 +40,12 @@ export const postTopic = (clusterName: ClusterName, form: TopicFormData): Promis
     maxMessageBytes,
     minInSyncReplicas,
   } = form;
+
+  const customParams = reduce(Object.values(form.customParams), (result: Result, customParam: TopicFormCustomParam) => {
+    result[customParam.name] = customParam.value;
+    return result;
+  }, {});
+
   const body = JSON.stringify({
     name,
     partitions,
@@ -44,8 +56,10 @@ export const postTopic = (clusterName: ClusterName, form: TopicFormData): Promis
       'retention.bytes': retentionBytes,
       'max.message.bytes': maxMessageBytes,
       'min.insync.replicas': minInSyncReplicas,
+      ...customParams,
     }
   });
+
   return fetch(`${BASE_URL}/clusters/${clusterName}/topics`, {
     ...BASE_PARAMS,
     method: 'POST',
