diff --git a/portal-ui/src/icons/CreateIcon.tsx b/portal-ui/src/icons/CreateIcon.tsx
index 0a7f98b5c1..2c56607516 100644
--- a/portal-ui/src/icons/CreateIcon.tsx
+++ b/portal-ui/src/icons/CreateIcon.tsx
@@ -1,5 +1,5 @@
// This file is part of MinIO Console Server
-// Copyright (c) 2019 MinIO, Inc.
+// Copyright (c) 2020 MinIO, Inc.
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
@@ -15,21 +15,36 @@
// along with this program. If not, see .
import React from "react";
-import {SvgIcon} from "@material-ui/core";
+import { SvgIcon } from "@material-ui/core";
class CreateIcon extends React.Component {
- render() {
- return (
-
- )
- }
+ render() {
+ return (
+
+
+
+ );
+ }
}
export default CreateIcon;
diff --git a/portal-ui/src/icons/UploadFile.tsx b/portal-ui/src/icons/UploadFile.tsx
new file mode 100644
index 0000000000..4f0083e8be
--- /dev/null
+++ b/portal-ui/src/icons/UploadFile.tsx
@@ -0,0 +1,41 @@
+// This file is part of MinIO Console Server
+// Copyright (c) 2020 MinIO, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+import React from "react";
+import { SvgIcon } from "@material-ui/core";
+
+class UploadFile extends React.Component {
+ render() {
+ return (
+
+
+
+ );
+ }
+}
+
+export default UploadFile;
diff --git a/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/CreateFolderModal.tsx b/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/CreateFolderModal.tsx
new file mode 100644
index 0000000000..cf5ad14bf4
--- /dev/null
+++ b/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/CreateFolderModal.tsx
@@ -0,0 +1,116 @@
+// This file is part of MinIO Console Server
+// Copyright (c) 2020 MinIO, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+import React, { useState } from "react";
+import ModalWrapper from "../../../../Common/ModalWrapper/ModalWrapper";
+import { Button, Grid, LinearProgress } from "@material-ui/core";
+import InputBoxWrapper from "../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper";
+import { createStyles, Theme, withStyles } from "@material-ui/core/styles";
+import { modalBasic } from "../../../../Common/FormComponents/common/styleLibrary";
+import { connect } from "react-redux";
+import { createFolder } from "../../../../ObjectBrowser/actions";
+
+interface ICreateFolder {
+ classes: any;
+ modalOpen: boolean;
+ folderName: string;
+ createFolder: (newFolder: string) => any;
+ onClose: () => any;
+}
+
+const styles = (theme: Theme) =>
+ createStyles({
+ buttonContainer: {
+ textAlign: "right",
+ },
+ pathLabel: {
+ marginTop: 0,
+ marginBottom: 32,
+ },
+ ...modalBasic,
+ });
+
+const CreateFolderModal = ({
+ modalOpen,
+ folderName,
+ onClose,
+ createFolder,
+ classes,
+}: ICreateFolder) => {
+ const [pathUrl, setPathUrl] = useState("");
+
+ const resetForm = () => {
+ setPathUrl("");
+ };
+
+ const createProcess = () => {
+ createFolder(pathUrl);
+ onClose();
+ };
+
+ const folderTruncated = folderName.split("/").slice(2).join("/");
+
+ return (
+
+
+
+